Skip to Content
Produkty

Kroki pakietu

Wszystkie pola kroku produktu i kroku informacyjnego oraz formuła, za pomocą której krok określa własne linie faktury.

Ostatnio zaktualizowano

Ta strona opisuje pola w karcie Dodatkowe linie faktury na stronie produktu. Jak zbudować pakiet, wyjaśniono w Ustawianiu dodatkowych linii faktury.

Krok produktu

Krok produktu Tillor zamienia na zero, jedną lub kilka linii faktury z tym produktem. Bez formuły jest to jedna linia z ustawioną ilością; za pomocą formuły sam decydujesz, czy, ile i jakie linie powstaną.

PoleCo robi
ProduktProdukt, który trafia do linii podrzędnej, na przykład dopłata za NFC lub wynajem licznika. Wymagane
IlośćIlość linii, gdy krok nie ma formuły albo gdy formuła zwraca true. Większa niż 0
Pomnóż przez ilość wiersza kotwicyMnoży każdą obliczoną ilość przez ilość linii głównej, na przykład 0,5 przy pół roku Opłaty za postój. Wynik jest zaokrąglany do dwóch miejsc po przecinku. Linie, które w ten sposób wyjdą na 0, Tillor pomija; linia, którą formuła sama zwróci z ilością 0, zostaje
Opis (opcjonalnie)Zastępuje nazwę produktu na linii faktury. Formuła zwracająca linie może nadać każdej linii własny opis
Styl liniiDomyślny (produkt), DEFAULT lub INFO. Przy INFO linia podrzędna staje się szarym objaśnieniem w PDF i w edytorze
Raz na fakturęIstotne tylko wtedy, gdy na tej samej fakturze są dwie lub więcej linii głównych z pakietem. Krok należy wtedy tylko do pierwszej linii głównej w kolejności na fakturze
Dodatkowe dni po końcu wiersza głównego (metody dostępu)Ma sens tylko wtedy, gdy produkt główny ma jako akcję Przedłuż okres zajęcia miejsca. Gdy linia tego kroku zostanie opłacona, Tillor przedłuża metody dostępu klienta do daty końcowej linii głównej plus ta liczba dni; typy i statusy pochodzą z Przedłuż metodę dostępu w produkcie głównym, zobacz Przedłużanie NFC przez pakiet
FormułaOpcjonalne. TypeScript, który określa, czy krok trafia na fakturę, z jaką ilością albo jakie dokładnie linie, zobacz Formuła dla kroku

Krok informacyjny

Krok informacyjny to sam tekst, bez produktu i kwoty. Tillor pokazuje go jako linię objaśnienia.

PoleCo robi
Tekst linii informacyjnejWidoczny tekst, na przykład "Inclusief toeristen-, gemeente- en provincietaksen". Wymagane
Styl liniiDomyślnie INFO. Możesz wybrać DEFAULT, jeśli chcesz pokazać linię jako zwykłą
FormułaOpcjonalne. Jeśli formuła zwraca false, linia informacyjna zostaje pominięta

Jeśli krok informacyjny znajduje się pod linią główną, PDF automatycznie dodaje ↳ przed tekstem.

Formuła dla kroku

Każdy krok może mieć Formułę: TypeScript, tak jak formuła taryfy, który Tillor wykonuje przy zapisie faktury z tym pakietem. Dzięki temu krok może zależeć od klienta, zajęcia miejsca, terenu, liczników lub metod dostępu, na przykład poprzez własne pole, w którym zapisujesz wyjątek.

Co zwraca formuła

Zwrócona wartośćSkutek
trueJedna linia z ustawioną Ilością
false lub nullBrak linii
Liczba większa niż 0Jedna linia z tą liczbą jako ilością
Lista liniiDokładnie te linie, w tej kolejności. Pusta lista oznacza brak linii

Linia na takiej liście to obiekt z następującymi polami:

PoleZnaczenie
quantityWymagane. Ilość, 0 lub więcej. Linia z 0 zostaje, także przy Pomnóż przez ilość wiersza kotwicy
descriptionOpcjonalne. Opis tej linii; w przeciwnym razie Opis kroku, a w przeciwnym razie nazwa produktu
unitPriceOpcjonalne. Cena jednostkowa z VAT, jak taryfa produktu; w przeciwnym razie taryfa produktu. 0 tworzy darmową linię
accessMethodValueOpcjonalne. Wartość metody dostępu, której dotyczy ta linia (UID tagu NFC), na potrzeby przedłużenia przy płatności

Co formuła może czytać

Pola czytasz w nawiasach klamrowych, tak jak w automatyzacjach. Menu Zmienna przy polu pokazuje wszystko, co jest dostępne, łącznie z Twoimi własnymi polami.

ZmiennaCo to jest
{customer.…}Klient na fakturze, na przykład {customer.createdAt} lub {customer.customFields.meterhuurVrijgesteld}
{occupation.…}Zajęcie miejsca linii głównej. Jeśli produkt główny nie ma akcji Przedłuż okres zajęcia miejsca, jest to jedyne zajęcie klienta; puste (null), jeśli klient zajmuje kilka terenów
{terrain.…}Teren tego zajęcia
{anchor.…}Linia główna: {anchor.quantity} (na przykład 0,5 przy pół roku), {anchor.terrainId}, {anchor.occupationId} i {anchor.endDate}
{meters}Lista liczników w zakresie: na terenie linii głównej przy Przedłuż okres zajęcia miejsca, w przeciwnym razie na wszystkich terenach zajmowanych przez klienta. Każdy licznik ma name, provider (na przykład ICY), type (na przykład ELECTRICITY, GAS), metadane swojego dostawcy (na przykład icyMetadata.switchState dla włączonego zasilania), swój terrain i customFields
{accessMethods}Lista metod dostępu klienta, od najstarszej, każdego typu i statusu. Każda metoda ma type (na przykład NFC), status (na przykład ACTIVE), value, czytelną label (znana nazwa tagu NFC, w przeciwnym razie wartość) i customFields

Listy {meters} i {accessMethods} Tillor ładuje tylko wtedy, gdy formuła z nich korzysta.

Przykłady

Pominięcie kroku dla klientów zwolnionych:

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

Jedna linia na każdy licznik energii elektrycznej ICY z włączonym zasilaniem, a dla klientów od 2026 także z wyłączonym:

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

Pierwszy tag NFC za darmo jako objaśnienie, każdy kolejny według taryfy produktu (dwa kroki z tym samym produktem albo jeden krok, który zwraca oba rodzaje 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}`,
}));

Jedna linia z liczbą psów z własnego pola klienta, bez linii, gdy nie ma psów:

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

Za pomocą Wstaw przykład pod polem dostajesz punkt wyjścia z tymi postaciami w komentarzu.

Błędy

Formuły, która się nie kompiluje, nie można zapisać; komunikat pod polem mówi, co jest nie tak. Jeśli formuła zawiesza się przy zapisie faktury albo zwraca coś innego niż true, false, liczbę lub poprawne linie, zapis się nie udaje, a komunikat błędu zawiera nazwę kroku, żeby zepsuta formuła nigdy po cichu nie dodała ani nie pominęła linii.

Zobacz też

Czy ta strona była pomocna?

Na tej stronie