Search in sources :

Example 16 with RenglonFactura

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

the class FacturaServiceImplTest method shouldCalcularIva_netoWhenLaFacturaEsA.

@Test
public void shouldCalcularIva_netoWhenLaFacturaEsA() {
    RenglonFactura renglon1 = new RenglonFactura();
    renglon1.setCantidad(12);
    renglon1.setIva_porcentaje(21);
    renglon1.setIva_neto(125.5);
    RenglonFactura renglon2 = new RenglonFactura();
    renglon2.setCantidad(8);
    renglon2.setIva_porcentaje(21);
    renglon2.setIva_neto(240.2);
    RenglonFactura renglon3 = new RenglonFactura();
    renglon3.setCantidad(4);
    renglon3.setIva_porcentaje(10.5);
    renglon3.setIva_neto(110.5);
    List<RenglonFactura> renglones = new ArrayList<>();
    renglones.add(renglon1);
    renglones.add(renglon2);
    renglones.add(renglon3);
    //El renglon3 no lo deberia tener en cuenta para el calculo ya que NO es 21% de IVA
    double resultadoEsperado = 3427.6;
    int size = renglones.size();
    double[] cantidades = new double[size];
    double[] ivaPorcentajes = new double[size];
    double[] ivaNetos = new double[size];
    int i = 0;
    for (RenglonFactura r : renglones) {
        cantidades[i] = r.getCantidad();
        ivaPorcentajes[i] = r.getIva_porcentaje();
        ivaNetos[i] = r.getIva_neto();
        i++;
    }
    double resultadoObtenido = facturaService.calcularIvaNetoFactura(TipoDeComprobante.FACTURA_A, cantidades, ivaPorcentajes, ivaNetos, 21, 0, 0);
    assertEquals(resultadoEsperado, resultadoObtenido, 0);
}
Also used : ArrayList(java.util.ArrayList) RenglonFactura(sic.modelo.RenglonFactura) Test(org.junit.Test)

Example 17 with RenglonFactura

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

the class ProductosFaltantesGUI method cargarResultadosAlTable.

private void cargarResultadosAlTable() {
    this.limpiarJTables();
    for (RenglonFactura renglonFaltante : renglonesFaltantes) {
        Object[] fila = new Object[4];
        fila[0] = renglonFaltante.getCodigoItem();
        fila[1] = renglonFaltante.getDescripcionItem();
        fila[2] = renglonFaltante.getCantidad();
        fila[3] = RestClient.getRestTemplate().getForObject("/productos/" + renglonFaltante.getId_ProductoItem(), Producto.class).getCantidad();
        modeloTablaFaltantes.addRow(fila);
    }
    tbl_Faltantes.setModel(modeloTablaFaltantes);
}
Also used : RenglonFactura(sic.modelo.RenglonFactura)

Example 18 with RenglonFactura

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

the class FacturaServiceImpl method validarFactura.

