/** * 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"); } } }
/* * (non-Javadoc) * @see com.luxsoft.siipap.cxc.model.PagosFactory#crearPagoParaDiferienciaCambiaria(com.luxsoft.siipap.cxc.domain.PagoM) */ public PagoConOtros crearPagoParaDiferienciaCambiaria(final PagoM origen) { Assert.notNull(origen, "El pago no debe ser nulo"); Assert.isTrue(origen.getDisponible().doubleValue() > 0); final String tipo = origen.getTipoDeDocumento(); final CantidadMonetaria total = origen.getDisponibleAsMoneda(); final PagoConOtros pago = new PagoConOtros(); pago.setOrigen(origen); pago.setReferencia(origen.getId().toString()); pago.setCliente(origen.getCliente()); pago.setTipoDeDocumento(tipo); pago.setCliente(origen.getCliente()); pago.setFormaDePago(FormaDePago.F); pago.setComentario("DIFERENCIA CAMBIARA DE MAS"); pago.setImporte(total); return pago; }
/** * 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; }
public PagoConOtros crearPagoDeCargo(PagoM origen, List<NotaDeCredito> cargos) { Assert.notEmpty(cargos, "La collecion de cargos debe tener elementos"); Assert.isTrue(origen.getDisponible().doubleValue() > 0, "El pago origen debe tener disponible"); CXCFiltros.filtrarCargosConSaldo(cargos); if (cargos.isEmpty()) return null; final PagoConOtros pago = new PagoConOtros(); pago.setOrigen(origen); pago.setReferencia(origen.getId().toString()); pago.setCliente(origen.getCliente()); pago.setFormaDePago(FormaDePago.S); pago.setTipoDeDocumento(cargos.get(0).getTipo()); pago.setCliente(cargos.get(0).getCliente()); for (NotaDeCredito c : cargos) { Pago pp = pago.aplicarPago(c, CantidadMonetaria.pesos(0)); pp.setSucursal(1); } return pago; }
/** * 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; }