Skip to Content
Prodotti

Passaggi del bundle

Tutti i campi di un passaggio prodotto e di un passaggio info, e la formula con cui un passaggio stabilisce le proprie righe di fattura.

Ultimo aggiornamento il

Questa pagina descrive i campi della scheda Righe fattura extra nella pagina del prodotto. Come costruire un bundle è spiegato in Impostare righe di fattura extra.

Passaggio prodotto

Tillor trasforma un passaggio prodotto in zero, una o più righe di fattura con quel prodotto. Senza formula è una riga con la quantità impostata; con una formula stabilisci tu se, quante e quali righe compaiono.

CampoCosa fa
ProdottoIl prodotto che finisce sulla riga figlia, per esempio un supplemento NFC o il noleggio di un contatore. Obbligatorio
QuantitàLa quantità della riga se il passaggio non ha formula, o se la formula restituisce true. Maggiore di 0
Moltiplica per quantità riga ancoraMoltiplica ogni quantità calcolata per la quantità della riga principale, per esempio 0,5 per mezzo anno di Posto fisso. Il risultato viene arrotondato a due decimali. Tillor omette le righe che così arrivano a 0; una riga che la formula stessa restituisce con quantità 0 resta
Descrizione (facoltativo)Sostituisce il nome del prodotto sulla riga di fattura. Una formula che restituisce righe può dare a ogni riga una descrizione propria
Stile rigaPredefinito (prodotto), DEFAULT o INFO. Con INFO la riga figlia diventa una nota grigia nel PDF e nell'editor
Una volta per fatturaRilevante solo se sulla stessa fattura ci sono due o più righe principali con un bundle. Il passaggio appartiene allora solo alla prima riga principale nell'ordine della fattura
Giorni extra dopo la fine della riga principale (metodi di accesso)Ha senso solo se il prodotto principale ha Estendi periodo occupazione come azione. Quando viene pagata una riga di questo passaggio, Tillor estende i metodi di accesso del cliente fino alla data di fine della riga principale più questo numero di giorni; tipi e stati vengono da Estendi metodo di accesso sul prodotto principale, vedi Estendere l'NFC tramite il bundle
FormulaFacoltativa. TypeScript che stabilisce se il passaggio compare sulla fattura, con quale quantità o quali righe esattamente, vedi Formula per passaggio

Passaggio info

Un passaggio info è solo testo, senza prodotto e importo. Tillor lo mostra come riga di nota.

CampoCosa fa
Testo riga infoIl testo visibile, per esempio "Inclusief toeristen-, gemeente- en provincietaksen". Obbligatorio
Stile rigaPer impostazione predefinita INFO. Puoi scegliere DEFAULT se vuoi mostrare la riga come una riga normale
FormulaFacoltativa. Se la formula restituisce false, la riga info viene omessa

Se un passaggio info sta sotto una riga principale, il PDF mette automaticamente ↳ davanti al testo.

Formula per passaggio

Ogni passaggio può avere una Formula: TypeScript, come la formula tariffaria, che Tillor esegue al salvataggio di una fattura con questo bundle. Così un passaggio può dipendere dal cliente, dall'occupazione, dalla piazzola, dai contatori o dai metodi di accesso, per esempio tramite un campo personalizzato in cui registri un'eccezione.

Cosa restituisce la formula

Valore restituitoEffetto
trueUna riga con la Quantità impostata
false o nullNessuna riga
Un numero maggiore di 0Una riga con quel numero come quantità
Un elenco di righeEsattamente quelle righe, in quell'ordine. Un elenco vuoto significa nessuna riga

Una riga in un elenco simile è un oggetto con questi campi:

CampoSignificato
quantityObbligatorio. La quantità, 0 o più. Una riga con 0 resta, anche con Moltiplica per quantità riga ancora
descriptionFacoltativo. La descrizione di questa riga; altrimenti la Descrizione del passaggio, altrimenti il nome del prodotto
unitPriceFacoltativo. Prezzo unitario IVA inclusa, come la tariffa del prodotto; altrimenti la tariffa del prodotto. 0 crea una riga gratuita
accessMethodValueFacoltativo. Il valore del metodo di accesso a cui si riferisce questa riga (l'UID del tag NFC), per l'estensione al pagamento

Cosa può leggere la formula

I campi si leggono con le parentesi graffe, come nelle automazioni. Il menu Variabile accanto al campo mostra tutto ciò che è disponibile, compresi i tuoi campi personalizzati.

VariabileCos'è
{customer.…}Il cliente sulla fattura, per esempio {customer.createdAt} o {customer.customFields.meterhuurVrijgesteld}
{occupation.…}L'occupazione della riga principale. Se il prodotto principale non ha Estendi periodo occupazione, è l'unica occupazione del cliente; vuota (null) se il cliente occupa più piazzole
{terrain.…}La piazzola di quell'occupazione
{anchor.…}La riga principale: {anchor.quantity} (per esempio 0,5 per mezzo anno), {anchor.terrainId}, {anchor.occupationId} e {anchor.endDate}
{meters}L'elenco dei contatori nell'ambito: sulla piazzola della riga principale con Estendi periodo occupazione, altrimenti su tutte le piazzole occupate dal cliente. Ogni contatore ha name, provider (per esempio ICY), type (per esempio ELECTRICITY, GAS), i metadati del suo provider (per esempio icyMetadata.switchState per l'alimentazione attiva), la sua terrain e customFields
{accessMethods}L'elenco dei metodi di accesso del cliente, dal più vecchio, di ogni tipo e stato. Ogni metodo ha type (per esempio NFC), status (per esempio ACTIVE), value, un label leggibile (il nome noto del tag NFC, altrimenti il valore) e customFields

Tillor carica gli elenchi {meters} e {accessMethods} solo se la formula li usa.

Esempi

Saltare un passaggio per i clienti esenti:

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

Una riga per ogni contatore elettrico ICY con alimentazione attiva, e per i clienti dal 2026 anche con alimentazione spenta:

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}` }));

Il primo tag NFC gratis come nota, ogni successivo alla tariffa del prodotto (due passaggi con lo stesso prodotto, oppure un solo passaggio che restituisce entrambi i tipi di riga):

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 riga con il numero di cani da un campo personalizzato del cliente, nessuna riga senza cani:

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

Con Inserisci esempio sotto il campo ottieni un punto di partenza con queste forme in commento.

Errori

Una formula che non compila non si può salvare; il messaggio sotto il campo dice cosa non va. Se una formula si blocca al salvataggio di una fattura, o restituisce qualcosa di diverso da true, false, un numero o righe valide, il salvataggio fallisce con il nome del passaggio nel messaggio d'errore, così una formula rotta non aggiunge né omette mai una riga in silenzio.

Vedi anche

Questa pagina è stata utile?

In questa pagina