Diferencia entre revisiones de «DEV AUXILIARES/OPCIONES»

De Pragma Wiki
Ir a la navegación Ir a la búsqueda
Sin resumen de edición
 
(No se muestran 7 ediciones intermedias del mismo usuario)
Línea 2: Línea 2:
[[Category:MANUAL/DESARROLLADOR]]
[[Category:MANUAL/DESARROLLADOR]]
[[Category:DEV AUXILIARES]]
[[Category:DEV AUXILIARES]]
Los auxiliares de tipo '''OPCIONES''' permiten agregar opciones al menú local de cada pantalla:
Los auxiliares de tipo '''OPCIONES''' permiten agregar opciones al menú local de cada pantalla. Estas opciones permiten aplicar cambios en la base de datos usando SQL, o simplemente seleccionar datos de una forma muy sencilla y normalmente operan sobre los datos presentes en la pantalla.


Menú de opciones de una pantalla:
Por ejemplo:


[[Archivo:20250331 1637 OPCIONES DE UNA PANTALLA.png|miniaturadeimagen|no|Opciones de una pantalla.]]
[[Archivo:20250331 1637 OPCIONES DE UNA PANTALLA.png|miniaturadeimagen|no|Opciones de una pantalla.]]
Línea 15: Línea 15:
Fueron agregadas con auxiliares de tipo '''OPCIONES'''.
Fueron agregadas con auxiliares de tipo '''OPCIONES'''.


crear una evaluación sobre tablas del sistema. Por ejemplo, para determinar si un artículo se encuentra activo.  
Existen dos tipos de opciones:
*SQL_APLICAR: Aplica una sentencia SQL.
*SQL_SELECCIONAR: Sentencia SQL que muestra un resultado.


Las evaluaciones se usan en las pantallas de edición de datos.
Las '''OPCIONES''' permiten agregar funcionalidad de una manera muy rápida.
 
Las evaluaciones deben ser suscriptas por otras tablas del sistema cuyo atributo sea igual al de la definición (por ejemplo, si un artículo de tipo ART define una evaluación, ésta puede ser suscripta en cualquier tabla que tenga un atributo de tipo ART). Las evaluaciones no aplican automáticamente ya que distintas evaluaciones pueden tener sentido dentro de determinadas tablas.
 
Las evaluaciones son muy convenientes ya que el SQL de verificación puede cambiar en el tiempo sin la necesidad de hacer ningún otro tipo de ajuste en la aplicación.


Este tipo de auxiliar aplica a:
Este tipo de auxiliar aplica a:
*[[DEV CLASES|Clases (prxclases)]].
*[[DEV CLASES|Clases (prxclases)]].
*[[DEV CONSULTAS|Consultas (prxconsultas)]].


=Modo de operación=
=Modo de operación=
Cuando estamos en una pantalla de edición, e ingresamos un valor correspondiente a un dato que valida sobre una tabla, el sistema verifica la existencia de ese registro. Si no existe retorna un error, si existe entre otras cosas ejecuta las evaluaciones definidas. Esto lo hace teniendo los datos del registro que se está validando en memoria:
Cuando estamos en una pantalla y picamos sobre el botón de opciones la opción '''Opciones de la clase''' verificará si existen auxiliares de tipo '''OPCIONES''', si los hay los agregará al menú.
*Si estamos evaluando el estado de un artículo el código que ingresamos en la pantalla de edición será el de un artículo.
 
*Previo a aplicar la evaluación el sistema carga en memoria ese registro de la tabla de artículos para tener acceso a todos sus datos.
Cada opción puede tener condiciones según las cuales se encuentre habilitada o deshabilitada.
 
Picar sobre alguna de las opciones la ejecutará directamente.


=Etiquetas=
=Etiquetas=
Las etiquetas en uso son:
Las etiquetas en uso son:


===<MENSAJE>===
===<TAG TIPO>===
Permite definir un mensaje para retornar al usuario.
Indica de qué tipo es la opción:
*SQL_APLICAR: Aplica una sentencia SQL.
*SQL_SELECCIONAR: Ejecuta una sentencia SQL que muestra un resultado.


Cierra con </MENSAJE>.
No tiene etiqueta de cierre.
 
===<COMANDO>===
Permite definir el comando a aplicar, el comando depende principalmente del tipo (descripto en la etiqueta anterior).
 
El comando puede ser cualquier SQL válido, sin limitaciones en su complejidad o tamaño.
 
Cierra con </COMANDO>.
 
