DEV AUXILIARES/ORIGEN
Descripción
Los auxiliares de tipo ORIGEN permiten agregar orígenes de datos a las pantallas de edición, estos orígenes permiten importar datos de otras tablas del sistema a cualquier pantalla simplificando la carga y minimizando el error.
Por ejemplo, en la pantalla de asientos contables podemos:

- Copiar un comprobante normal (sin reversar).
- Copiar un comprobante reversado.
- Copiar un comprobante reversado (desde la pantalla de comprobantes a reversar).
- Importar una planilla de cálculo.
Todas estas opciones se definieron en el sistema como auxiliares de tipo origen.
Este tipo de auxiliar aplica a:
Modo de operación
Cuando estamos en una pantalla (normalmente un detalle) picamos sobre el botón de opciones, la opción Orígenes verificará la existencia de auxiliares de tipo ORIGEN, 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 sugerirá los registros a importar, debemos elegir cuáles queremos antes de que sean insertados en la pantalla.
Etiquetas
Las etiquetas en uso son:
<COMANDO>
Permite definir el comando que selecciona los registros que necesitamos.
El comando puede ser cualquier SQL válido, sin limitaciones en su complejidad o tamaño.
Cierra con </COMANDO>.
<SELECT>
Si el comando necesita operar sobre un valor en particular, por ejemplo:
- En una hipotética opción Copiar comprobante necesitamos seleccionar ese comprobante antes de elegir los registros a copiar.
- 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>
<CONDICION>
Permite ingresar un código SQL para indicar si la opción está habilitada o no, el valor es entero:
- Si retorna 1 la opción está habilitada.
- Si retorna 0 la opción está deshabilitada.
Cierra con </CONDICION>.
<CAMPOS>
Esta etiqueta
<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.
<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>.
<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>.