Dentro del nuevo módulo de combinación de plantillas para Documentos de ZITUS-KIVA, existe un lenguaje para la redacción de las plantillas que se van a utilizar. En este artículo se detalla el procedimiento para realizar dicha redacción.
Los formatos soportados por el sistema de combinación de plantillas son:
- Para las plantillas:
- Documento de Word (.docx)
- Para imágenes que se introduzcan en plantillas:
- JPEG (.jpg)
- PNG (.png)
- Formatos de salida:
- Documento de Word (.docx)
- Portable Document Format (.pdf)
Estructura de las plantillas
Las plantillas realizan sus reemplazos con base en etiquetas. Estas etiquetas las hay de 2 tipos, programáticas y directas; también se pueden colocar ciertas expresiones y aplicar filtros a otras etiquetas.
Etiquetas Directas:
Se reemplazan directamente por el contenido especificado en los reemplazos definidos en la configuración de la plantilla dentro de Zitus-KIVA. Puedes encontrar las indicaciones para realizar dicha configuración en este artículo. La estructura de una etiqueta directa es:
{{ nombreEtiqueta }}
Donde <nombreEtiqueta> es el nombre dado en la configuración de la plantilla al contenido que será introducido en la plantilla. El nombre de una etiqueta solo puede contener caracteres alfanuméricos (A-Za-z0-9) y debe siempre empezar con letra. El formato que des a la etiqueta será el que se aplicará al texto que la reemplace. Es posible utilizar la misma etiqueta más de una vez en la misma plantilla. Las etiquetas directas también pueden ser reemplazadas por imágenes. Abajo puedes ver algunos ejemplos de etiquetas Directas.
Etiquetas programáticas
Realizan ciertas acciones especiales en la plantilla. Existen 3 tipos de etiquetas programáticas:
Esta etiqueta le indica al sistema que colocaste una o más imágenes en el encabezado. De no colocarla y tener imágenes en el encabezado, la primera imagen del cuerpo del documento no aparecerá en el documento resultante. Su estructura es la de una etiqueta directa con el nombre "imageOnHeader":
{{ imageOnHeader }}
Etiqueta "if"
Esta etiqueta le indicar al sistema que solo debe colocar el texto que esté dentro de ella en el documento resultante si la etiqueta indicada le fue enviada al sistema. Su estructura es:
{%if nombreEtiqueta %}contenido{% endif %}
Donde "nombreEtiqueta" es la etiqueta que debe exisitir para que "contenido" se inserte. Dentro de "contenido" podemos colocar otras etiquetas tanto directas como programáticas, así como saltos de línea, formatos personalizados y párrafos:
Etiqueta "for"
Esta etiqueta coloca en el documento resultante los contenidos indicados para cada elemento de una lista. Su estructura es la siguiente:
{% for item in lista %}
Contenido del elemento {{ item.nombre }}:
{{ item.contenido }}
{% endfor %}
Donde "item" es el nombre con el que se va a referenciar a cada elemento de "lista", y "nombre" y "contenido" son atributos de "item". También se puede colocar una etiqueta "for" que genere una tabla que esté estrucutrada como en el siguiente ejemplo:
Debido a limitaciones de diseño en la configuración de plantillas dentro de ZITUS-KIVA, las etiquetas for solo pueden ser utilizadas con variables del sistema y no pueden adoptar valores manuales. Los campos/tablas soportadas son:
- Plan de Pagos - Oportunidades de Inversión:
- Nombre de lista recomendado: "PlanPagos".
- Nombre de elemento recomendado: "pago".
- Atributos: "pago.fecha", "pago.monto", "pago.iva" y "pago.montoConIVA".
- Lista de Unidades - Pool de Rentas:
- Nombre de lista recomendado: "ListaUnidades".
- Nombre de elemento recomendado: "unidad".
- Atributos: "unidad.nombre" y "unidad.area".
- Calendario PReS - Oportunidades de Inversión:
- Nombre de lista recomendado: "PReS"
- Nombre de elemento recomendado: "dev"
- Atributos: "dev.fecha", "dev.monto", "dev.iva" y "dev.montoConIVA"
Expresiones
En una plantilla es posible utilizar expresiones de varios tipos, entre ellas las aritméticas, lógicas/comparaciones y literales (números, listas, texto). Puedes encontrar más información sobre el uso de expresiones en nuestro lenguaje de plantillas en
este enlaceFiltros
Los filtros pueden ser aplicados sobre cualquier etiqueta directa o atributos de items en una etiqueta for. Realizan transformaciones sobre el contenido o expresión que reciba la etiqueta. La sintaxis para un filtro es la siguiente:
{{ nombreEtiqueta | nombreFiltro }}
También es posible aplicar más de un filtro en cadena si se quisiera, el orden en que se aplicarán es del que está más cerca del nombre de la etiqueta al que esté más lejos.
{{ nombreEtiqueta | filtro_1 | filtro_2 | . . . | filtro_n }}
Algunos filtros pueden recibir información adicional a su nombre, esta se debe colocar entre paréntesis seguida del nombre del filtro, un ejemplo es el filtro round, que sirve para redondear un número a una cantidad dada de decimales:
{{ nombreEtiqueta | round(2) }}
Listado de algunos de los filtros más elementales:
- upper: este filtro convierte un texto a mayúsculas. Si se le pasa el valor {{ "zitus asset intelligence" | upper }}, el resultado será "ZITUS ASSET INTELLIGENCE".
- lower: este filtro convierte un texto a minúsculas. Si se le pasa el valor {{ "ZITUS ASSET INTELLIGENCE" | lower }}, el
resultado será "zitus asset intelligence".
- title: convierte la primera letra de todas las palabras de una frase en
mayúsculas. Si se le pasa el valor {{ "zitus
asset intelligence" | title }}, el resultado será "Zitus Asset Intelligence".
- capitalize: convierte la primera letra de una palabra o frase en mayúscula. Si se le pasa el valor {{ "zitus asset intelligence" | capitalize }}, el resultado será "Zitus asset intelligence".
- trim: quita los espacios al inicio y final de un texto. Si se le pasa el valor {{ " zitus asset intelligence " | trim }}, el resultado será "zitus asset intelligence".
- default(valor): normalmente, si el valor que se le manda a una etiqueta está vacío, se deja un espacio en blanco. Con este filtro, las etiquetas sin datos se reemplazan con el valor que se le indique. P.E. si existe la etiqueta "RFC" y al enviar los datos para generar el documento esta no le fue proporcionada a la plantilla, pero se colocó {{ RFC | default("XAXX010101000") }} en vez de solamente {{ RFC }}, en el documento final el texto que aparecerá es "XAXX010101000" en lugar de un espacio en blanco.
- letra(unidad=valor,unidad2=valor2): entrega el valor de un número escrito con letra, poniendo como unidad de los enteros el valor de unidad y como unidad de los decimales el valor de unidad2. Ambos parametros son opcionales; unidad2 solo se puede utilizar cuando existe unidad y limita los decimales a 2 posiciones, pues está pensada para uso con divisas. Por ejemplo:
- {{ 5501343.35435 | letra }} entregaría "cinco millones quinientos uno mil trescientos cuarenta y tres punto tres cinco cuatro tres cinco".
- {{ 5501343.35 | letra(unidad="pesos") }} entregaría "cinco millones quinientos uno
mil trescientos cuarenta y tres punto tres cinco cuatro tres cinco pesos".
- {{ 5501343.35435 | letra(unidad="pesos",unidad2="centavos") }} entregaría
"cinco millones quinientos uno mil trescientos cuarenta y tres pesos
treinta y cinco centavos".
- numero(simbolo=valor1,unidad=valor2): formatea un valor numérico para colocar comas cada 3 posiciones, unidad y símbolo. Tanto símbolo como unidad son opcionales.
- {{ 5501343.35435 | numero }} entregaría "5,501,343.35435".
- {{ 5501343.35435 | numero(simbolo="$") }} entregaría "$5,501,343.35435".
- {{ 5501343.35435 | numero(unidad="m2") }} entregaría
"5,501,343.35435 m2".
- {{ 5501343.35435 | numero(simbolo="$",unidad="MXN") }} entregaría
"$5,501,343.35435 MXN".
- moneda(moneda=valor): formatea un valor decimal escrito con letra y puesto como moneda. Si no se especifica un valor para moneda se consideran pesos:
- {{ 100321.331 | moneda }} entregaría "cien mil trescientos veintiuno pesos 33/100
- {{ 100321.331 | moneda(moneda="dólares" ) }} entregaría "cien mil trescientos veintiuno dólares 33/100
- decimal: formatea un número escrito con letra, pero escribe los decimales como su representación entera:
- {{ 5501343.35435 | letra }} entregaría "cinco millones quinientos uno
mil trescientos cuarenta y tres punto treinta y cinco mil cuatrocientos treinta y cinco".
- {{ 5501343.00435 | letra }} entregaría "cinco millones quinientos uno
mil trescientos cuarenta y tres punto cero cero cuatrocientos treinta y cinco".
Puedes encontrar un listado más amplio de filtros en
este enlace. Los filtros numero y letra no se incluyen en dicho listado.
Ejemplo Completo:
Resultado