use of sic.modelo.Pedido in project sic by belluccifranco.
the class FacturaServiceImpl method guardar.
@Override
@Transactional
public List<Factura> guardar(List<Factura> facturas, Long idPedido) {
List<Factura> facturasProcesadas = new ArrayList<>();
facturas.forEach((f) -> {
productoService.actualizarStock(f, TipoDeOperacion.ALTA);
});
if (idPedido != null) {
Pedido pedido = pedidoService.getPedidoPorId(idPedido);
facturas.forEach((f) -> {
f.setPedido(pedido);
});
for (Factura f : facturas) {
Factura facturaGuardada = facturaRepository.save(this.procesarFactura(f));
facturasProcesadas.add(facturaGuardada);
}
pedido.setFacturas(facturasProcesadas);
pedidoService.actualizar(pedido);
facturasProcesadas.stream().forEach((f) -> {
this.actualizarFacturaEstadoPago(f);
LOGGER.warn("La Factura " + f + " se guardó correctamente.");
});
pedidoService.actualizarEstadoPedido(pedido, facturasProcesadas);
} else {
facturasProcesadas = new ArrayList<>();
for (Factura f : facturas) {
List<Pago> pagosFactura = f.getPagos();
f.setPagos(null);
Factura facturaGuardada = facturaRepository.save(this.procesarFactura(f));
facturasProcesadas.add(facturaGuardada);
LOGGER.warn("La Factura " + facturaGuardada + " se guardó correctamente.");
if (pagosFactura != null) {
pagosFactura.forEach((p) -> {
pagoService.guardar(p);
});
f.setPagos(pagosFactura);
}
this.actualizarFacturaEstadoPago(facturaGuardada);
}
}
return facturasProcesadas;
}
use of sic.modelo.Pedido in project sic by belluccifranco.
the class PuntoDeVentaGUI method construirPedido.
private void construirPedido() {
try {
this.pedido = new Pedido();
this.pedido.setCliente(cliente);
this.pedido.setEliminado(false);
this.pedido.setEmpresa(empresa);
this.pedido.setFacturas(null);
this.pedido.setFecha(dc_fechaFactura.getDate());
this.pedido.setFechaVencimiento(dc_fechaVencimiento.getDate());
this.pedido.setObservaciones(txta_Observaciones.getText());
this.pedido.setUsuario(UsuarioActivo.getInstance().getUsuario());
double[] importes = new double[renglones.size()];
int indice = 0;
for (RenglonFactura renglon : renglones) {
importes[indice] = renglon.getImporte();
indice++;
}
this.pedido.setTotalEstimado(RestClient.getRestTemplate().getForObject("/facturas/subtotal?" + "importe=" + Arrays.toString(importes).substring(1, Arrays.toString(importes).length() - 1), double.class));
this.pedido.setEstado(EstadoPedido.ABIERTO);
List<RenglonPedido> renglonesPedido = new ArrayList<>();
renglones.stream().forEach((r) -> {
renglonesPedido.add(this.convertirRenglonFacturaARenglonPedido(r));
});
this.pedido.setRenglones(renglonesPedido);
} 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);
}
}
use of sic.modelo.Pedido in project sic by belluccifranco.
the class PuntoDeVentaGUI method btn_ContinuarActionPerformed.
//GEN-LAST:event_txt_Decuento_porcentajeActionPerformed
private void btn_ContinuarActionPerformed(java.awt.event.ActionEvent evt) {
//GEN-FIRST:event_btn_ContinuarActionPerformed
if (renglones.isEmpty()) {
JOptionPane.showMessageDialog(this, ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_sin_renglones"), "Error", JOptionPane.ERROR_MESSAGE);
} else {
this.calcularResultados();
try {
if (!cmb_TipoComprobante.getSelectedItem().equals(TipoDeComprobante.PEDIDO)) {
List<RenglonFactura> productosFaltantes = new ArrayList();
for (RenglonFactura renglon : renglones) {
if (!RestClient.getRestTemplate().getForObject("/productos/" + renglon.getId_ProductoItem() + "/stock/disponibilidad?cantidad=" + renglon.getCantidad(), boolean.class)) {
productosFaltantes.add(renglon);
}
}
if (productosFaltantes.isEmpty()) {
CerrarVentaGUI gui_CerrarVenta = new CerrarVentaGUI(this, true);
gui_CerrarVenta.setVisible(true);
if (gui_CerrarVenta.isExito()) {
this.limpiarYRecargarComponentes();
}
} else {
ProductosFaltantesGUI gui_ProductosFaltantes = new ProductosFaltantesGUI(productosFaltantes);
gui_ProductosFaltantes.setModal(true);
gui_ProductosFaltantes.setLocationRelativeTo(this);
gui_ProductosFaltantes.setVisible(true);
}
} else {
//El Id es 0 cuando, se genera un pedido desde el punto de venta entrando por el botón nuevo de administrar pedidos.
if (this.pedido == null || this.pedido.getId_Pedido() == 0) {
this.construirPedido();
}
List<Pedido> pedidos = Arrays.asList(RestClient.getRestTemplate().getForObject("/pedidos/busqueda/criteria?" + "idEmpresa=" + EmpresaActiva.getInstance().getEmpresa().getId_Empresa() + "&nroPedido=" + pedido.getNroPedido(), Pedido[].class));
if (pedidos.isEmpty()) {
Pedido p = RestClient.getRestTemplate().postForObject("/pedidos", this.pedido, Pedido.class);
this.lanzarReportePedido(p);
this.limpiarYRecargarComponentes();
} else if ((this.pedido.getEstado() == EstadoPedido.ABIERTO || this.pedido.getEstado() == null) && this.modificarPedido == true) {
this.actualizarPedido(this.pedido);
JOptionPane.showMessageDialog(this, "El pedido se actualizó correctamente.", "Aviso", JOptionPane.INFORMATION_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);
}
}
}
use of sic.modelo.Pedido in project sic by belluccifranco.
the class PuntoDeVentaGUI method actualizarPedido.
private void actualizarPedido(Pedido pedido) {
try {
pedido = RestClient.getRestTemplate().getForObject("/pedidos/" + pedido.getId_Pedido(), Pedido.class);
pedido.setRenglones(this.convertirRenglonesFacturaARenglonesPedido(this.renglones));
double[] importes = new double[renglones.size()];
int indice = 0;
for (RenglonFactura renglon : renglones) {
importes[indice] = renglon.getImporte();
indice++;
}
pedido.setTotalEstimado(RestClient.getRestTemplate().getForObject("/facturas/subtotal?" + "importe=" + Arrays.toString(importes).substring(1, Arrays.toString(importes).length() - 1), double.class));
RestClient.getRestTemplate().put("/pedidos", pedido);
} 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