/** * 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; }