¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Plantillas de impresión
- Menú SmartTPV: /Configuración/Plantillas
- Menú SmartOffice: /Configuración/General/Dispositivos usuario
- Shortcut: -
Las plantillas definen en primer lugar el formato de todos los impresos que se imprimen directamente en un dispositivo de salida, al contrario a los informes que usan el generador de informes FastReport.
Existe también una manera para definir un informe de tipo FastReport para usarlo en la impresión de tickets o facturas, se explicará más adelante.
Existen varias plantillas que sirven como modelo para las distintas aplicaciones de Smart. Conviene hacer una copia del modelo apropiado y adaptar esta copia a sus necesidades. En general, todas las plantilla que acaban en _GEN
, _GENERICO
o _GENERICA
no se deberían modificar porque es posible que se modifiquen en cualquier momento a través de un script de actualización.
Modelo | Aplicación | Uso |
---|---|---|
TICKET_GENERICO | SmartTPV | Impresión de tickets en una impresora de tickets. |
TICKETMATR_GENERICO | SmartTPV | Impresión de tickets en una impresora matricial. |
TICKET_REGALO_GEN | SmartTPV | Impresión de tickets de regalo en una impresora de tickets. |
FACTURA_GENERICA | SmartTPV | Impresión de una factura en una impresora de tickets. |
ETIQ_ZEBRA_GENERICA | SmartTPV, SmartOffice | Impresión de una etiqueta en una impresora Zebra. |
ETIQ_ZPL_GENERICA | SmartTPV, SmartOffice | Impresión de una etiqueta en una impresora ZPL. |
TICKET_ALB_GEN | SmartOffice | Impresión de tickets en una impresora de tickets. |
La impresión de tickets en SmartTPV se basa internamente en las tablas de tickets, mientras en SmartOffice se usan las tablas de albaranes.
Ejemplo
COLUMNAS=40 [Cabecera] select a.NOMBRE, a.MUNICIPIO, a.COD_POSTAL, a.TELEFONO, a.CIF_NIF, a.DIRECCION, b.FECHA_DEVENGO, b.NRO_ALBARAN from EMPRESA a join CAB_ALBARAN_VENTA b on b.NRO_ALBARAN = :NRO_ALBARAN # Abrir cajón al imprimir la primera copia I.{IFDEF COPIA=1}{$1B700064FA} I.{ENDIF}#NOMBRE I.(#COD_POSTAL) #MUNICIPIO I.Tlf. #TELEFONO I.C.I.F. #CIF_NIF I.#DIRECCION I.---------------------------------------- I.Fecha #FECHA_DEVENGO|T10 Ticket #NRO_ALBARAN I.---------------------------------------- I.Articulo Und. Importe I.**************************************** [Lineas] select c.DESCRIPCION, c.CANTIDAD, c.IMPORTE, c.IMPORTE_DTO, c.PORC_DTO from LIN_ALBARAN_VENTA c where c.NRO_ALBARAN = :NRO_ALBARAN I.{DESCRIPCION|<20} #CANTIDAD|D5 #IMPORTE|D7\ I. {DESCRIPCION|<20}{IFDEF PORC_DTO<>0} I. Descuento de #PORC_DTO|I% (#IMPORTE_DTO|D){ENDIF} [Pie1] select S_BASE_IMPONIBLE_NETA, S_CUOTA_TOTAL, S_TOTAL from RESUMEN_ALB_VENTA_TOTAL2(:NRO_ALBARAN) I.**************************************** I. TOTAL EUROS. #S_TOTAL|D7 I.**************************************** I. IVA BASE IMP. CUOTA TOTAL [IVA] select S_BASE_IMPONIBLE_NETA, S_PORC_IVA, S_CUOTA_IVA, S_CUOTA_TOTAL, S_TOTAL from RESUMEN_ALB_VENTA_IVA(:NRO_ALBARAN) I. #S_PORC_IVA|I3 #S_BASE_IMPONIBLE_NETA|D7 #S_CUOTA_TOTAL|D7 #S_TOTAL|D7 I.---------------------------------------- [Pie2] select USER, S_BASE_IMPONIBLE_NETA, S_CUOTA_TOTAL, S_TOTAL from RESUMEN_ALB_VENTA_TOTAL2(:NRO_ALBARAN) I.Importe Cobrado (IVA Inc.) #S_TOTAL|D7 I.Entregado #ENTREGADO|D7 I.Cambio #DEVOLVER|D7 I.--------------------------------------- I. GRACIAS POR SU VISITA I.{IFDEF CLIENTE=N}{IFDEF CONFIRMADO=N} I.PC{ENDIF}{ENDIF} I.Le atendio #USER I. [comentarios] [GrupoCocina] [extras] # Cortar I.{$1D564206}
En general, una plantilla empieza con unas líneas con parámetros, que suele añadir el programa SmartTPV o SmartOffice a la plantilla, como por ejemplo el número del ticket o albarán a imprimir, seguidos por varias secciones denominados por […]
.
Líneas cuyo primer caracter es un #
son comentarios y se ignoran.
Parámetros
Parámetros se tienen que definir al principio de la plantilla, delante de cualquier sección.
Un parámetro tiene un nombre y un valor separado por el símbolo =
. Por ejemplo:
COLUMNAS=40
En las secciones se puede hacer referencia a cualquier parámetro a través de las variables (ver abajo).
Los programas añaden una serie de parámetros a las plantillas antes de imprimirlas:
Programa | Proceso | Parámetro | Descripción |
---|---|---|---|
SmartTPV | Impresión ticket | ID_TICKET=12345 | El ticket que se tiene que imprimir. |
SmartTPV | Impresión cierre y resumen caja | ID_CAJA=12345 | El núemro de la caja cuya resumen se quiere imprimir. |
SmartOffice | Impresión ticket | NRO_ALBARAN=AB18-12345 | El albarán a imprimir. |
SmartOffice | Impresión ticket | ENTREGADO=50,00 | El importe en efectivo entregado. |
SmartOffice | Impresión ticket | DEVOLVER=21,44 | El importe a devolver. |
SmartOffice | Impresión ticket | NRO_COPIAS=2 | El número total de copias. |
SmartOffice | Impresión ticket | COPIA=1 | La copia actual que se imprime. |
SmartOffice | Impresión ticket | CONFIRMADO='S' | Si el albarán ha sido confirmado. |
SmartOffice | Impresión ticket | CLIENTE='S' | |
SmartOffice/SmartTPV | Impresión etiquetas de producto | COD_PRODUCTO=12345 | El código del producto para el que se quiere impromir la etiqueta. |
Secciones
Después de los parámetros pueden aparecer varias secciones. Una secciones siempre empieza con un nombre abritrario entre corchetes:
[Cabecera]
El contenido de una sección son todas las líneas hasta la siguiente sección. Comentarios se ignoran.
Justo despues del nombre de sección se puede poner una instrucción select para seleccionar los datos que se quiere imprimir en esta sección.
select c.DESCRIPCION, c.CANTIDAD, c.IMPORTE, c.IMPORTE_DTO, c.PORC_DTO from LIN_ALBARAN_VENTA c where c.NRO_ALBARAN = :NRO_ALBARAN
El una instrucción select se puede hacer referencia a un parámetro, por ejemplo :NRO_ALBARAN
.
A continuación se pueden definir varias líneas de impresión, que siempre empiezan con I.:
I.{DESCRIPCION|<20} #CANTIDAD|D5 #IMPORTE|D7\ I. {DESCRIPCION|<20}{IFDEF PORC_DTO<>0} I. Descuento de #PORC_DTO|I% (#IMPORTE_DTO|D){ENDIF}
Se imprime la sección para cada registro que devuelve el select. Si no se ha puesto ningún select, se imprime la sección una vez.
Se imprimen todos los caracteres de cada línea a partir de la I.
del principio.
Se puede hacer referencia tanto a los parámetros de la plantilla, como a los campos que devuelve el select. Estas referencias se llaman variables, y existen dos tipos de estos variables:
- Simple (
#CANTIDAD|D5
) - Compleja (
{DESCRIPCION|<20}
)
Además es posible usar un control de impresión, un {IFDEF}, para imprimir uno u otro texto dependiendo del valor de la variable que aparece después del IFDEF. Este concepto se explica más abajo.
Por último se puede usar cadenas codificada en hexadécimal, ej. {$1B700064FA}
. Hay que incluir estas cadenas en {$…}
. Se puede utilizar para imprimir cadenas de control de la impresora, por ejemplo para cortar el papel o abrir el cajón.
Variables simples
Las variables simples empiezan con #
, seguido por el nombre de un parámetro o de un campo que devuelve el select. A continuación se puede poner, separado por el símbolo |
, una letra para identifiar como formatear el valor a imprimir y/o una longitud.
#NOMBRE_CAMPO_O_PARAM[|[LETRA_FORMATO][LONGITUD_FORMATO]]
Letra de formato | Descripción | Longitud | Ejemplo | ||
---|---|---|---|---|---|
Valor del campo/parametro | Formato | Impresión | |||
I | Formatear como número entero, sin décimales. | La longitud define cuantos caracteres se imprimen como mínimo, contando también un posible - para indicar un número negativo. Si el valor tiene menos dígitos, se añaden espacios al lado izquierdo. Si el valor necesita más espacio, se imprime el número entero ignorando la longitud. | 12345,678 \\nulo | I3 I7 I3 | 12346 12346 |
D | Formatear como número con 2 decimales. Siempre se imprimen los dos décimales, aunque sean cero. | La longitud define cuantos caracteres se imprimen como mínimo, contando un posible - y el separador de décimales. Si el valor tiene menos dígitos, se añaden espacios al lado izquierdo. Si la longitud no vale para imprimir toda la parte entera del número, se amplia la longitud. | 12345,678 \\nulo | D4 D9 D4 | 12345,68 _12345,68
|
E | Formatear como número con 3 decimales. Siempre se imprimen los tres décimales, aunque sean cero. | La longitud define cuantos caracteres se imprimen como mínimo, contando un posible - y el separador de décimales. Si el valor tiene menos dígitos, se añaden espacios al lado izquierdo. Si la longitud no vale para imprimir toda la parte entera del número, se amplia la longitud. | -12345,678 \\nulo | E4 E12 | -12345,678 __-12345,678 |