Skip to Content
Productos

Pasos del paquete

Todos los campos de un paso de producto y de un paso de información, y la fórmula con la que un paso determina sus propias líneas de factura.

Última actualización el

Esta página describe los campos de la tarjeta Líneas de factura adicionales en la página del producto. Cómo construir un paquete está en Configurar líneas de factura adicionales.

Paso de producto

Tillor convierte un paso de producto en cero, una o varias líneas de factura con ese producto. Sin fórmula es una sola línea con la cantidad configurada; con una fórmula decides tú si hay líneas, cuántas y cuáles.

CampoQué hace
ProductoEl producto que se añade a la línea hija, por ejemplo un recargo NFC o el alquiler de un contador. Obligatorio
CantidadLa cantidad de la línea si el paso no tiene fórmula, o si la fórmula devuelve true. Mayor que 0
Multiplicar por la cantidad de la fila principalMultiplica cada cantidad calculada por la cantidad de la línea principal, por ejemplo 0,5 con medio año de tarifa de estancia. El resultado se redondea a dos decimales. Tillor omite las líneas que así quedan en 0; una línea que la propia fórmula devuelve con cantidad 0 se mantiene
Descripción (opcional)Sustituye el nombre del producto en la línea de factura. Una fórmula que devuelve líneas puede dar a cada línea su propia descripción
Estilo de líneaPredeterminado (producto), DEFAULT o INFO. Con INFO, la línea hija pasa a ser una explicación en gris en el PDF y en el editor
Una vez por facturaSolo es relevante si hay dos o más líneas principales con un paquete en la misma factura. El paso pertenece entonces solo a la primera línea principal en el orden de la factura
Días extra tras el fin de la línea principal (métodos de acceso)Solo tiene sentido si el producto principal tiene Prolongar periodo de ocupación como acción. Cuando se paga una línea de este paso, Tillor prolonga los métodos de acceso del cliente hasta la fecha de fin de la línea principal más este número de días; los tipos y estados vienen de Prolongar método de acceso en el producto principal, consulta Prolongar NFC mediante el paquete
FórmulaOpcional. TypeScript que determina si el paso aparece en la factura, con qué cantidad o qué líneas exactamente, consulta Fórmula por paso

Paso de información

Un paso de información es solo texto, sin producto ni importe. Tillor lo muestra como línea de explicación.

CampoQué hace
Texto de línea informativaEl texto visible, por ejemplo "Inclusief toeristen-, gemeente- en provincietaksen". Obligatorio
Estilo de líneaPor defecto INFO. Puedes elegir DEFAULT si quieres mostrar la línea como una línea normal
FórmulaOpcional. Si la fórmula devuelve false, la línea de información se omite

Si un paso de información está debajo de una línea principal, el PDF añade automáticamente ↳ delante del texto.

Fórmula por paso

Cada paso puede tener una Fórmula: TypeScript, igual que la fórmula de tarifa, que Tillor ejecuta al guardar una factura con este paquete. Así, un paso depende del cliente, la ocupación, la parcela, los contadores o los métodos de acceso, por ejemplo mediante un campo propio en el que registras una excepción.

Qué devuelve la fórmula

Valor devueltoEfecto
trueUna línea con la Cantidad configurada
false o nullNinguna línea
Un número mayor que 0Una línea con ese número como cantidad
Una lista de líneasExactamente esas líneas, en ese orden. Una lista vacía significa ninguna línea

Una línea de esa lista es un objeto con estos campos:

CampoSignificado
quantityObligatorio. La cantidad, 0 o más. Una línea con 0 se mantiene, también con Multiplicar por la cantidad de la fila principal
descriptionOpcional. La descripción de esta línea; si no, la Descripción del paso, y si no, el nombre del producto
unitPriceOpcional. Precio unitario con IVA incluido, como la tarifa del producto; si no, la tarifa del producto. 0 crea una línea gratuita
accessMethodValueOpcional. El valor del método de acceso al que se refiere esta línea (el UID de la etiqueta NFC), para la prolongación al pagar

Qué puede leer la fórmula

Los campos se leen con llaves, como en las automatizaciones. El menú Variable junto al campo muestra todo lo disponible, incluidos tus campos propios.

VariableQué es
{customer.…}El cliente de la factura, por ejemplo {customer.createdAt} o {customer.customFields.meterhuurVrijgesteld}
{occupation.…}La ocupación de la línea principal. Si el producto principal no tiene Prolongar periodo de ocupación, es la única ocupación del cliente; vacío (null) si el cliente ocupa varias parcelas
{terrain.…}La parcela de esa ocupación
{anchor.…}La línea principal: {anchor.quantity} (por ejemplo 0,5 con medio año), {anchor.terrainId}, {anchor.occupationId} y {anchor.endDate}
{meters}La lista de contadores en el ámbito: en la parcela de la línea principal con Prolongar periodo de ocupación, si no en todas las parcelas que ocupa el cliente. Cada contador tiene name, provider (por ejemplo ICY), type (por ejemplo ELECTRICITY, GAS), los metadatos de su proveedor (por ejemplo icyMetadata.switchState para suministro activado), su terrain y customFields
{accessMethods}La lista de métodos de acceso del cliente, del más antiguo al más reciente, de cualquier tipo y estado. Cada método tiene type (por ejemplo NFC), status (por ejemplo ACTIVE), value, una label legible (el nombre conocido de la etiqueta NFC, si no el valor) y customFields

Tillor solo carga las listas {meters} y {accessMethods} si la fórmula las usa.

Ejemplos

Omitir un paso para los clientes exentos:

if ({customer.customFields.exemptFromSurcharges} === true) return false;
return true;

Una línea por contador de electricidad ICY con suministro activado, y para los clientes desde 2026 también con suministro desactivado:

const newCustomer = new Date({customer.createdAt} ?? 0) >= new Date("2026-01-01T00:00:00+01:00");
return {meters}
  .filter((m) => m.provider === "ICY" && m.type === "ELECTRICITY")
  .filter((m) => m.icyMetadata?.switchState === true || newCustomer)
  .map((m) => ({ quantity: 1, description: `Huur digitale elektriciteitsmeter ${m.name}` }));

La primera etiqueta NFC gratis como explicación, cada siguiente a la tarifa del producto (dos pasos con el mismo producto, o un paso que devuelve ambos tipos de línea):

const nfc = {accessMethods}.filter((a) => a.type === "NFC" && a.status === "ACTIVE");
return nfc.map((a, i) => ({
  quantity: i === 0 ? 0 : 1,
  unitPrice: i === 0 ? 0 : undefined,
  accessMethodValue: a.value,
  description: i === 0 ? `Toegangsmethode inclusief: ${a.label}` : `Toeslag extra toegangsmethode: ${a.label}`,
}));

Una línea con el número de perros de un campo propio del cliente, ninguna línea si no hay perros:

const dogs = Math.max(0, Math.floor(Number({customer.customFields.animals.dogs}) || 0));
return dogs === 0 ? false : [{ quantity: dogs, description: `Honden (${dogs})` }];

Con Insertar ejemplo, debajo del campo, obtienes un punto de partida con estas formas en comentario.

Errores

Una fórmula que no compila no se puede guardar; el aviso debajo del campo dice qué falla. Si una fórmula se bloquea al guardar una factura, o devuelve algo distinto de true, false, un número o líneas válidas, el guardado falla con el nombre del paso en el mensaje de error, de modo que una fórmula rota nunca añade u omite una línea en silencio.

Véase también

¿Te ha resultado útil esta página?

En esta página