Search in sources :

Example 1 with RenglonNotaCredito

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

the class NotaServiceImpl method validarCalculosCredito.

private void validarCalculosCredito(NotaCredito notaCredito) {
    TipoDeComprobante tipoDeComprobanteDeFacturaRelacionada = this.getTipoDeComprobanteFacturaSegunNotaCredito(notaCredito);
    List<RenglonNotaCredito> renglonesNotaCredito = notaCredito.getRenglonesNotaCredito();
    double subTotal = 0;
    double[] importes = new double[renglonesNotaCredito.size()];
    int i = 0;
    int sizeRenglonesCredito = renglonesNotaCredito.size();
    // IVA - subTotal
    double iva21 = 0.0;
    double iva105 = 0.0;
    if (notaCredito.getTipoComprobante() == TipoDeComprobante.NOTA_CREDITO_A || notaCredito.getTipoComprobante() == TipoDeComprobante.NOTA_CREDITO_B) {
        double[] ivaPorcentajes = new double[sizeRenglonesCredito];
        double[] ivaNetos = new double[sizeRenglonesCredito];
        double[] cantidades = new double[sizeRenglonesCredito];
        for (RenglonNotaCredito r : renglonesNotaCredito) {
            ivaPorcentajes[i] = r.getIvaPorcentaje();
            ivaNetos[i] = r.getIvaNeto();
            cantidades[i] = r.getCantidad();
            importes[i] = r.getImporteBruto();
            i++;
        }
        subTotal = this.calcularSubTotal(importes);
        if (notaCredito.getSubTotal() != subTotal) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_nota_sub_total_no_valido"));
        }
        iva21 = this.calcularIVANeto(tipoDeComprobanteDeFacturaRelacionada, cantidades, ivaPorcentajes, ivaNetos, 21, notaCredito.getDescuentoPorcentaje(), notaCredito.getRecargoPorcentaje());
        if (notaCredito.getIva21Neto() != iva21) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_nota_iva21_no_valido"));
        }
        iva105 = this.calcularIVANeto(tipoDeComprobanteDeFacturaRelacionada, cantidades, ivaPorcentajes, ivaNetos, 10.5, notaCredito.getDescuentoPorcentaje(), notaCredito.getRecargoPorcentaje());
        if (notaCredito.getIva105Neto() != iva105) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_nota_iva105_no_valido"));
        }
    } else if (notaCredito.getTipoComprobante() == TipoDeComprobante.NOTA_CREDITO_X) {
        for (RenglonNotaCredito r : renglonesNotaCredito) {
            importes[i] = r.getImporteNeto();
            i++;
        }
        subTotal = this.calcularSubTotal(importes);
        if (notaCredito.getSubTotal() != subTotal) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_nota_sub_total_no_valido"));
        }
        if (notaCredito.getIva21Neto() != 0.0) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_nota_iva21_no_valido"));
        }
        if (notaCredito.getIva105Neto() != 0.0) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_nota_iva105_no_valido"));
        }
    }
    // DescuentoNeto
    double descuentoNeto = this.calcularDecuentoNeto(subTotal, notaCredito.getDescuentoPorcentaje());
    if (notaCredito.getDescuentoNeto() != descuentoNeto) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_nota_descuento_neto_no_valido"));
    }
    // RecargoNeto
    double recargoNeto = this.calcularRecargoNeto(subTotal, notaCredito.getRecargoPorcentaje());
    if (notaCredito.getRecargoNeto() != recargoNeto) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_nota_recargo_neto_no_valido"));
    }
    // subTotalBruto
    double subTotalBruto = this.calcularSubTotalBruto(tipoDeComprobanteDeFacturaRelacionada, subTotal, recargoNeto, descuentoNeto, iva105, iva21);
    if (notaCredito.getSubTotalBruto() != subTotalBruto) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_nota_sub_total_bruto_no_valido"));
    }
    // Total
    double total = this.calcularTotal(subTotalBruto, iva105, iva21);
    if (notaCredito.getTotal() != total) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_nota_total_no_valido"));
    }
}
Also used : BusinessServiceException(sic.service.BusinessServiceException) RenglonNotaCredito(sic.modelo.RenglonNotaCredito) TipoDeComprobante(sic.modelo.TipoDeComprobante)

