Search in sources :

Example 6 with Factura

use of sic.modelo.Factura 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).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).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(210, 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(840, 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(4942.5, 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_neto(recargo_neto);
    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);
    facturaVentaB.setFecha(new Date());
    restTemplate.postForObject(apiPrefix + "/facturas", facturaVentaB, Factura[].class);
    FacturaVenta[] facturasRecuperadas = restTemplate.getForObject(apiPrefix + "/facturas/venta/busqueda/criteria?idEmpresa=1&tipoFactura=B&nroSerie=0&nroFactura=1", FacturaVenta[].class);
    if (facturasRecuperadas.length != 1) {
        Assert.fail("Debería existir exactamente una factura");
    }
    assertEquals(facturaVentaB.getEmpresa(), facturasRecuperadas[0].getEmpresa());
    assertEquals(facturaVentaB.getTipoComprobante(), facturasRecuperadas[0].getTipoComprobante());
    assertEquals(facturaVentaB.getFecha(), facturasRecuperadas[0].getFecha());
    assertEquals(facturaVentaB.getSubTotal(), facturasRecuperadas[0].getSubTotal(), 0);
    assertEquals(facturaVentaB.getRecargo_neto(), facturasRecuperadas[0].getRecargo_neto(), 0);
    assertEquals(facturaVentaB.getSubTotal_bruto(), facturasRecuperadas[0].getSubTotal_bruto(), 0);
    assertEquals(facturaVentaB.getIva_105_neto(), facturasRecuperadas[0].getIva_105_neto(), 0);
    assertEquals(facturaVentaB.getIva_21_neto(), facturasRecuperadas[0].getIva_21_neto(), 0);
    assertEquals(facturaVentaB.getImpuestoInterno_neto(), facturasRecuperadas[0].getImpuestoInterno_neto(), 0);
    assertEquals(facturaVentaB.getTotal(), facturasRecuperadas[0].getTotal(), 0);
    RenglonFactura[] renglonesDeFacturaRecuperada = restTemplate.getForObject(apiPrefix + "/facturas/" + facturasRecuperadas[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[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) Date(java.util.Date) ClienteBuilder(sic.builder.ClienteBuilder) FacturaVentaDTO(sic.modelo.dto.FacturaVentaDTO) ProveedorBuilder(sic.builder.ProveedorBuilder) LocalidadBuilder(sic.builder.LocalidadBuilder) TransportistaBuilder(sic.builder.TransportistaBuilder) Factura(sic.modelo.Factura) RenglonFactura(sic.modelo.RenglonFactura) RubroBuilder(sic.builder.RubroBuilder) MedidaBuilder(sic.builder.MedidaBuilder) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Example 7 with Factura

use of sic.modelo.Factura in project sic by belluccifranco.

the class FacturaServiceImplTest method shouldDividirFactura.

@Test
public void shouldDividirFactura() {
    when(facturaRepository.buscarMayorNumFacturaSegunTipo(TipoDeComprobante.FACTURA_X, 1L, new EmpresaBuilder().build().getId_Empresa())).thenReturn(1L);
    when(facturaRepository.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)

Example 8 with Factura

use of sic.modelo.Factura in project sic by belluccifranco.

the class FacturaServiceImpl method dividirFactura.

@Override
public List<Factura> dividirFactura(FacturaVenta facturaADividir, int[] indices) {
    FacturaVenta facturaSinIVA = new FacturaVenta();
    facturaSinIVA.setCliente(facturaADividir.getCliente());
    facturaSinIVA.setUsuario(facturaADividir.getUsuario());
    facturaSinIVA.setPedido(facturaADividir.getPedido());
    FacturaVenta facturaConIVA = new FacturaVenta();
    facturaConIVA.setCliente(facturaADividir.getCliente());
    facturaConIVA.setUsuario(facturaADividir.getUsuario());
    facturaConIVA.setPedido(facturaADividir.getPedido());
    facturaConIVA.setTipoComprobante(facturaADividir.getTipoComprobante());
    List<Factura> facturas = new ArrayList<>();
    facturaSinIVA = this.agregarRenglonesAFacturaSinIVA(facturaSinIVA, indices, facturaADividir.getRenglones());
    facturaConIVA = this.agregarRenglonesAFacturaConIVA(facturaConIVA, indices, facturaADividir.getRenglones());
    if (facturaSinIVA.getRenglones().size() > 0) {
        facturaSinIVA = this.procesarFacturaSinIVA(facturaADividir, facturaSinIVA);
        facturas.add(facturaSinIVA);
    }
    facturaConIVA = this.procesarFacturaConIVA(facturaADividir, facturaConIVA);
    facturas.add(facturaConIVA);
    return facturas;
}
Also used : FacturaVenta(sic.modelo.FacturaVenta) ArrayList(java.util.ArrayList) RenglonFactura(sic.modelo.RenglonFactura) Factura(sic.modelo.Factura)

Example 9 with Factura

use of sic.modelo.Factura in project sic by belluccifranco.

the class FacturaServiceImpl method eliminar.

@Override
@Transactional
public void eliminar(long[] idsFactura) {
    for (long idFactura : idsFactura) {
        Factura factura = this.getFacturaPorId(idFactura);
        if (factura.getCAE() == 0L) {
            this.eliminarPagosDeFactura(factura);
            factura.setEliminada(true);
            productoService.actualizarStock(factura, TipoDeOperacion.ELIMINACION);
            if (factura.getPedido() != null) {
                List<Factura> facturas = new ArrayList<>();
                facturas.add(factura);
                pedidoService.actualizarEstadoPedido(factura.getPedido(), facturas);
            }
        } else {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_eliminar_factura_aprobada"));
        }
    }
}
Also used : BusinessServiceException(sic.service.BusinessServiceException) ArrayList(java.util.ArrayList) RenglonFactura(sic.modelo.RenglonFactura) Factura(sic.modelo.Factura) Transactional(org.springframework.transaction.annotation.Transactional)

Example 10 with Factura

use of sic.modelo.Factura in project sic by belluccifranco.

the class FacturaServiceImpl method guardar.

@Override
@Transactional
public List<Factura> guardar(List<Factura> facturas, Long idPedido) {
    List<Factura> facturasProcesadas = new ArrayList<>();
    facturas.forEach((f) -> {
        productoService.actualizarStock(f, TipoDeOperacion.ALTA);
    });
    if (idPedido != null) {
        Pedido pedido = pedidoService.getPedidoPorId(idPedido);
        facturas.forEach((f) -> {
            f.setPedido(pedido);
        });
        for (Factura f : facturas) {
            Factura facturaGuardada = facturaRepository.save(this.procesarFactura(f));
            facturasProcesadas.add(facturaGuardada);
        }
        pedido.setFacturas(facturasProcesadas);
        pedidoService.actualizar(pedido);
        facturasProcesadas.stream().forEach((f) -> {
            this.actualizarFacturaEstadoPago(f);
            LOGGER.warn("La Factura " + f + " se guardó correctamente.");
        });
        pedidoService.actualizarEstadoPedido(pedido, facturasProcesadas);
    } else {
        facturasProcesadas = new ArrayList<>();
        for (Factura f : facturas) {
            List<Pago> pagosFactura = f.getPagos();
            f.setPagos(null);
            Factura facturaGuardada = facturaRepository.save(this.procesarFactura(f));
            facturasProcesadas.add(facturaGuardada);
            LOGGER.warn("La Factura " + facturaGuardada + " se guardó correctamente.");
            if (pagosFactura != null) {
                pagosFactura.forEach((p) -> {
                    pagoService.guardar(p);
                });
                f.setPagos(pagosFactura);
            }
            this.actualizarFacturaEstadoPago(facturaGuardada);
        }
    }
    return facturasProcesadas;
}
Also used : Pedido(sic.modelo.Pedido) ArrayList(java.util.ArrayList) RenglonFactura(sic.modelo.RenglonFactura) Factura(sic.modelo.Factura) Pago(sic.modelo.Pago) Transactional(org.springframework.transaction.annotation.Transactional)

Aggregations

Factura (sic.modelo.Factura)11 RenglonFactura (sic.modelo.RenglonFactura)8 ArrayList (java.util.ArrayList)6 FacturaVenta (sic.modelo.FacturaVenta)5 Date (java.util.Date)4 FormaDePago (sic.modelo.FormaDePago)4 Test (org.junit.Test)3 Transactional (org.springframework.transaction.annotation.Transactional)3 ClienteBuilder (sic.builder.ClienteBuilder)3 EmpresaBuilder (sic.builder.EmpresaBuilder)3 TransportistaBuilder (sic.builder.TransportistaBuilder)3 Medida (sic.modelo.Medida)3 Producto (sic.modelo.Producto)3 Usuario (sic.modelo.Usuario)3 Comparator (java.util.Comparator)2 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)2 ResourceAccessException (org.springframework.web.client.ResourceAccessException)2 RestClientResponseException (org.springframework.web.client.RestClientResponseException)2 CondicionIVABuilder (sic.builder.CondicionIVABuilder)2 FormaDePagoBuilder (sic.builder.FormaDePagoBuilder)2