===<CONDICION>===
Permite definir una condición para activar la opción. Si ésta retorna verdadero la opción está habilitada, si retorna falso la opción está deshabilitada.
 
Cierra con </CONDICION>
 
===<CONFIRMA>===
Permite indicar un mensaje de confirmación, solo si retornamos Ok se ejecutará la opción.
 
Cierra con </CONFIRMA>.


===<SELECT>===
===<SELECT>===
Permite definir el SQL que hace la evaluación, este SQL pude ser tan complejo y extenso como se necesite y puede consultar cualquier objeto presente en el sistema.
Si el comando necesita operar sobre un valor en particular, por ejemplo:
*En una hipotética opción '''Asignar a usuario''' necesitamos asignar a un usuario en particular.
*Dentro de la etiqueta <SELECT> '''pondríamos los comandos SQL necesarios''' para seleccionar ese usuario.
 
Cierra con </SELECT>.
 
Existe un caso especial para cuando necesitamos seleccionar una fecha, simplemente debemos usar:
 
<pre>
<COMANDO>
DECLARE @FFECHAPAGO datetime


El valor de retorno debe ser de tipo [[BIT|BIT]].
SET @FFECHAPAGO = <SELECTVALUE>


Cierra con </SELECT>.
<SELECT>
DATE
</SELECT>
</pre>
 
===<TAG CONREGISTROS>===
Habilita la opción solo cuando hay registros.
 
===<TAG QUITARCOMILLAS>===
Quita las comillas al comando.
 
===<TAG REFRESCAR>===
Refresca la consulta al aplicar la opción. Esta opción es particularmente útil cuando estamos consultando datos que se modifican una vez que ejecutamos una opción, por ejemplo, aprobar un comprobante.


===<TAG TIPO>===
===<TAG SEPARADOR>===
Permite dos valores:
Agrega un separador al menú antes de la opción.
*ADVERTENCIA: Retorna un mensaje de advertencia.
*ERROR: Retorna un mensaje de error.


En la operación del sistema:
===<TAG SERVICIOWEB>===
*Ambos tipos retornan una pantalla indicando el tipo de situación y la leyenda asociada.
La opción llama a un servicio web. Cuando incluimos esta etiqueta debemos informar el sitio web dentro de las etiquetas <COMANDO> y </COMANDO>, por ejemplo:
*Los mensajes de advertencia permiten continuar con el ingreso de datos.
*Los mensajes de error no permiten seguir con el ingreso de datos hasta resolver la situación a la que refiere el mensaje.


No tiene etiqueta de cierre, la sintaxis es:
<pre>
<pre>
<TAG TIPO>ADVERTENCIA
<COMANDO>
http://192.168.1.254/facturaelectronica/test.php
GO
</COMANDO>
</pre>
</pre>


O:
También podemos usar comandos FBN para tomar valores de la pantalla:


<pre>
<pre>
<TAG TIPO>ERROR
<COMANDO>
http://192.168.1.254/facturaelectronica/retenciones.php?empresa=FBN(FDB)&clave=FBN(FCLAVE)
GO
</COMANDO>
</pre>
</pre>


=Ejemplo=
=Ejemplo=
Existe una evaluación sobre la tabla de artículos (ART) que verifica que el artículo esté activo, en pantalla se ve de la siguiente manera:
Este auxiliar corresponde a la pantalla FCCAB_PENDIENTES_APROBACION_Consulta, opción 01-REASIGNAR USUARIO.


[[Archivo:20250331 1600 DEFINIR UNA EVALUACION.png|miniaturadeimagen|no|Definición de una evaluación:]]
Esta consulta es usada por quienes tienen asignadas facturas de compra para su aprobación, a través de este auxiliar pueden resignar la factura a otro usuario con permisos equivalentes.


Internamente se guarda de la siguiente manera:
El comando completo del auxiliar es:


<pre>
<pre>
<TAG TIPO>ERROR
<TAG TIPO>SQL_APLICAR
<TAG CONREGISTROS>
<TAG REFRESCAR>
<COMANDO>
DECLARE @FUSUARIO VARCHAR(24)
 
SET @FUSUARIO = <SELECTVALUE>
<SELECT>
<SELECT>
SELECT FBN(FACTIVO)
/* Usuarios que pueden aprobar... */
 
