Esta guía explica cómo personalizar el HTML de las plantillas de documentos de Holded (facturas, presupuestos, pedidos, albaranes…). Cubre la estructura de la plantilla, todas las variables disponibles, los bloques condicionales, las clases CSS que expone Holded y las particularidades del sistema que conviene conocer para obtener PDFs predecibles.
Cómo funciona el renderizado: tu HTML se rellena con los datos del documento y se convierte a PDF. El motor de renderizado admite un subconjunto de HTML/CSS — no es un navegador. La mayoría de sorpresas vienen de esperar comportamiento de navegador. Las reglas de esta guía te mantienen dentro de lo que el sistema renderiza de forma fiable.
1. Reglas de oro
1. Maqueta con tablas, no con flexbox ni grid. El sistema no admite display: flex, display: grid ni position: absolute/fixed. Toda maquetación en columnas debe hacerse con <table> / <tr> / <td> y anchos en porcentaje.
2. Un solo bloque <style> al inicio y estilos inline para lo específico. Mantén las reglas globales (fuentes, clases de items/totales) en el bloque de estilos; usa atributos style="…" en elementos concretos.
3. Usa <div> en lugar de <p>. El sistema aplica márgenes por defecto a <p> difíciles de controlar. <div> no añade espaciado inesperado.
4. Anchos en %, tamaños de fuente en pt. Los porcentajes fluyen bien en cualquier tamaño de papel; los puntos corresponden directamente al tamaño de impresión.
5. Añade width: 100%; table-layout: fixed a las tablas cuyas columnas deban respetar el ancho declarado. Sin table-layout: fixed, el sistema ajusta las columnas según su contenido y tus anchos se tratan como sugerencias.
6. Propiedad abreviada antes que la específica. Si combinas padding: 10px con padding-top: 4px en el mismo style, la abreviada debe ir primero — en orden inverso, la abreviada machaca el valor del lado. Igual con margin/border.
7. Los márgenes de página y las alturas de cabecera/pie se configuran en Holded, no en el HTML. El panel de configuración de la plantilla controla el área imprimible; tu HTML la rellena.
2. Estructura de página: cabeceras, pies y saltos
Estructura de página: cabecera, cuerpo y pie, con los márgenes configurados en Holded
Cabeceras
Las cabeceras se repiten en cada página mediante bloques con nombre. El patrón estándar es una cabecera para la página 1 y otra para el resto:
<htmlpageheader name="firstpage"> <!-- cabecera de la página 1: logo, datos de empresa, QR Verifactu --> </htmlpageheader>
<htmlpageheader name="otherpages"> <!-- cabecera repetida a partir de la página 2 (normalmente igual, sin el QR) --> </htmlpageheader>
<sethtmlpageheader name="firstpage" page="first" value="on" show-this-page="1"></sethtmlpageheader> <sethtmlpageheader name="otherpages" page="other" value="on"></sethtmlpageheader> |
• Las etiquetas de activación sethtmlpageheader son obligatorias — un bloque de cabecera sin ellas nunca se muestra.
• Si el contenido de la cabecera supera la altura configurada en Holded, se solapará con el cuerpo. Ajusta la altura en la configuración de la plantilla, no con CSS.
Pies de página
<htmlpagefooter name="myfooter"> <!-- contenido del pie: nº de documento, total, contador de páginas --> </htmlpagefooter>
<sethtmlpagefooter name="myfooter" value="on"></sethtmlpagefooter> |
Un pie típico con contador de páginas:
<table width="100%"> <tr> <td width="87%">%DOCNUM% - %TOTAL% [[DUEDATE|{LANG_duedate} %DUEDATE%]]<br>%MERCREGISTRY%</td> <td width="13%" style="text-align: right">{LANG_page} {PAGENO} {LANG_of} {nb}</td> </tr> </table> |
Saltos de página
<pagebreak> |
• <pagebreak> es una etiqueta vacía — nunca escribas </pagebreak>. El contenido posterior empieza en una página nueva.
• Un patrón habitual es forzar los términos y condiciones a su propia página: coloca <pagebreak> justo antes del bloque [[TAC|…]].
Números de página
Token | Significado |
{PAGENO} | Número de la página actual |
{nb} | Número total de páginas |
3. Variables
Las variables usan la sintaxis %NOMBRE% y se sustituyen por los datos del documento al renderizar. Si un campo está vacío, la variable se sustituye por texto vacío (envuelve el contenido opcional en un condicional — sección 5 — para ocultar también su etiqueta).
Contacto (el cliente/proveedor del documento)
Variable | Contenido |
%DOCTO% | Tipo de contacto (Cliente, Proveedor…) |
%C_NAME% | Nombre del contacto |
%C_IDNUM% | NIF/CIF del contacto |
%CLIENTADDRESS% | Dirección del contacto (se muestra en varias líneas) |
%C_EMAIL% | Email del contacto |
%C_PHONE% | Teléfono del contacto |
%C_MOBILE% | Móvil del contacto |
%C_REFERENCE% | Referencia del contacto |
%C_TRADENAME% | Nombre comercial del contacto |
Tu empresa
Variable | Contenido |
%NAME% | Nombre de la empresa |
%IDNUM% | NIF de la empresa |
%ADDRESS% | Dirección de la empresa — se muestra en varias líneas (calle / población (CP), provincia / país) |
%ADDRESSLINE% | Dirección de la empresa en una sola línea |
%EMAIL% | Email de la empresa |
%PHONE% | Teléfono de la empresa |
%MOBILE% | Móvil de la empresa |
%MERCREGISTRY% | Texto del registro mercantil |
Consejo de maquetación: como %ADDRESS% y %CLIENTADDRESS% se expanden a ~3 líneas, deja espacio vertical para ellas en las celdas de la cabecera. Usa %ADDRESSLINE% cuando necesites una sola línea compacta.
Documento
Variable | Contenido |
%DOCTYPE% | Título del documento (Factura, Presupuesto…) |
%DOCTYPELOW% | Título del documento en minúsculas |
%DOCNUM% | Número del documento |
%DATE% | Fecha del documento |
%DUEDATE% | Fecha de vencimiento |
%BODY% | Campo de texto del cuerpo del documento |
%NOTES% | Notas / mensaje visible |
%TAC% | Términos y condiciones |
%PM% | Forma de pago |
%SHIPPINGADDRESS% | Dirección de envío |
%TRACKINGNAME% | Empresa de transporte |
%DELIVERYDATE% / %PICKUPDATE% | Fecha de entrega / de recogida |
%CFK% / %CFV% | Nombre / valor de campo personalizado (solo dentro del bloque condicional CUSTOMFIELDS, ver sección 5) |
%VERIFACTU% | Código QR de Verifactu (ver sección 8) |
Tokens de diseño (configurados en el diseño de la plantilla)
Variable | Contenido |
%LOGO% | Imagen del logo de la empresa |
%LOGOSIZE% | Valor del tamaño de logo configurado |
%FONT% | Tipografía de la plantilla |
%FONTCOLOR% | Color primario / de marca |
%COLOR2% | Color secundario |
%SECIMG% | Imagen secundaria |
Se usan dentro del CSS como valores normales:
body, table, p, div { font-family: %FONT%; } .logo { height: %LOGOSIZE%; max-height: 125px; } h1 { color: %FONTCOLOR%; } |
Totales
Variable | Contenido |
%TOTAL% | Total del documento |
%TOTALSHTML% | El bloque completo de totales — coloca este token donde quieras que aparezca el desglose |
%SIMPLETOTAL% | Total sin desglose |
%TAXBASE% | Base imponible |
%TAX% | Importe del impuesto |
%DISCOUNT% / %DISCOUNTVAL% / %DISCOUNTLINESVAL% | % de descuento global / importe del descuento global / total de descuentos por línea |
%TOTAL_SUPPLIED% | Total de suplidos |
Items
Variable | Contenido |
%ITEMS% | La tabla de conceptos completa, generada por Holded (columnas según la configuración de la plantilla) |
%NUMCOLUMNS% | Número de columnas de la tabla de conceptos |
4. Palabras dinámicas: claves {LANG_*}
Los tokens {LANG_clave} muestran la etiqueta en el idioma del documento — úsalos en lugar de escribir "Factura" o "Invoice" a mano, para que una misma plantilla funcione en todos los idiomas.
Truco de mayúsculas: poner en mayúscula la clave pone en mayúscula el resultado — {LANG_invoice} → "factura", {LANG_Invoice} → "Factura".
Las claves más habituales están en las recetas de esta guía; la lista completa está al final, en el Extra.
5. Bloques condicionales: [[CONDICIÓN|…]]
Envuelve contenido en [[CONDICIÓN| … ]] y solo se mostrará cuando el documento tenga ese dato. Así evitas imprimir etiquetas vacías ("Vencimiento:" sin nada detrás).
[[DUEDATE|<b>{LANG_duedate}:</b> %DUEDATE%]] |
Condiciones disponibles:
Condición | Se muestra cuando… |
NOTES | hay notas |
PM | hay forma de pago |
TAC | hay términos y condiciones |
SHIPPING | hay dirección de envío |
DUEDATE | hay fecha de vencimiento |
CUSTOMFIELDS | hay campos personalizados — se repite una vez por campo |
VERIFACTU | aplica Verifactu |
El bucle de campos personalizados
[[CUSTOMFIELDS|…]] repite su contenido una vez por cada campo personalizado; dentro, %CFK% es el nombre del campo y %CFV% su valor:
[[CUSTOMFIELDS|<div><b>%CFK%:</b> %CFV%</div>]] |
6. Estilizar la tabla de conceptos (%ITEMS%)
El token %ITEMS% se expande en una tabla con clase items. Se estiliza por completo desde tu bloque <style>.
Tabla de conceptos con los selectores de cabecera, cuerpo, columnas y líneas de título
Selectores
Selector | Afecta a |
.items | Toda la tabla (bordes, márgenes) |
.items tr td | Todas las celdas (cabecera + cuerpo) — fuente base, padding |
.items thead tr td | Celdas de la fila de cabecera |
.items tbody tr td | Celdas de las filas del cuerpo |
.items tr td:nth-child(N) | Columna N (cabecera + cuerpo) — úsalo para los anchos de columna |
.items thead tr td:nth-child(N) | Celda de cabecera de la columna N |
.items tr:nth-child(even) td | Filas alternas (fondo tipo cebra) |
.item-text-desc | El texto de la descripción cuando nombre+descripción se muestran fusionados en una celda |
.items td.blanktotal | La celda de relleno que Holded añade en algunas filas de totales autogeneradas |
Particularidad crítica de especificidad: el sistema ignora las reglas que apuntan solo a tr para el contenido de las celdas. .items tbody tr { border… } no tiene efecto visible — debes apuntar al td: .items tbody tr td { border… }. Ten en cuenta también que .items thead tr td (3 elementos) gana a .items tr td (2 elementos); apóyate en eso en lugar de usar !important.
Clases por columna (celdas del cuerpo)
Cada celda del cuerpo lleva además una clase de columna — el gancho más limpio para estilizar el contenido de una columna concreta:
.item-td-photo { } .item-td-sku { } .item-td-name { } .item-td-desc { } .item-td-price { } .item-td-units { } .item-td-tax { } .item-td-subtotal { } .item-td-discount { } .item-td-total { } .item-td-weight { } .item-td-totalweight { } |
Ejemplo — celdas de SKU e impuesto más grandes:
.item-td-sku { font-size: 11pt; } .item-td-tax { font-size: 11pt; } |
Alineación de columnas: los comentarios {prop:…}
La alineación del texto por columna se controla con comentarios especiales colocados *dentro del bloque <style>* (Holded los lee aunque parezcan comentarios). th = celda de cabecera, td = celdas del cuerpo:
/* {prop:prop-th-name-align:left} */ /* {prop:prop-td-name-align:left} */ /* {prop:prop-th-price-align:right} */ /* {prop:prop-td-price-align:right} */ |
Nombres de columna válidos: name, desc, sku, photo, price, units, weight, totalweight, discount, subtotal, tax, total. Valores: left, center, right.
Valores por defecto si no los defines: las columnas de texto (name, desc, sku, photo) se alinean a la izquierda; las numéricas (price, units, discount, weight, totalweight, subtotal, tax, total) a la derecha.
Anchos de columna
.items tr td:nth-child(1) { width: 40%; } .items tr td:nth-child(2) { width: 15%; } /* … haz que todas las columnas sumen 100% */ |
Cuenta N solo sobre las columnas visibles, en su orden de visualización. Si defines anchos, defínelos en todas las columnas y haz que sumen 100%.
Líneas de título (subtotales por sección dentro de la tabla)
Los documentos pueden contener líneas de título que agrupan conceptos y muestran un subtotal acumulado (la suma de las líneas inferiores hasta la siguiente línea de título). Holded las muestra dentro de la tabla de conceptos con estos ganchos:
Selector | Afecta a |
.items tr.tritemtitle td | Toda la fila de la línea de título (bordes, padding, fondo) |
.items .tditemtitle | La celda fusionada del título, a la izquierda |
.items .tditemtitlevalue | La celda del subtotal, a la derecha |
Particularidades:
• Las líneas de título se muestran en negrita por defecto (sin CSS; se puede anular con font-weight: normal en el selector de la fila).
• El subtotal muestra la suma de la columna Total; si Total está oculta, usa Subtotal; si ambas están ocultas, no se muestra ninguna suma.
• El borde interno entre la celda del título y la del subtotal nunca se dibuja — un border-right en el título o un border-left en el subtotal no aparecerán.
7. Estilizar el bloque de totales (%TOTALSHTML%)
Coloca %TOTALSHTML% donde deba aparecer el desglose de totales. Para posicionarlo (p. ej. en la mitad derecha de la página), envuélvelo en una tabla:
<table width="100%"> <tr> <td width="50%"></td> <td>%TOTALSHTML%</td> </tr> </table> |
Holded muestra uno de dos formatos según la configuración de la plantilla. Estiliza el que use tu plantilla:
Formato A — vertical (filas de etiqueta / valor)
Totales en formato vertical con los selectores de cada columna y de la fila TOTAL
Selector | Afecta a |
.totals | Contenedor exterior |
.tabletotals | La tabla de totales |
.tabletotals td:nth-child(1) | Columna de etiquetas (Base imponible, IVA…) — se muestra en mayúsculas por defecto |
.tabletotals td:nth-child(2) | Columna de valores |
.tabletotals .thetotaltext | La celda de la etiqueta "Total" final |
.tabletotals .thetotalvalue | La celda del importe total final |
.tabletotals .thetotaltext, .tabletotals .thetotalvalue { border-top: 1px solid #000; font-weight: bold; } |
Formato B — desglose horizontal de impuestos
Una tabla de 4 columnas (Base imponible | Impuesto | Total impuesto | Total) con una fila por tipo de impuesto y una fila final de suma.
Totales en formato desglose horizontal, con la primera columna invisible resaltada
Selector | Afecta a |
.tabletotalsdetail | La tabla del desglose |
.tabletotalsdetail th | Celdas de cabecera — se muestran en mayúsculas por defecto |
.tabletotalsdetail td | Celdas del cuerpo |
.tabletotalsdetail tr.totalsline td | La fila final de suma — se muestra en negrita por defecto |
.totalsline #fd_amount | El importe total final dentro de la fila de suma |
.thetotaltext | Las celdas de suma visibles en la fila final |
Particularidades estructurales:
• La tabla tiene una primera columna invisible (<td class="firsttd">). Incluye siempre estas dos reglas para que nunca se vea:
.tabletotalsdetail .firsttd { border: none; } .totalsline td:nth-child(1) { width: 0%; } |
• Debido a esa columna oculta, las reglas por columna van desplazadas una posición: las columnas visibles son td:nth-child(2) … td:nth-child(5).
• Para ocultar visualmente toda la fila de suma pero conservar el total final:
.tabletotalsdetail tr.totalsline td { color: white; border: 0; } .totalsline #fd_amount { color: #000000; } |
8. QR de Verifactu
Las facturas sujetas a Verifactu deben mostrar el QR en la primera página. El bloque estándar, normalmente dentro de la cabecera firstpage:
[[VERIFACTU|<div class="verifactu-qr" style="text-align: center; vertical-align: top;">%VERIFACTU%<br><br></div>]] |
• El QR se imprime a ~40×40 mm — reserva ese espacio en la maquetación de tu cabecera.
• Mantén centrado el contenido de la celda del QR; las etiquetas encima/debajo del QR las añade Holded.
9. Logo e imágenes
.logo { height: %LOGOSIZE%; max-height: 125px; } |
• %LOGO% inserta la imagen del logo (ya envuelta para que la clase .logo le aplique). Controla el tamaño mediante la clase .logo.
• %SECIMG% inserta la imagen secundaria. Puedes envolverla en una etiqueta <img src="%SECIMG%"> con atributos width/height explícitos, o dejarla sin tamaño para usar el natural.
• Las imágenes externas por URL funcionan (<img src="https://…">), pero la URL debe ser accesible públicamente en el momento del renderizado.
• Prefiere los atributos HTML width/height en <img> frente a tamaños por CSS — el sistema los respeta con más fiabilidad.
10. Limitaciones del sistema — Lista de comprobación
• ❌ display: flex / grid / position: absolute — no compatibles. Usa tablas.
• ❌ Reglas CSS que apunten solo a tr para el contenido de las celdas — apunta a tr td.
• ❌ </pagebreak> — <pagebreak> es una etiqueta vacía, sin cierre.
• ❌ Fuentes web / @font-face — la tipografía viene de la configuración de la plantilla mediante %FONT%.
• ⚠️ <p> tiene márgenes por defecto — prefiere <div>.
• ⚠️ Los anchos de columna declarados solo se respetan con table-layout: fixed en la tabla.
• ⚠️ Abreviada + específica en el mismo estilo: la abreviada primero (padding: 10px; padding-top: 4px ✓ — al revés, se pierde silenciosamente el valor del lado).
• ⚠️ cellpadding="N" en una tabla funciona y rellena todas las celdas, pero el padding CSS por celda lo anula. El padding escrito directamente en cada <td> es lo más predecible.
• ⚠️ El contenido más alto que la altura configurada de cabecera/pie se solapa con el cuerpo — corrige la altura en la configuración de la plantilla en Holded.
• ⚠️ Las cadenas largas sin espacios pueden ensanchar una columna de tabla fija más de lo declarado; el sistema parte el texto en celdas fijas, pero pruébalo con datos reales.
• ⚠️ border-collapse: collapse va en la tabla, no en td/th (es una propiedad de tabla).
• ✅ Los atributos HTML clásicos (width="50%" en td, cellpadding, colspan, rowspan) están bien soportados y suelen ser más fiables que sus equivalentes CSS.
• ✅ Los atributos style inline están totalmente soportados y son la forma más segura de estilizar un elemento concreto.
11. Recetas rápidas
Etiqueta + valor solo cuando hay dato:
[[PM|<div><b>{LANG_paymentterms}</b><br>%PM%</div>]] |
Términos y condiciones en su propia página:
[[TAC|<pagebreak> <div><b>{LANG_tac}</b><br>%TAC%</div> ]] |
Cabecera a dos columnas (logo a la izquierda, datos de empresa a la derecha):
<table width="100%" style="table-layout: fixed"> <tr> <td width="50%" style="vertical-align: top">%LOGO%</td> <td width="50%" style="vertical-align: top; text-align: right"> <b>%NAME%</b><br>%ADDRESS%<br>%IDNUM%<br>%PHONE%<br>%EMAIL% </td> </tr> </table> |
Bloque de datos del cliente:
<div> <b>%DOCTO%</b><br> %C_NAME%<br> %CLIENTADDRESS%<br> %C_IDNUM%<br> %C_PHONE%<br> %C_EMAIL% </div> |
Detalles del documento (número / fecha / vencimiento) en tabla:
<table width="100%"> <tr><td style="font-weight: bold">{LANG_number} #</td><td style="text-align: right">%DOCNUM%</td></tr> <tr><td style="font-weight: bold">{LANG_date}</td><td style="text-align: right">%DATE%</td></tr> [[DUEDATE|<tr><td style="font-weight: bold">{LANG_duedate}</td><td style="text-align: right">%DUEDATE%</td></tr>]] </table> |
Dirección de envío solo si existe:
[[SHIPPING|<div><b>{LANG_shippingaddress}</b><br>%SHIPPINGADDRESS%</div>]] |
Notas / observaciones al final del documento:
[[NOTES|<div><b>{LANG_observations}</b><br>%NOTES%</div>]] |
Campos personalizados en línea, uno por fila:
[[CUSTOMFIELDS|<div><b>%CFK%:</b> %CFV%</div>]] |
Tabla de conceptos con filas alternas (cebra):
.items tr:nth-child(even) td { background-color: #f5f5f5; } |
Cabecera de la tabla de conceptos con fondo de marca y texto blanco:
.items thead tr td { background-color: %FONTCOLOR%; color: #ffffff; font-weight: bold; padding: 10px; } |
Toda la tabla de conceptos con rejilla completa (estilo contable):
.items { border: 1px solid #000; } .items tr td { border: 0.5px solid #000; padding: 6px 8px; } |
Padding uniforme en las celdas de una tabla de maquetación (con menos arriba):
<td style="vertical-align: top; padding: 14px; padding-top: 6px">…</td> |
Totales fijados a la mitad derecha:
<table width="100%"> <tr><td width="50%"></td><td>%TOTALSHTML%</td></tr> </table> |
Fila final del total (formato vertical) con línea superior y negrita:
.tabletotals .thetotaltext, .tabletotals .thetotalvalue { border-top: 1px solid #000; font-weight: bold; font-size: 11pt; } |
Título del documento grande con el color de marca:
<div style="font-size: 20pt; font-weight: bold; color: %FONTCOLOR%; text-transform: capitalize">%DOCTYPE%</div> |
Pie con contador de páginas a la derecha:
<td style="text-align: right">{LANG_page} {PAGENO} {LANG_of} {nb}</td> |
Línea separadora fina entre secciones:
<hr style="border-top: 1px solid #000000"> |
Espaciador vertical entre bloques:
<div style="height: 16px"></div> |
Línea de título de la tabla de conceptos con fondo gris:
.items tr.tritemtitle td { background-color: #f0f0f0; border-top: 1px solid #000; } |
Extra — Lista completa de claves {LANG_*}
Se usan como {LANG_clave} (p. ej. {LANG_invoice}). Recuerda el truco de mayúsculas: {LANG_Invoice} → "Factura". Traducción al español mostrada como referencia; el sistema muestra el idioma del documento.
Tipos de documento
Clave | Español |
{LANG_invoice} | Factura |
{LANG_estimate} | Presupuesto |
{LANG_order} | Pedido |
{LANG_salesorder} | Pedido de venta |
{LANG_proform} | Proforma |
{LANG_creditnote} | Factura Rectificativa |
{LANG_salesreceipt} | Factura simplificada |
{LANG_receiptnote} | Factura Simple Rectificativa |
{LANG_orderinvoice} | Factura compra |
{LANG_purchasenote} | Factura compra rectificativa |
{LANG_waybill} | Albarán |
Cabeceras de documento y fechas
Clave | Español |
{LANG_number} | Número |
{LANG_date} | Fecha |
{LANG_duedate} | Vencimiento |
{LANG_duedatedate} | Fecha vencimiento |
{LANG_multiduedates} | Fechas de vencimiento |
{LANG_paymentdate} | Pago |
{LANG_deliverydate} | Entrega |
{LANG_deliverydate2} | Fecha entrega |
{LANG_deliverydate3} | Entrega debida |
{LANG_deliverydue3} | Vencimiento de entrega |
{LANG_pickupdate} | Fecha recogida |
{LANG_monthly} | Mensual |
{LANG_yearly} | Anual |
{LANG_days} | Días |
Contactos y direcciones
Clave | Español |
{LANG_client} | Cliente |
{LANG_customer} | Cliente |
{LANG_contact} | Contacto |
{LANG_supplier} | Proveedor |
{LANG_buyer} | Comprador |
{LANG_invoiceto} | Cliente |
{LANG_estimateto} | Cliente |
{LANG_proformto} | Cliente |
{LANG_waybillto} | Cliente |
{LANG_orderinvoiceto} | Cliente |
{LANG_orderto} | Proveedor |
{LANG_requestedby} | Solicitado por |
{LANG_address} | Dirección |
{LANG_billingaddress} | Dirección de facturación |
{LANG_shippingaddress} | Dirección de envío |
{LANG_deliveryaddress} | Dirección de envío |
{LANG_shippingcompany} | Empresa envío |
{LANG_shipping} | Envío |
{LANG_destination} | Destino |
{LANG_phone} | Teléfono |
{LANG_name} | Nombre |
Tabla de conceptos
Clave | Español |
{LANG_product} | Concepto |
{LANG_description} | Descripción |
{LANG_code} | Código |
{LANG_units} | Unidades |
{LANG_taxableabb} | Precio |
{LANG_pricehour} | Precio/h |
{LANG_discount} | Descuento |
{LANG_discountlines} | Descuento por item |
{LANG_dto} | Dto. |
{LANG_amount} | Importe |
{LANG_numitems} | Num unidades |
{LANG_totalunits} | Total unidades |
{LANG_weight} | Peso |
{LANG_totalweight} | Peso total |
{LANG_weightunit} | Peso / Unidad |
Totales e impuestos
Clave | Español |
{LANG_total} | Total |
{LANG_totaltaxable} | Subtotal |
{LANG_taxable} | Base imponible |
{LANG_taxitem} | Impuesto |
{LANG_taxname} | Impuesto |
{LANG_taxtype} | Tipo impuesto |
{LANG_taxamount} | Total impuesto |
{LANG_totaltax} | Total Impuesto |
{LANG_totaliva} | Total IVA |
{LANG_taxesincluded} | IVA incluido |
{LANG_taxesnotincluded} | IVA no incluido |
{LANG_totalsupplied} | Suplidos |
Textos y bloques
Clave | Español |
{LANG_observations} | Observaciones |
{LANG_paymentterms} | Condiciones de pago |
{LANG_pm} | Forma de pago |
{LANG_tac} | Términos y condiciones |
{LANG_bankinfo} | Información bancaria |
{LANG_invoicing} | Facturación |
{LANG_page} | Pág. |
{LANG_of} | de |
{LANG_viewinvoice} | Ver factura |
{LANG_viewestimate} | Ver presupuesto |
{LANG_vieworder} | Ver pedido |
{LANG_viewproform} | Ver proforma |
Unidades de medida
Clave | Español |
{LANG_kg} | Kg |
{LANG_g} | G |
{LANG_mg} | mg |
{LANG_tn} | tn |
{LANG_liters} | Litros |
{LANG_ml} | ml |
{LANG_meters} | Metros |
{LANG_km} | Km |
{LANG_m2} | m2 |
{LANG_m3} | m3 |
{LANG_hours} | Horas |
{LANG_minutes} | Minutos |
{LANG_nights} | Noches |
{LANG_trips} | Viajes |
{LANG_boxes} | Paquetes |
{LANG_boxes2} | Cajas |
{LANG_bags} | Bolsas |
{LANG_bottles} | Botellas |
{LANG_cans} | Latas |
{LANG_jars} | Tarros |
{LANG_drums} | Bidones |
Meses
Clave | Español |
{LANG_month1} … {LANG_month12} | Enero … Diciembre |
Cuando tengas dudas, mantén el marcado simple: tablas, divs y estilos inline — y prueba el PDF generado con un documento real que tenga notas, campos personalizados, dirección de envío y varios tipos de IVA, para ejercitar todos los caminos condicionales.
