/* * (non-Javadoc) * @see com.luxsoft.siipap.cxc.model.PagosFactory#crearPagoAutomaticoParaNotaDeCargo(java.util.List) */ public PagoM crearPagoAutomaticoParaNotaDeCargo(List<NotaDeCredito> cargos) { Assert.notEmpty(cargos, "La collecion de cargos debe tener elementos"); final PagoM pago = crearPago(cargos.get(0).getCliente(), cargos); pago.setFormaDePago(FormaDePago.D); CantidadMonetaria total = CantidadMonetaria.pesos(0); for (NotaDeCredito c : cargos) { final CantidadMonetaria importe = c.getSaldoDelCargoEnMoneda(); pago.aplicarPago(c, importe); total = total.add(importe); } pago.setImporte(total); return pago; }
/** * Genera un {@link PagoConNota} para un grupo de cargos * * @param nota * @param ventas * @return */ public PagoConNota crearPagoDeCargoConNota( final NotaDeCredito disponible, List<NotaDeCredito> cargos) { Assert.notEmpty(cargos, "La collecion de cargos debe tener elementos"); Assert.isTrue( disponible.getSaldo() < 0, "La nota origen debe tener disponible el disponible es: " + disponible.getSaldo()); final PagoConNota pago = new PagoConNota(); pago.setNota(disponible); pago.setReferencia(disponible.getId().toString()); pago.setCliente(disponible.getCliente()); pago.setFormaDePago(FormaDePago.T); pago.setTipoDeDocumento("M"); pago.setCliente(cargos.get(0).getCliente()); CollectionUtils.forAllDo( cargos, new Closure() { public void execute(Object input) { NotaDeCredito cargo = (NotaDeCredito) input; Pago p = new Pago(); p.setCliente(pago.getCliente()); p.setClave(pago.getClave()); p.setPagoM(pago); p.setNota(cargo); p.setNotaDelPago(disponible); pago.getPagos().add(p); p.setOrigen(cargo.getOrigen()); p.setTipoDocto(cargo.getTipo()); p.setNumero(cargo.getNumero()); p.setFormaDePago2(pago.getFormaDePago()); p.setDescFormaDePago(pago.getFormaDePago().getDesc()); p.setReferencia(disponible.getTipo() + " " + disponible.getNumero()); p.setSucursal(1); } }); 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; }