Search in sources :

Example 6 with EmpresaBuilder

use of sic.builder.EmpresaBuilder in project sic by belluccifranco.

the class NotaServiceImplTest method shouldGetTipoNotaWhenEmpresaNoDiscriminaYClienteSiIVA.

@Test
public void shouldGetTipoNotaWhenEmpresaNoDiscriminaYClienteSiIVA() {
    Empresa empresa = new EmpresaBuilder().withId_Empresa(1L).build();
    Cliente cliente = new ClienteBuilder().withId_Cliente(1L).build();
    CondicionIVA condicionIVAqueDiscrimina = Mockito.mock(CondicionIVA.class);
    when(condicionIVAqueDiscrimina.isDiscriminaIVA()).thenReturn(Boolean.FALSE);
    empresa.setCondicionIVA(condicionIVAqueDiscrimina);
    when(empresaServiceImpl.getEmpresaPorId(1L)).thenReturn(empresa);
    when(clienteService.getClientePorId(1L)).thenReturn(cliente);
    TipoDeComprobante[] expResult = { TipoDeComprobante.NOTA_CREDITO_X, TipoDeComprobante.NOTA_DEBITO_X };
    TipoDeComprobante[] result = notaServiceImpl.getTipoNota(1L, 1L);
    assertArrayEquals(expResult, result);
}
Also used : Empresa(sic.modelo.Empresa) EmpresaBuilder(sic.builder.EmpresaBuilder) TipoDeComprobante(sic.modelo.TipoDeComprobante) CondicionIVA(sic.modelo.CondicionIVA) Cliente(sic.modelo.Cliente) ClienteBuilder(sic.builder.ClienteBuilder) Test(org.junit.Test)

Example 7 with EmpresaBuilder

use of sic.builder.EmpresaBuilder in project sic by belluccifranco.

the class NotaServiceImplTest method shouldGetTipoNotaWhenEmpresaDiscriminaYClienteNoIVA.

@Test
public void shouldGetTipoNotaWhenEmpresaDiscriminaYClienteNoIVA() {
    Empresa empresa = new EmpresaBuilder().withId_Empresa(1L).build();
    Cliente cliente = new ClienteBuilder().withId_Cliente(1L).build();
    CondicionIVA condicionIVAqueDiscrimina = Mockito.mock(CondicionIVA.class);
    when(condicionIVAqueDiscrimina.isDiscriminaIVA()).thenReturn(Boolean.FALSE);
    cliente.setCondicionIVA(condicionIVAqueDiscrimina);
    when(empresaServiceImpl.getEmpresaPorId(1L)).thenReturn(empresa);
    when(clienteService.getClientePorId(1L)).thenReturn(cliente);
    TipoDeComprobante[] expResult = { TipoDeComprobante.NOTA_CREDITO_B, TipoDeComprobante.NOTA_CREDITO_X, TipoDeComprobante.NOTA_DEBITO_B, TipoDeComprobante.NOTA_DEBITO_X };
    TipoDeComprobante[] result = notaServiceImpl.getTipoNota(1L, 1L);
    assertArrayEquals(expResult, result);
}
Also used : Empresa(sic.modelo.Empresa) EmpresaBuilder(sic.builder.EmpresaBuilder) TipoDeComprobante(sic.modelo.TipoDeComprobante) CondicionIVA(sic.modelo.CondicionIVA) Cliente(sic.modelo.Cliente) ClienteBuilder(sic.builder.ClienteBuilder) Test(org.junit.Test)

Example 8 with EmpresaBuilder

use of sic.builder.EmpresaBuilder in project sic by belluccifranco.

the class FacturacionIntegrationTest method testFacturarConComprobanteB.