SELECT
Usuario = wflPASOS_FIRMAS.FUSUARIO
, Nombre = USUARIO.FNOMBRE
FROM wflPASOS, wflPASOS_FIRMAS, USUARIO WHERE
wflPASOS.FFAMILIA = 'FC'
AND wflPASOS.FCODIGO =
(
/* Paso mínimo con firmas... */
 
SELECT MIN(PASOMIN.FCODIGO) FROM wflPASOS PASOMIN WHERE
PASOMIN.FFAMILIA = wflPASOS.FFAMILIA
AND PASOMIN.FFIRMAS > 0
)
AND wflPASOS.FFIRMAS > 0
AND wflPASOS_FIRMAS.FFAMILIA = wflPASOS.FFAMILIA
AND wflPASOS_FIRMAS.FPASO = wflPASOS.FCODIGO
AND wflPASOS_FIRMAS.FACTIVO = 1
AND USUARIO.FCODIGO = wflPASOS_FIRMAS.FUSUARIO
AND
(
EXISTS (SELECT * FROM wflASIGNACION WHERE wflASIGNACION.FFAMILIA = wflPASOS.FFAMILIA AND wflASIGNACION.FUSUARIO = SYSTEM_USER AND wflASIGNACION.FACTIVO = 1)
OR EXISTS (SELECT * FROM wflPASOS_FIRMAS WHERE wflPASOS_FIRMAS.FFAMILIA = wflPASOS.FFAMILIA AND wflPASOS_FIRMAS.FPASO = wflPASOS.FCODIGO AND wflPASOS_FIRMAS.FUSUARIO = SYSTEM_USER AND wflPASOS_FIRMAS.FACTIVO = 1)
)
AND NOT EXISTS
(
SELECT X.* FROM wflFIRMASX X WHERE
X.FCOMPROBANTE = FBN(FCOMPROBANTE)
AND X.FUSUARIO = wflPASOS_FIRMAS.FUSUARIO
)
</SELECT>
</SELECT>
<MENSAJE>
UPDATE wflFIRMASX SET
El artículo ha sido marcado como no activo y no debería usarse, consulte con quienes administran los artículos para mayor información.
FUSUARIO = @FUSUARIO
</MENSAJE>
, FTS = getdate()
WHERE
FCOMPROBANTE = FBN(FCOMPROBANTE)
GO
</COMANDO>
</pre>
</pre>


La etiqueta '''<TAG TIPO>''' indica que es un mensaje de error.
Las etiquetas incluidas son:


Los comandos dentro del '''<SELECT>''' y '''</SELECT>''' operan en este caso directamente sobre la tabla ART retornando el valor del campo FACTIVO (El comando FBN, FieldByName retorna el valor del campo cuyo nombre se indica dentro de los paréntesis). El comando podría ser cualquier otra cosa, por ejemplo:
===<TAG TIPO>SQL_APLICAR===
Indica que el auxiliar contiene una sentencia SQL que se aplica en la base de datos.


<pre>
===<TAG CONREGISTROS>===
SELECT RESULTADO = CASE WHEN EXISTS (SELECT * FROM ART WHERE FCODIGO = 'LBEN' AND FACTIVO = 1) THEN 1 ELSE 0 END
Indica que el auxiliar solo se usa si existen registros en la consulta sobre el que aplica, es decir que no tendría ningún sentido aplicar el auxiliar si no hay registros sobre los que hacerlo.
</pre>


=Uso del auxiliar=
===<TAG REFRESCAR>===
Este auxiliar define las evaluaciones, éstas deben ser posteriormente suscriptas por campos definidos en el sistema.
Indica que una vez que se ha ejecutado el auxiliar debe refrescarse la consulta sobre el que aplica, normalmente porque su resultado puede variar tras haber aplicado el auxiliar.


Por ejemplo, si definimos un auxiliar que evalúa si un artículo está activo podemos usarlo desde cualquier clase (tabla) que define un campo de tipo artículo.
===<COMANDO>===
Dentro de esta etiqueta (y su cierre </COMANDO>) se incluye el comando a aplicar.


Para suscribir la evaluación tenemos que ir a la definición del campo y seleccionar las opciones picando en el botón cuyo texto es "AtributoUDT"::
===<SELECT>===
Esta etiqueta, y su cierre </SELECT>, deben ubicarse dentro de <COMANDO> y </COMANDO> y se usa para definir un valor antes de aplicar el comando. En este caso tenemos que elegir el usuario al que reasignaremos la factura.


[[Archivo:20250331 1607 SUSCRIBIR UNA EVALUACION.png|miniaturadeimagen|no|Seleccionar la opción de suscribir evaluación.]]
El <SELECT> es normalmente un comando SQL que elegirá un valor y lo asignará a la variable que contenga el texto '''<SELECTVALUE>''', por ejemplo al inicio de <COMANDO> encontraremos:


