Herramientas de usuario

Herramientas del sitio


usu:plantillas

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
usu:plantillas [2018/02/01 10:35] stefanusu:plantillas [2023/01/10 17:14] (actual) – [Parámetros] stefan
Línea 88: Línea 88:
   COLUMNAS=40   COLUMNAS=40
 En las secciones se puede hacer referencia a cualquier parámetro a través de las variables (ver abajo). 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, parámetros numéricos y parámetros de texto. Para poder distinguirlos hay que poner los valores de los parámetros de texto entre comillas (''NOMBRE=%%'valor'%%'').
  
 Los programas añaden una serie de parámetros a las plantillas antes de imprimirlas: Los programas añaden una serie de parámetros a las plantillas antes de imprimirlas:
Línea 96: Línea 98:
 |SmartOffice |Impresión ticket |ENTREGADO=50,00 |El importe en efectivo entregado. | |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 |DEVOLVER=21,44 |El importe a devolver. |
-|SmartOffice |Impresión ticket |NRO_COPIAS=2 |El número total de copias. |+|SmartOffice/SmartTPV |Impresión ticket/etiquetas |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 |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 |CONFIRMADO='S' |Si el albarán ha sido confirmado. |
 |SmartOffice |Impresión ticket |CLIENTE='S' | | |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. | |SmartOffice/SmartTPV |Impresión etiquetas de producto |COD_PRODUCTO=12345 |El código del producto para el que se quiere impromir la etiqueta. |
 +|SmartOffice |Impresión etiquetas de producto |PRECIOS='N' |Imprimir o no el precio. |
  
 +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=S''). Esto es útil para la impresión en impresoras **Zebra**, donde se puede poner la cantidad de copias en la misma plantilla:
 +  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 ''csOEM'', ''csISO88591'' y ''csUTF8''.
 +  CHARACTERSET='csOEM'
 +  [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>=?:"<Título dialogo>";"<Texto pregunta>";<Valor por defecto>
 +Por ejemplo:
 +  NRO_COPIAS=?:"Etiquetas de producto";"Número de ejemplares";1
 +  ...
 +Para que se convierte el valor introducido en mayúsculas, se puede usar el siguiente formato:
 +  IMPPRECIO=?:"Etiquetas de producto";"Imprimir precio";^"N"
 +
 +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 ===== ===== Secciones =====
 Después de los parámetros pueden aparecer varias secciones. Una secciones siempre empieza con un nombre abritrario entre corchetes: Después de los parámetros pueden aparecer varias secciones. Una secciones siempre empieza con un nombre abritrario entre corchetes:
Línea 136: Línea 168:
 ^  Letra de formato  ^  Descripción  ^  Longitud  ^  Ejemplo                                            ^^^ ^  Letra de formato  ^  Descripción  ^  Longitud  ^  Ejemplo                                            ^^^
 ^  :::                :::          ^  :::        Valor del campo/parametro  ^  Formato  ^  Impresión  ^ ^  :::                :::          ^  :::        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''\\  ''___''+|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''\\  ''____''+|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''|+|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\\ |E4\\ E11 |  ''-12345,678''\\  ''_-12345,678''
 +|T |Formatear como fecha, hora o fecha más hora, dependiendo de la longitud puesta. |10: Fecha en formato 31/11/2016.\\ 8: Hora en formato 22:36:12.\\ 5: Hora en formato 22:36.\\ 19: Fecha y hora en formato 31/11/2016 22:36:12.\\ 16: Fecha y hora en formato 31/11/2016 22:36.\\ Si se omite la longitud se supone una longitud de **10**. | | | | 
 +|  |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 |  ''abcd''\\  ''abcdef%%__%%''\\  ''%%____%%''|
  
 +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 ===== ===== Variables complejas =====
 +Las variables complejas se ponen entre llaves ''{...}''. La primera parte obligatoria es el nombre de un parámetro o de un campo que devuelve el //select//. A continuación pueden seguir dos partes opcionales, ambos separados por el símbolo ''|''. La primera parte es la longitud, igual con un caracter para definir el ajuste (izquierdo o derecho). La segunda parte es el formato, como está definido en las funciones de Delphi de formatear números, fechas o cadenas de texto. Si se usa un formato, también hay que usar la longitud.
 +  {NOMBRE_CAMPO_O_PARAM[|[LETRA_AJUSTE]LONGITUD[|FORMATO]]
  
 +La interpretación de los distintos valores de LETRA_AJUSTE, LONGITUD y FORMATO depende del tipo del campo NOMBRE_CAMPO_O_PARAM.
 +
 +==== Campos numéricos ====
 +Los campos numéricos se formatean con la función //FormatFloat//, si se ha dado un FORMATO. En caso contrario se usa un formato estandar.
 +
 +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 ''R'' o ''>'') o al final (para LETRA_AJUSTE igual a ''L'' o ''<'').
 +
 +==== Campos de fecha y/o hora ====
 +Los campos de fecha y/o hora se formatean con la función //FormatDateTime//, si se ha dado un FORMATO. En caso contrario se usa un formato estandar.
 +
 +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 ''R'' o ''>'', y el ajuste izquierdo para ''L'' o ''<''.
 +
 +Los símbolos ''<'' y ''>'' tienen un significado especial para los campos de texto. Cuando se usan estos símbolos, se aplica el ''ajuste de línea'' para textos que exceden LONGITUD caracteres. Ver más explicaciones abajo en el párrafo correspondiente.
 +
 +==== 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 ''{$...}'', por ejemplo
 +  {$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) ===== ===== 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<Operación>VALOR
 +o simplemente
 +  NOMBRE_CAMPO_O_PARAM
 +Cuando solo se da el nombre de un campo o parámetro (sin operación), la condición se cumple si el campo o parámetro **no es vacío (nulo)**.
 +
 +La operaciones permitidas son ''<'', ''<='', ''='', ''<>'', ''>'' y ''>=''.
 +
 +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|<20}{IFDEF PORC_DTO<>0}
 +  I.  Descuento de #PORC_DTO|I% (#IMPORTE_DTO|D){ENDIF}
 +**Ojo: Si se cambia lo anterior al siguiente ejemplo, se imprime una línea vacía si el descuento es cero:**
 +  I.  {DESCRIPCION|<20}
 +  I.  {IFDEF PORC_DTO<>0}Descuento de #PORC_DTO|I% (#IMPORTE_DTO|D){ENDIF}
 +
 +===== 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.  #DESCRIPCION|10  #PRECIO|D7
 +Entonces se imprime
 +    Pan de mol     2,33
 +    Paquete fa
 +
 +También podemos diferenciar el formato de la segunda y sucesiva línea de la primera línea:
 +  I.  #DESCRIPCION|10  #PRECIO|D7\
 +  I.  #DESCRIPCION|20
 +que resulta en
 +    Pan de mol     2,33
 +    Paquete familiar
 +Note por favor el símbolo ''\'' al final de la primera línea de la plantilla, indicando que la siguente línea tiene el formato para textos //multi-linea//.
 +
 +También es posible realizar un ajuste de línea automático, separando el texto en el último espacio que todavía cabe en la longitud de la variable. Para esto hay que usar los símbolos especiales ''<'' y ''>'' en la LETRA_AJUSTE del las variables complejas:
 +  I.  {DESCRIPCION|<10}  #PRECIO|D7\
 +
 +Si descripción tiene el valor
 +  Pan de molde paquete familiar
 +
 +Se formatea así:
 +    Pan de         2,33
 +    molde
 +    paquete
 +    familiar
 +
 +Otra vez podemos definir un formato diferente para la segunda y sucesivas líneas:
 +  I.  {DESCRIPCION|<10}  #PRECIO|D7\
 +  I.  {DESCRIPCION|<30}
 +
 +Que acaba en:
 +    Pan de         2,33
 +    molde paquete familiar
  
usu/plantillas.1517477728.txt.gz · Última modificación: 2018/02/01 10:35 por stefan

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki