Search in sources :

Example 1 with NotaDebito

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

the class NotaServiceImpl method autorizarNota.

@Override
@Transactional
public Nota autorizarNota(Nota nota) {
    double montoNoGravado = (nota instanceof NotaDebito) ? ((NotaDebito) nota).getMontoNoGravado() : 0;
    ComprobanteAFIP comprobante = ComprobanteAFIP.builder().fecha(nota.getFecha()).tipoComprobante(nota.getTipoComprobante()).CAE(nota.getCAE()).vencimientoCAE(nota.getVencimientoCAE()).numSerieAfip(nota.getNumSerieAfip()).numFacturaAfip(nota.getNumNotaAfip()).empresa(nota.getEmpresa()).cliente(nota.getCliente()).subtotalBruto(nota.getSubTotalBruto()).iva105neto(nota.getIva105Neto()).iva21neto(nota.getIva21Neto()).montoNoGravado(montoNoGravado).total(nota.getTotal()).build();
    afipService.autorizar(comprobante);
    nota.setCAE(comprobante.getCAE());
    nota.setVencimientoCAE(comprobante.getVencimientoCAE());
    nota.setNumSerieAfip(comprobante.getNumSerieAfip());
    nota.setNumNotaAfip(comprobante.getNumFacturaAfip());
    return nota;
}
Also used : NotaDebito(sic.modelo.NotaDebito) RenglonNotaDebito(sic.modelo.RenglonNotaDebito) ComprobanteAFIP(sic.modelo.ComprobanteAFIP) Transactional(org.springframework.transaction.annotation.Transactional)

Example 2 with NotaDebito

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

the class NotaServiceImpl method guardarNota.

@Override
@Transactional
public Nota guardarNota(Nota nota, long idEmpresa, long idCliente, long idUsuario, Long idFactura, Long idPago, boolean modificarStock) {
    // Validacion temporal
    if (nota instanceof NotaCredito) {
        NotaCredito nc = (NotaCredito) nota;
        if ((nc).getTipoComprobante() == TipoDeComprobante.FACTURA_Y || (nc).getTipoComprobante() == TipoDeComprobante.PRESUPUESTO) {
            throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_operacion_no_disponible"));
        }
    } else if (nota instanceof NotaDebito) {
        Pago pago = pagoService.getPagoPorId(idPago);
        if (pago.getFactura() != null) {
            if (pago.getFactura().getTipoComprobante() == TipoDeComprobante.FACTURA_Y || pago.getFactura().getTipoComprobante() == TipoDeComprobante.PRESUPUESTO) {
                throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_operacion_no_disponible"));
            }
        }
    }
    // Fin validacion temporal
    this.validarNota(nota, idEmpresa, idCliente, idUsuario, idFactura);
    nota.setSerie(configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(nota.getEmpresa()).getNroPuntoDeVentaAfip());
    if (nota instanceof NotaCredito) {
        NotaCredito notaCredito = (NotaCredito) nota;
        notaCredito.setTipoComprobante(this.getTipoDeNotaCreditoSegunFactura(notaCredito.getFacturaVenta()));
        notaCredito.setNroNota(this.getSiguienteNumeroNotaCredito(idCliente, idEmpresa));
        if (modificarStock) {
            this.actualizarStock(notaCredito.getRenglonesNotaCredito());
        }
        this.validarCalculosCredito(notaCredito);
        notaCredito = notaCreditoRepository.save(notaCredito);
        this.cuentaCorrienteService.asentarEnCuentaCorriente(notaCredito, TipoDeOperacion.ALTA);
        LOGGER.warn("La Nota " + notaCredito + " se guardó correctamente.");
        return notaCredito;
    } else {
        NotaDebito notaDebito = (NotaDebito) nota;
        Pago pago = pagoService.getPagoPorId(idPago);
        // if (notaDebitoRepository.findByPagoIdAndEliminada(idPago, false) != null) {
        // throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes")
        // .getString("mensaje_nota_ya_existe"));
        // }
        notaDebito.setTipoComprobante(this.getTipoDeNotaDebitoSegunPago(pago));
        notaDebito.setNroNota(this.getSiguienteNumeroNotaDebito(idCliente, idEmpresa));
        notaDebito.setPagoId(pago.getId_Pago());
        this.validarCalculosDebito(notaDebito);
        notaDebito = notaDebitoRepository.save(notaDebito);
        this.cuentaCorrienteService.asentarEnCuentaCorriente(notaDebito, TipoDeOperacion.ALTA);
        LOGGER.warn("La Nota " + notaDebito + " se guardó correctamente.");
        return notaDebito;
    }
}
Also used : BusinessServiceException(sic.service.BusinessServiceException) NotaDebito(sic.modelo.NotaDebito) RenglonNotaDebito(sic.modelo.RenglonNotaDebito) NotaCredito(sic.modelo.NotaCredito) RenglonNotaCredito(sic.modelo.RenglonNotaCredito) Pago(sic.modelo.Pago) Transactional(org.springframework.transaction.annotation.Transactional)

