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