@Test
public void testFacturarConComprobanteB() {
    this.token = restTemplate.postForEntity(apiPrefix + "/login", new Credencial("test", "test"), String.class).getBody();
    Localidad localidad = new LocalidadBuilder().build();
    localidad.getProvincia().setPais(restTemplate.postForObject(apiPrefix + "/paises", localidad.getProvincia().getPais(), Pais.class));
    localidad.setProvincia(restTemplate.postForObject(apiPrefix + "/provincias", localidad.getProvincia(), Provincia.class));
    CondicionIVA condicionIVA = new CondicionIVABuilder().build();
    Empresa empresa = new EmpresaBuilder().withLocalidad(restTemplate.postForObject(apiPrefix + "/localidades", localidad, Localidad.class)).withCondicionIVA(restTemplate.postForObject(apiPrefix + "/condiciones-iva", condicionIVA, CondicionIVA.class)).build();
    empresa = restTemplate.postForObject(apiPrefix + "/empresas", empresa, Empresa.class);
    FormaDePago formaDePago = new FormaDePagoBuilder().withAfectaCaja(false).withEmpresa(empresa).withPredeterminado(true).withNombre("Efectivo").build();
    restTemplate.postForObject(apiPrefix + "/formas-de-pago", formaDePago, FormaDePago.class);
    Usuario credencial = new UsuarioBuilder().withId_Usuario(1).withEliminado(false).withNombre("Marcelo Cruz").withPassword("marce").withToken("yJhbGci1NiIsInR5cCI6IkpXVCJ9.eyJub21icmUiOiJjZWNpbGlvIn0.MCfaorSC7Wdc8rSW7BJizasfzsa").withRol(new ArrayList<>()).build();
    Usuario viajante = new UsuarioBuilder().withId_Usuario(1).withEliminado(false).withNombre("Fernando Aguirre").withPassword("fernando").withToken("yJhbGci1NiIsInR5cCI6IkpXVCJ9.eyJub21icmUiOiJjZWNpbGlvIn0.MCfaorSC7Wdc8rSW7BJizasfzsb").withRol(new ArrayList<>(Arrays.asList(Rol.VIAJANTE))).build();
    Cliente cliente = new ClienteBuilder().withEmpresa(empresa).withCondicionIVA(empresa.getCondicionIVA()).withLocalidad(empresa.getLocalidad()).withPredeterminado(true).withCredencial(credencial).withViajante(viajante).build();
    cliente = restTemplate.postForObject(apiPrefix + "/clientes", cliente, Cliente.class);
    Transportista transportista = new TransportistaBuilder().withEmpresa(empresa).withLocalidad(empresa.getLocalidad()).build();
    transportista = restTemplate.postForObject(apiPrefix + "/transportistas", transportista, Transportista.class);
    Medida medida = new MedidaBuilder().withEmpresa(empresa).build();
    medida = restTemplate.postForObject(apiPrefix + "/medidas", medida, Medida.class);
    Proveedor proveedor = new ProveedorBuilder().withEmpresa(empresa).withLocalidad(empresa.getLocalidad()).withCondicionIVA(empresa.getCondicionIVA()).build();
    proveedor = restTemplate.postForObject(apiPrefix + "/proveedores", proveedor, Proveedor.class);
    Rubro rubro = new RubroBuilder().withEmpresa(empresa).build();
    rubro = restTemplate.postForObject(apiPrefix + "/rubros", rubro, Rubro.class);
    Producto productoUno = new ProductoBuilder().withCodigo("1").withDescripcion("uno").withCantidad(10).withVentaMinima(1).withPrecioVentaPublico(1000).withIva_porcentaje(21.0).withIva_neto(210).withPrecioLista(1210).withEmpresa(empresa).withMedida(medida).withProveedor(proveedor).withRubro(rubro).build();
    Producto productoDos = new ProductoBuilder().withCodigo("2").withDescripcion("dos").withCantidad(6).withVentaMinima(1).withPrecioVentaPublico(1000).withIva_porcentaje(10.5).withIva_neto(105).withPrecioLista(1105).withEmpresa(empresa).withMedida(medida).withProveedor(proveedor).withRubro(rubro).build();
    productoUno = restTemplate.postForObject(apiPrefix + "/productos", productoUno, Producto.class);
    productoDos = restTemplate.postForObject(apiPrefix + "/productos", productoDos, Producto.class);
    Assert.assertTrue(restTemplate.getForObject(apiPrefix + "/productos/" + productoUno.getId_Producto() + "/stock/disponibilidad?cantidad=10", Boolean.class));
    Assert.assertTrue(restTemplate.getForObject(apiPrefix + "/productos/" + productoDos.getId_Producto() + "/stock/disponibilidad?cantidad=6", Boolean.class));
    RenglonFactura renglonUno = restTemplate.getForObject(apiPrefix + "/facturas/renglon?" + "idProducto=" + productoUno.getId_Producto() + "&tipoDeComprobante=" + TipoDeComprobante.FACTURA_B + "&movimiento=" + Movimiento.VENTA + "&cantidad=5" + "&descuentoPorcentaje=20", RenglonFactura.class);
    RenglonFactura renglonDos = restTemplate.getForObject(apiPrefix + "/facturas/renglon?" + "idProducto=" + productoDos.getId_Producto() + "&tipoDeComprobante=" + TipoDeComprobante.FACTURA_B + "&movimiento=" + Movimiento.VENTA + "&cantidad=2" + "&descuentoPorcentaje=0", RenglonFactura.class);
    Assert.assertEquals(1210, renglonUno.getPrecioUnitario(), 0);
    Assert.assertEquals(242, renglonUno.getDescuento_neto(), 0);
    Assert.assertEquals(168, renglonUno.getIva_neto(), 0);
    Assert.assertEquals(4840, renglonUno.getImporte(), 0);
    Assert.assertEquals(1105, renglonDos.getPrecioUnitario(), 0);
    Assert.assertEquals(0, renglonDos.getDescuento_neto(), 0);
    Assert.assertEquals(105, renglonDos.getIva_neto(), 0);
    Assert.assertEquals(2210, renglonDos.getImporte(), 0);
    List<RenglonFactura> renglones = new ArrayList<>();
    renglones.add(renglonUno);
    renglones.add(renglonDos);
    int size = renglones.size();
    double[] importes = new double[size];
    double[] cantidades = new double[size];
    double[] ivaPorcentajeRenglones = new double[size];
    double[] ivaNetoRenglones = new double[size];
    int indice = 0;
    for (RenglonFactura renglon : renglones) {
        importes[indice] = renglon.getImporte();
        cantidades[indice] = renglon.getCantidad();
        ivaPorcentajeRenglones[indice] = renglon.getIva_porcentaje();
        ivaNetoRenglones[indice] = renglon.getIva_neto();
        indice++;
    }
    double subTotal = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/subtotal?" + "importe=" + Arrays.toString(importes).substring(1, Arrays.toString(importes).length() - 1), double.class);
    assertEquals(7050, subTotal, 0);
    double descuentoPorcentaje = 25;
    double recargoPorcentaje = 10;
    double descuento_neto = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/descuento-neto?" + "subTotal=" + subTotal + "&descuentoPorcentaje=" + descuentoPorcentaje, double.class);
    assertEquals(1762.5, descuento_neto, 0);
    double recargo_neto = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/recargo-neto?" + "subTotal=" + subTotal + "&recargoPorcentaje=" + recargoPorcentaje, double.class);
    assertEquals(705, recargo_neto, 0);
    double iva_105_netoFactura = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/iva-neto?" + "tipoDeComprobante=" + TipoDeComprobante.FACTURA_B + "&cantidades=" + Arrays.toString(cantidades).substring(1, Arrays.toString(cantidades).length() - 1) + "&ivaPorcentajeRenglones=" + Arrays.toString(ivaPorcentajeRenglones).substring(1, Arrays.toString(ivaPorcentajeRenglones).length() - 1) + "&ivaNetoRenglones=" + Arrays.toString(ivaNetoRenglones).substring(1, Arrays.toString(ivaNetoRenglones).length() - 1) + "&ivaPorcentaje=10.5" + "&descuentoPorcentaje=" + descuentoPorcentaje + "&recargoPorcentaje=" + recargoPorcentaje, double.class);
    assertEquals(178.5, iva_105_netoFactura, 0);
    double iva_21_netoFactura = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/iva-neto?" + "tipoDeComprobante=" + TipoDeComprobante.FACTURA_B + "&cantidades=" + Arrays.toString(cantidades).substring(1, Arrays.toString(cantidades).length() - 1) + "&ivaPorcentajeRenglones=" + Arrays.toString(ivaPorcentajeRenglones).substring(1, Arrays.toString(ivaPorcentajeRenglones).length() - 1) + "&ivaNetoRenglones=" + Arrays.toString(ivaNetoRenglones).substring(1, Arrays.toString(ivaNetoRenglones).length() - 1) + "&ivaPorcentaje=21" + "&descuentoPorcentaje=" + descuentoPorcentaje + "&recargoPorcentaje=" + recargoPorcentaje, double.class);
    assertEquals(714, iva_21_netoFactura, 0);
    double subTotalBruto = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/subtotal-bruto?" + "tipoDeComprobante=" + TipoDeComprobante.FACTURA_B + "&subTotal=" + subTotal + "&recargoNeto=" + recargo_neto + "&descuentoNeto=" + descuento_neto + "&iva105Neto=" + iva_105_netoFactura + "&iva21Neto=" + iva_21_netoFactura, double.class);
    assertEquals(5100, subTotalBruto, 0);
    double total = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/total?" + "subTotalBruto=" + subTotalBruto + "&iva105Neto=" + iva_105_netoFactura + "&iva21Neto=" + iva_21_netoFactura, double.class);
    assertEquals(5992.5, total, 0);
    FacturaVentaDTO facturaVentaB = new FacturaVentaDTO();
    facturaVentaB.setTipoComprobante(TipoDeComprobante.FACTURA_B);
    facturaVentaB.setCliente(cliente);
    facturaVentaB.setEmpresa(empresa);
    facturaVentaB.setTransportista(transportista);
    facturaVentaB.setUsuario(restTemplate.getForObject(apiPrefix + "/usuarios/busqueda?nombre=test", Usuario.class));
    facturaVentaB.setRenglones(renglones);
    facturaVentaB.setSubTotal(subTotal);
    facturaVentaB.setRecargo_porcentaje(recargoPorcentaje);
    facturaVentaB.setRecargo_neto(recargo_neto);
    facturaVentaB.setDescuento_porcentaje(descuentoPorcentaje);
    facturaVentaB.setDescuento_neto(descuento_neto);
    facturaVentaB.setSubTotal_bruto(subTotalBruto);
    facturaVentaB.setIva_105_neto(iva_105_netoFactura);
    facturaVentaB.setIva_21_neto(iva_21_netoFactura);
    facturaVentaB.setTotal(total);
    restTemplate.postForObject(apiPrefix + "/facturas/venta", facturaVentaB, FacturaVenta[].class);
    List<FacturaVenta> facturasRecuperadas = restTemplate.exchange(apiPrefix + "/facturas/venta/busqueda/criteria?idEmpresa=1&tipoFactura=B&nroSerie=0&nroFactura=1", HttpMethod.GET, null, new ParameterizedTypeReference<PaginaRespuestaRest<FacturaVenta>>() {
    }).getBody().getContent();
    if (facturasRecuperadas.size() != 1) {
        Assert.fail("Debería existir exactamente una factura");
    }
    assertEquals(facturaVentaB.getEmpresa(), facturasRecuperadas.get(0).getEmpresa());
    assertEquals(facturaVentaB.getTipoComprobante(), facturasRecuperadas.get(0).getTipoComprobante());
    assertEquals(facturaVentaB.getSubTotal(), facturasRecuperadas.get(0).getSubTotal(), 0);
    assertEquals(facturaVentaB.getRecargo_neto(), facturasRecuperadas.get(0).getRecargo_neto(), 0);
    assertEquals(facturaVentaB.getSubTotal_bruto(), facturasRecuperadas.get(0).getSubTotal_bruto(), 0);
    assertEquals(facturaVentaB.getIva_105_neto(), facturasRecuperadas.get(0).getIva_105_neto(), 0);
    assertEquals(facturaVentaB.getIva_21_neto(), facturasRecuperadas.get(0).getIva_21_neto(), 0);
    assertEquals(facturaVentaB.getImpuestoInterno_neto(), facturasRecuperadas.get(0).getImpuestoInterno_neto(), 0);
    assertEquals(facturaVentaB.getTotal(), facturasRecuperadas.get(0).getTotal(), 0);
    RenglonFactura[] renglonesDeFacturaRecuperada = restTemplate.getForObject(apiPrefix + "/facturas/" + facturasRecuperadas.get(0).getId_Factura() + "/renglones", RenglonFactura[].class);
    if (renglonesDeFacturaRecuperada.length != 2) {
        Assert.fail("La factura no deberia tener mas de dos renglones");
    }
    assertEquals(renglonesDeFacturaRecuperada[0].getCantidad(), renglones.get(0).getCantidad(), 0);
    assertEquals(renglonesDeFacturaRecuperada[0].getCodigoItem(), renglones.get(0).getCodigoItem());
    assertEquals(renglonesDeFacturaRecuperada[0].getDescripcionItem(), renglones.get(0).getDescripcionItem());
    assertEquals(renglonesDeFacturaRecuperada[0].getDescuento_neto(), renglones.get(0).getDescuento_neto(), 0);
    assertEquals(renglonesDeFacturaRecuperada[0].getDescuento_porcentaje(), renglones.get(0).getDescuento_porcentaje(), 0);
    assertEquals(renglonesDeFacturaRecuperada[0].getGanancia_neto(), renglones.get(0).getGanancia_neto(), 0);
    assertEquals(renglonesDeFacturaRecuperada[0].getGanancia_porcentaje(), renglones.get(0).getGanancia_porcentaje(), 0);
    assertEquals(renglonesDeFacturaRecuperada[0].getImporte(), renglones.get(0).getImporte(), 0);
    assertEquals(renglonesDeFacturaRecuperada[0].getImpuesto_neto(), renglones.get(0).getImpuesto_neto(), 0);
    assertEquals(renglonesDeFacturaRecuperada[0].getImpuesto_porcentaje(), renglones.get(0).getImpuesto_porcentaje(), 0);
    assertEquals(renglonesDeFacturaRecuperada[0].getIva_neto(), renglones.get(0).getIva_neto(), 0);
    assertEquals(renglonesDeFacturaRecuperada[0].getIva_porcentaje(), renglones.get(0).getIva_porcentaje(), 0);
    assertEquals(renglonesDeFacturaRecuperada[0].getMedidaItem(), renglones.get(0).getMedidaItem());
    assertEquals(renglonesDeFacturaRecuperada[0].getPrecioUnitario(), renglones.get(0).getPrecioUnitario(), 0);
    restTemplate.getForObject(apiPrefix + "/facturas/" + facturasRecuperadas.get(0).getId_Factura() + "/reporte", byte[].class);
    Assert.assertTrue(restTemplate.getForObject(apiPrefix + "/productos/" + productoUno.getId_Producto() + "/stock/disponibilidad?cantidad=5", Boolean.class));
    Assert.assertTrue(restTemplate.getForObject(apiPrefix + "/productos/" + productoDos.getId_Producto() + "/stock/disponibilidad?cantidad=4", Boolean.class));
}
Also used : Usuario(sic.modelo.Usuario) Empresa(sic.modelo.Empresa) Producto(sic.modelo.Producto) CondicionIVABuilder(sic.builder.CondicionIVABuilder) FormaDePagoBuilder(sic.builder.FormaDePagoBuilder) ArrayList(java.util.ArrayList) UsuarioBuilder(sic.builder.UsuarioBuilder) FacturaVenta(sic.modelo.FacturaVenta) EmpresaBuilder(sic.builder.EmpresaBuilder) Medida(sic.modelo.Medida) CondicionIVA(sic.modelo.CondicionIVA) RenglonFactura(sic.modelo.RenglonFactura) Pais(sic.modelo.Pais) Provincia(sic.modelo.Provincia) Cliente(sic.modelo.Cliente) Transportista(sic.modelo.Transportista) FormaDePago(sic.modelo.FormaDePago) Credencial(sic.modelo.Credencial) Rubro(sic.modelo.Rubro) Proveedor(sic.modelo.Proveedor) Localidad(sic.modelo.Localidad) ProductoBuilder(sic.builder.ProductoBuilder) ClienteBuilder(sic.builder.ClienteBuilder) FacturaVentaDTO(sic.modelo.dto.FacturaVentaDTO) ProveedorBuilder(sic.builder.ProveedorBuilder) LocalidadBuilder(sic.builder.LocalidadBuilder) TransportistaBuilder(sic.builder.TransportistaBuilder) RubroBuilder(sic.builder.RubroBuilder) MedidaBuilder(sic.builder.MedidaBuilder) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Example 9 with EmpresaBuilder