Example 3 with NotaDebito

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

the class CuentaCorrienteServiceImpl method asentarEnCuentaCorriente.

@Override
@Transactional
public void asentarEnCuentaCorriente(Nota n, TipoDeOperacion operacion) {
    if (operacion == TipoDeOperacion.ALTA) {
        RenglonCuentaCorriente rcc = new RenglonCuentaCorriente();
        if (n instanceof NotaCredito) {
            rcc.setComprobante("NOTA CREDITO " + (n.getTipoComprobante().equals(TipoDeComprobante.NOTA_CREDITO_A) ? "\"A\"" : n.getTipoComprobante().equals(TipoDeComprobante.NOTA_CREDITO_B) ? "\"B\"" : n.getTipoComprobante().equals(TipoDeComprobante.NOTA_CREDITO_X) ? "\"X\"" : "") + " " + n.getSerie() + " - " + n.getNroNota());
            rcc.setMonto(n.getTotal());
            // Descripción de los productos
            rcc.setDescripcion(n.getMotivo());
        }
        if (n instanceof NotaDebito) {
            rcc.setComprobante("NOTA DEBITO " + (n.getTipoComprobante().equals(TipoDeComprobante.NOTA_DEBITO_A) ? "\"A\"" : n.getTipoComprobante().equals(TipoDeComprobante.NOTA_DEBITO_B) ? "\"B\"" : n.getTipoComprobante().equals(TipoDeComprobante.NOTA_DEBITO_X) ? "\"X\"" : "") + " " + n.getSerie() + " - " + n.getNroNota());
            rcc.setMonto(-n.getTotal());
            Pago p = pagoService.getPagoPorId(((NotaDebito) n).getPagoId());
            String descripcion = "Fecha Pago: " + (new FormatterFechaHora(FormatterFechaHora.FORMATO_FECHA_HISPANO)).format(p.getFecha()) + " Nº " + p.getNroPago();
            if (p.getNota() != null && p.getNota().length() > 0) {
                descripcion += " Nota:" + p.getNota();
            }
            rcc.setDescripcion(descripcion);
        }
        rcc.setNota(n);
        rcc.setFecha(n.getFecha());
        rcc.setIdMovimiento(n.getIdNota());
        rcc.setTipoMovimiento(this.getTipoMovimiento(n));
        this.getCuentaCorrientePorCliente(n.getCliente().getId_Cliente()).getRenglones().add(rcc);
        this.renglonCuentaCorrienteService.asentarRenglonCuentaCorriente(rcc);
        LOGGER.warn("El renglon " + rcc + " se guardó correctamente.");
    }
    if (operacion == TipoDeOperacion.ELIMINACION) {
        RenglonCuentaCorriente rcc = this.renglonCuentaCorrienteService.getRenglonCuentaCorrienteDeNota(n, false);
        rcc.setEliminado(true);
        LOGGER.warn("El renglon " + rcc + " se eliminó correctamente.");
    }
}
Also used : FormatterFechaHora(sic.util.FormatterFechaHora) NotaDebito(sic.modelo.NotaDebito) NotaCredito(sic.modelo.NotaCredito) Pago(sic.modelo.Pago) RenglonCuentaCorriente(sic.modelo.RenglonCuentaCorriente) Transactional(org.springframework.transaction.annotation.Transactional)

Example 4 with NotaDebito

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

the class NotaController method getReporteNota.

@GetMapping("/notas/{idNota}/reporte")
@ResponseStatus(HttpStatus.OK)
public ResponseEntity<byte[]> getReporteNota(@PathVariable long idNota) {
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_PDF);
    Nota nota = notaService.getNotaPorId(idNota);
    String fileName = (nota instanceof NotaCredito) ? "NotaCredito.pdf" : (nota instanceof NotaDebito) ? "NotaDebito.pdf" : "Nota.pdf";
    headers.add("content-disposition", "inline; filename=" + fileName);
    headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
    byte[] reportePDF = notaService.getReporteNota(nota);
    return new ResponseEntity<>(reportePDF, headers, HttpStatus.OK);
}
Also used : HttpHeaders(org.springframework.http.HttpHeaders) ResponseEntity(org.springframework.http.ResponseEntity) RenglonNotaDebito(sic.modelo.RenglonNotaDebito) NotaDebito(sic.modelo.NotaDebito) Nota(sic.modelo.Nota) NotaCredito(sic.modelo.NotaCredito) RenglonNotaCredito(sic.modelo.RenglonNotaCredito) GetMapping(org.springframework.web.bind.annotation.GetMapping) ResponseStatus(org.springframework.web.bind.annotation.ResponseStatus)

