/** * Procede con el proceso de pago con otros una vez que se localizaron los pagos con disponible * * @param c * @param pagos * @param ventas */ private void procedePagoConOtros( final Cliente c, final List<PagoM> pagos, final List<Venta> ventas) { CXCFiltros.filtrarVentasConSaldo(ventas); final PagoM origen = Selectores.seleccionarPagoM(c, pagos); if (origen != null) { final PagoConOtros pago = getPagosFactory().crearPago(origen, ventas); if (pago != null) { pago.setOrigen(origen); pago.setCliente(origen.getCliente()); final PagoConOtrosModelImpl model = new PagoConOtrosModelImpl(true, pago); final PagoConOtrosForm form = new PagoConOtrosForm(model); form.open(); if (!form.hasBeenCanceled()) { getPagosManager().salvarGrupoDePagos(pago); final List<Venta> ventasResultantes = PagosUtils.extraerVentas(pago); for (Venta vv : ventasResultantes) { getVentasManager().refresh(vv); } completar(pago); } } else { MessageUtils.showMessage("La selección de ventas no califica para el pago", "Pagos"); } } }
/** * Completa el proceso de pago genrando descuentos y realizando pagos automaticos cuando estos * apliquen * * @param ventas */ public List<Venta> completar(final PagoM pago) { final List<Venta> ventasResultantes = PagosUtils.extraerVentas(pago); if (!ventasResultantes.isEmpty() && procedeDescuento(pago)) { List<NotaDeCredito> descuentos = aplicarNotaDeDescuento(pago.getCliente(), ventasResultantes, pago.getFecha()); /** * if(!descuentos.isEmpty()){ List<NotaDeCredito> * resNotas=Browsers.seleccionarNotasParaSuImpresion(descuentos); for(NotaDeCredito * nota:resNotas){ getNotasManager().imprimirNotaDeDescuento(nota); } } */ } if (!ventasResultantes.isEmpty() && (!pago.getTipoDeDocumento().equals("X"))) { registrarPagoAutomatico(ventasResultantes); } return ventasResultantes; }
/** * 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; }