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);
}
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);
}
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"));
}
}
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;
}
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;
}
Aggregations