Una vez seleccionada la opción de suscribir evaluaciones veremos la lista de evaluaciones asociadas a ese atributo donde podremos seleccionar las que necesitemos.
<pre>
DECLARE @FUSUARIO VARCHAR(24)


[[Archivo:20250331 1609 SUSCRIBIR UNA EVALUACION II.png|miniaturadeimagen|no|Suscripción de evaluaciones.]]
SET @FUSUARIO = <SELECTVALUE>
</pre>


Cada vez que ingresemos un código de artículo en la tabla que suscribe, al salir del campo el sistema va a cargar el registro correspondiente al valor ingresado y aplicará las evaluaciones suscriptas. La operación del sistema seguirá según el resultado de esa evaluación.
Cuando seleccionemos un valor usando el <SELECT> ese valor se asignará a la variable @FUSUARIO y la variable podrá usarse dentro del <COMANDO>.

Revisión actual - 17:07 1 abr 2025

Descripción

Los auxiliares de tipo OPCIONES permiten agregar opciones al menú local de cada pantalla. Estas opciones permiten aplicar cambios en la base de datos usando SQL, o simplemente seleccionar datos de una forma muy sencilla y normalmente operan sobre los datos presentes en la pantalla.

Por ejemplo:

Opciones de una pantalla.

Las opciones:

  • Aprobar.
  • Cambiar fecha de pago y aprobar.
  • Cambiar fecha de pago sin aprobar.

Fueron agregadas con auxiliares de tipo OPCIONES.

Existen dos tipos de opciones:

  • SQL_APLICAR: Aplica una sentencia SQL.
  • SQL_SELECCIONAR: Sentencia SQL que muestra un resultado.

Las OPCIONES permiten agregar funcionalidad de una manera muy rápida.

Este tipo de auxiliar aplica a:

Modo de operación

Cuando estamos en una pantalla y picamos sobre el botón de opciones la opción Opciones de la clase verificará si existen auxiliares de tipo OPCIONES, si los hay los agregará al menú.

Cada opción puede tener condiciones según las cuales se encuentre habilitada o deshabilitada.

Picar sobre alguna de las opciones la ejecutará directamente.

Etiquetas

Las etiquetas en uso son:

<TAG TIPO>

Indica de qué tipo es la opción:

  • SQL_APLICAR: Aplica una sentencia SQL.
  • SQL_SELECCIONAR: Ejecuta una sentencia SQL que muestra un resultado.

No tiene etiqueta de cierre.

<COMANDO>

Permite definir el comando a aplicar, el comando depende principalmente del tipo (descripto en la etiqueta anterior).

El comando puede ser cualquier SQL válido, sin limitaciones en su complejidad o tamaño.

Cierra con </COMANDO>.

<CONDICION>

Permite definir una condición para activar la opción. Si ésta retorna verdadero la opción está habilitada, si retorna falso la opción está deshabilitada.

Cierra con </CONDICION>

<CONFIRMA>

Permite indicar un mensaje de confirmación, solo si retornamos Ok se ejecutará la opción.

Cierra con </CONFIRMA>.

<SELECT>

Si el comando necesita operar sobre un valor en particular, por ejemplo:

  • En una hipotética opción Asignar a usuario necesitamos asignar a un usuario en particular.
  • Dentro de la etiqueta <SELECT> pondríamos los comandos SQL necesarios para seleccionar ese usuario.

Cierra con </SELECT>.

Existe un caso especial para cuando necesitamos seleccionar una fecha, simplemente debemos usar:

<COMANDO>
DECLARE @FFECHAPAGO datetime

SET @FFECHAPAGO = <SELECTVALUE>

<SELECT>
DATE
</SELECT>

<TAG CONREGISTROS>

Habilita la opción solo cuando hay registros.

<TAG QUITARCOMILLAS>

Quita las comillas al comando.

<TAG REFRESCAR>

Refresca la consulta al aplicar la opción. Esta opción es particularmente útil cuando estamos consultando datos que se modifican una vez que ejecutamos una opción, por ejemplo, aprobar un comprobante.

<TAG SEPARADOR>

Agrega un separador al menú antes de la opción.

<TAG SERVICIOWEB>

La opción llama a un servicio web. Cuando incluimos esta etiqueta debemos informar el sitio web dentro de las etiquetas <COMANDO> y </COMANDO>, por ejemplo:

<COMANDO>
http://192.168.1.254/facturaelectronica/test.php
GO
</COMANDO>

También podemos usar comandos FBN para tomar valores de la pantalla:

