Search in sources :

Example 1 with Pago

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;
}
Also used : LocalDateTime(java.time.LocalDateTime) Caja(sic.modelo.Caja) Pago(sic.modelo.Pago) FormaDePago(sic.modelo.FormaDePago) Date(java.util.Date) QCaja(sic.modelo.QCaja) CajaRepository(sic.repository.CajaRepository) LocalDateTime(java.time.LocalDateTime) Autowired(org.springframework.beans.factory.annotation.Autowired) BooleanBuilder(com.querydsl.core.BooleanBuilder) HashMap(java.util.HashMap) Scheduled(org.springframework.scheduling.annotation.Scheduled) Rol(sic.modelo.Rol) ArrayList(java.util.ArrayList) Logger(org.apache.log4j.Logger) ICajaService(sic.service.ICajaService) Calendar(java.util.Calendar) ResourceBundle(java.util.ResourceBundle) Service(org.springframework.stereotype.Service) Empresa(sic.modelo.Empresa) Map(java.util.Map) Gasto(sic.modelo.Gasto) IFormaDePagoService(sic.service.IFormaDePagoService) EntityNotFoundException(javax.persistence.EntityNotFoundException) Sort(org.springframework.data.domain.Sort) Validator(sic.util.Validator) GregorianCalendar(java.util.GregorianCalendar) FormatterFechaHora(sic.util.FormatterFechaHora) DateExpression(com.querydsl.core.types.dsl.DateExpression) FacturaVenta(sic.modelo.FacturaVenta) BusinessServiceException(sic.service.BusinessServiceException) EstadoCaja(sic.modelo.EstadoCaja) ZoneId(java.time.ZoneId) IUsuarioService(sic.service.IUsuarioService) IPagoService(sic.service.IPagoService) BusquedaCajaCriteria(sic.modelo.BusquedaCajaCriteria) List(java.util.List) IGastoService(sic.service.IGastoService) Expressions(com.querydsl.core.types.dsl.Expressions) LocalDate(java.time.LocalDate) FacturaCompra(sic.modelo.FacturaCompra) IEmpresaService(sic.service.IEmpresaService) Transactional(org.springframework.transaction.annotation.Transactional) FacturaVenta(sic.modelo.FacturaVenta) Gasto(sic.modelo.Gasto) Pago(sic.modelo.Pago) FormaDePago(sic.modelo.FormaDePago) FacturaCompra(sic.modelo.FacturaCompra)

Example 2 with Pago

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"));
    }
}
Also used : BusinessServiceException(sic.service.BusinessServiceException) Factura(sic.modelo.Factura) Pago(sic.modelo.Pago) FormaDePago(sic.modelo.FormaDePago) Date(java.util.Date) Transactional(org.springframework.transaction.annotation.Transactional)

Example 3 with Pago

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;
}
Also used : Pago(sic.modelo.Pago)

Example 4 with Pago

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;
}
Also used : Pedido(sic.modelo.Pedido) ArrayList(java.util.ArrayList) RenglonFactura(sic.modelo.RenglonFactura) Factura(sic.modelo.Factura) Pago(sic.modelo.Pago) Transactional(org.springframework.transaction.annotation.Transactional)

Example 5 with Pago

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.");
}
Also used : Pago(sic.modelo.Pago) FormaDePago(sic.modelo.FormaDePago) Transactional(org.springframework.transaction.annotation.Transactional)

Aggregations

Pago (sic.modelo.Pago)9 FormaDePago (sic.modelo.FormaDePago)7 Transactional (org.springframework.transaction.annotation.Transactional)4 ArrayList (java.util.ArrayList)3 Date (java.util.Date)3 ResourceAccessException (org.springframework.web.client.ResourceAccessException)3 RestClientResponseException (org.springframework.web.client.RestClientResponseException)3 Gasto (sic.modelo.Gasto)3 Caja (sic.modelo.Caja)2 EstadoCaja (sic.modelo.EstadoCaja)2 Factura (sic.modelo.Factura)2 FacturaCompra (sic.modelo.FacturaCompra)2 FacturaVenta (sic.modelo.FacturaVenta)2 BusinessServiceException (sic.service.BusinessServiceException)2 BooleanBuilder (com.querydsl.core.BooleanBuilder)1 DateExpression (com.querydsl.core.types.dsl.DateExpression)1 Expressions (com.querydsl.core.types.dsl.Expressions)1 LocalDate (java.time.LocalDate)1 LocalDateTime (java.time.LocalDateTime)1 ZoneId (java.time.ZoneId)1