Vorlagen
Hilfsfunktionen
Die folgenden Hilfsfunktionen stehen in der Datei template.ejs
der Rechnungs- und Angebotvorlagen zur Verfügung.
#t
Gibt einen übersetzten String für key
zurück.
t (key: string): string
#formatDate
Gibt einen formatierten Datumsstring zurück, der die Sprache der Rechnung/des Angebots berücksichtigt.
formatDate (date: string): string
#formatMoneyValue
Gibt einen formatierten Geldwert zurück, der die Sprache der Rechnung/des Angebots und die Währung des Geldwertes berücksichtigt.
formatMoneyValue (value: MoneyValue): string
#formatQuantity
Gibt einen string
zurück, der die quantity
eines Artikels und dessen unit
-Bezeichnung in der richtigen Sprache der Rechnung oder des Angebots enthält.
Falls die Sprache der Rechnung oder des Angebots nicht Teil der Einheitsbezeichnungen ist, wird auf eine andere Sprache für die Einheit zurückgegriffen.
formatQuantity (quantity: number, unit: Unit | null): string
#Beispiel
// item.unit ist eine Einheit für "Stunden":
formatQuantity(1, item.unit) // "1 Stunde"
// item.unit ist eine Einheit für "Tage":
formatQuantity(2, item.unit) // "2 Tage"
// item.unit ist null
formatQuantity(2, item.unit) // "2"
#formatUnit
Gibt eine Einheitsbezeichnung im Plural oder Singular in der richtigen Sprache der Rechnung oder des Angebots zurück. Falls die Sprache der Rechnung oder des Angebots nicht Teil der Einheitsbezeichnungen ist, wird auf eine andere Sprache für die Einheit zurückgegriffen.
formatUnit
wird intern von formatQuantity
verwendet und kann genutzt werden, um nur die Bezeichnung einer Einheit anzuzeigen.
formatUnit (quantity: number, unit: Unit | null): string
#Beispiel
// item.unit ist eine Einheit für "Stunden":
formatUnit(1, item.unit) // "Stunde"
// item.unit ist eine Einheit für "Tage":
formatUnit(2, item.unit) // "Tage"
// item.unit ist null
formatUnit(2, item.unit) // ""
#join
Verbindet ein Array von Strings mit einem gegebenen Trennzeichen und überspringt falsche Werte.
join (strings: Array, separator: string): string
#Beispiel
join(['Hallo', '', 'Welt', undefined], ' • ') // "Hallo • Welt"
#joinAddress
Verbindet die Komponenten einer Adresse mit einem gegebenen Trennzeichen und überspringt falsche Werte.
Dieser Helfer verarbeitet mehrere bekannte Adressformate, wie z. B. deutsche, US-amerikanische und britische Adressen.
Es kann eine Address
oder eine Party
als erstes Argument übergeben werden. Wenn eine Party
übergeben wird, wird der Name der Partei in die Adresse aufgenommen. Eine Party
ist ein Typ, der entweder ein InvoiceSeller, InvoiceBuyer, ProposalSeller oder ProposalBuyer sein kann.
joinAddress (addressOrParty: Address | Party, separator: string): string
#Beispiel
// Mit einer Adresse
joinAddress(invoice.seller.address, ' • ') // "Irgendeine Straße 76 • 99999 Berlin • Deutschland"
// Mit einer InvoiceParty
joinAddress(invoice.seller, ' • ') // "Firmenname • Irgendeine Straße 76 • 99999 Berlin • Deutschland"
#joinLegalInfo
Verbindet den Namen, die Adresse und die Steuerinformationen einer Partei mit einem gegebenen Trennzeichen und überspringt falsche Werte.
Wenn die Partei ein Verkäufer aus Deutschland ist, kann die Steuernummer enthalten sein.
joinLegalInfo (party: Party, separator: string): string
#Beispiel
joinLegalInfo(invoice.seller, ' • ') // "Max Mustermann • Irgendeine Straße 76 • 99999 Berlin • Deutschland • USt-IdNr.: DE123456789"
#joinTaxInfo
Verbindet die Steuerinformationen einer Partei mit einem gegebenen Trennzeichen und überspringt falsche Werte.
Wenn die Partei ein Verkäufer aus Deutschland ist, kann die Steuernummer enthalten sein.
joinTaxInfo (party: Party, separator: string): string
#Beispiel
joinTaxInfo(invoice.seller, ' • ') // "USt-IdNr.: DE123456789"
#getTaxFields
Gibt ein Array von Steuerfeldern für eine gegebene Partei zurück.
Wenn die Partei ein Verkäufer aus Deutschland ist, kann die Steuernummer enthalten sein.
Die Felder sind Objekte mit den folgenden Feldern:
- key: Der Schlüssel des Feldes, z.B. "vatId"
- label: Die Bezeichnung des Feldes, z.B. "USt-IdNr."
- value: Der Wert des Feldes, z.B. "DE123456789"
getTaxFields (party: Party): Field[]
#Beispiel
getTaxFields(invoice.seller) // [{ key: 'vatId', label: 'USt-IdNr.', value: 'DE123456789' }]
#countryCode
Gibt den Namen des Landes zurück, unter Berücksichtigung der Sprache der Rechnung/des Angebots.
countryCode (code: string): string
#field
Gibt den Wert des gegebenen benutzerdefinierten Feldes zurück.
field (fieldName: string): any
#getSummaryItems
Gibt ein Array von SummaryItems
zurück, bestehend aus Rabatten, Steuern und Gesamtsummen.
getSummaryItems (): SummaryItem[]
Ein SummaryItem
ist ein Objekt mit den folgenden Eigenschaften:
SummaryItem {
kind: 'subtotal' | 'discount' | 'afterDiscount' | 'taxSubtotal' | 'total'
title: string
value: string
}
#Beispiel
<table class="summary-table">
<tbody>
<% for (const summaryItem of getSummaryItems()) { %>
<tr>
<th><%= summaryItem.title %></th>
<td><span class="number"><%= summaryItem.value %></span></td>
</tr>
<% } %>
</tbody>
</table>
#clsx
Die populäre clsx Funktion zum Generieren von Klassennamen.