private void validarFactura(Factura factura) {
    //Entrada de Datos
    if (factura.getFechaVencimiento() != null) {
        //quitamos la parte de hora de la Fecha de Vencimiento
        Calendar calFechaVencimiento = new GregorianCalendar();
        calFechaVencimiento.setTime(factura.getFechaVencimiento());
        calFechaVencimiento.set(Calendar.HOUR, 0);
        calFechaVencimiento.set(Calendar.MINUTE, 0);
        calFechaVencimiento.set(Calendar.SECOND, 0);
        calFechaVencimiento.set(Calendar.MILLISECOND, 0);
        factura.setFechaVencimiento(calFechaVencimiento.getTime());
        //quitamos la parte de hora de la Fecha Actual para poder comparar correctamente
        Calendar calFechaDeFactura = new GregorianCalendar();
        calFechaDeFactura.setTime(factura.getFecha());
        calFechaDeFactura.set(Calendar.HOUR, 0);
        calFechaDeFactura.set(Calendar.MINUTE, 0);
        calFechaDeFactura.set(Calendar.SECOND, 0);
        calFechaDeFactura.set(Calendar.MILLISECOND, 0);
        if (Validator.compararFechas(factura.getFechaVencimiento(), calFechaDeFactura.getTime()) > 0) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_fecha_invalida"));
        }
    }
    //Requeridos
    if (factura.getFecha() == null) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_fecha_vacia"));
    }
    if (factura.getTipoComprobante() == null) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_tipo_factura_vacia"));
    }
    if (factura.getTransportista() == null) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_transportista_vacio"));
    }
    if (factura.getRenglones() == null || factura.getRenglones().isEmpty()) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_renglones_vacio"));
    }
    if (factura.getEmpresa() == null) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_empresa_vacia"));
    }
    if (factura instanceof FacturaCompra) {
        FacturaCompra facturaCompra = (FacturaCompra) factura;
        if (facturaCompra.getProveedor() == null) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_proveedor_vacio"));
        }
    }
    if (factura instanceof FacturaVenta) {
        FacturaVenta facturaVenta = (FacturaVenta) factura;
        if (facturaVenta.getCliente() == null) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_cliente_vacio"));
        }
        if (facturaVenta.getUsuario() == null) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_usuario_vacio"));
        }
    }
    //Calculos
    //SubTotal
    double[] importes = new double[factura.getRenglones().size()];
    int i = 0;
    for (RenglonFactura renglon : factura.getRenglones()) {
        importes[i] = renglon.getImporte();
        i++;
    }
    if (factura.getSubTotal() != this.calcularSubTotal(importes)) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_sub_total_no_valido"));
    }
    //SubTotalBruto
    double subTotalBruto = this.calcularSubTotalBruto(factura.getTipoComprobante(), factura.getSubTotal(), factura.getRecargo_neto(), factura.getDescuento_neto(), factura.getIva_105_neto(), factura.getIva_21_neto());
    if (factura.getSubTotal_bruto() != subTotalBruto) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_sub_total_bruto_no_valido"));
    }
    //IVA
    i = 0;
    if (factura.getTipoComprobante().equals(TipoDeComprobante.FACTURA_A) || factura.getTipoComprobante().equals(TipoDeComprobante.FACTURA_B) || factura.getTipoComprobante().equals(TipoDeComprobante.PRESUPUESTO)) {
        double[] ivaPorcentajes = new double[factura.getRenglones().size()];
        double[] ivaNetos = new double[factura.getRenglones().size()];
        double[] cantidades = new double[factura.getRenglones().size()];
        for (RenglonFactura renglon : factura.getRenglones()) {
            ivaPorcentajes[i] = renglon.getIva_porcentaje();
            ivaNetos[i] = renglon.getIva_neto();
            cantidades[i] = renglon.getCantidad();
            i++;
        }
        double ivaNeto21 = this.calcularIvaNetoFactura(factura.getTipoComprobante(), cantidades, ivaPorcentajes, ivaNetos, 21, factura.getDescuento_porcentaje(), factura.getRecargo_porcentaje());
        double ivaNeto105 = this.calcularIvaNetoFactura(factura.getTipoComprobante(), cantidades, ivaPorcentajes, ivaNetos, 10.5, factura.getDescuento_porcentaje(), factura.getRecargo_porcentaje());
        if (factura.getIva_21_neto() != ivaNeto21) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_iva21_no_valido"));
        }
        if (factura.getIva_105_neto() != ivaNeto105) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_iva105_no_valido"));
        }
    }
    //Total
    double total = this.calcularTotal(factura.getSubTotal_bruto(), factura.getIva_105_neto(), factura.getIva_21_neto());
    if (factura.getTotal() != total) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_total_no_valido"));
    }
}
Also used : FacturaVenta(sic.modelo.FacturaVenta) BusinessServiceException(sic.service.BusinessServiceException) Calendar(java.util.Calendar) GregorianCalendar(java.util.GregorianCalendar) GregorianCalendar(java.util.GregorianCalendar) RenglonFactura(sic.modelo.RenglonFactura) FacturaCompra(sic.modelo.FacturaCompra)

Example 19 with RenglonFactura

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

the class FacturaServiceImpl method calcularRenglon.

@Override
public RenglonFactura calcularRenglon(TipoDeComprobante tipo, Movimiento movimiento, double cantidad, Long idProducto, double descuento_porcentaje) {
    Producto producto = productoService.getProductoPorId(idProducto);
    RenglonFactura nuevoRenglon = new RenglonFactura();
    nuevoRenglon.setId_ProductoItem(producto.getId_Producto());
    nuevoRenglon.setCodigoItem(producto.getCodigo());
    nuevoRenglon.setDescripcionItem(producto.getDescripcion());
    nuevoRenglon.setMedidaItem(producto.getMedida().getNombre());
    nuevoRenglon.setCantidad(cantidad);
    nuevoRenglon.setPrecioUnitario(this.calcularPrecioUnitario(movimiento, tipo, producto));
    nuevoRenglon.setDescuento_porcentaje(descuento_porcentaje);
    nuevoRenglon.setDescuento_neto(this.calcularDescuentoNeto(nuevoRenglon.getPrecioUnitario(), descuento_porcentaje));
    nuevoRenglon.setIva_porcentaje(producto.getIva_porcentaje());
    if (tipo.equals(TipoDeComprobante.FACTURA_Y)) {
        nuevoRenglon.setIva_porcentaje(producto.getIva_porcentaje() / 2);
    }
    nuevoRenglon.setIva_neto(this.calcularIVANetoRenglon(movimiento, tipo, producto, nuevoRenglon.getDescuento_porcentaje()));
    nuevoRenglon.setImpuesto_porcentaje(producto.getImpuestoInterno_porcentaje());
    nuevoRenglon.setImpuesto_neto(this.calcularImpInternoNeto(movimiento, producto, nuevoRenglon.getDescuento_neto()));
    nuevoRenglon.setGanancia_porcentaje(producto.getGanancia_porcentaje());
    nuevoRenglon.setGanancia_neto(producto.getGanancia_neto());
    nuevoRenglon.setImporte(this.calcularImporte(cantidad, nuevoRenglon.getPrecioUnitario(), nuevoRenglon.getDescuento_neto()));
    return nuevoRenglon;
}
Also used : Producto(sic.modelo.Producto) RenglonFactura(sic.modelo.RenglonFactura)

