DEV AUXILIARES/ORIGEN

De Pragma Wiki
Ir a la navegación Ir a la búsqueda

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.