/** * Verifica si para este pago proceden notas de credito de descuento * * @param pago * @return */ public boolean procedeDescuento(PagoM pago) { boolean val = (pago.getTipoDeDocumento().equals("E") || pago.getTipoDeDocumento().equals("S")); if (!val) return val; for (Pago p : pago.getPagos()) { if (p.getVenta().getDescuento1() == 0 && p.getVenta().getBonificaciones() == 0) { return true; } } return false; }
/** * Intenta eliminar un pago unitario * * @param pago * @return */ public boolean eliminarPago(final Pago pago) { final String pattern = "Elminar Pago aplicado: {0}\n ({1} tiene descuento aplicado)"; String ok = pago.getVenta().getDescuentos() != 0 ? "Ya" : "No"; boolean res = MessageUtils.showConfirmationMessage( MessageFormat.format(pattern, pago.getId(), ok), "Eliminación de pagos"); if (res) { try { getPagosManager().eliminarPago(pago); return true; } catch (Exception e) { MessageUtils.showError("Error al elimiar pago", e); return false; } } return false; }
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; }
/** * Intenta eliminar un pago tipo PagoM aplicado * * @param pago * @return */ public boolean eliminarPagoM(final PagoM pago) { final String pattern = "Elminar Pago aplicado: {0}\n (Tiene {1} pagos de facturas con descuentos aplicados)"; int aplicados = 0; getPagosManager().refresh(pago); for (Pago p : pago.getPagos()) { if (p.getVenta() != null && p.getVenta().getDescuentos() != 0) aplicados++; } boolean res = MessageUtils.showConfirmationMessage( MessageFormat.format(pattern, pago.getId(), aplicados), "Eliminación de pagos"); if (res) { try { getPagosManager().eliminarPagoM(pago); return true; } catch (Exception e) { MessageUtils.showError("Error al elimiar pago", e); return false; } } return false; }
/** * 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; }