Problemas con checkbox en una forma

Hilo iniciado por Andrés López Escárcega el 8 de mayo de 2015

Viendo 1 entrada (de un total de 1)
  • Autor
    Entradas
  • #10586
    RangoAndrés López EscárcegaAndrés López Escárcega
    Participante
    PARTICIPANTE
    1.199 Rincoins

    Hola, amigos del Rincón Dynamics.

    Heme aquí otra vez con una nueva problemática.

    En el formulario de Órdenes de Venta implementé un botón que lo que hace me despliega una form que muestra todas las facturas de servicio filtradas por: cuenta de facturación del cliente, es una factura de anticipos y la factura aún no está posteada.

    Este punto logré hacerlo bien:

    La form me despliega una lista de todas las facturas de servicio aún no registradas que son anticipos.

    Esta forma tiene un grid con una casilla de tipo checkbox, una columna que dice descripción de la factura y otra columna que muestra el monto de cada factura.

    El objetivo es que:

    1. Cuando marco el checkbox me guardé el monto de la factura seleccionada.

    2. Me permita marcar más de una casilla para las demás facturas.

    3 Así mismo, permita guardar también los demás montos de las facturas que se marcan subsecuentemente.

    4. Borre los montos correspondientes de las facturas que se vayan desmarcando.

    5. Obtener el total de los montos para aquellas facturas de servicio que tienen la casilla marcada.

    Los puntos del 1 al 4 los hace bien de acuerdo con mis pruebas que realicé.

    El problema es el punto 5. No me hace bien la sumatoria de las facturas que voy marcando en la casilla.

    Este es mi código de los métodos que tengo en la forma:

    public class FormRun extends ObjectRun

    {

       Map setMarked;

    }

    public void init()

    {

      

       setMarked = new Map(Types::Int64, Types::Real);

       super();

    }

    Método en el datasource de mi tabla con el cual hago marcar el checkbox en la forma.

    // BP Deviation Documented

    public edit NoYes markTrans(boolean _set, Tabla _tabla, NoYes _markTrans)

    {

        if (_set)

          {

           if (!_markTrans)

               {

              if (setMarked.exists(_tabla.RecId))

                      setMarked.remove(_tabla.RecId);

              montoDescuento = 0.00;

               }

           else

               {

                  setMarked.remove(_tabla.RecId);

               }

          }

        return setMarked.exists(_tabla.RecId);

    }

    A este método lo mando a llamar por medio de un botón agregado en mi forma.

    void showMarked()

    {

       MapEnumeratior mapEnumerator;

        ;

       mapEnumerator = setMarked.getEnumerator();

       while (mapEnumerator.moveNext())

       {

          info(strFmt(“Amount %1”, setMarked.lookup(mapEnumerator.currentKey())));

             montoDescuento += mapEnumerator.currentValue();

       }

       info(num2str(montoDescuento, 19, 2, DecimalSeparator::Dot, ThousandSeparator::None));

    }

    Pienso que el problema en mi método showMarked se encuentra en la siguiente línea de código:

    montoDescuento += mapEnumerator.currentValue( )

    Porque lo que ahora está haciendo es que al marcar la casilla suma dos veces el monto del anticipo seleccionado cuando debería hacerlo sólo una vez.

    Reitero que la función de borrado y el cálculo subsiguiente la está haciendo bien cada vez que desmarcó la casilla.

Viendo 1 entrada (de un total de 1)
  • Debes estar registrado para responder a este debate.
Carrito de compra