Hay que llamar al procedimiento CREA_GEN_DOC_PERFIL
para crear un registro en la tabla DOC_PERFIL
, que es la base para generación de PDFs desde SmartGenDoc.
Para facturas de venta se podría llamar así en el trigger after update de CAB_FACTURA_VENTA
:
IF (NEW.CONFIRMADA = 'S' AND (M_CLAVE IS DISTINCT FROM 'CPA' OR EXISTS (SELECT 1 FROM TERCERO_FT WHERE TIPO_TERCERO = NEW.TIPO_TERCERO AND COD_TERCERO = NEW.COD_TERCERO AND CLAVE = 'PORTAL' AND VALOR LIKE 'S%'))) THEN EXECUTE PROCEDURE CREA_GEN_DOC_PERFIL 'CAB_FACTURA_VENTA', NEW.NRO_FACTURA, NULL, NEW.FECHA_REGISTRO RETURNING_VALUES :M_NRO_DOC;
El primer campo es la tabla principal del documento a imprimir, a la que tiene que existir exáctamente una foreign key desde la tabla DOC_PERFIL
. En este ejemplo la foreign key es del campo DOC_PERFIL.NRO_FRA_VENTA
.
Además tiene que existir exáctamente un registro en TIPO_DOCUMENTO
con ciertas características que se van a explicar en el siguiente párrafo.
Cuando se ejecuta el procedimiento CREA_GEN_DOC_PERFIL
nos crea un registro como el siguiente:
La UUID la genera el proceso SmartGenDoc y esta UUID única va a ser el nombre del fichero.
El registro lleva un campo no visible, CREAR_INFORME
, que en este momento está en N
y después de generar el informe se cambia a S
.
En primer lugar tenemos que abrir el informe que queremos generar con SmartGenDoc y seleccionar el menú Edición/Información informe:
Nos apuntamos el código del informe (QRFACTURAVENTAUGA
) y el nombre del procedimiento (UGA_IMPRES_FACTURA_VENTA
).
Ahora tenemos que crear la información clave para la generación del documento, que es el tipo de documento. Se define en la tabla TIPO_DOCUMENTO
a la que accedemos desde el menú Configuración/Web/Tipos de documentos.
Tiene que haber exáctamentente un código con las siguientes características:
Campo | Valor |
---|---|
Externo | Tiene que ser N . |
Campo en DOC_PERFIL | El campo de DOC_PERFIL que enlaza por foreign key a la tabla principal del informe. |
Campo informe | Se explica abajo. |
Es tipo para activos | Tiene que ser N . |
Cód. informe | El código del informe que hemos apuntado arriba. |
Carpeta local | El destino de los documentos. Se tiene que poner algo en este campo o en el siguiente. |
Cód. servidor interno | Los datos del servidor ftp al que se tienen que enviar los documentos. |
Carpeta interna | Se puede añadir una subcarpeta para el servidor ftp. |
El Campo informe se tiene que llenar con los valores para los parámetros del procedimiento base del informe, en el ejemplo UGA_IMPRES_FACTURA_VENTA
, que hemos apuntado arriba. Este procedimiento necesita 7 parámetros, que tenemos que poner separado por punto y coma:
Parámetro | Valor | Descripción | |
---|---|---|---|
P_FEC_INI | NULL | Se asigna NULL al parámetro. | |
P_FEC_FIN | NULL | ||
P_NRO_FRA_INI | NRO_FRA_VENTA | Se asigna el valor del campo DOC_PERFIL.NRO_FRA_VENTA al parámetro. | |
P_NRO_FRA_FIN | NRO_FRA_VENTA | Se asigna el valor del campo DOC_PERFIL.NRO_FRA_VENTA al parámetro. | |
P_LOTE | NULL | ||
P_SIM | 1 | Se asigna 1 al parámetro. | |
7 | N | FrasMail=NULL | Se asigna NULL al parámetro. Además se define en el dataset CS el campo FrasMail con el mismo valor. |
El parámetro 7 es especial, porque además de asignar un valor al parámetro del procedimiento define el valor del campo FrasMail
del dataset CS
. Esto es importante porque se usa este campo CS.FrasMail
en el diseño del informe y hay que definirlo.
Del mismo modo podemos definir campos adicionales para el dataset CS, que no estén entre los parámetros para el procedimiento, como es el campo número 8, IMPLOGO=S
, que define el valor S
para el campo CS.ImpLogo
, que también se usa en el informe.
HAY QUE TOMAR EN CUENTA QUE DESDE SMARTGENDOC NO HAY INTERACCIÓN CON EL USUARIO, POR LO CUAL NO SE PUEDEN CONTESTAR A PREGUNTAS DESDE EL DISEÑO DE UN INFORME (MESSAGEBOX). CUALQUIER PREGUNTA SE CONTESTARÁ AUTOMÁTICAMENTE CON “0”.
Además del mismo fichero PDF se puede generar un fichero adicional descriptivo para cada documento.
La generación de este fichero adicional se controla con el procedimiento GEN_META_DOC_PERFIL
. El procedimiento recibe como parámetro el número del perfil de documento (DOC_PERFIL.NRO_DOC). Si el procedimiento devuleve nulo en S_DATOS, no se creará el fichero adicional.