Example 2 with RenglonNotaCredito

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

the class NotaServiceImpl method getRenglonesFacturaModificadosParaNotaCredito.

@Override
public List<RenglonFactura> getRenglonesFacturaModificadosParaNotaCredito(long idFactura) {
    HashMap<Long, Double> listaCantidadesProductosUnificados = new HashMap<>();
    this.getNotasPorFactura(idFactura).forEach(n -> {
        for (RenglonNotaCredito rnc : ((NotaCredito) n).getRenglonesNotaCredito()) {
            if (listaCantidadesProductosUnificados.containsKey(rnc.getIdProductoItem())) {
                listaCantidadesProductosUnificados.put(rnc.getIdProductoItem(), listaCantidadesProductosUnificados.get(rnc.getIdProductoItem()) + rnc.getCantidad());
            } else {
                listaCantidadesProductosUnificados.put(rnc.getIdProductoItem(), rnc.getCantidad());
            }
        }
    });
    List<RenglonFactura> renglonesFactura = facturaService.getRenglonesDeLaFactura(idFactura);
    if (!listaCantidadesProductosUnificados.isEmpty()) {
        renglonesFactura.forEach(rf -> {
            rf.setCantidad(rf.getCantidad() - listaCantidadesProductosUnificados.get(rf.getId_ProductoItem()));
        });
    }
    return renglonesFactura;
}
Also used : RenglonNotaCredito(sic.modelo.RenglonNotaCredito) HashMap(java.util.HashMap) NotaCredito(sic.modelo.NotaCredito) RenglonNotaCredito(sic.modelo.RenglonNotaCredito) RenglonFactura(sic.modelo.RenglonFactura)

Example 3 with RenglonNotaCredito

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

the class NotaServiceImpl method getReporteNota.

@Override
public byte[] getReporteNota(Nota nota) {
    ClassLoader classLoader = NotaServiceImpl.class.getClassLoader();
    InputStream isFileReport;
    JRBeanCollectionDataSource ds;
    Map params = new HashMap();
    if (nota instanceof NotaCredito) {
        isFileReport = classLoader.getResourceAsStream("sic/vista/reportes/NotaCredito.jasper");
        List<RenglonNotaCredito> renglones = this.getRenglonesDeNotaCredito(nota.getIdNota());
        ds = new JRBeanCollectionDataSource(renglones);
        params.put("notaCredito", (NotaCredito) nota);
    } else {
        isFileReport = classLoader.getResourceAsStream("sic/vista/reportes/NotaDebito.jasper");
        List<RenglonNotaDebito> renglones = this.getRenglonesDeNotaDebito(nota.getIdNota());
        ds = new JRBeanCollectionDataSource(renglones);
        params.put("notaDebito", (NotaDebito) nota);
    }
    ConfiguracionDelSistema cds = configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(nota.getEmpresa());
    params.put("preImpresa", cds.isUsarFacturaVentaPreImpresa());
    if (nota.getTipoComprobante().equals(TipoDeComprobante.NOTA_CREDITO_B) || nota.getTipoComprobante().equals(TipoDeComprobante.NOTA_CREDITO_X) || nota.getTipoComprobante().equals(TipoDeComprobante.NOTA_DEBITO_B) || nota.getTipoComprobante().equals(TipoDeComprobante.NOTA_DEBITO_X)) {
        nota.setSubTotalBruto(nota.getTotal());
        nota.setIva105Neto(0);
        nota.setIva21Neto(0);
    }
    if (nota.getTipoComprobante().equals(TipoDeComprobante.NOTA_CREDITO_A) || nota.getTipoComprobante().equals(TipoDeComprobante.NOTA_CREDITO_B) || nota.getTipoComprobante().equals(TipoDeComprobante.NOTA_DEBITO_A) || nota.getTipoComprobante().equals(TipoDeComprobante.NOTA_DEBITO_B)) {
        if (nota.getNumSerieAfip() != 0 && nota.getNumNotaAfip() != 0) {
            params.put("serie", nota.getNumSerieAfip());
            params.put("nroNota", nota.getNumNotaAfip());
        } else {
            params.put("serie", null);
            params.put("nroNota", null);
        }
    } else {
        params.put("serie", nota.getSerie());
        params.put("nroNota", nota.getNroNota());
    }
    if (!nota.getEmpresa().getLogo().isEmpty()) {
        try {
            params.put("logo", new ImageIcon(ImageIO.read(new URL(nota.getEmpresa().getLogo()))).getImage());
        } catch (IOException ex) {
            LOGGER.error(ex.getMessage());
            throw new ServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_empresa_404_logo"), ex);
        }
    }
    try {
        return JasperExportManager.exportReportToPdf(JasperFillManager.fillReport(isFileReport, params, ds));
    } catch (JRException ex) {
        LOGGER.error(ex.getMessage());
        throw new ServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_error_reporte"), ex);
    }
}
Also used : ImageIcon(javax.swing.ImageIcon) RenglonNotaCredito(sic.modelo.RenglonNotaCredito) JRException(net.sf.jasperreports.engine.JRException) HashMap(java.util.HashMap) InputStream(java.io.InputStream) JRBeanCollectionDataSource(net.sf.jasperreports.engine.data.JRBeanCollectionDataSource) NotaCredito(sic.modelo.NotaCredito) RenglonNotaCredito(sic.modelo.RenglonNotaCredito) IOException(java.io.IOException) URL(java.net.URL) RenglonNotaDebito(sic.modelo.RenglonNotaDebito) BusinessServiceException(sic.service.BusinessServiceException) ServiceException(sic.service.ServiceException) ConfiguracionDelSistema(sic.modelo.ConfiguracionDelSistema) Map(java.util.Map) HashMap(java.util.HashMap)

