DEV AUXILIARES/OPCIONES
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:

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>.