Diferencia entre revisiones de «DEV AUXILIARES/CONSTRAINT»
(No se muestran 3 ediciones intermedias del mismo usuario) | |||
Línea 76: | Línea 76: | ||
===Ejemplo de una constricción por FILTRO=== | ===Ejemplo de una constricción por FILTRO=== | ||
Esta constricción aplica sobre la clase [[ORDENES PAGO]], campo '''FTARJETA_CARTERA''' y solo permite registrar [[TESORERIA/CARTERAS]] que estén habilitadas para el circuito de caja ingresado. En estos casos el control de edición sigue siendo una caja de edición con la posibilidad de presionar '''F5''' para elegir un valor posible, pero ese valor estará filtrado por el comando del auxiliar. | Esta constricción aplica sobre la clase [[ORDENES PAGO]], campo '''FTARJETA_CARTERA''' y solo permite registrar [[TESORERIA/CARTERAS]] que estén habilitadas para el circuito de caja ingresado. | ||
En estos casos el control de edición sigue siendo una caja de edición con la posibilidad de presionar '''F5''' para elegir un valor posible, pero ese valor estará filtrado por el comando del auxiliar. | |||
<pre> | <pre> | ||
Línea 102: | Línea 104: | ||
*La etiqueta '''<MENSAJE></MENSAJE>''' define el mensaje de advertencia que verá el usuario si elige una cartera que no está incluida en el filtro. | *La etiqueta '''<MENSAJE></MENSAJE>''' define el mensaje de advertencia que verá el usuario si elige una cartera que no está incluida en el filtro. | ||
*Los comandos entre las etiquetas '''<COMANDO>''' y '''/<COMANDO>''' indican que el campo FCODIGO de la cartera debe estar dentro de aquellos definidos EN [[TESORERIA/CIRCUITOS DE CAJA DETALLE]]. | *Los comandos entre las etiquetas '''<COMANDO>''' y '''/<COMANDO>''' indican que el campo FCODIGO de la cartera debe estar dentro de aquellos definidos EN [[TESORERIA/CIRCUITOS DE CAJA DETALLE]]. | ||
===Ejemplo de una constricción por LIMITE=== | |||
Esta constricción aplica sobre la clase [[ANTICIPOS PAGO]], campo '''FFECHAPAGO''' y se asegura que la fecha de pago definida no sea menor que la de emisión del comprobante. | |||
Las constricciones por límite deben retornar dos registros: | |||
*Uno de ellos debe tener el texto '''min''' en el primer campo, y en el segundo campo el valor asociado al valor mínimo posible. | |||
*Y el otro registro debe tener el texto '''max''' en el primer campo y en el segundo campo el valor asociado al valor máximo posible. | |||
El control de edición sigue siendo una caja de edición, y el resultado estará limitado por el mínimo y el máximo. | |||
<pre> | |||
<TAG TIPO>LIMITE | |||
<TAG SQL> | |||
<MENSAJE> | |||
La fecha de pago no puede ser menor a la fecha de emisión del anticipo | |||
</MENSAJE> | |||
<COMANDO> | |||
SELECT | |||
'min', | |||
valor = FBN(FCMPFECHA) | |||
UNION SELECT | |||
'max', | |||
valor = dateadd(day, 365, FBN(FCMPFECHA)) | |||
</COMANDO> | |||
</pre> | |||
*La etiqueta '''<TAG TIPO>LIMITE''' indica que se trata de una constricción de tipo límite. | |||
*La etiqueta '''<TAG SQL>''' indica que debe ejecutarse el comando para obtener la lista de valores posibles. | |||
*La etiqueta '''<MENSAJE></MENSAJE>''' define el mensaje de advertencia que verá el usuario si elige una fecha fuera de los límites. | |||
*Los comandos entre las etiquetas '''<COMANDO>''' y '''/<COMANDO>''' retornan dos registros, uno para el '''min''' y otro para el '''max'''. |
Revisión actual - 20:42 3 abr 2025
Descripción
Los auxiliares de tipo CONSTRAINT permiten definir constricciones (o limitaciones) a los valores posibles de un campo, con esto tenemos una capa más de validación en el ingreso de datos del sistema.
Las constricciones pueden ser de 3 tipos:
- ENUMERACION define una lista de valores posibles.
- FILTRO define un filtro que se aplica sobre alguna tabla.
- LIMITE define límites con un mínimo y un máximo.
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 a ejecutar, cierra con </COMANDO>. No hay limitaciones en su complejidad o longitud.
<MENSAJE>
Define un mensaje a mostrar al usuario si el valor ingresado no es válido, cierra con </MENSAJE>.
<TAG SQL>
Indica que la constricción se resuelve ejecutando el SQL incluido dentro de <COMANDO> y </COMANDO>.
<TAG TIPO>
Indica el tipo de constricción:
- ENUMERACION define una lista de valores posibles.
- FILTRO define un filtro que se aplica sobre alguna tabla.
- LIMITE define límites con un mínimo y un máximo.
Ejemplos
Ejemplo de una constricción por ENUMERACION
Esta constricción aplica sobre la clase REMITOS MATERIA PRIMA/DETALLE, campo Articulo y solo permite registrar los artículos que estén definidos en la tabla REMITOS MATERIA PRIMA/VALUACION.
<TAG TIPO>ENUMERACION <TAG SQL> <MENSAJE> </MENSAJE> <COMANDO> SELECT DISTINCT RPDTL_VALUACION.Articulo , Descripcion = ART.FDESCRIPCION FROM RPDTL_VALUACION , ART WHERE ART.FCODIGO = RPDTL_VALUACION.Articulo ORDER BY RPDTL_VALUACION.Articulo </COMANDO>
- La etiqueta <TAG TIPO>ENUMERACION indica que la constricción es de tipo enumeración por lo que debería retornar una lista de valores posibles.
- La etiqueta <TAG SQL> indica que debe ejecutarse el comando para obtener la lista de valores posibles.
- La etiqueta <MENSAJE></MENSAJE> se encuentra vacía y podría no existir. El motivo es que en las enumeraciones el ingreso del dato se hace seleccionando de una lista por lo que no hay ocasión de ingresar un dato inválido lo que hace que el mensaje de error sea innecesario.
- Los comandos entre las etiquetas <COMANDO> y /<COMANDO> retornan los artículos que existen en REMITOS MATERIA PRIMA/VALUACION.
Debe notarse que:
- Cuando un campo tiene asociado un auxiliar de tipo constraint y enumeración, el control de edición cambia a una combobox.
Advertencia:
- Cuando un campo tiene asociado un CONSTRAINT de tipo ENUMERACION, el control de edición cambia a un combobox automáticamente en la aplicación.
Ejemplo de una constricción por FILTRO
Esta constricción aplica sobre la clase ORDENES PAGO, campo FTARJETA_CARTERA y solo permite registrar TESORERIA/CARTERAS que estén habilitadas para el circuito de caja ingresado.
En estos casos el control de edición sigue siendo una caja de edición con la posibilidad de presionar F5 para elegir un valor posible, pero ese valor estará filtrado por el comando del auxiliar.
<TAG TIPO>FILTRO <TAG SQL> <MENSAJE> La cartera ingresada no está habilitada para este circuito de caja. </MENSAJE> <COMANDO> FCODIGO IN ( SELECT DISTINCT CAV_CIRCUITOD.FCARTERA FROM CAV_CIRCUITOD WHERE CAV_CIRCUITOD.FCIRCUITO = FBN(FCIRCUITOCAJA) AND CAV_CIRCUITOD.FOPERACION = 'EMISION' ) </COMANDO>
- La etiqueta <TAG TIPO>FILTRO indica que se trata de una constricción de tipo filtro.
- La etiqueta <TAG SQL> indica que debe ejecutarse el comando para obtener la lista de valores posibles.
- La etiqueta <MENSAJE></MENSAJE> define el mensaje de advertencia que verá el usuario si elige una cartera que no está incluida en el filtro.
- Los comandos entre las etiquetas <COMANDO> y /<COMANDO> indican que el campo FCODIGO de la cartera debe estar dentro de aquellos definidos EN TESORERIA/CIRCUITOS DE CAJA DETALLE.
Ejemplo de una constricción por LIMITE
Esta constricción aplica sobre la clase ANTICIPOS PAGO, campo FFECHAPAGO y se asegura que la fecha de pago definida no sea menor que la de emisión del comprobante.
Las constricciones por límite deben retornar dos registros:
- Uno de ellos debe tener el texto min en el primer campo, y en el segundo campo el valor asociado al valor mínimo posible.
- Y el otro registro debe tener el texto max en el primer campo y en el segundo campo el valor asociado al valor máximo posible.
El control de edición sigue siendo una caja de edición, y el resultado estará limitado por el mínimo y el máximo.
<TAG TIPO>LIMITE <TAG SQL> <MENSAJE> La fecha de pago no puede ser menor a la fecha de emisión del anticipo </MENSAJE> <COMANDO> SELECT 'min', valor = FBN(FCMPFECHA) UNION SELECT 'max', valor = dateadd(day, 365, FBN(FCMPFECHA)) </COMANDO>
- La etiqueta <TAG TIPO>LIMITE indica que se trata de una constricción de tipo límite.
- La etiqueta <TAG SQL> indica que debe ejecutarse el comando para obtener la lista de valores posibles.
- La etiqueta <MENSAJE></MENSAJE> define el mensaje de advertencia que verá el usuario si elige una fecha fuera de los límites.
- Los comandos entre las etiquetas <COMANDO> y /<COMANDO> retornan dos registros, uno para el min y otro para el max.