Example 4 with RenglonNotaCredito

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

the class FlujoCuentaCorrienteIntegrationTest method testCuentaCorriente.

@Test
public void testCuentaCorriente() {
    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();
    formaDePago = 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);
    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);
    double descuentoPorcentaje = 25;
    double recargoPorcentaje = 10;
    double descuento_neto = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/descuento-neto?" + "subTotal=" + subTotal + "&descuentoPorcentaje=" + descuentoPorcentaje, double.class);
    double recargo_neto = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/recargo-neto?" + "subTotal=" + subTotal + "&recargoPorcentaje=" + recargoPorcentaje, double.class);
    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);
    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);
    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);
    double total = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/total?" + "subTotalBruto=" + subTotalBruto + "&iva105Neto=" + iva_105_netoFactura + "&iva21Neto=" + iva_21_netoFactura, double.class);
    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);
    assertEquals(0, restTemplate.getForObject(apiPrefix + "/cuentas-corrientes/clientes/1/saldo?hasta=1451617200000", Double.class), 0);
    assertEquals(-5992.5, restTemplate.getForObject(apiPrefix + "/cuentas-corrientes/clientes/1/saldo", Double.class), 0);
    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();
    Pago pago = new Pago();
    pago.setEmpresa(empresa);
    pago.setFactura(facturasRecuperadas.get(0));
    pago.setFecha(new Date());
    pago.setFormaDePago(formaDePago);
    pago.setMonto(5992.5);
    pago = restTemplate.postForObject(apiPrefix + "/pagos/facturas/1", pago, Pago.class);
    assertEquals(0, restTemplate.getForObject(apiPrefix + "/cuentas-corrientes/clientes/1/saldo", Double.class), 0);
    NotaDebitoDTO notaDebito = new NotaDebitoDTO();
    notaDebito.setCliente(cliente);
    notaDebito.setEmpresa(empresa);
    notaDebito.setFecha(new Date());
    notaDebito.setPagoId(pago.getId_Pago());
    List<RenglonNotaDebito> renglonesCalculados = Arrays.asList(restTemplate.getForObject(apiPrefix + "/notas/renglon/debito/pago/1?monto=100&ivaPorcentaje=21", RenglonNotaDebito[].class));
    notaDebito.setRenglonesNotaDebito(renglonesCalculados);
    notaDebito.setIva105Neto(0);
    notaDebito.setIva21Neto(21);
    notaDebito.setMontoNoGravado(5992.5);
    notaDebito.setMotivo("Test alta nota debito - Cheque rechazado");
    notaDebito.setSubTotalBruto(100);
    notaDebito.setTotal(6113.5);
    notaDebito.setUsuario(credencial);
    notaDebito.setFacturaVenta(null);
    NotaDebito nd = restTemplate.postForObject(apiPrefix + "/notas/debito/empresa/1/cliente/1/usuario/1/pago/1", notaDebito, NotaDebito.class);
    assertEquals(-6113.5, restTemplate.getForObject(apiPrefix + "/cuentas-corrientes/clientes/1/saldo", Double.class), 0);
    pago = new Pago();
    pago.setEmpresa(empresa);
    pago.setNotaDebito(nd);
    pago.setFecha(new Date());
    pago.setFormaDePago(formaDePago);
    pago.setMonto(6113.5);
    restTemplate.postForObject(apiPrefix + "/pagos/notas/1", pago, Pago.class);
    assertEquals(0, restTemplate.getForObject(apiPrefix + "/cuentas-corrientes/clientes/1/saldo", Double.class), 0);
    List<RenglonNotaCredito> renglonesNotaCredito = Arrays.asList(restTemplate.getForObject(apiPrefix + "/notas/renglon/credito/producto?" + "tipoDeComprobante=" + facturasRecuperadas.get(0).getTipoComprobante().name() + "&cantidad=5&idRenglonFactura=1", RenglonNotaCredito[].class));
    NotaCreditoDTO notaCredito = new NotaCreditoDTO();
    notaCredito.setRenglonesNotaCredito(renglonesNotaCredito);
    notaCredito.setFacturaVenta(facturasRecuperadas.get(0));
    notaCredito.setFecha(new Date());
    notaCredito.setSubTotal(restTemplate.getForObject(apiPrefix + "/notas/credito/sub-total?importe=" + renglonesNotaCredito.get(0).getImporteNeto(), Double.class));
    notaCredito.setRecargoPorcentaje(facturasRecuperadas.get(0).getRecargo_porcentaje());
    notaCredito.setRecargoNeto(restTemplate.getForObject(apiPrefix + "/notas/credito/recargo-neto?subTotal=" + notaCredito.getSubTotal() + "&recargoPorcentaje=" + notaCredito.getRecargoPorcentaje(), Double.class));
    notaCredito.setDescuentoPorcentaje(facturasRecuperadas.get(0).getDescuento_porcentaje());
    notaCredito.setDescuentoNeto(restTemplate.getForObject(apiPrefix + "/notas/credito/descuento-neto?subTotal=" + notaCredito.getSubTotal() + "&descuentoPorcentaje=" + notaCredito.getDescuentoPorcentaje(), Double.class));
    notaCredito.setIva21Neto(restTemplate.getForObject(apiPrefix + "/notas/credito/iva-neto?" + "tipoDeComprobante=" + facturasRecuperadas.get(0).getTipoComprobante().name() + "&cantidades=" + renglonesNotaCredito.get(0).getCantidad() + "&ivaPorcentajeRenglones=" + renglonesNotaCredito.get(0).getIvaPorcentaje() + "&ivaNetoRenglones=" + renglonesNotaCredito.get(0).getIvaNeto() + "&ivaPorcentaje=21" + "&descuentoPorcentaje=" + facturasRecuperadas.get(0).getDescuento_porcentaje() + "&recargoPorcentaje=" + facturasRecuperadas.get(0).getRecargo_porcentaje(), Double.class));
    notaCredito.setIva105Neto(restTemplate.getForObject(apiPrefix + "/notas/credito/iva-neto?" + "tipoDeComprobante=" + facturasRecuperadas.get(0).getTipoComprobante().name() + "&cantidades=" + renglonesNotaCredito.get(0).getCantidad() + "&ivaPorcentajeRenglones=" + renglonesNotaCredito.get(0).getIvaPorcentaje() + "&ivaNetoRenglones=" + renglonesNotaCredito.get(0).getIvaNeto() + "&ivaPorcentaje=10.5" + "&descuentoPorcentaje=" + facturasRecuperadas.get(0).getDescuento_porcentaje() + "&recargoPorcentaje=" + facturasRecuperadas.get(0).getRecargo_porcentaje(), Double.class));
    notaCredito.setSubTotalBruto(restTemplate.getForObject(apiPrefix + "/notas/credito/sub-total-bruto?" + "tipoDeComprobante=" + facturasRecuperadas.get(0).getTipoComprobante().name() + "&subTotal=" + notaCredito.getSubTotal() + "&recargoNeto=" + notaCredito.getRecargoNeto() + "&descuentoNeto=" + notaCredito.getDescuentoNeto() + "&iva21Neto=" + notaCredito.getIva21Neto() + "&iva105Neto=" + notaCredito.getIva105Neto(), Double.class));
    notaCredito.setTotal(restTemplate.getForObject(apiPrefix + "/notas/credito/total?subTotalBruto=" + notaCredito.getSubTotalBruto() + "&iva21Neto=" + notaCredito.getIva21Neto() + "&iva105Neto=" + notaCredito.getIva105Neto(), Double.class));
    restTemplate.postForObject(apiPrefix + "/notas/credito/empresa/1/cliente/1/usuario/1/factura/1?modificarStock=false", notaCredito, NotaCredito.class);
    assertEquals(4114, restTemplate.getForObject(apiPrefix + "/cuentas-corrientes/clientes/1/saldo", Double.class), 0);
}
Also used : Usuario(sic.modelo.Usuario) Empresa(sic.modelo.Empresa) RenglonNotaCredito(sic.modelo.RenglonNotaCredito) Producto(sic.modelo.Producto) CondicionIVABuilder(sic.builder.CondicionIVABuilder) FormaDePagoBuilder(sic.builder.FormaDePagoBuilder) ArrayList(java.util.ArrayList) UsuarioBuilder(sic.builder.UsuarioBuilder) FacturaVenta(sic.modelo.FacturaVenta) NotaCreditoDTO(sic.modelo.dto.NotaCreditoDTO) RenglonNotaDebito(sic.modelo.RenglonNotaDebito) EmpresaBuilder(sic.builder.EmpresaBuilder) Medida(sic.modelo.Medida) CondicionIVA(sic.modelo.CondicionIVA) RenglonFactura(sic.modelo.RenglonFactura) Pago(sic.modelo.Pago) FormaDePago(sic.modelo.FormaDePago) 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) NotaDebito(sic.modelo.NotaDebito) RenglonNotaDebito(sic.modelo.RenglonNotaDebito) 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) RubroBuilder(sic.builder.RubroBuilder) MedidaBuilder(sic.builder.MedidaBuilder) NotaDebitoDTO(sic.modelo.dto.NotaDebitoDTO) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Example 5 with RenglonNotaCredito

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

