use of sic.modelo.Pago in project sic by belluccifranco.
the class CajaServiceImpl method getTotalMovimientosPorFormaDePago.
private double getTotalMovimientosPorFormaDePago(Caja caja, FormaDePago fdp) {
double pagosVentasTotal = 0.0;
double pagosComprasTotal = 0.0;
double gastosTotal = 0.0;
LocalDateTime ldt = caja.getFechaApertura().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
if (caja.getFechaCierre() == null) {
ldt = ldt.withHour(23);
ldt = ldt.withMinute(59);
ldt = ldt.withSecond(59);
} else {
ldt = caja.getFechaCierre().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
}
List<Pago> pagos = pagoService.getPagosEntreFechasYFormaDePago(caja.getEmpresa().getId_Empresa(), fdp.getId_FormaDePago(), caja.getFechaApertura(), Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant()));
List<Gasto> gastos = gastoService.getGastosEntreFechasYFormaDePago(caja.getEmpresa().getId_Empresa(), fdp.getId_FormaDePago(), caja.getFechaApertura(), Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant()));
for (Pago pago : pagos) {
if (pago.getFactura() instanceof FacturaVenta) {
pagosVentasTotal += pago.getMonto();
} else if (pago.getFactura() instanceof FacturaCompra) {
pagosComprasTotal += pago.getMonto();
}
}
gastosTotal = gastos.stream().map((gasto) -> gasto.getMonto()).reduce(gastosTotal, (accumulator, _item) -> accumulator + _item);
return pagosVentasTotal - pagosComprasTotal - gastosTotal;
}
use of sic.modelo.Pago in project sic by belluccifranco.
the class PagoServiceImpl method pagarMultiplesFacturas.
@Override
@Transactional
public void pagarMultiplesFacturas(List<Factura> facturas, double monto, FormaDePago formaDePago, String nota) {
if (monto <= this.calcularTotalAdeudadoFacturas(facturas)) {
List<Factura> facturasOrdenadas = facturaService.ordenarFacturasPorFechaAsc(facturas);
for (Factura factura : facturasOrdenadas) {
if (monto > 0.0) {
factura.setPagos(this.getPagosDeLaFactura(factura.getId_Factura()));
Pago nuevoPago = new Pago();
nuevoPago.setFormaDePago(formaDePago);
nuevoPago.setFactura(factura);
nuevoPago.setFecha(new Date());
nuevoPago.setEmpresa(factura.getEmpresa());
nuevoPago.setNota(nota);
double saldoAPagar = this.getSaldoAPagar(factura);
if (saldoAPagar <= monto) {
monto = monto - saldoAPagar;
// Se utiliza round por un problema de presicion de la maquina ej: 828.65 - 614.0 = 214.64999...
monto = Math.round(monto * 100.0) / 100.0;
nuevoPago.setMonto(saldoAPagar);
} else {
nuevoPago.setMonto(monto);
monto = 0.0;
}
this.guardar(nuevoPago);
}
}
} else {
throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_pago_mayorADeuda_monto"));
}
}
use of sic.modelo.Pago in project sic by belluccifranco.
the class FacturaServiceImpl method getTotalPagado.
@Override
public double getTotalPagado(Factura factura) {
double pagado = 0;
List<Pago> pagos = pagoService.getPagosDeLaFactura(factura.getId_Factura());
for (Pago pago : pagos) {
pagado = pagado + pago.getMonto();
}
return pagado;
}
use of sic.modelo.Pago 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.Pago in project sic by belluccifranco.
the class PagoServiceImpl method eliminar.
@Override
@Transactional
public void eliminar(long idPago) {
Pago pago = this.getPagoPorId(idPago);
pago.setEliminado(true);
pagoRepository.save(pago);
facturaService.actualizarFacturaEstadoPago(pago.getFactura());
LOGGER.warn("El Pago " + pago + " se eliminó correctamente.");
}
Aggregations