/**
   * 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;
  }
Exemple #3
0
  /**
   * 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;
  }
Exemple #4
0
 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;
 }
Exemple #5
0
  /**
   * 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;
  }