Diferencia entre revisiones de «DEV AUXILIARES/ORIGEN»

De Pragma Wiki
Ir a la navegación Ir a la búsqueda
Sin resumen de edición
 
(No se muestran 3 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 '''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.  
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:
Por ejemplo, en la pantalla de asientos contables podemos:
Línea 18: Línea 18:


=Modo de operación=
=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ú.
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.
Cada opción puede tener condiciones según las cuales se encuentre habilitada o deshabilitada.


Picar sobre alguna de las opciones la ejecutará directamente.
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=
=Etiquetas=
Las etiquetas en uso son:
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>===
===<COMANDO>===
Permite definir el comando a aplicar, el comando depende principalmente del tipo (descripto en la etiqueta anterior).
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.
El comando puede ser cualquier SQL válido, sin limitaciones en su complejidad o tamaño.


Cierra con </COMANDO>.
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>===
Si el comando necesita operar sobre un valor en particular, por ejemplo:
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.
*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.
*Dentro de la etiqueta <SELECT> '''pondríamos los comandos SQL necesarios''' para seleccionar ese usuario.


Línea 71: Línea 54:
</pre>
</pre>


===<TAG CONREGISTROS>===
===<CONDICION>===
Habilita la opción solo cuando hay registros.
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.


===<TAG QUITARCOMILLAS>===
Cierra con </CONDICION>.
Quita las comillas al comando.


===<TAG REFRESCAR>===
===<CAMPOS>===
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.
Los orígenes de datos permiten incorporar registros a cualquier tabla. En ocasiones tenemos que validar que no se inserten registros con claves duplicadas que fallarán al aplicarlos a la base de datos.


===<TAG SEPARADOR>===
Podemos lograr esto usando esta etiqueta que nos permite definir una lista de campos a validar, ejemplo:
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:


<pre>
<pre>
<COMANDO>
<CAMPOS>
http://192.168.1.254/facturaelectronica/test.php
Campo1
GO
Campo2
</COMANDO>
</CAMPOS>
</pre>
</pre>


También podemos usar comandos FBN para tomar valores de la pantalla:
Definiendo una lista así el sistema va a verificar cada vez que vaya a ingresar un registro que no exista ninguno con los mismos valores en esos campos.
 
Normalmente los campos definidos en esta lista pertenecen a la clave primaria de la tabla.
 
===<TAG EMITE_AVISO>===
Esta etiqueta se usa en conjunto con la etiqueta '''<CAMPOS>''' e indica al sistema que debe dar un mensaje de advertencia cada vez que se quiera insertar un registro cuyos campos se duplicarían.
 
Si no usamos esta etiqueta el sistema no dará ningún mensaje y simplemente ignorará el registro duplicado.


<pre>
===<TAG IMPORTAR_PLANILLA>===
<COMANDO>
Indica al sistema que la opción permite importar una planilla y activará esa funcionalidad.
http://192.168.1.254/facturaelectronica/retenciones.php?empresa=FBN(FDB)&clave=FBN(FCLAVE)
GO
</COMANDO>
</pre>


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


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.
Este origen es usado por quienes quieren copiar un comprobante anterior a uno nuevo, y normalmente luego modificarlo.


El comando completo del auxiliar es:
El comando completo del auxiliar es:


<pre>
<pre>
<TAG TIPO>SQL_APLICAR
<TAG CONREGISTROS>
<TAG REFRESCAR>
<COMANDO>
<COMANDO>
DECLARE @FUSUARIO VARCHAR(24)
DECLARE @FCMPCODIGO VARCHAR(20)
 
SET @FCMPCODIGO = <SELECTVALUE>


SET @FUSUARIO = <SELECTVALUE>
<SELECT>
<SELECT>
/* Usuarios que pueden aprobar... */
SELECT
SELECT
Usuario = wflPASOS_FIRMAS.FUSUARIO
Asiento = ASCAB.FCMPCODIGO
, Nombre = USUARIO.FNOMBRE
, Fecha = ASCAB.FCMPFECHA
FROM wflPASOS, wflPASOS_FIRMAS, USUARIO WHERE
, Comentarios = ASCAB.FCMPCOMENTARIOS
wflPASOS.FFAMILIA = 'FC'
, Usuario = ASCAB.FCMPUSUARIO
AND wflPASOS.FCODIGO =
, Debitos = ASCAB.FDEBITOS
(
, Creditos = ASCAB.FCREDITOS
/* Paso mínimo con firmas... */
, Recs = (SELECT COUNT(*) FROM ASDET WHERE ASDET.FCMPCODIGO = ASCAB.FCMPCODIGO)
 
FROM ASCAB WHERE
SELECT MIN(PASOMIN.FCODIGO) FROM wflPASOS PASOMIN WHERE
ASCAB.FCMPESTADO = 'Registrado'
PASOMIN.FFAMILIA = wflPASOS.FFAMILIA
AND ASCAB.FCMPFECHA >= dateadd(day, -730, getdate())
AND PASOMIN.FFIRMAS > 0
ORDER BY ASCAB.FCMPFECHA DESC, ASCAB.FCMPCODIGO
)
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>
UPDATE wflFIRMASX SET
SELECT
FUSUARIO = @FUSUARIO
ASDET.FCMPLINEA
, FTS = getdate()
, ASDET.FCUENTA
WHERE
, ASDET.FDESCRIPCION
FCOMPROBANTE = FBN(FCOMPROBANTE)
, ASDET.FSUBCUENTA
GO
, ASDET.FIMPUTATIPO
, ASDET.FIMPUTA
, ASDET.FIMPUTASUB
, ASDET.FSECTOR
, ASDET.FTIPOIMPORTE
, ASDET.FMONEDA
, ASDET.FFECHAVALUACION
, ASDET.FCOTIZACION
, ASDET.FCANTIDAD
, ASDET.FJURISDICCION_IIBB
FROM ASDET WHERE
ASDET.FCMPCODIGO = @FCMPCODIGO
ORDER BY ASDET.FCMPLINEA
</COMANDO>
</COMANDO>
</pre>
</pre>


Las etiquetas incluidas son:
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>===
===<COMANDO>===
Dentro de esta etiqueta (y su cierre </COMANDO>) se incluye el comando a aplicar.
Dentro de esta etiqueta (y su cierre </COMANDO>) se incluye el comando para seleccionar los registros.


===<SELECT>===
===<SELECT>===
Línea 179: Línea 145:


<pre>
<pre>
DECLARE @FUSUARIO VARCHAR(24)
DECLARE @FCMPCODIGO VARCHAR(20)


SET @FUSUARIO = <SELECTVALUE>
SET @FCMPCODIGO = <SELECTVALUE>
</pre>
 
Cuando seleccionemos un valor usando el <SELECT> ese valor se asignará a la variable @FCMPCODIGO y la variable podrá usarse dentro del <COMANDO>.
 
En este caso el SELECT elige de la lista de asientos en estado registrado, hasta 2 años hacia atrás:
 
<pre>
<SELECT>
SELECT
Asiento = ASCAB.FCMPCODIGO
, Fecha = ASCAB.FCMPFECHA
, Comentarios = ASCAB.FCMPCOMENTARIOS
, Usuario = ASCAB.FCMPUSUARIO
, Debitos = ASCAB.FDEBITOS
, Creditos = ASCAB.FCREDITOS
, Recs = (SELECT COUNT(*) FROM ASDET WHERE ASDET.FCMPCODIGO = ASCAB.FCMPCODIGO)
FROM ASCAB WHERE
ASCAB.FCMPESTADO = 'Registrado'
AND ASCAB.FCMPFECHA >= dateadd(day, -730, getdate())
ORDER BY ASCAB.FCMPFECHA DESC, ASCAB.FCMPCODIGO
</SELECT>
</pre>
</pre>


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

Revisión actual - 17:51 1 abr 2025

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:

Origenes de datos en asientos contables.
  • 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>

Los orígenes de datos permiten incorporar registros a cualquier tabla. En ocasiones tenemos que validar que no se inserten registros con claves duplicadas que fallarán al aplicarlos a la base de datos.

Podemos lograr esto usando esta etiqueta que nos permite definir una lista de campos a validar, ejemplo:

<CAMPOS>
Campo1
Campo2
</CAMPOS>

Definiendo una lista así el sistema va a verificar cada vez que vaya a ingresar un registro que no exista ninguno con los mismos valores en esos campos.

Normalmente los campos definidos en esta lista pertenecen a la clave primaria de la tabla.

<TAG EMITE_AVISO>

Esta etiqueta se usa en conjunto con la etiqueta <CAMPOS> e indica al sistema que debe dar un mensaje de advertencia cada vez que se quiera insertar un registro cuyos campos se duplicarían.

Si no usamos esta etiqueta el sistema no dará ningún mensaje y simplemente ignorará el registro duplicado.

<TAG IMPORTAR_PLANILLA>

Indica al sistema que la opción permite importar una planilla y activará esa funcionalidad.

Ejemplo

Este auxiliar corresponde a la pantalla ASDET, opción COPIAR_COMPROBANTE_NORMAL.

Este origen es usado por quienes quieren copiar un comprobante anterior a uno nuevo, y normalmente luego modificarlo.

El comando completo del auxiliar es:

<COMANDO>
DECLARE @FCMPCODIGO VARCHAR(20)

SET @FCMPCODIGO = <SELECTVALUE>

<SELECT>
SELECT
Asiento = ASCAB.FCMPCODIGO
, Fecha = ASCAB.FCMPFECHA
, Comentarios = ASCAB.FCMPCOMENTARIOS
, Usuario = ASCAB.FCMPUSUARIO
, Debitos = ASCAB.FDEBITOS
, Creditos = ASCAB.FCREDITOS
, Recs = (SELECT COUNT(*) FROM ASDET WHERE ASDET.FCMPCODIGO = ASCAB.FCMPCODIGO)
FROM ASCAB WHERE
ASCAB.FCMPESTADO = 'Registrado'
AND ASCAB.FCMPFECHA >= dateadd(day, -730, getdate())
ORDER BY ASCAB.FCMPFECHA DESC, ASCAB.FCMPCODIGO
</SELECT>
SELECT
ASDET.FCMPLINEA
, ASDET.FCUENTA
, ASDET.FDESCRIPCION
, ASDET.FSUBCUENTA
, ASDET.FIMPUTATIPO
, ASDET.FIMPUTA
, ASDET.FIMPUTASUB
, ASDET.FSECTOR
, ASDET.FTIPOIMPORTE
, ASDET.FMONEDA
, ASDET.FFECHAVALUACION
, ASDET.FCOTIZACION
, ASDET.FCANTIDAD
, ASDET.FJURISDICCION_IIBB
FROM ASDET WHERE
ASDET.FCMPCODIGO = @FCMPCODIGO
ORDER BY ASDET.FCMPLINEA
</COMANDO>

Las etiquetas incluidas son:

<COMANDO>

Dentro de esta etiqueta (y su cierre </COMANDO>) se incluye el comando para seleccionar los registros.

<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 @FCMPCODIGO VARCHAR(20)

SET @FCMPCODIGO = <SELECTVALUE>

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

En este caso el SELECT elige de la lista de asientos en estado registrado, hasta 2 años hacia atrás:

<SELECT>
SELECT
Asiento = ASCAB.FCMPCODIGO
, Fecha = ASCAB.FCMPFECHA
, Comentarios = ASCAB.FCMPCOMENTARIOS
, Usuario = ASCAB.FCMPUSUARIO
, Debitos = ASCAB.FDEBITOS
, Creditos = ASCAB.FCREDITOS
, Recs = (SELECT COUNT(*) FROM ASDET WHERE ASDET.FCMPCODIGO = ASCAB.FCMPCODIGO)
FROM ASCAB WHERE
ASCAB.FCMPESTADO = 'Registrado'
AND ASCAB.FCMPFECHA >= dateadd(day, -730, getdate())
ORDER BY ASCAB.FCMPFECHA DESC, ASCAB.FCMPCODIGO
</SELECT>

Una vez seleccionado un asiento se asignará a la variable @FCMPCODIGO.