Diferencia entre revisiones de «DEV AUXILIARES/CONDICION EDICION»

De Pragma Wiki
Ir a la navegación Ir a la búsqueda
(Página creada con «=Descripción= Category:MANUAL/DESARROLLADOR Category:DEV AUXILIARES Los auxiliares de tipo '''CONDICION_EDICION''' permiten habilitar o deshabilitar campos de una pantalla ante un determinado evento. Se usan en las pantallas de edición de datos durante la inserción o edición de un registro. Este tipo de auxiliar aplica a: *Campos de clases (prxcampos). =Modo de operación= Estos auxiliares son manejados directamente por la aplicaci…»)
 
Sin resumen de edición
Línea 36: Línea 36:
=Ejemplos=
=Ejemplos=


===Ejemplo de una asignación estadística===
===Ejemplo de una habilitación===
La asignación estadística asigna a un campo el valor más usado (para ese campo) entre todos los registros de la tabla, el siguiente ejemplo asigna el campo FIMPUTATIPO de la tabla de [[ASIENTOS CONTALES/DETALLE]] con el valor estadístico:
El siguiente ejemplo está definido en la clase '''cmpDETALLE_pragma_arsARTICULO''' (que es ancestro de varias clases de registro de detalles de artículos en comprobantes de compras y de ventas) y opera sobre el campo FATRIBUTO2 que corresponde a la clasificación (ver [[ARTICULOS/CLASIFICACIONES]]).
<pre>
<TAG EVENTO>ONENTER
<TAG DETONADOR>FIMPUTATIPO
<TAG VALORNULO>
<TAG ESTADISTICA>
</pre>
 
*La etiqueta <TAG EVENTO>ONENTER indica que el auxiliar se ejecuta al ingresar al campo.
*La etiqueta <TAG DETONADOR>FIMPUTATIPO indica que el campo es FIMPUTATIPO, por lo tanto, el auxiliar se ejecutará al ingresar al campo FIMPUTATIPO.
*La etiqueta <TAG VALORNULO> indica que la asignación se hará exclusivamente si el valor del campo, previo a la asignación, es NULO.
*La etiqueta <TAG ESTADISTICA> indica que el tipo de asignación es estadística, por lo que el sistema le asignará el valor más usado en ese mismo campo, pero en todos los registros de la tabla.


===Ejemplo de una asignación con SQL===
La siguiente asignación usa un comando SQL que si bien opera sobre valores internos usando FBN, puede reemplazarse por cualquier SQL válido. El auxiliar opera en el detalle de [[ASIENTOS CONTABLES/DETALLE]] asignando el valor al campo FCANTIDAD como la diferencia entre débitos y créditos.
Los comandos son:
<pre>
<pre>
<TAG EVENTO>ONENTER
<TAG DETONADOR>FARTICULO
<TAG DETONADOR>FCANTIDAD
<TAG TIPO>HABILITACION
<TAG VALORNULO>
<COMANDO>
<COMANDO>
SELECT CASE
SELECT FRESULTADO = CASE WHEN EXISTS
WHEN
(
ISNULL(FBN(master.FDEBITOS),0) > ISNULL(FBN(master.FCREDITOS),0)
SELECT * FROM ARTCLASIFICACION WHERE
AND FBN(FTIPOIMPORTE) = 'Crédito'
ARTCLASIFICACION.FARTICULO = FBN(FARTICULO)
THEN ISNULL(FBN(master.FDEBITOS),0) - ISNULL(FBN(master.FCREDITOS),0)
AND ARTCLASIFICACION.FCODIGO <> 'NA'
 
)
WHEN
THEN 1
ISNULL(FBN(master.FDEBITOS),0) < ISNULL(FBN(master.FCREDITOS),0)
ELSE 0
AND FBN(FTIPOIMPORTE) = 'Débito'
THEN ISNULL(FBN(master.FCREDITOS),0) - ISNULL(FBN(master.FDEBITOS),0)
 
ELSE NULL
END
END
</COMANDO>
</COMANDO>
</pre>
</pre>