Example 20 with RenglonFactura

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

the class FacturaServiceImpl method procesarFacturaSinIVA.

private FacturaVenta procesarFacturaSinIVA(FacturaVenta facturaADividir, FacturaVenta facturaSinIVA) {
    int size = facturaSinIVA.getRenglones().size();
    double[] importes = new double[size];
    double[] cantidades = new double[size];
    double[] ivaPorcentajeRenglones = new double[size];
    double[] ivaNetoRenglones = new double[size];
    int indice = 0;
    List<RenglonFactura> listRenglonesSinIVA = new ArrayList<>(facturaSinIVA.getRenglones());
    facturaSinIVA.setFecha(facturaADividir.getFecha());
    facturaSinIVA.setTipoComprobante(TipoDeComprobante.FACTURA_X);
    facturaSinIVA.setFechaVencimiento(facturaADividir.getFechaVencimiento());
    facturaSinIVA.setTransportista(facturaADividir.getTransportista());
    facturaSinIVA.setRenglones(listRenglonesSinIVA);
    for (RenglonFactura renglon : facturaSinIVA.getRenglones()) {
        importes[indice] = renglon.getImporte();
        cantidades[indice] = renglon.getCantidad();
        ivaPorcentajeRenglones[indice] = renglon.getIva_porcentaje();
        ivaNetoRenglones[indice] = renglon.getIva_neto();
        indice++;
    }
    facturaSinIVA.setSubTotal(this.calcularSubTotal(importes));
    facturaSinIVA.setDescuento_neto(this.calcularDescuentoNeto(facturaSinIVA.getSubTotal(), facturaSinIVA.getDescuento_porcentaje()));
    facturaSinIVA.setRecargo_neto(this.calcularRecargoNeto(facturaSinIVA.getSubTotal(), facturaSinIVA.getRecargo_porcentaje()));
    facturaSinIVA.setIva_105_neto(this.calcularIvaNetoFactura(facturaSinIVA.getTipoComprobante(), cantidades, ivaPorcentajeRenglones, ivaNetoRenglones, 10.5, facturaADividir.getDescuento_porcentaje(), facturaADividir.getRecargo_porcentaje()));
    facturaSinIVA.setIva_21_neto(this.calcularIvaNetoFactura(facturaSinIVA.getTipoComprobante(), cantidades, ivaPorcentajeRenglones, ivaNetoRenglones, 21, facturaADividir.getDescuento_porcentaje(), facturaADividir.getRecargo_porcentaje()));
    facturaSinIVA.setSubTotal_bruto(this.calcularSubTotalBruto(facturaSinIVA.getTipoComprobante(), facturaSinIVA.getSubTotal(), facturaSinIVA.getRecargo_neto(), facturaSinIVA.getDescuento_neto(), facturaSinIVA.getIva_105_neto(), facturaSinIVA.getIva_21_neto()));
    facturaSinIVA.setTotal(this.calcularTotal(facturaSinIVA.getSubTotal_bruto(), facturaSinIVA.getIva_105_neto(), facturaSinIVA.getIva_21_neto()));
    facturaSinIVA.setObservaciones(facturaADividir.getObservaciones());
    facturaSinIVA.setPagada(facturaADividir.isPagada());
    facturaSinIVA.setEmpresa(facturaADividir.getEmpresa());
    facturaSinIVA.setEliminada(facturaADividir.isEliminada());
    return facturaSinIVA;
}
Also used : ArrayList(java.util.ArrayList) RenglonFactura(sic.modelo.RenglonFactura)

Aggregations

RenglonFactura (sic.modelo.RenglonFactura)29 ArrayList (java.util.ArrayList)16 ResourceAccessException (org.springframework.web.client.ResourceAccessException)9 RestClientResponseException (org.springframework.web.client.RestClientResponseException)9 Point (java.awt.Point)7 Test (org.junit.Test)7 Producto (sic.modelo.Producto)7 FacturaVenta (sic.modelo.FacturaVenta)6 EstadoPedido (sic.modelo.EstadoPedido)4 Factura (sic.modelo.Factura)4 Pedido (sic.modelo.Pedido)4 RenglonPedido (sic.modelo.RenglonPedido)4 Date (java.util.Date)3 ClienteBuilder (sic.builder.ClienteBuilder)3 EmpresaBuilder (sic.builder.EmpresaBuilder)3 TransportistaBuilder (sic.builder.TransportistaBuilder)3 Medida (sic.modelo.Medida)3 Usuario (sic.modelo.Usuario)3 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)2 CondicionIVABuilder (sic.builder.CondicionIVABuilder)2