use of sic.builder.EmpresaBuilder in project sic by belluccifranco.

the class FacturacionIntegrationTest method testFacturarPedido.

@Test
public void testFacturarPedido() {
    token = restTemplate.postForEntity(apiPrefix + "/login", new Credencial("test", "test"), String.class).getBody();
    Localidad localidad = new LocalidadBuilder().build();
    localidad.getProvincia().setPais(restTemplate.postForObject(apiPrefix + "/paises", localidad.getProvincia().getPais(), Pais.class));
    localidad.setProvincia(restTemplate.postForObject(apiPrefix + "/provincias", localidad.getProvincia(), Provincia.class));
    CondicionIVA condicionIVA = new CondicionIVABuilder().build();
    Empresa empresa = new EmpresaBuilder().withLocalidad(restTemplate.postForObject(apiPrefix + "/localidades", localidad, Localidad.class)).withCondicionIVA(restTemplate.postForObject(apiPrefix + "/condiciones-iva", condicionIVA, CondicionIVA.class)).build();
    empresa = restTemplate.postForObject(apiPrefix + "/empresas", empresa, Empresa.class);
    FormaDePago formaDePago = new FormaDePagoBuilder().withAfectaCaja(false).withEmpresa(empresa).withPredeterminado(true).withNombre("Efectivo").build();
    restTemplate.postForObject(apiPrefix + "/formas-de-pago", formaDePago, FormaDePago.class);
    Usuario credencial = new UsuarioBuilder().withId_Usuario(1).withEliminado(false).withNombre("Marcelo Cruz").withPassword("marce").withToken("yJhbGci1NiIsInR5cCI6IkpXVCJ9.eyJub21icmUiOiJjZWNpbGlvIn0.MCfaorSC7Wdc8rSW7BJizasfzsa").withRol(new ArrayList<>()).build();
    Cliente cliente = new ClienteBuilder().withEmpresa(empresa).withCondicionIVA(empresa.getCondicionIVA()).withLocalidad(empresa.getLocalidad()).withPredeterminado(true).withCredencial(credencial).withViajante(null).build();
    cliente = restTemplate.postForObject(apiPrefix + "/clientes", cliente, Cliente.class);
    Transportista transportista = new TransportistaBuilder().withEmpresa(empresa).withLocalidad(empresa.getLocalidad()).build();
    transportista = restTemplate.postForObject(apiPrefix + "/transportistas", transportista, Transportista.class);
    Medida medida = new MedidaBuilder().withEmpresa(empresa).build();
    medida = restTemplate.postForObject(apiPrefix + "/medidas", medida, Medida.class);
    Proveedor proveedor = new ProveedorBuilder().withEmpresa(empresa).withLocalidad(empresa.getLocalidad()).withCondicionIVA(empresa.getCondicionIVA()).build();
    proveedor = restTemplate.postForObject(apiPrefix + "/proveedores", proveedor, Proveedor.class);
    Rubro rubro = new RubroBuilder().withEmpresa(empresa).build();
    rubro = restTemplate.postForObject(apiPrefix + "/rubros", rubro, Rubro.class);
    Producto productoUno = new ProductoBuilder().withCodigo("1").withDescripcion("uno").withCantidad(10).withVentaMinima(1).withPrecioVentaPublico(2000).withIva_porcentaje(21.0).withIva_neto(420).withPrecioLista(2420).withEmpresa(empresa).withMedida(medida).withProveedor(proveedor).withRubro(rubro).build();
    Producto productoDos = new ProductoBuilder().withCodigo("2").withDescripcion("dos").withCantidad(6).withVentaMinima(1).withPrecioVentaPublico(2000).withIva_porcentaje(10.5).withIva_neto(210).withPrecioLista(2210).withEmpresa(empresa).withMedida(medida).withProveedor(proveedor).withRubro(rubro).build();
    productoUno = restTemplate.postForObject(apiPrefix + "/productos", productoUno, Producto.class);
    productoDos = restTemplate.postForObject(apiPrefix + "/productos", productoDos, Producto.class);
    Assert.assertTrue(restTemplate.getForObject(apiPrefix + "/productos/" + productoUno.getId_Producto() + "/stock/disponibilidad?cantidad=10", Boolean.class));
    Assert.assertTrue(restTemplate.getForObject(apiPrefix + "/productos/" + productoDos.getId_Producto() + "/stock/disponibilidad?cantidad=6", Boolean.class));
    RenglonFactura renglonUno = restTemplate.getForObject(apiPrefix + "/facturas/renglon?" + "idProducto=" + productoUno.getId_Producto() + "&tipoDeComprobante=" + TipoDeComprobante.FACTURA_B + "&movimiento=" + Movimiento.VENTA + "&cantidad=5" + "&descuentoPorcentaje=15", RenglonFactura.class);
    RenglonPedido renglonPedidoUno = (new RenglonPedidoBuilder()).withCantidad(renglonUno.getCantidad()).withDescuentoPorcentaje(renglonUno.getDescuento_porcentaje()).withDescuentoNeto(renglonUno.getDescuento_neto()).withProducto(productoUno).withSubTotal(renglonUno.getImporte()).build();
    RenglonFactura renglonDos = restTemplate.getForObject(apiPrefix + "/facturas/renglon?" + "idProducto=" + productoDos.getId_Producto() + "&tipoDeComprobante=" + TipoDeComprobante.FACTURA_B + "&movimiento=" + Movimiento.VENTA + "&cantidad=2" + "&descuentoPorcentaje=0", RenglonFactura.class);
    RenglonPedido renglonPedidoDos = (new RenglonPedidoBuilder()).withCantidad(renglonDos.getCantidad()).withDescuentoPorcentaje(renglonDos.getDescuento_porcentaje()).withDescuentoNeto(renglonDos.getDescuento_neto()).withProducto(productoDos).withSubTotal(renglonDos.getImporte()).build();
    List<RenglonPedido> renglonesPedido = new ArrayList<>();
    renglonesPedido.add(renglonPedidoUno);
    renglonesPedido.add(renglonPedidoDos);
    double[] importes = new double[renglonesPedido.size()];
    int indice = 0;
    for (RenglonPedido renglon : renglonesPedido) {
        importes[indice] = renglon.getSubTotal();
        indice++;
    }
    PedidoDTO pedido = new PedidoDTO();
    pedido.setCliente(cliente);
    pedido.setEmpresa(empresa);
    pedido.setRenglones(renglonesPedido);
    pedido.setUsuario(restTemplate.getForObject(apiPrefix + "/usuarios/busqueda?nombre=test", Usuario.class));
    pedido.setTotalEstimado(restTemplate.getForObject(apiPrefix + "/facturas/subtotal?" + "importe=" + Arrays.toString(importes).substring(1, Arrays.toString(importes).length() - 1), double.class));
    pedido.setObservaciones("Pedido Test");
    Pedido pedidoRecuperado = restTemplate.postForObject(apiPrefix + "/pedidos", pedido, Pedido.class);
    assertEquals(pedido.getCliente(), pedidoRecuperado.getCliente());
    assertEquals(pedido.getEmpresa(), pedidoRecuperado.getEmpresa());
    assertEquals(pedido.getUsuario(), pedidoRecuperado.getUsuario());
    assertEquals(pedido.getTotalEstimado(), pedidoRecuperado.getTotalEstimado(), 0);
    assertEquals(pedido.getObservaciones(), pedidoRecuperado.getObservaciones());
    assertEquals(pedidoRecuperado.getEstado(), EstadoPedido.ABIERTO);
    RenglonPedido[] renglonesDelPedido = restTemplate.getForObject(apiPrefix + "/pedidos/" + pedidoRecuperado.getId_Pedido() + "/renglones", RenglonPedido[].class);
    for (int i = 0; i < renglonesDelPedido.length; i++) {
        assertEquals(renglonesPedido.get(i).getCantidad(), renglonesDelPedido[i].getCantidad(), 0);
        assertEquals(renglonesPedido.get(i).getDescuento_neto(), renglonesDelPedido[i].getDescuento_neto(), 0);
        assertEquals(renglonesPedido.get(i).getDescuento_porcentaje(), renglonesDelPedido[i].getDescuento_porcentaje(), 0);
        assertEquals(renglonesPedido.get(i).getProducto(), renglonesDelPedido[i].getProducto());
        assertEquals(renglonesPedido.get(i).getSubTotal(), renglonesDelPedido[i].getSubTotal(), 0);
    }
    RenglonFactura[] renglonesParaFacturar = restTemplate.getForObject(apiPrefix + "/facturas/renglones/pedidos/" + pedidoRecuperado.getId_Pedido() + "?tipoDeComprobante=" + TipoDeComprobante.FACTURA_A, RenglonFactura[].class);
    importes = new double[1];
    double[] cantidades = new double[1];
    double[] ivaPorcentajeRenglones = new double[1];
    double[] ivaNetoRenglones = new double[1];
    importes[0] = renglonesParaFacturar[0].getImporte();
    cantidades[0] = renglonesParaFacturar[0].getCantidad();
    ivaPorcentajeRenglones[0] = renglonesParaFacturar[0].getIva_porcentaje();
    ivaNetoRenglones[0] = renglonesParaFacturar[0].getIva_neto();
    double subTotal = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/subtotal?" + "importe=" + Arrays.toString(importes).substring(1, Arrays.toString(importes).length() - 1), double.class);
    assertEquals(8500, subTotal, 0);
    double recargoPorcentaje = 10;
    double recargo_neto = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/recargo-neto?" + "subTotal=" + subTotal + "&recargoPorcentaje=" + recargoPorcentaje, double.class);
    assertEquals(850, recargo_neto, 0);
    double iva_105_netoFactura = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/iva-neto?" + "tipoDeComprobante=" + TipoDeComprobante.FACTURA_A + "&cantidades=" + Arrays.toString(cantidades).substring(1, Arrays.toString(cantidades).length() - 1) + "&ivaPorcentajeRenglones=" + Arrays.toString(ivaPorcentajeRenglones).substring(1, Arrays.toString(ivaPorcentajeRenglones).length() - 1) + "&ivaNetoRenglones=" + Arrays.toString(ivaNetoRenglones).substring(1, Arrays.toString(ivaNetoRenglones).length() - 1) + "&ivaPorcentaje=10.5" + "&descuentoPorcentaje=0" + "&recargoPorcentaje=0", double.class);
    assertEquals(0, iva_105_netoFactura, 0);
    double iva_21_netoFactura = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/iva-neto?" + "tipoDeComprobante=" + TipoDeComprobante.FACTURA_A + "&cantidades=" + Arrays.toString(cantidades).substring(1, Arrays.toString(cantidades).length() - 1) + "&ivaPorcentajeRenglones=" + Arrays.toString(ivaPorcentajeRenglones).substring(1, Arrays.toString(ivaPorcentajeRenglones).length() - 1) + "&ivaNetoRenglones=" + Arrays.toString(ivaNetoRenglones).substring(1, Arrays.toString(ivaNetoRenglones).length() - 1) + "&ivaPorcentaje=21" + "&descuentoPorcentaje=0" + "&recargoPorcentaje=0", double.class);
    assertEquals(1785, iva_21_netoFactura, 0);
    double subTotalBruto = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/subtotal-bruto?" + "tipoDeComprobante=" + TipoDeComprobante.FACTURA_A + "&subTotal=" + subTotal + "&recargoNeto=" + recargo_neto + "&descuentoNeto=0" + "&iva105Neto=" + iva_105_netoFactura + "&iva21Neto=" + iva_21_netoFactura, double.class);
    assertEquals(9350, subTotalBruto, 0);
    double total = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/total?" + "subTotalBruto=" + subTotalBruto + "&iva105Neto=" + iva_105_netoFactura + "&iva21Neto=" + iva_21_netoFactura, double.class);
    assertEquals(11135, total, 0);
    FacturaVentaDTO facturaVentaA = new FacturaVentaDTO();
    facturaVentaA.setTipoComprobante(TipoDeComprobante.FACTURA_A);
    facturaVentaA.setCliente(cliente);
    facturaVentaA.setEmpresa(empresa);
    facturaVentaA.setTransportista(transportista);
    facturaVentaA.setUsuario(restTemplate.getForObject(apiPrefix + "/usuarios/busqueda?nombre=test", Usuario.class));
    List<RenglonFactura> renglones = new ArrayList<>();
    renglones.add(renglonesParaFacturar[0]);
    facturaVentaA.setRenglones(renglones);
    facturaVentaA.setSubTotal(subTotal);
    facturaVentaA.setRecargo_neto(recargo_neto);
    facturaVentaA.setSubTotal_bruto(subTotalBruto);
    facturaVentaA.setIva_105_neto(iva_105_netoFactura);
    facturaVentaA.setIva_21_neto(iva_21_netoFactura);
    facturaVentaA.setTotal(total);
    facturaVentaA.setFecha(new Date());
    facturaVentaA.setPedido(pedidoRecuperado);
    restTemplate.postForObject(apiPrefix + "/facturas/venta?idPedido=" + pedidoRecuperado.getId_Pedido(), facturaVentaA, FacturaVenta[].class);
    List<FacturaVenta> facturasRecuperadas = restTemplate.exchange(apiPrefix + "/facturas/venta/busqueda/criteria?" + "idEmpresa=" + pedidoRecuperado.getEmpresa().getId_Empresa() + "&nroPedido=" + pedidoRecuperado.getNroPedido(), HttpMethod.GET, null, new ParameterizedTypeReference<PaginaRespuestaRest<FacturaVenta>>() {
    }).getBody().getContent();
    assertEquals(1, facturasRecuperadas.size(), 0);
    pedidoRecuperado = restTemplate.getForObject(apiPrefix + "/pedidos/" + pedidoRecuperado.getId_Pedido(), Pedido.class);
    assertEquals(EstadoPedido.ACTIVO, pedidoRecuperado.getEstado());
    renglonesDelPedido = restTemplate.getForObject(apiPrefix + "/pedidos/" + pedidoRecuperado.getId_Pedido() + "/renglones", RenglonPedido[].class);
    assertEquals(renglones.get(0).getCantidad(), renglonesDelPedido[0].getCantidad(), 0);
    assertEquals(renglones.get(0).getDescuento_porcentaje(), renglonesDelPedido[0].getDescuento_porcentaje(), 0);
    // assert not ???
    // assertEquals(renglones.get(0).getDescuento_neto(), renglonesDelPedido[0].getDescuento_neto(), 0);
    renglonesParaFacturar = restTemplate.getForObject(apiPrefix + "/facturas/renglones/pedidos/" + pedidoRecuperado.getId_Pedido() + "?tipoDeComprobante=" + TipoDeComprobante.FACTURA_B, RenglonFactura[].class);
    importes[0] = renglonesParaFacturar[0].getImporte();
    cantidades[0] = renglonesParaFacturar[0].getCantidad();
    ivaPorcentajeRenglones[0] = renglonesParaFacturar[0].getIva_porcentaje();
    ivaNetoRenglones[0] = renglonesParaFacturar[0].getIva_neto();
    subTotal = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/subtotal?" + "importe=" + Arrays.toString(importes).substring(1, Arrays.toString(importes).length() - 1), double.class);
    assertEquals(4420, subTotal, 0);
    recargo_neto = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/recargo-neto?" + "subTotal=" + subTotal + "&recargoPorcentaje=" + recargoPorcentaje, double.class);
    assertEquals(442, recargo_neto, 0);
    iva_105_netoFactura = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/iva-neto?" + "tipoDeComprobante=" + TipoDeComprobante.FACTURA_B + "&cantidades=" + Arrays.toString(cantidades).substring(1, Arrays.toString(cantidades).length() - 1) + "&ivaPorcentajeRenglones=" + Arrays.toString(ivaPorcentajeRenglones).substring(1, Arrays.toString(ivaPorcentajeRenglones).length() - 1) + "&ivaNetoRenglones=" + Arrays.toString(ivaNetoRenglones).substring(1, Arrays.toString(ivaNetoRenglones).length() - 1) + "&ivaPorcentaje=10.5" + "&recargoPorcentaje=" + recargoPorcentaje + "&descuentoPorcentaje=0", double.class);
    assertEquals(462, iva_105_netoFactura, 0);
    iva_21_netoFactura = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/iva-neto?" + "tipoDeComprobante=" + TipoDeComprobante.FACTURA_B + "&cantidades=" + Arrays.toString(cantidades).substring(1, Arrays.toString(cantidades).length() - 1) + "&ivaPorcentajeRenglones=" + Arrays.toString(ivaPorcentajeRenglones).substring(1, Arrays.toString(ivaPorcentajeRenglones).length() - 1) + "&ivaNetoRenglones=" + Arrays.toString(ivaNetoRenglones).substring(1, Arrays.toString(ivaNetoRenglones).length() - 1) + "&ivaPorcentaje=21" + "&recargoPorcentaje=" + recargoPorcentaje + "&descuentoPorcentaje=0", double.class);
    assertEquals(0, iva_21_netoFactura, 0);
    subTotalBruto = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/subtotal-bruto?" + "tipoDeComprobante=" + TipoDeComprobante.FACTURA_B + "&subTotal=" + subTotal + "&recargoNeto=" + recargo_neto + "&descuentoNeto=0" + "&iva105Neto=" + iva_105_netoFactura + "&iva21Neto=" + iva_21_netoFactura, double.class);
    assertEquals(4400, subTotalBruto, 0);
    total = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/total?" + "subTotalBruto=" + subTotalBruto + "&iva105Neto=" + iva_105_netoFactura + "&iva21Neto=" + iva_21_netoFactura, double.class);
    assertEquals(4862, total, 0);
    FacturaVentaDTO facturaVentaB = new FacturaVentaDTO();
    facturaVentaB.setTipoComprobante(TipoDeComprobante.FACTURA_B);
    facturaVentaB.setCliente(cliente);
    facturaVentaB.setEmpresa(empresa);
    facturaVentaB.setTransportista(transportista);
    facturaVentaB.setUsuario(restTemplate.getForObject(apiPrefix + "/usuarios/busqueda?nombre=test", Usuario.class));
    renglones.clear();
    renglones.add(renglonesParaFacturar[0]);
    facturaVentaB.setRenglones(renglones);
    facturaVentaB.setSubTotal(subTotal);
    facturaVentaB.setRecargo_porcentaje(recargoPorcentaje);
    facturaVentaB.setRecargo_neto(recargo_neto);
    facturaVentaB.setSubTotal_bruto(subTotalBruto);
    facturaVentaB.setIva_105_neto(iva_105_netoFactura);
    facturaVentaB.setIva_21_neto(iva_21_netoFactura);
    facturaVentaB.setTotal(total);
    facturaVentaB.setFecha(new Date());
    facturaVentaB.setPedido(pedidoRecuperado);
    restTemplate.postForObject(apiPrefix + "/facturas/venta?idPedido=" + pedidoRecuperado.getId_Pedido(), facturaVentaB, FacturaVenta[].class);
    facturasRecuperadas = restTemplate.exchange(apiPrefix + "/facturas/venta/busqueda/criteria?" + "idEmpresa=" + pedidoRecuperado.getEmpresa().getId_Empresa() + "&nroPedido=" + pedidoRecuperado.getNroPedido(), HttpMethod.GET, null, new ParameterizedTypeReference<PaginaRespuestaRest<FacturaVenta>>() {
    }).getBody().getContent();
    assertEquals(renglones.get(0).getCantidad(), renglonesDelPedido[1].getCantidad(), 0);
    assertEquals(renglones.get(0).getDescuento_porcentaje(), renglonesDelPedido[1].getDescuento_porcentaje(), 0);
    assertEquals(renglones.get(0).getDescuento_neto(), renglonesDelPedido[1].getDescuento_neto(), 0);
    assertEquals(2, facturasRecuperadas.size(), 0);
    pedidoRecuperado = restTemplate.getForObject(apiPrefix + "/pedidos/" + pedidoRecuperado.getId_Pedido(), Pedido.class);
    assertEquals(EstadoPedido.CERRADO, pedidoRecuperado.getEstado());
    restTemplate.delete(apiPrefix + "/facturas?idFactura=" + facturasRecuperadas.get(0).getId_Factura());
    pedidoRecuperado = restTemplate.getForObject(apiPrefix + "/pedidos/" + pedidoRecuperado.getId_Pedido(), Pedido.class);
    assertEquals(EstadoPedido.ACTIVO, pedidoRecuperado.getEstado());
    restTemplate.delete(apiPrefix + "/facturas?idFactura=" + facturasRecuperadas.get(1).getId_Factura());
    pedidoRecuperado = restTemplate.getForObject(apiPrefix + "/pedidos/" + pedidoRecuperado.getId_Pedido(), Pedido.class);
    assertEquals(EstadoPedido.ABIERTO, pedidoRecuperado.getEstado());
}
Also used : Usuario(sic.modelo.Usuario) Empresa(sic.modelo.Empresa) Producto(sic.modelo.Producto) CondicionIVABuilder(sic.builder.CondicionIVABuilder) FormaDePagoBuilder(sic.builder.FormaDePagoBuilder) ArrayList(java.util.ArrayList) UsuarioBuilder(sic.builder.UsuarioBuilder) FacturaVenta(sic.modelo.FacturaVenta) EmpresaBuilder(sic.builder.EmpresaBuilder) Medida(sic.modelo.Medida) CondicionIVA(sic.modelo.CondicionIVA) RenglonFactura(sic.modelo.RenglonFactura) Pais(sic.modelo.Pais) Provincia(sic.modelo.Provincia) Cliente(sic.modelo.Cliente) Transportista(sic.modelo.Transportista) FormaDePago(sic.modelo.FormaDePago) Credencial(sic.modelo.Credencial) Rubro(sic.modelo.Rubro) RenglonPedido(sic.modelo.RenglonPedido) Pedido(sic.modelo.Pedido) EstadoPedido(sic.modelo.EstadoPedido) Proveedor(sic.modelo.Proveedor) Localidad(sic.modelo.Localidad) ProductoBuilder(sic.builder.ProductoBuilder) Date(java.util.Date) ClienteBuilder(sic.builder.ClienteBuilder) RenglonPedidoBuilder(sic.builder.RenglonPedidoBuilder) PedidoDTO(sic.modelo.dto.PedidoDTO) FacturaVentaDTO(sic.modelo.dto.FacturaVentaDTO) ProveedorBuilder(sic.builder.ProveedorBuilder) RenglonPedido(sic.modelo.RenglonPedido) ParameterizedTypeReference(org.springframework.core.ParameterizedTypeReference) LocalidadBuilder(sic.builder.LocalidadBuilder) TransportistaBuilder(sic.builder.TransportistaBuilder) RubroBuilder(sic.builder.RubroBuilder) MedidaBuilder(sic.builder.MedidaBuilder) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Example 10 with EmpresaBuilder