the class DetalleNotaCreditoGUI method cargarResultados.

private void cargarResultados() {
    // SubTotal
    double[] importes = new double[renglones.size()];
    double[] cantidades = new double[renglones.size()];
    double[] ivaPorcentajeRenglones = new double[renglones.size()];
    double[] ivaNetoRenglones = new double[renglones.size()];
    int indice = 0;
    for (RenglonNotaCredito renglon : renglones) {
        importes[indice] = renglon.getImporteBruto();
        cantidades[indice] = renglon.getCantidad();
        ivaPorcentajeRenglones[indice] = renglon.getIvaPorcentaje();
        ivaNetoRenglones[indice] = renglon.getIvaNeto();
        indice++;
    }
    try {
        txt_Subtotal.setValue(RestClient.getRestTemplate().getForObject("/notas/credito/sub-total?importe=" + Arrays.toString(importes).substring(1, Arrays.toString(importes).length() - 1), double.class));
        txt_Decuento_porcentaje.setValue(fv.getDescuento_porcentaje());
        txt_Decuento_neto.setValue(RestClient.getRestTemplate().getForObject("/notas/credito/descuento-neto?subTotal=" + txt_Subtotal.getValue().toString() + "&descuentoPorcentaje=" + fv.getDescuento_porcentaje(), double.class));
        txt_Recargo_porcentaje.setValue(fv.getRecargo_porcentaje());
        txt_Recargo_neto.setValue(RestClient.getRestTemplate().getForObject("/notas/credito/recargo-neto?subTotal=" + txt_Subtotal.getValue().toString() + "&recargoPorcentaje=" + fv.getRecargo_porcentaje(), double.class));
        if (fv.getTipoComprobante() == TipoDeComprobante.FACTURA_X) {
            txt_IVA105_neto.setValue(0.0);
            txt_IVA21_neto.setValue(0.0);
        } else {
            txt_IVA105_neto.setValue(RestClient.getRestTemplate().getForObject("/notas/credito/iva-neto?" + "tipoDeComprobante=" + fv.getTipoComprobante().name() + "&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=" + fv.getDescuento_porcentaje() + "&recargoPorcentaje=" + fv.getRecargo_porcentaje(), double.class));
            txt_IVA21_neto.setValue(RestClient.getRestTemplate().getForObject("/notas/credito/iva-neto?" + "tipoDeComprobante=" + fv.getTipoComprobante().name() + "&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=" + fv.getDescuento_porcentaje() + "&recargoPorcentaje=" + fv.getRecargo_porcentaje(), double.class));
        }
        subTotalBruto = RestClient.getRestTemplate().getForObject("/notas/credito/sub-total-bruto?" + "tipoDeComprobante=" + fv.getTipoComprobante().name() + "&subTotal=" + txt_Subtotal.getValue().toString() + "&recargoNeto=" + txt_Recargo_neto.getValue().toString() + "&descuentoNeto=" + txt_Decuento_neto.getValue().toString() + "&iva105Neto=" + txt_IVA105_neto.getValue().toString() + "&iva21Neto=" + txt_IVA21_neto.getValue().toString(), double.class);
        txt_Total.setValue(RestClient.getRestTemplate().getForObject("/notas/credito/total" + "?subTotalBruto=" + subTotalBruto + "&iva105Neto=" + txt_IVA105_neto.getValue().toString() + "&iva21Neto=" + txt_IVA21_neto.getValue().toString(), double.class));
        if (fv.getTipoComprobante() == TipoDeComprobante.FACTURA_B || fv.getTipoComprobante() == TipoDeComprobante.PRESUPUESTO) {
            txt_IVA105_neto.setText("0");
            txt_IVA21_neto.setText("0");
            txt_SubTotalBruto.setValue(txt_Total.getValue());
        } else {
            txt_SubTotalBruto.setValue(subTotalBruto);
        }
    } catch (RestClientResponseException ex) {
        JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
    } catch (ResourceAccessException ex) {
        LOGGER.error(ex.getMessage());
        JOptionPane.showMessageDialog(this, ResourceBundle.getBundle("Mensajes").getString("mensaje_error_conexion"), "Error", JOptionPane.ERROR_MESSAGE);
    }
}
Also used : RenglonNotaCredito(sic.modelo.RenglonNotaCredito) RestClientResponseException(org.springframework.web.client.RestClientResponseException) ResourceAccessException(org.springframework.web.client.ResourceAccessException)

Aggregations

RenglonNotaCredito (sic.modelo.RenglonNotaCredito)7 ArrayList (java.util.ArrayList)3 RenglonFactura (sic.modelo.RenglonFactura)3 BusinessServiceException (sic.service.BusinessServiceException)3 HashMap (java.util.HashMap)2 Test (org.junit.Test)2 NotaCredito (sic.modelo.NotaCredito)2 RenglonNotaDebito (sic.modelo.RenglonNotaDebito)2 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 URL (java.net.URL)1 Date (java.util.Date)1 Map (java.util.Map)1 ImageIcon (javax.swing.ImageIcon)1 JRException (net.sf.jasperreports.engine.JRException)1 JRBeanCollectionDataSource (net.sf.jasperreports.engine.data.JRBeanCollectionDataSource)1 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)1 ResourceAccessException (org.springframework.web.client.ResourceAccessException)1 RestClientResponseException (org.springframework.web.client.RestClientResponseException)1 ClienteBuilder (sic.builder.ClienteBuilder)1