Search in sources :

Example 1 with NotaCreditoDTO

use of sic.modelo.dto.NotaCreditoDTO 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)

Aggregations

ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 Test (org.junit.Test)1 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)1 ClienteBuilder (sic.builder.ClienteBuilder)1 CondicionIVABuilder (sic.builder.CondicionIVABuilder)1 EmpresaBuilder (sic.builder.EmpresaBuilder)1 FormaDePagoBuilder (sic.builder.FormaDePagoBuilder)1 LocalidadBuilder (sic.builder.LocalidadBuilder)1 MedidaBuilder (sic.builder.MedidaBuilder)1 ProductoBuilder (sic.builder.ProductoBuilder)1 ProveedorBuilder (sic.builder.ProveedorBuilder)1 RubroBuilder (sic.builder.RubroBuilder)1 TransportistaBuilder (sic.builder.TransportistaBuilder)1 UsuarioBuilder (sic.builder.UsuarioBuilder)1 Cliente (sic.modelo.Cliente)1 CondicionIVA (sic.modelo.CondicionIVA)1 Credencial (sic.modelo.Credencial)1 Empresa (sic.modelo.Empresa)1 FacturaVenta (sic.modelo.FacturaVenta)1