/** * Genera un {@link PagoConOtros} para un grupo de ventas * * @param origen * @param ventas * @return */ public PagoConOtros crearPago(final PagoM origen, final List<Venta> ventas) { Assert.notEmpty(ventas, "La collecion de ventas debe tener elementos"); Assert.isTrue(origen.getDisponible().doubleValue() > 0, "El pago origen debe tener disponible"); CXCFiltros.filtrarVentasConSaldo(ventas); if (ventas.isEmpty()) return null; final String tipo = ventas.get(0).getTipo(); if (ventas.isEmpty()) return null; CXCFiltros.filtrarVentasParaUnTipo(ventas, tipo); final PagoConOtros pago = new PagoConOtros(); pago.setOrigen(origen); pago.setReferencia(origen.getId().toString()); pago.setCliente(origen.getCliente()); pago.setFormaDePago(FormaDePago.S); pago.setTipoDeDocumento(tipo); pago.setCliente(ventas.get(0).getCliente()); for (Venta v : ventas) { pago.aplicarPago(v, CantidadMonetaria.pesos(0)); } return pago; }
/** * Genera un {@link PagoConNota} para un grupo de ventas * * @param nota * @param ventas * @return */ public PagoConNota crearPagoConNota(NotaDeCredito nota, List<Venta> ventas) { Assert.notEmpty(ventas, "La collecion de ventas debe tener elementos"); Assert.isTrue(nota.getSaldo() < 0, "La nota origen debe tener disponible"); CXCFiltros.filtrarVentasConSaldo(ventas); if (ventas.isEmpty()) return null; final String tipo = ventas.get(0).getTipo(); if (ventas.isEmpty()) return null; CXCFiltros.filtrarVentasParaUnTipo(ventas, tipo); final PagoConNota pago = new PagoConNota(); pago.setNota(nota); pago.setReferencia(nota.getTipo() + " " + nota.getNumero()); pago.setCliente(nota.getCliente()); pago.setFormaDePago(FormaDePago.T); pago.setTipoDeDocumento(tipo); pago.setCliente(ventas.get(0).getCliente()); for (Venta v : ventas) { Pago pp = pago.aplicarPago(v, CantidadMonetaria.pesos(0)); pp.setNotaDelPago(nota); pp.setFormaDePago2(pago.getFormaDePago()); pp.setDescFormaDePago(pago.getFormaDePago().getDesc()); pp.setReferencia(nota.getTipo() + " " + nota.getNumero()); } return pago; }