*La etiqueta <TAG EVENTO>ONENTER indica que el auxiliar se ejecuta al ingresar al campo.
*La etiqueta '''<TAG DETONADOR>FARTICULO''' indcia que el detonador es el campo FARTICULO, por lo que en el onexit (salida del control de edición) de ese campo se ejecuta la evaluación.
*La etiqueta <TAG DETONADOR>FCANTIDAD indica que el campo es FCANTIDAD, por lo tanto, el auxiliar se ejecutará al ingresar al campo FCANTIDAD.
*La etiqueta '''<TAG TIPO>HABILITACION''' indica que si el comando retorna 1 (verdadero) entonces el campo se habilitará.
*La etiqueta <TAG VALORNULO> indica que la asignación se hará exclusivamente si el valor del campo, previo a la asignación, es NULO.
*Los comandos entre las etiquetas '''<COMANDO>''' y '''/<COMANDO>''' retorna 1 (verdadero) si el artículo tiene definidas clasificaciones distintas a 'NA' en la tabla [[ARTICULOS/CÑASIFICACIONES]], sino retorna 0.
*Los comandos entre las etiquetas <COMANDO> y </COMANDO> se ejecutan para asignar el valor. El SQL puede tener la complejidad y longitud que sea necesaria sin limitaciones. No es necesario que el resultado tenga un nombre de campo (este caso no lo tiene) ya que la aplicación asigna el valor del primer campo del resultado.
 
Debe notarse que:
*Cuando un campo tiene asociado un auxiliar de habilitación, el campo estará deshabilitado por defecto cuando iniciemos la inserción o edición de datos.
*Del mismo modo, cuando tiene asociado un auxiliar de deshabilitación, el campo estará habilitado por defecto cuando iniciemos la inserción o edición de datos.

Revisión del 19:33 3 abr 2025

Descripción

Los auxiliares de tipo CONDICION_EDICION permiten habilitar o deshabilitar campos de una pantalla ante un determinado evento. Se usan en las pantallas de edición de datos durante la inserción o edición de un registro.

Este tipo de auxiliar aplica a:

Modo de operación

Estos auxiliares son manejados directamente por la aplicación.

Etiquetas

Las etiquetas en uso son:

<COMANDO>

Define el comando que verifica la condición, si éste retorna 1 la condición es verdadera y habilitará o deshabilitará el campo según lo que indica la etiqueta <TAG TIPO>, cierra con </COMANDO>.

<TAG DETONADOR>

Indica qué campo detona la evaluación.

<TAG REQUERIDO>

Indica que el ingreso del campo es requerido.

Normalmente el atributo de requerido de un campo se asignaría al crear la tabla, pero los campos que participan de este auxiliar no pueden tener el atributo de Requerido ya que en ocasiones el campo debe ser deshabilitado sin ingresar ningún valor.

Esta etiqueta se usa habitualmente cuando la condición haría que se habilite un campo y queremos que se ingrese un valor.

<TAG TIPO>

Indica la acción a realizar si el comando de evaluación retorna verdadero, los valores posibles son:

  • DESHABILITACION: Se deshabilitará el campo.
  • HABILITACION: Se habilitará el campo.

Uso del auxiliar

El auxiliar es ejecutado automáticamente por la aplicación y solamente cuando la pantalla está en inserción o en edición.

Ejemplos

Ejemplo de una habilitación

El siguiente ejemplo está definido en la clase cmpDETALLE_pragma_arsARTICULO (que es ancestro de varias clases de registro de detalles de artículos en comprobantes de compras y de ventas) y opera sobre el campo FATRIBUTO2 que corresponde a la clasificación (ver ARTICULOS/CLASIFICACIONES).

<TAG DETONADOR>FARTICULO
<TAG TIPO>HABILITACION
<COMANDO>
SELECT FRESULTADO = CASE WHEN EXISTS
(
SELECT * FROM ARTCLASIFICACION WHERE
ARTCLASIFICACION.FARTICULO = FBN(FARTICULO)
AND ARTCLASIFICACION.FCODIGO <> 'NA'
)
THEN 1
ELSE 0
END
</COMANDO>
  • La etiqueta <TAG DETONADOR>FARTICULO indcia que el detonador es el campo FARTICULO, por lo que en el onexit (salida del control de edición) de ese campo se ejecuta la evaluación.
  • La etiqueta <TAG TIPO>HABILITACION indica que si el comando retorna 1 (verdadero) entonces el campo se habilitará.
  • Los comandos entre las etiquetas <COMANDO> y /<COMANDO> retorna 1 (verdadero) si el artículo tiene definidas clasificaciones distintas a 'NA' en la tabla ARTICULOS/CÑASIFICACIONES, sino retorna 0.

Debe notarse que:

  • Cuando un campo tiene asociado un auxiliar de habilitación, el campo estará deshabilitado por defecto cuando iniciemos la inserción o edición de datos.
  • Del mismo modo, cuando tiene asociado un auxiliar de deshabilitación, el campo estará habilitado por defecto cuando iniciemos la inserción o edición de datos.