<COMANDO>
http://192.168.1.254/facturaelectronica/retenciones.php?empresa=FBN(FDB)&clave=FBN(FCLAVE)
GO
</COMANDO>

Ejemplo

Este auxiliar corresponde a la pantalla FCCAB_PENDIENTES_APROBACION_Consulta, opción 01-REASIGNAR USUARIO.

Esta consulta es usada por quienes tienen asignadas facturas de compra para su aprobación, a través de este auxiliar pueden resignar la factura a otro usuario con permisos equivalentes.

El comando completo del auxiliar es:

<TAG TIPO>SQL_APLICAR
<TAG CONREGISTROS>
<TAG REFRESCAR>
<COMANDO>
DECLARE @FUSUARIO VARCHAR(24)

SET @FUSUARIO = <SELECTVALUE>
<SELECT>
/* Usuarios que pueden aprobar... */

SELECT
Usuario = wflPASOS_FIRMAS.FUSUARIO
, Nombre = USUARIO.FNOMBRE
FROM wflPASOS, wflPASOS_FIRMAS, USUARIO WHERE
wflPASOS.FFAMILIA = 'FC'
AND wflPASOS.FCODIGO =
(
/* Paso mínimo con firmas... */

SELECT MIN(PASOMIN.FCODIGO) FROM wflPASOS PASOMIN WHERE
PASOMIN.FFAMILIA = wflPASOS.FFAMILIA
AND PASOMIN.FFIRMAS > 0
)
AND wflPASOS.FFIRMAS > 0
AND wflPASOS_FIRMAS.FFAMILIA = wflPASOS.FFAMILIA
AND wflPASOS_FIRMAS.FPASO = wflPASOS.FCODIGO
AND wflPASOS_FIRMAS.FACTIVO = 1
AND USUARIO.FCODIGO = wflPASOS_FIRMAS.FUSUARIO
AND
(
EXISTS (SELECT * FROM wflASIGNACION WHERE wflASIGNACION.FFAMILIA = wflPASOS.FFAMILIA AND wflASIGNACION.FUSUARIO = SYSTEM_USER AND wflASIGNACION.FACTIVO = 1)
OR EXISTS (SELECT * FROM wflPASOS_FIRMAS WHERE wflPASOS_FIRMAS.FFAMILIA = wflPASOS.FFAMILIA AND wflPASOS_FIRMAS.FPASO = wflPASOS.FCODIGO AND wflPASOS_FIRMAS.FUSUARIO = SYSTEM_USER AND wflPASOS_FIRMAS.FACTIVO = 1)
)
AND NOT EXISTS
(
SELECT X.* FROM wflFIRMASX X WHERE
X.FCOMPROBANTE = FBN(FCOMPROBANTE)
AND X.FUSUARIO = wflPASOS_FIRMAS.FUSUARIO
)
</SELECT>
UPDATE wflFIRMASX SET
FUSUARIO = @FUSUARIO
, FTS = getdate()
WHERE
FCOMPROBANTE = FBN(FCOMPROBANTE)
GO
</COMANDO>

Las etiquetas incluidas son:

<TAG TIPO>SQL_APLICAR

Indica que el auxiliar contiene una sentencia SQL que se aplica en la base de datos.

<TAG CONREGISTROS>

Indica que el auxiliar solo se usa si existen registros en la consulta sobre el que aplica, es decir que no tendría ningún sentido aplicar el auxiliar si no hay registros sobre los que hacerlo.

<TAG REFRESCAR>

Indica que una vez que se ha ejecutado el auxiliar debe refrescarse la consulta sobre el que aplica, normalmente porque su resultado puede variar tras haber aplicado el auxiliar.

<COMANDO>

Dentro de esta etiqueta (y su cierre </COMANDO>) se incluye el comando a aplicar.

<SELECT>

Esta etiqueta, y su cierre </SELECT>, deben ubicarse dentro de <COMANDO> y </COMANDO> y se usa para definir un valor antes de aplicar el comando. En este caso tenemos que elegir el usuario al que reasignaremos la factura.

El <SELECT> es normalmente un comando SQL que elegirá un valor y lo asignará a la variable que contenga el texto <SELECTVALUE>, por ejemplo al inicio de <COMANDO> encontraremos:

DECLARE @FUSUARIO VARCHAR(24)

SET @FUSUARIO = <SELECTVALUE>

Cuando seleccionemos un valor usando el <SELECT> ese valor se asignará a la variable @FUSUARIO y la variable podrá usarse dentro del <COMANDO>.