Tabla de Contenidos
SmartPdf - guía de iniciación
SmartPdf es un programa de Smart Software Solutions, que sirve para definir tareas recurrentes:
- Envíos de emails a clientes/proveedores/empleados etc. con información actual, por ejemplo el resumen de facturación del último mes. La información se puede enviar en formato Pdf, hoja de cálculo o en texto formateado.
- Tareas de mantenimiento en la base de datos. Aquí también es posible enviar el resultado de la tarea por ejemplo a un empleado.
Instalación
La instalación se realiza con el programa instalador SmartPdfSetup.exe, que se puede bajar desde la web de Smart http://www.smartastur.es, menú Descargas.
La clave de instalación a poner en el primer dialogo la podemos sacar de SmartOffice, menú Configuración/Datos empresa, pestaña General, campo Clave de instalación.
Salvo casos especiales, solo tenemos que poner dicha clave y luego podemos confirmar todos los dialogos del instalador.
Los pasos del instalador se explican detalladamente aquí.
Primeros pasos
Cuando se abre el programa por primera vez, hay que poner los credenciales del usuario. Recuerde que cada licencia de SmartPdf corresponde a un usuario. Si su licencia es para el usuario PEPE, debería utilizar este usuario en los credenciales.
Los credenciales se guardan en un fichero .xml
en la carpeta de los datos de programa local, que se puede abrir en Windows 10 con la tecla de Windows + R
, y en el dialogo que se abre se pone %localappdata%\smartpdf
.
Conceptos
El sistema de envío de emails automatizados se compone de dos programas principales:
- SmartPdf: Es el programa para definir los envíos, o sea, la interfaz al usuario.
- SmartServices: Este programa corre continuamente en un servidor para realizar un envío previamente definido en SmartPdf en el momento adecuado.
El concepto principal del envío automatizado de documentos son las listas de destinatarios. Por ejemplo así:
Razón social | Correo el. | Nº factura |
---|---|---|
Pepe | pepe@gmail.com | P0001 |
Goyo | goyo@gmail.com | G0001 |
… |
Una lista de esta forma puede servir para enviar una factura a cada uno de los destinatarios en un email personalizado (Estimado Pepe…).
También es posible enviar varios documentos (facturas) al mismo destinatario, por ejemplo con la siguiente lista:
Razón social | Correo el. | Nº factura |
---|---|---|
Pepe | pepe@gmail.com | P0001 |
Pepe | pepe@gmail.com | P0002 |
Goyo | goyo@gmail.com | G0001 |
Goyo | goyo@gmail.com | G0002 |
Goyo | goyo@gmail.com | G0003 |
… |
En este caso Pepe recibiría dos facturas en un solo email, y Goyo 3.
El formato del email a enviar se define en las tareas, donde también se anota en que lista de destinatarios se basa el envío.
Los adjuntos del envío de una tarea se definen en los documentos. Normalmente es lo que en SmartOffice son los informes, que se envían en formato PDF a base de un diseño de informe. También pueden ser consultas de cualquier tipo, que se ejecutan y el resultado se adjunta al email en formato de hoja de cálculo o de texto.
Los lotes agrupan una o varias tareas y las ejecutan en un órden definido por el usuario.
Lista de destinatarios
Menú | Formularios\Listas de destinatarios |
---|
Las listas de destinatarios son la base para cualquier lote de tareas. Estas listas definen los destinatarios de los emails, y también pueden definir los documentos a enviar.
Después de crear una nueva lista con F3 podemos darle un código manualmente o automáticamente dando en la tecla Intro
.
Las listas se definen con una instrucción sql de tipo select, que se mete en el campo Selección, por ejemplo:
SELECT A.RAZON_SOCIAL, A.CIF_NIF, A.CORREO_E, B.NRO_FACTURA FROM TERCERO A JOIN CAB_FACTURA_VENTA B ON A.TIPO = B.TIPO_TERCERO AND A.CODIGO = B.COD_TERCERO AND A.TIPO = 'CL' AND A.CORREO_E IS NOT NULL AND B.FECHA_EMISION >= :_FE(1) ORDER BY A.CODIGO
El parámetro :_FE
se sustituye por la fecha de ejecución de la tarea. Es posible desplazar esta fecha en días, meses o años, que se puede conseguir añadiendo unos parámetros rodeados por paréntesis: :_FE(d/m/a)
.
Cada componente 'd', 'm' o 'a' puede definir un dato fijo o una diferencia a la fecha actual. En ese último caso (diferencia) hay que ponerle delante un '-' o un '+'.
Aquí unos ejemplos para una fecha de ejecución 31/07/2009:
Parámetro | fecha resultante |
---|---|
_FE(1) | '2009-07-01' |
_FE(1/1) | '2009-01-01' |
_FE(1/-1) | '2009-06-01' |
_FE(/-1) | '2009-06-31' (¡ERROR!) |
_FE(-40) | '2009-06-21' |
_FE(/ /-1) | '2008-07-31' (Entre las dos barras no hace falta ningún espacio, solo lo tenía que meter por un problema con el wiki) |
_FE(+10) | '2009-08-10' |
Una vez que salimos del campo Selección, el formulario nos muestra el resutlado del select en la rejilla correspondiente:
También es posible partir desde todos los clientes, proveedores o terceros en general, pinchando en el botón correspondiente.
Esto nos va a mostrar la lista de las personas seleccionadas, y nos pone el select adecuado en el campo Selección. Luego podemos filtrar sobre la rejilla con F7
de la manera habitual, lo que automáticamente modifica también el select:
Finalmente también podemos definir una lista estática de destinatarios, marcando la casilla correspondiente en el formulario: Ahora podemos añadir manualmente cualquier tercero de Smart, u otra persona cualquiera con su nombre y dirección de correo electrónico.
En cuanto confirmemos una lista de destinatarios con F11
, podemos ver en la rejilla Campos los campos que devuelve esta lista:
En la columna Nombre campo dataset vemos los nombres de las variables que podemos utilizar en el diseño de los emails, como se explica más abajo.
Si desconfirmamos una lista de destinatarios, también se desconfirmarán los lotes cuyos tareas hacen referencia a la lista. Se muestra un mensaje al usuario con todos los lotes desconfirmados, para que los pueda confirmar otra vez al terminar el trabajo sobre la lista.
Lotes de tareas
Menú | Formularios\Lotes |
---|
Los lotes sirven para agrupar una serie de tareas y ejecutarlas en un orden específico. Además son los lotes que definen el momento (horario) de ejecutar las tareas. Añadimos un nuevo lote con código predefinido con F3 e Intro
.
Los campos de la pestaña General son los siguientes:
Campo | Descripción |
---|---|
Código | El código del lote, que se genera automáticamente si damos en Intro después de añadir un lote nuevo con F3 . También podemos poner un código manualmente después de insertar un lote nuevo con F3 . |
Nombre | Un nombre descriptivo para el lote. |
Suspendido | Si esta casilla está marcada, algún error ha ocurrido en la última ejecución del lote. Lo podemos comprobar desde el menú Registro/Resultados. Mientras un lote esté en estado suspendido no se ejecutará. Lo podemos desbloquear desconfirmando y confirmando de nuevo el lote con F11. |
Cód. planificación | En la planificación se puede definir la agenda de ejecución del lote. Se accede a la lanificación desde este campo con Mayús.+F6 .Cada lote recibe una planificación por defecto que tiene el mismo código como el lote. También es posible crear una planificación generalizada, con utilidad para varios lotes, desde la ventana principal, menú Formularios/Planificaciones. |
Remitente email error | El servicio que ejecuta los lotes, SmartServicesPdf, ofrece la posibilidad de notificar por email a alguien en caso de un fallo en la ejecución del lote, que suele resultar en un lote suspendido (ver arriba). En este campo se puede meter el remitente del email que se va a enviar, y en el siguiente campo, Destinatario email error, el o los destinatarios separados por coma. |
Destinatario email error | Se puede poner un destinatario o varios separados por coma. Ver explicación en el campo anterior. |
Fecha última ejec. | Fecha de la última ejecución del lote. Para lotes que se ejecutan varas veces al día incluye la hora también. |
Desde el campo Cód. planificación podemos acceder con Mayús.+F6
a la planificación del lote:
En la cabecera tenemos estos campos:
Campo | Descripción |
---|---|
Código | El código de la planificación, autogenerado al crear un lote nuevo, o creado manualmente desde la ventana principal, menú Formularios/Planificaciones. |
Nombre | Un nombre descriptivo. |
Cód. calendario | El calendario a usar cuando se quiere ejecutar un lote en días festivos o laborales. |
Permitir saltar ejec. | Si se desmarca esta opción, el servicio que ejecuta los lotes, SmartServicesPdf, va a recuperar ejecuciones de un lote cuando por ejemplo se ha apagado el servidor por un fallo de electricidad. OJO, también se van a recuperar todas las veces que faltan desde la última fecha de ejecución (ver campo correspondiente en los campos del lote arriba) si hemos desconfirmado un lote y lo confirmamos de nuevo un mes más tarde, por ejemplo. |
Ejecutar siempre | Marcando esta opción se ejecuta el lote cada vez que se arranca el servicio SmartServicesPdf, que normalmente es cada 5 minutos. Se suele usar por ejemplo para tareas que tienen que leer unos emails entrantes, o para probar un lote. |
Autogenerado | Esta marcado si la planificación ha sido autogenerado al crear un lote nuevo. |
En la pestaña General en la parte de las líneas de la planificación podemos detallar la agenda de ejecución del lote.
Campo | Descripción |
---|---|
Fecha fija | Una fecha fija en la que se quiere ejecutar el lote. |
Cada día de mes | Se puede definir el día del mes en que se quiere ejecutar el lote. Si al mismo tiempo se marca el campo Cada día laboral entonces se calcula el x día laboral del mes, si x es el número introducido en ese campo. En ese caso hace falta definir un calendario en el campo Cód. calendario . |
Días de mes | Igual que el campo anterior, con la diferencia que se puede introducir una lista de días separadas por coma. |
Cada lunes/martes… | Con esas casillas se puede definir uno o varios días de la semana en que se quiere ejecutar el lote. |
Cada día laboral | Marcando este campo se ejecuta el lote todos los días laborales. Hace falta definir un calendario en Cód. calendario . Por defecto se coge el calendario estándar de la empresa. |
Cada día festivo | Ejecutar el lote cada día festivo. Hace falta definir un calendario en Cód. calendario . Por defecto se coge el calendario estándar de la empresa. |
Ejec. cada x minutos | Si se pone un número de minutos en este campo, el lote se va a ejecutar varias veces en los días especificados en los campos anteriores. El periodo a esperar entre cada ejecución son los minutos de este campo. |
Ejec. desde | Si se pone una hora en este campo y en el siguiente, Ejec. hasta, se ejecutará el lote solamente dentro de esta franja horaria. Para lotes que se ejecutan una sola vez en un día esto significa normalmente que se ejecutará a la hora puesta en Ejec. desde. Cuando se pone un periodo en Ejec. cada x minutos se ejecutará el lote dentro del periodo cada x minutos. Siempre hay que rellenar los dos campos, Ejec. desde y Ejec. hasta. También se puede poner Ejec. desde en 22:00:00 y Ejec. hasta en 05:00:00 , que significaría ejecutar el lote durante de la noche, pero no durante el día. |
Desplazar días | Se puede desplazar la fecha de ejecución definida en los demás campos por los días introducidos en ese campo. Para ejecutar una tarea el último día de cada mes, se pone 1 en Cada día de mes y -1 en este campo. |
Una vez definida la planificación, podemos añadir una o varias tareas al lote. Seleccionamos la rejilla y damos en F3 o Flecha abajo.
Le damos un nombre a cada tarea y las reordenamos con las dos flechas como lo necesitemos.
La edición detallada de cada tarea se debería hacer pinchando en el botón correspondiente .
Con F11 podemos confirmar el lote. Una vez confirmado ya no serán posible cambios ni en el mismo lote ni en cualquier componente del lote (tareas y documentos). Solo lotes confirmados serán ejecutados. Si un lote está suspendido, lo podemos arrancar otra vez si lo desconfirmamos y confirmamos con F11.
Tareas
Las tareas definen el envío por email de los documentos. Los documentos a enviar se añaden en la rejilla de Documentos, lo que se explica más adelante.
Campo | Descripción |
---|---|
Ejecutar siempre | Hay que marcar este campo si queremos que se ejecute la tarea incluso si alguna tarea anterior en el lote había terminado con un error. Útil por ejemplo para el envío de un resultado de la tarea. |
Fallo de envío es error | Si lo marcamos, un error en el envío (por ejemplo por un fallo en la red) se trata igual que un error al ejecutar la tarea. |
Parar lote al error | Si está marcada esta opción (valor por defecto), en caso de un error no se ejecutan las tareas restantes del lote, con la excepción de las tareas marcadas con Ejecutar siempre. |
Suspender lote al error | Si la tarea da un error, se marca el lote como suspendido y no se vuelve a ejecutar hasta que se desconfirme el lote y se vuelve a confirmar. |
Cód. lista destinatarios | La lista de destinatarios para esta tarea. |
Usuario conexión | Por defecto, la tarea se ejecuta bajo con un usuario del sistema. En este campo se puede definir otro usuario a utilizar en la conexión a la base de datos. |
Grupo conexión | El grupo para la conexión. Solo se toma en cuenta si se ha definido también el Usuario conexión. |
Clave conexión | La contraseña para el Usuario conexión. |
En la pestaña E-Mail se define el formato y los destinatarios del email a enviar.
Un email consiste de los tres partes prefijo, cuerpo y firma, que se pueden definir en las pestañas correspondientes. En cualquier de estos campos, y también en el campo Asunto email, está permitido el uso de parámetros.
Un parámetro se define por las llaves, por ejemplo {Nombre}
.
Cualquier parámetro usado en estos campos aparece automáticamente en la pestaña Parámetros, donde le podemos asignar un campo de la lista de destinatarios con F6 desde el campo Nombre campo dataset.
Cuando se crean los emails y se recorre la lista de los destinatarios, se sustituyen los parámetros por los campos de la lista para personalizar cada email.
Los partes prefijo y firma permiten el uso de html, para por ejemplo incluir imagenes en la firma o cambiar el tamaño de la letra.
Cualquier imagen utilizado en estos dos campos se sube inmediatamente a la base de datos y se puede ver en la pestaña Imagenes.
La definición de los destinatarios se hace desde la pestaña correspondiente.
Al igual que con los parámetros, podemos escoger un campo de la lista de destinatarios que contiene la dirección de email del destinatario, con F6 desde el campo Nombre campo dataset.
También es posible definir una dirección de email fija en el campo Destinatario.
En cualquier caso hay que escoger el Tipo dest. para cada línea añadida.
Plantillas
Es posible guardar los campos Asunto email, Email prefijo, Email cuerpo, Email firma e Imagenes en una plantilla, para reutilizar el formato en otra tarea. Se consigue con los dos botones Cargar desde plantilla y Guardar como plantilla.
Documentos de tareas
Los documentos a enviar se definen en la rejilla de la pestaña General de las tareas.
Añadimos una línea para cada adjunto y le ponemos un nombre. Luego usamos el botón para editar el detalle de cada documento.
Los documentos no están ordenados, no se puede saber el órden de su generación.
Documentos
En el formulario de Documento, al que llegamos pinchando en el botón desde la rejilla de las tareas, podemos definir los adjuntos que deben acompañar cada email.
El caso más fácil es añadir un archivo fijo, como puede ser un folleto de promoción o un manual de una máquina. Estos adjuntos fijos se añaden con el botón Sel. fichero.
Si por lo contrario queremos crear un adjunto basándonos en datos de Smart, podemos escoger el botón Sel. informe y escoger un procedimiento para sacar la información de la base de datos. Al escoger un procedimiento se crea automáticamente una instrucción select en el campo Comando, que la podemos modificar según necesidad.
También se añaden automáticamente en la rejilla correspondiente los parámetros del comando (si los tiene).
Podemos poner para cada parámetro un valor fijo en la columna Valor, o una referencia a la lista de destinatarios, escogiendo el campo de la lista con F6 desde la columna Nombre campo dataset. Un parámetro sin valor ni referenia se deja en blanco (nulo).
Si pinchamos en la pestaña Datos, el programa nos deja poner unos parámetros temporales para abrir la consulta. Esto es necesario si queremos crear el diseño del informe, desde el menú Registro/Diseño. El diseño del informe es imprescindible si queremos enviar el adjunto en formato PDF. Podemos guardar un ejemplo con los datos actuales de la pestaña Datos con el menú Registro/Exportar a PDF.
El diseñador es parecido al de SmartOffice, pero no es posible utilizar los diseños que ya existen en SmartOffice. En el siguiente párrafo se explican algunas peculiaridades del diseñador de informes.
También es posible enviar los datos en formato de hoja de cálculo o de texto estructurado. En este caso no definimos ningún diseño, pero en su lugar escogemos el formato a exportar en el campo Cód. formato export. El formato SYLK es para la exportación en hoja de cálculo, mientras los otros formatos son para la exportación de texto.
Si queremos quitar temporalmente un adjunto de un envío sin tener que borrar el documento por completo, podemos desmarcar el campo Activo.
Una vez que hayamos definido todos los adjuntos, podemos volver al formulario del lote y confirmar el lote con F11. A partir de este momento ya no se puede cambiar ningún componente del lote, ni las tareas, ni los documentos.
Diseñador
Enlaces URL
Es posible añadir enlaces URI a cualquier cuadro de texto que se posiciona en el diseño. Para que aparezca el enlace en el PDF solamente hay que rellenar la propiedad URLInfo
del cuadro de texto.
Hay que destacar que es posible usar una variable de la base de datos para determinar la propiedad URLInfo
, por ejemplo [LinDatos.“S_URL_DOC”]
.
Imagenes externos
Se puede añadir imagenes al diseño que se llenan desde ficheros guardados en carpetas locales o compartidas.
Para que esto funcione tenemos que añadir un comando a la propiedad Memo:
load(LinDatos.ENLACE)
El campo ENLACE de la fuente de datos LinDatos tiene que contener el nombre del fichero a cargar en la imagen. Esto funciona seguro con imagenes de tipo .jpg y .png. Para otros tipos hay que probar.
Hay que tomar en cuenta que los ficheros sean accesibles desde el servidor donde funciona SmartServicesPdf, el servicio de Smart para generar y enviar los pdf.
Fuentes
Si se instala smartservicespdf en Linux se debería tener cuidado con la selección de las fuentes.
Cuando se crea un diseño en Windows hay que restringirse a fuentes que también existen en Linux, como por ejemplo Arial y Times New Roman.
Con un tamaño pequeño puede haber problemas en Linux. Estos son las medidas probadas:
- Arial: mayor o igual a 7px.
- Times New Roman: mayor o igual a 6px.