use of sic.builder.EmpresaBuilder in project sic by belluccifranco.

the class FacturaServiceImplTest method shouldDividirFactura.

@Test
public void shouldDividirFactura() {
    when(facturaVentaRepository.buscarMayorNumFacturaSegunTipo(TipoDeComprobante.FACTURA_X, 1L, new EmpresaBuilder().build().getId_Empresa())).thenReturn(1L);
    when(facturaVentaRepository.buscarMayorNumFacturaSegunTipo(TipoDeComprobante.FACTURA_A, 1L, new EmpresaBuilder().build().getId_Empresa())).thenReturn(1L);
    RenglonFactura renglon1 = Mockito.mock(RenglonFactura.class);
    RenglonFactura renglon2 = Mockito.mock(RenglonFactura.class);
    Producto producto = Mockito.mock(Producto.class);
    when(producto.getId_Producto()).thenReturn(1L);
    when(producto.getCodigo()).thenReturn("1");
    when(producto.getDescripcion()).thenReturn("producto test");
    Medida medida = Mockito.mock(Medida.class);
    when(producto.getMedida()).thenReturn(medida);
    when(producto.getPrecioVentaPublico()).thenReturn(1.0);
    when(producto.getIva_porcentaje()).thenReturn(21.00);
    when(producto.getImpuestoInterno_porcentaje()).thenReturn(0.0);
    when(producto.getPrecioLista()).thenReturn(1.0);
    when(productoService.getProductoPorId(1L)).thenReturn(producto);
    when(renglon1.getId_ProductoItem()).thenReturn(1L);
    when(renglon2.getId_ProductoItem()).thenReturn(1L);
    when(renglon1.getCantidad()).thenReturn(4.00);
    when(renglon2.getCantidad()).thenReturn(7.00);
    List<RenglonFactura> renglones = new ArrayList<>();
    renglones.add(renglon1);
    renglones.add(renglon2);
    FacturaVenta factura = new FacturaVenta();
    factura.setRenglones(renglones);
    factura.setFecha(new Date());
    factura.setTransportista(new TransportistaBuilder().build());
    factura.setEmpresa(new EmpresaBuilder().build());
    factura.setCliente(new ClienteBuilder().build());
    Usuario usuario = new Usuario();
    usuario.setNombre("Marian Jhons  help");
    factura.setUsuario(usuario);
    factura.setTipoComprobante(TipoDeComprobante.FACTURA_A);
    int[] indices = { 0, 1 };
    int cantidadDeFacturasEsperadas = 2;
    List<Factura> result = facturaService.dividirFactura(factura, indices);
    double cantidadRenglon1PrimeraFactura = result.get(0).getRenglones().get(0).getCantidad();
    double cantidadRenglon2PrimeraFactura = result.get(0).getRenglones().get(1).getCantidad();
    double cantidadRenglon1SegundaFactura = result.get(1).getRenglones().get(0).getCantidad();
    double cantidadRenglon2SegundaFactura = result.get(1).getRenglones().get(1).getCantidad();
    assertEquals(cantidadDeFacturasEsperadas, result.size());
    assertEquals(2, cantidadRenglon1SegundaFactura, 0);
    assertEquals(4, cantidadRenglon2SegundaFactura, 0);
    assertEquals(2, cantidadRenglon1PrimeraFactura, 0);
    assertEquals(3, cantidadRenglon2PrimeraFactura, 0);
}
Also used : Usuario(sic.modelo.Usuario) Producto(sic.modelo.Producto) ArrayList(java.util.ArrayList) Date(java.util.Date) ClienteBuilder(sic.builder.ClienteBuilder) FacturaVenta(sic.modelo.FacturaVenta) EmpresaBuilder(sic.builder.EmpresaBuilder) Medida(sic.modelo.Medida) TransportistaBuilder(sic.builder.TransportistaBuilder) RenglonFactura(sic.modelo.RenglonFactura) RenglonFactura(sic.modelo.RenglonFactura) Factura(sic.modelo.Factura) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)10 ClienteBuilder (sic.builder.ClienteBuilder)10 EmpresaBuilder (sic.builder.EmpresaBuilder)10 Cliente (sic.modelo.Cliente)9 Empresa (sic.modelo.Empresa)7 CondicionIVA (sic.modelo.CondicionIVA)6 ArrayList (java.util.ArrayList)4 CondicionIVABuilder (sic.builder.CondicionIVABuilder)4 LocalidadBuilder (sic.builder.LocalidadBuilder)4 TransportistaBuilder (sic.builder.TransportistaBuilder)4 FacturaVenta (sic.modelo.FacturaVenta)4 Medida (sic.modelo.Medida)4 Producto (sic.modelo.Producto)4 RenglonFactura (sic.modelo.RenglonFactura)4 TipoDeComprobante (sic.modelo.TipoDeComprobante)4 Usuario (sic.modelo.Usuario)4 Date (java.util.Date)3 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)3 FormaDePagoBuilder (sic.builder.FormaDePagoBuilder)3 MedidaBuilder (sic.builder.MedidaBuilder)3