Example 5 with NotaDebito

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

the class DetalleNotaDebitoGUI method btnGuardarActionPerformed.

// </editor-fold>//GEN-END:initComponents
private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {
    // GEN-FIRST:event_btnGuardarActionPerformed
    NotaDebito notaDebito = new NotaDebito();
    notaDebito.setFecha(new Date());
    notaDebito.setIva21Neto((Double) txtIVA21Neto.getValue());
    notaDebito.setIva105Neto(0);
    notaDebito.setMontoNoGravado(pago.getMonto());
    notaDebito.setMotivo(cmbDescripcionRenglon2.getSelectedItem().toString());
    try {
        notaDebito.setRenglonesNotaDebito(Arrays.asList(RestClient.getRestTemplate().getForObject("/notas/renglon/debito/pago/" + pago.getId_Pago() + "?monto=" + (Double) txtSubTotalBruto.getValue() + "&ivaPorcentaje=21", RenglonNotaDebito[].class)));
        notaDebito.setSubTotalBruto((Double) txtSubTotalBruto.getValue());
        notaDebito.setTotal((Double) txtTotal.getValue());
        notaDebito.setUsuario(UsuarioActivo.getInstance().getUsuario());
        notaDebito = RestClient.getRestTemplate().postForObject("/notas/debito/empresa/" + EmpresaActiva.getInstance().getEmpresa().getId_Empresa() + "/cliente/" + cliente.getId_Cliente() + "/usuario/" + UsuarioActivo.getInstance().getUsuario().getId_Usuario() + "/pago/" + pago.getId_Pago(), notaDebito, NotaDebito.class);
        if (notaDebito != null) {
            notaDebitoCreada = true;
            if (Desktop.isDesktopSupported()) {
                try {
                    byte[] reporte = RestClient.getRestTemplate().getForObject("/notas/" + notaDebito.getIdNota() + "/reporte", byte[].class);
                    File f = new File(System.getProperty("user.home") + "/NotaDebito.pdf");
                    Files.write(f.toPath(), reporte);
                    Desktop.getDesktop().open(f);
                } catch (IOException ex) {
                    LOGGER.error(ex.getMessage());
                    JOptionPane.showMessageDialog(this, ResourceBundle.getBundle("Mensajes").getString("mensaje_error_IOException"), "Error", JOptionPane.ERROR_MESSAGE);
                }
            } else {
                JOptionPane.showMessageDialog(this, ResourceBundle.getBundle("Mensajes").getString("mensaje_error_plataforma_no_soportada"), "Error", JOptionPane.ERROR_MESSAGE);
            }
            this.dispose();
        }
    } 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 : RenglonNotaDebito(sic.modelo.RenglonNotaDebito) NotaDebito(sic.modelo.NotaDebito) RenglonNotaDebito(sic.modelo.RenglonNotaDebito) IOException(java.io.IOException) RestClientResponseException(org.springframework.web.client.RestClientResponseException) File(java.io.File) Date(java.util.Date) ResourceAccessException(org.springframework.web.client.ResourceAccessException)

Aggregations

NotaDebito (sic.modelo.NotaDebito)6 RenglonNotaDebito (sic.modelo.RenglonNotaDebito)5 Transactional (org.springframework.transaction.annotation.Transactional)3 NotaCredito (sic.modelo.NotaCredito)3 Pago (sic.modelo.Pago)3 RenglonNotaCredito (sic.modelo.RenglonNotaCredito)3 Date (java.util.Date)2 File (java.io.File)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 Test (org.junit.Test)1 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)1 HttpHeaders (org.springframework.http.HttpHeaders)1 ResponseEntity (org.springframework.http.ResponseEntity)1 GetMapping (org.springframework.web.bind.annotation.GetMapping)1 ResponseStatus (org.springframework.web.bind.annotation.ResponseStatus)1 ResourceAccessException (org.springframework.web.client.ResourceAccessException)1 RestClientResponseException (org.springframework.web.client.RestClientResponseException)1 ClienteBuilder (sic.builder.ClienteBuilder)1 CondicionIVABuilder (sic.builder.CondicionIVABuilder)1