/** * Genera un pago para el grupo de cargos indicado * * @param c * @param cargos * @return */ public PagoM crearPago(final Cliente c, final List<NotaDeCredito> cargos) { Assert.notEmpty(cargos, "La collecion de cargos debe tener elementos"); final PagoM pago = new PagoM(); pago.setCliente(c); pago.setClave(c.getClave()); pago.setTipoDeDocumento("M"); 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); pago.getPagos().add(p); p.setOrigen(cargo.getOrigen()); p.setTipoDocto(cargo.getTipo()); p.setNumero(cargo.getNumero()); p.setSucursal(1); } }); return pago; }
/** * Genera un pago con {@link NotaDeCredito} a un grupo de ventas * * @param c * @param ventas */ public List<Venta> registrarPagoConNota(final Cliente c, final List<Venta> ventas) { // Filtramos las ventas con saldo CXCFiltros.filtrarVentasConSaldo(ventas); final List<Venta> afectadas = new ArrayList<Venta>(); if (ventas.isEmpty()) { MessageUtils.showMessage("El grupo de ventas selccionadas no tiene saldo", "Pago con nota"); return ventas; } // Obtener una lista de las posibles notas de credito para el pago para que el usuario // seleccione una final EventList<NotaDeCredito> notas = GlazedLists.eventList(getNotasManager().buscarNotasDeCreditoDisponibles(c)); if (notas.isEmpty()) { MessageUtils.showMessage( MessageFormat.format( "El cliente {0} ({1})\n No tiene notas disponibles para usar como forma de pago", c.getNombre(), c.getClave()), "Notas disponibles"); return afectadas; } final NotaDeCredito origen = Selectores.seleccionarNotaDeCredito(c, notas); // Procedemos con el pago if (origen != null) { final PagoConNota pago = getPagosFactory().crearPagoConNota(origen, ventas); final PagoFormModel model = new DefaultPagoFormModelImpl(pago); final PagoConNotaForm form = new PagoConNotaForm(model); form.open(); if (!form.hasBeenCanceled()) { try { getPagosManager().salvarGrupoDePagos(pago); final List<Venta> ventasResultantes = PagosUtils.extraerVentas(pago); for (Venta vv : ventasResultantes) { getVentasManager().refresh(vv); } afectadas.addAll(ventasResultantes); completar(pago); } catch (Exception e) { MessageUtils.showError("Error al salvar pago", e); } } } return afectadas; }
/** * Presenta un selector adecuado para seleccionar una {@link Venta} misma que regresa * * @param c * @param notas * @return */ public static Venta seleccionarVentaCredito(final Cliente c, final EventList<Venta> ventas) { final Selector<Venta> selector = new AbstractSelector<Venta>( ventas, "Lista de venas", "Ventas a credito pendientes de pago", MessageFormat.format("{0} ({1})", c.getNombre(), c.getClave())) { @Override protected TableFormat<Venta> getTableFormat() { return CXCTableFormats.getVentasCreTF(); } }; selector.open(); if (!selector.hasBeenCanceled()) { return selector.getSelected(); } return null; }
public static Devolucion seleccionarDevolucion( final Cliente c, final EventList<Devolucion> devos) { final Selector<Devolucion> selector = new AbstractSelector<Devolucion>( devos, "Devoluciones", "Lista de devoluciones pendientes", MessageFormat.format("{0} ({1})", c.getNombre(), c.getClave())) { @Override protected TableFormat<Devolucion> getTableFormat() { return CXCTableFormats.getDevolucionTF(); } }; selector.open(); if (!selector.hasBeenCanceled()) { return selector.getSelected(); } return null; }
/** * Presenta un selector adecuado para seleccionar una {@link NotaDeCredito} misma que regresa * * @param c * @param notas * @return */ public static NotaDeCredito seleccionarNotaDeCredito( final Cliente c, final EventList<NotaDeCredito> notas) { final Selector<NotaDeCredito> selector = new AbstractSelector<NotaDeCredito>( notas, "Notas de Crédito", "Disponibles para pago", MessageFormat.format("{0} ({1})", c.getNombre(), c.getClave())) { @Override protected TableFormat<NotaDeCredito> getTableFormat() { return CXCTableFormats.getNotaDeCreditoTF(); } }; selector.open(); if (!selector.hasBeenCanceled()) { return selector.getSelected(); } return null; }