usu:plantillas
Diferencias
Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
usu:plantillas [2013/07/05 15:46] – editor externo 127.0.0.1 | usu:plantillas [2023/01/10 17:14] (actual) – [Parámetros] stefan | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | | + | ====== Plantillas de impresión ====== |
+ | | ||
+ | * Menú SmartOffice: | ||
* Shortcut: - | * 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 // | 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 // | ||
- | Existe también una manera para definir un informe de tipo // | + | Existe también una manera para definir un informe de tipo // |
- | Existen | + | Existen |
+ | |||
+ | ^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, | ||
+ | | ||
+ | from EMPRESA a | ||
+ | join CAB_ALBARAN_VENTA b on b.NRO_ALBARAN = : | ||
+ | # Abrir cajón al imprimir la primera copia | ||
+ | I.{IFDEF COPIA=1}{$1B700064FA} | ||
+ | I.{ENDIF}# | ||
+ | I.(# | ||
+ | I.Tlf. | ||
+ | I.C.I.F. #CIF_NIF | ||
+ | I.# | ||
+ | I.---------------------------------------- | ||
+ | I.Fecha # | ||
+ | I.---------------------------------------- | ||
+ | I.Articulo | ||
+ | I.**************************************** | ||
+ | [Lineas] | ||
+ | select c.DESCRIPCION, | ||
+ | from LIN_ALBARAN_VENTA c | ||
+ | where c.NRO_ALBARAN = : | ||
+ | I.{DESCRIPCION|< | ||
+ | I. {DESCRIPCION|< | ||
+ | I. Descuento de # | ||
+ | [Pie1] | ||
+ | select S_BASE_IMPONIBLE_NETA, | ||
+ | from RESUMEN_ALB_VENTA_TOTAL2(: | ||
+ | I.**************************************** | ||
+ | I. TOTAL EUROS. | ||
+ | I.**************************************** | ||
+ | I. IVA BASE IMP. CUOTA | ||
+ | [IVA] | ||
+ | select S_BASE_IMPONIBLE_NETA, | ||
+ | from RESUMEN_ALB_VENTA_IVA(: | ||
+ | I. # | ||
+ | I.---------------------------------------- | ||
+ | [Pie2] | ||
+ | select USER, S_BASE_IMPONIBLE_NETA, | ||
+ | from RESUMEN_ALB_VENTA_TOTAL2(: | ||
+ | I.Importe Cobrado (IVA Inc.) # | ||
+ | I.Entregado | ||
+ | I.Cambio | ||
+ | I.--------------------------------------- | ||
+ | I. | ||
+ | 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, | ||
+ | **Líneas cuyo primer caracter es un ''#'' | ||
+ | |||
+ | ===== 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 '' | ||
+ | COLUMNAS=40 | ||
+ | En las secciones se puede hacer referencia a cualquier parámetro a través de las variables (ver abajo). | ||
+ | |||
+ | Se pueden definir dos tipos de parámetros, | ||
+ | |||
+ | 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, | ||
+ | |SmartOffice |Impresión ticket |DEVOLVER=21, | ||
+ | |SmartOffice/ | ||
+ | |SmartOffice |Impresión ticket |COPIA=1 |La copia actual que se imprime. | | ||
+ | |SmartOffice |Impresión ticket |CONFIRMADO=' | ||
+ | |SmartOffice |Impresión ticket |CLIENTE=' | ||
+ | |SmartOffice/ | ||
+ | |SmartOffice |Impresión etiquetas de producto |PRECIOS=' | ||
+ | |||
+ | Se puede poner el parámetro | ||
+ | IGNORAR_COPIAS | ||
+ | al principio de una plantilla para que no se repita la impresión NRO_COPIAS veces. Este parámetro no requiere ningún valor (también valdría '' | ||
+ | IGNORAR_COPIAS | ||
+ | [Etiqueta] | ||
+ | SELECT ... | ||
+ | I.N | ||
+ | ... | ||
+ | I.P{NRO_COPIAS} | ||
+ | |||
+ | ==== Parámetro CHARACTERSET ==== | ||
+ | Con el parámetro CHARACTERSET se puede convertir el texto a imprimir del caracter set estándar, WIN1252, a otro set de caracters más apropiado para la impresora elegida. Lo valores permitidos son '' | ||
+ | CHARACTERSET=' | ||
+ | [Cabecera] | ||
+ | ... | ||
+ | |||
+ | ==== Parámetros de introducción ==== | ||
+ | Es posible definir un parámetro en un formato especial, para que se pregunte al usuario por su valor en el momento de arrancar la impresión: | ||
+ | <Nombre parámetro> | ||
+ | Por ejemplo: | ||
+ | NRO_COPIAS=?:" | ||
+ | ... | ||
+ | Para que se convierte el valor introducido en mayúsculas, | ||
+ | IMPPRECIO=?:" | ||
+ | |||
+ | Para que no se hagan las preguntas estándar de SmartOffice se puede añadir el parámetro | ||
+ | NOINPUTQUERY=S | ||
+ | |||
+ | De este modo solamente se hacen las preguntas metidas en el mismo script. | ||
+ | ===== 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, | ||
+ | from LIN_ALBARAN_VENTA c | ||
+ | where c.NRO_ALBARAN = : | ||
+ | El una instrucción //select// se puede hacer referencia a un parámetro, por ejemplo '': | ||
+ | |||
+ | A continuación se pueden definir varias líneas de impresión, que siempre empiezan con **I.**: | ||
+ | I.{DESCRIPCION|< | ||
+ | I. {DESCRIPCION|< | ||
+ | I. Descuento de # | ||
+ | |||
+ | 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 '' | ||
+ | |||
+ | Se puede hacer referencia tanto a los parámetros de la plantilla, como a los campos que devuelve el //select//. Estas referencias se llaman // | ||
+ | - Simple (''# | ||
+ | - Compleja ('' | ||
+ | |||
+ | Además es posible usar un control de impresión, un // | ||
+ | |||
+ | Por último se puede usar cadenas codificada en // | ||
+ | |||
+ | ===== Variables simples ===== | ||
+ | Las variables simples empiezan con ''#'', | ||
+ | # | ||
+ | |||
+ | ^ Letra de formato | ||
+ | ^ ::: | ||
+ | |I |Formatear como número entero, sin décimales. |La longitud define cuantos caracteres se imprimen como mínimo, contando también un posible '' | ||
+ | |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 '' | ||
+ | |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 '' | ||
+ | |T |Formatear como fecha, hora o fecha más hora, dependiendo de la longitud puesta. |10: Fecha en formato 31/ | ||
+ | | |Cuando se omite un identificador de formato, se trata el valor del campo como una cadena de caracteres, un texto. |La longitud define en este caso la longitud exacta a imprimir. Si el texto es más largo, se corta desde el lado derecho. Si el texto es más corto, se añaden espacios en el lado derecho. |abcdef\\ \\ nulo |4\\ 8\\ 4 | '' | ||
+ | |||
+ | Cuando un valor de un campo de texto contiene avances de línea (//CRLF//), se continua la impresión en la siguiente línea. Este asunto se explica más abajo. | ||
+ | ===== Variables complejas ===== | ||
+ | Las variables complejas se ponen entre llaves '' | ||
+ | {NOMBRE_CAMPO_O_PARAM[|[LETRA_AJUSTE]LONGITUD[|FORMATO]] | ||
+ | |||
+ | La interpretación de los distintos valores de LETRA_AJUSTE, | ||
+ | |||
+ | ==== Campos numéricos ==== | ||
+ | Los campos numéricos se formatean con la función // | ||
+ | |||
+ | Si se ha dado un LETRA_AJUSTE **y** una LONGITUD, y la longitud es mayor que el texto formateado, entonces se añaden espacios al principio (para LETRA_AJUSTE igual a '' | ||
+ | |||
+ | ==== Campos de fecha y/o hora ==== | ||
+ | Los campos de fecha y/o hora se formatean con la función // | ||
+ | |||
+ | Para LETRA_AJUSTE y LONGITUD aplica lo mismo que para los campos numéricos. | ||
+ | |||
+ | ==== Campos de texto ==== | ||
+ | Los campos de texto se formatean con la función //Format//, si se ha dado un FORMATO. En caso contrario se usa el texto //tal cual//. | ||
+ | |||
+ | Si el texto es más corto que LONGITUD, se usa el ajuste derecho si LETRA_AJUSTE es '' | ||
+ | |||
+ | Los símbolos ''<'' | ||
+ | |||
+ | ==== Campos vacíos (nulos) ==== | ||
+ | Los campos vacíos se formatean con LONGITUD espacios. Si no se ha dado LONGITUD, se devuelve una cadena vacía. | ||
+ | |||
+ | ==== Campos con caracteres de control ==== | ||
+ | Se pueden enviar cualquier valor a la impresora con una variable de tipo '' | ||
+ | {$AE3B} | ||
+ | Después del símbolo de dólar se tiene que poner la cadena de control en codificación hexadecimal. Así es posible enviar por ejemplo el código para imprimir un logotipo guardado en la impresora. | ||
+ | ===== Control de impresión (IFDEF) ===== | ||
+ | Existen dos formas para condicionar la impresión de la plantilla. | ||
+ | Forma 1: | ||
+ | {IFDEF CONDICIÓN} | ||
+ | bloque 1 | ||
+ | {ENDIF} | ||
+ | Se imprime el //bloque 1// cuando se cumple la CONDICIÓN. | ||
+ | |||
+ | Forma 2: | ||
+ | {IFDEF CONDICIÓN} | ||
+ | bloque 1 | ||
+ | {ELSE} | ||
+ | bloque 2 | ||
+ | {ENDIF} | ||
+ | Se imprime el //bloque 1// cuando se cumple la CONDICIÓN, y en caso contrario se imprime el //bloque 2//. | ||
+ | |||
+ | La condición siempre tiene la forma | ||
+ | NOMBRE_CAMPO_O_PARAM< | ||
+ | o simplemente | ||
+ | NOMBRE_CAMPO_O_PARAM | ||
+ | Cuando solo se da el nombre de un campo o parámetro (sin operación), | ||
+ | |||
+ | La operaciones permitidas son ''<'', | ||
+ | |||
+ | No hace falta poner comillas alrededor de un VALOR de texto, **y no se debe poner espacios delante o detrás de la operación**. Ejemplos: | ||
+ | # Solo imprimir el descuento si es distinto a cero | ||
+ | I. {DESCRIPCION|< | ||
+ | I. Descuento de # | ||
+ | **Ojo: Si se cambia lo anterior al siguiente ejemplo, se imprime una línea vacía si el descuento es cero:** | ||
+ | I. {DESCRIPCION|< | ||
+ | I. {IFDEF PORC_DTO<> | ||
+ | |||
+ | ===== Ajuste de línea para campos de texto ===== | ||
+ | Si un campo de texto contiene varias líneas separadas por avances de línea (//CRLF//), se formatea cada línea por separado y se imprimen todas las líneas una debajo de otra. | ||
+ | |||
+ | Suponemos que el campo DESCRIPCION contenga el siguiente valor: | ||
+ | Pan de molde | ||
+ | Paquete familiar | ||
+ | Y en la plantilla tenemos: | ||
+ | I. # | ||
+ | Entonces se imprime | ||
+ | Pan de mol | ||
+ | Paquete fa | ||
+ | |||
+ | También podemos diferenciar el formato de la segunda y sucesiva línea de la primera línea: | ||
+ | I. # | ||
+ | I. # | ||
+ | que resulta en | ||
+ | Pan de mol | ||
+ | Paquete familiar | ||
+ | Note por favor el símbolo '' | ||
+ | |||
+ | También es posible realizar un ajuste de línea automático, | ||
+ | I. {DESCRIPCION|< | ||
+ | |||
+ | Si descripción tiene el valor | ||
+ | Pan de molde paquete familiar | ||
+ | |||
+ | Se formatea así: | ||
+ | Pan de | ||
+ | molde | ||
+ | paquete | ||
+ | familiar | ||
+ | |||
+ | Otra vez podemos definir un formato diferente para la segunda y sucesivas líneas: | ||
+ | I. {DESCRIPCION|< | ||
+ | I. {DESCRIPCION|< | ||
+ | |||
+ | Que acaba en: | ||
+ | Pan de | ||
+ | molde paquete familiar | ||
- | ====== Formatos de variables ====== | ||
- | De momento no me da tiempo, mirad los modelos para tener una idea... |
usu/plantillas.1373031968.txt.gz · Última modificación: 2013/07/05 15:46 por 127.0.0.1