use of sic.modelo.FacturaVenta 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).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).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.setFecha(new Date());
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.setEstado(EstadoPedido.ABIERTO);
Pedido pedidoRecuperado = restTemplate.postForObject(apiPrefix + "/pedidos", pedido, Pedido.class);
assertEquals(pedido.getCliente(), pedidoRecuperado.getCliente());
assertEquals(pedido.getEmpresa(), pedidoRecuperado.getEmpresa());
assertEquals(pedido.getFecha(), pedidoRecuperado.getFecha());
assertEquals(pedido.getUsuario(), pedidoRecuperado.getUsuario());
assertEquals(pedido.getTotalEstimado(), pedidoRecuperado.getTotalEstimado(), 0);
assertEquals(pedido.getObservaciones(), pedidoRecuperado.getObservaciones());
assertEquals(pedido.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 recargo_neto = restTemplate.getRestTemplate().getForObject(apiPrefix + "/facturas/recargo-neto?" + "subTotal=" + subTotal + "&recargoPorcentaje=10", 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?idPedido=" + pedidoRecuperado.getId_Pedido(), facturaVentaA, Factura[].class);
FacturaVenta[] facturasRecuperadas = restTemplate.getForObject(apiPrefix + "/facturas/venta/busqueda/criteria?" + "idEmpresa=" + pedidoRecuperado.getEmpresa().getId_Empresa() + "&nroPedido=" + pedidoRecuperado.getNroPedido(), FacturaVenta[].class);
assertEquals(1, facturasRecuperadas.length, 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=10", 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=10" + "&descuentoPorcentaje=0", double.class);
assertEquals(420, 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=10" + "&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(4442, 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_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?idPedido=" + pedidoRecuperado.getId_Pedido(), facturaVentaB, Factura[].class);
facturasRecuperadas = restTemplate.getForObject(apiPrefix + "/facturas/venta/busqueda/criteria?" + "idEmpresa=" + pedidoRecuperado.getEmpresa().getId_Empresa() + "&nroPedido=" + pedidoRecuperado.getNroPedido(), FacturaVenta[].class);
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.length, 0);
pedidoRecuperado = restTemplate.getForObject(apiPrefix + "/pedidos/" + pedidoRecuperado.getId_Pedido(), Pedido.class);
assertEquals(EstadoPedido.CERRADO, pedidoRecuperado.getEstado());
restTemplate.delete(apiPrefix + "/facturas?idFactura=" + facturasRecuperadas[0].getId_Factura());
pedidoRecuperado = restTemplate.getForObject(apiPrefix + "/pedidos/" + pedidoRecuperado.getId_Pedido(), Pedido.class);
assertEquals(EstadoPedido.ACTIVO, pedidoRecuperado.getEstado());
restTemplate.delete(apiPrefix + "/facturas?idFactura=" + facturasRecuperadas[1].getId_Factura());
pedidoRecuperado = restTemplate.getForObject(apiPrefix + "/pedidos/" + pedidoRecuperado.getId_Pedido(), Pedido.class);
assertEquals(EstadoPedido.ABIERTO, pedidoRecuperado.getEstado());
}
use of sic.modelo.FacturaVenta 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));
}
use of sic.modelo.FacturaVenta 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);
}
use of sic.modelo.FacturaVenta in project sic by belluccifranco.
the class FacturasVentaGUI method buscar.
private void buscar() {
this.limpiarJTable();
cambiarEstadoEnabled(false);
pb_Filtro.setIndeterminate(true);
SwingWorker<List<FacturaVenta>, Void> worker = new SwingWorker<List<FacturaVenta>, Void>() {
@Override
protected List<FacturaVenta> doInBackground() throws Exception {
String uriCriteria = getUriCriteria();
facturas = new ArrayList(Arrays.asList(RestClient.getRestTemplate().getForObject("/facturas/venta/busqueda/criteria?" + uriCriteria, Factura[].class)));
cargarResultadosAlTable();
calcularResultados(uriCriteria);
cambiarEstadoEnabled(true);
return facturas;
}
@Override
protected void done() {
pb_Filtro.setIndeterminate(false);
try {
if (get().isEmpty()) {
JOptionPane.showInternalMessageDialog(getParent(), ResourceBundle.getBundle("Mensajes").getString("mensaje_busqueda_sin_resultados"), "Aviso", JOptionPane.INFORMATION_MESSAGE);
}
} catch (InterruptedException ex) {
String msjError = "La tarea que se estaba realizando fue interrumpida. Intente nuevamente.";
LOGGER.error(msjError + " - " + ex.getMessage());
JOptionPane.showInternalMessageDialog(getParent(), msjError, "Error", JOptionPane.ERROR_MESSAGE);
cambiarEstadoEnabled(true);
} catch (ExecutionException ex) {
if (ex.getCause() instanceof RestClientResponseException) {
JOptionPane.showMessageDialog(getParent(), ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
} else if (ex.getCause() instanceof ResourceAccessException) {
LOGGER.error(ex.getMessage());
JOptionPane.showMessageDialog(getParent(), ResourceBundle.getBundle("Mensajes").getString("mensaje_error_conexion"), "Error", JOptionPane.ERROR_MESSAGE);
} else {
String msjError = "Se produjo un error en la ejecución de la tarea solicitada. Intente nuevamente.";
LOGGER.error(msjError + " - " + ex.getMessage());
JOptionPane.showInternalMessageDialog(getParent(), msjError, "Error", JOptionPane.ERROR_MESSAGE);
}
cambiarEstadoEnabled(true);
}
}
};
worker.execute();
}
use of sic.modelo.FacturaVenta 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;
}
Aggregations