Skip to Content
Produse

Pașii pachetului

Toate câmpurile unui pas de produs și ale unui pas de informare, precum și formula prin care un pas își stabilește propriile linii de factură.

Ultima actualizare la

Această pagină descrie câmpurile din cardul Linii de factură suplimentare de pe pagina produsului. Cum construiți un pachet găsiți la Configurarea liniilor de factură suplimentare.

Pas de produs

Un pas de produs este transformat de Tillor în zero, una sau mai multe linii de factură cu acel produs. Fără formulă, rezultatul este o singură linie cu cantitatea setată; cu o formulă stabiliți dumneavoastră dacă apar linii, câte și care.

CâmpCe face
ProdusProdusul care apare pe linia secundară, de exemplu un supliment NFC sau închirierea unui contor. Obligatoriu
CantitateCantitatea liniei dacă pasul nu are formulă sau dacă formula returnează true. Mai mare decât 0
Înmulțiți cu cantitatea rândului ancorăÎnmulțește fiecare cantitate calculată cu cantitatea liniei principale, de exemplu 0,5 pentru o jumătate de an de taxă de staționare. Rezultatul este rotunjit la două zecimale. Liniile care ajung astfel la 0 sunt omise de Tillor; o linie pe care formula însăși o returnează cu cantitatea 0 rămâne
Descriere (opțional)Înlocuiește numele produsului pe linia de factură. O formulă care returnează linii poate da fiecărei linii propria descriere
Stilul linieiImplicit (produs), DEFAULT sau INFO. Cu INFO, linia secundară devine o explicație gri în PDF și în editor
O dată per facturăRelevant doar dacă pe aceeași factură există două sau mai multe linii principale cu un pachet. Pasul aparține atunci doar primei linii principale în ordinea facturii
Zile suplimentare după sfârșitul liniei principale (metode de acces)Are sens doar dacă produsul principal are ca acțiune Prelungiți perioada de ocupare. La plata unei linii din acest pas, Tillor prelungește metodele de acces ale clientului până la data de sfârșit a liniei principale plus acest număr de zile; tipurile și stările provin din Prelungiți metoda de acces de pe produsul principal, consultați Prelungirea NFC prin pachet
FormulăOpțional. TypeScript care stabilește dacă pasul apare pe factură, cu ce cantitate sau care sunt exact liniile, consultați Formula pe pas

Pas de informare

Un pas de informare este doar text, fără produs și fără sumă. Tillor îl afișează ca linie de explicație.

CâmpCe face
Textul liniei de informațiiTextul vizibil, de exemplu „Inclusief toeristen-, gemeente- en provincietaksen". Obligatoriu
Stilul linieiImplicit INFO. Puteți alege DEFAULT dacă doriți să afișați linia ca o linie obișnuită
FormulăOpțional. Dacă formula returnează false, linia de informare este omisă

Dacă un pas de informare se află sub o linie principală, PDF-ul pune automat ↳ în fața textului.

Formula pe pas

Fiecare pas poate avea o Formulă: TypeScript, la fel ca formula de tarif, pe care Tillor o execută la salvarea unei facturi cu acest pachet. Astfel, un pas poate depinde de client, de ocupare, de parcelă, de contoare sau de metodele de acces, de exemplu printr-un câmp personalizat în care păstrați o excepție.

Ce returnează formula

Valoare returnatăEfect
trueO linie cu Cantitate setată
false sau nullNicio linie
Un număr mai mare decât 0O linie cu acel număr drept cantitate
O listă de liniiExact acele linii, în acea ordine. O listă goală înseamnă nicio linie

O linie dintr-o astfel de listă este un obiect cu aceste câmpuri:

CâmpSemnificație
quantityObligatoriu. Cantitatea, 0 sau mai mult. O linie cu 0 rămâne, chiar și cu Înmulțiți cu cantitatea rândului ancoră
descriptionOpțional. Descrierea acestei linii; altfel Descriere a pasului, altfel numele produsului
unitPriceOpțional. Prețul unitar cu TVA inclus, ca tariful produsului; altfel tariful produsului. 0 creează o linie gratuită
accessMethodValueOpțional. Valoarea metodei de acces la care se referă această linie (UID-ul etichetei NFC), pentru prelungirea la plată

Ce poate citi formula

Câmpurile se citesc cu acolade, ca în automatizări. Meniul Variabilă de lângă câmp arată tot ce este disponibil, inclusiv câmpurile dumneavoastră personalizate.

VariabilăCe este
{customer.…}Clientul de pe factură, de exemplu {customer.createdAt} sau {customer.customFields.meterhuurVrijgesteld}
{occupation.…}Ocuparea liniei principale. Dacă produsul principal nu are acțiunea Prelungiți perioada de ocupare, este singura ocupare a clientului; goală (null) dacă clientul ocupă mai multe parcele
{terrain.…}Parcela acelei ocupări
{anchor.…}Linia principală: {anchor.quantity} (de exemplu 0,5 pentru o jumătate de an), {anchor.terrainId}, {anchor.occupationId} și {anchor.endDate}
{meters}Lista contoarelor din domeniu: pe parcela liniei principale la Prelungiți perioada de ocupare, altfel pe toate parcelele ocupate de client. Fiecare contor are name, provider (de exemplu ICY), type (de exemplu ELECTRICITY, GAS), metadatele furnizorului său (de exemplu icyMetadata.switchState pentru alimentare pornită), terrain și customFields
{accessMethods}Lista metodelor de acces ale clientului, cele mai vechi primele, de orice tip și orice stare. Fiecare metodă are type (de exemplu NFC), status (de exemplu ACTIVE), value, o label ușor de citit (numele cunoscut al etichetei NFC, altfel valoarea) și customFields

Listele {meters} și {accessMethods} sunt încărcate de Tillor doar dacă formula le folosește.

Exemple

Săriți peste un pas pentru clienții scutiți:

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

O linie pentru fiecare contor de electricitate ICY cu alimentare pornită și, pentru clienții din 2026 încoace, și cu alimentare oprită:

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

Prima etichetă NFC gratuită, ca explicație, fiecare următoare la tariful produsului (doi pași cu același produs sau un singur pas care returnează ambele feluri de linii):

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

O linie cu numărul de câini dintr-un câmp personalizat al clientului, nicio linie fără câini:

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

Cu Inserează exemplu de sub câmp primiți un punct de plecare cu aceste forme în comentariu.

Erori

O formulă care nu se compilează nu poate fi salvată; mesajul de sub câmp spune ce este greșit. Dacă o formulă se blochează la salvarea unei facturi sau returnează altceva decât true, false, un număr sau linii valide, salvarea eșuează cu numele pasului în mesajul de eroare, astfel încât o formulă defectă să nu adauge sau să omită niciodată în tăcere o linie.

Vezi și

A fost utilă această pagină?

Pe această pagină