Rechnungsvorlagen in Word erstellen

RechnungFertig nutzt die Technik rund um docx-template, um Rechnungsvorlagen während der Rechnungserstellung mit Inhalten zu befüllen. Dieser Artikel zeigt Schritt für Schritt, wie das funktioniert.

Variablen in Rechnungsvorlagen einsetzen

Die Templatesprache funktioniert standardmässig mit Platzhaltern in geschweiften Klammern.

Rechnungsvorlagen Template

Beim Generieren der Rechnung ersetzt die Software diese Variablen automatisch mit den passenden Daten.

Rechnungsvorlagen Gerendert

Damit das Befüllen der Rechnungsvorlage effizient ablaufen kann, kann man innerhalb des Programms über die Einstellungen auf der Rechnungsseite die Schlüsselwörter zu den Feldern sichtbar machen. Ein Klick auf das Schlüsselwort führt dazu, dass das Wort mit der korrekten Platzhalterformatierung in die Zwischenablage kopiert wird, so dass man es von da aus in der Word-Vorlage gleich einfügen kann:

Rechnungsprogramm mit aktivierten Keywords

Datumsformat richtig darstellen (fdate)

Mit Hilfe der Funktion fdate() lässt sich das Datum mit führenden Nullen darstellen:

Beispiel:

{fdate(rdatum)} für 13.6.2026 wird zu 13.06.2026

Internationale Datumsformate

Die Funktion unterstützt auch lokalisierte Datumsformate.

Beispiel:

{fdate(rdatum, 'de-DE')}    // 13.06.2026
{fdate(rdatum, 'fr-FR')}    // 13/06/2026

Dadurch passt sich die Darstellung automatisch an landesspezifische Konventionen an.

Geldbeträge korrekt formatieren (fnum)

Geldbeträge können mit der Funktion fnum() dargestellt werden, durch die Tausendertrenner und Dezimalstellen für Cent-Beträge korrekt formatiert werden.

Beispiel:

{fnum(totalbrutto)} €

Das Ergebnis wird automatisch korrekt formatiert:

1.250,00 €

Auch hier lässt sich optional ein Locale-Code verwenden, um die Beträge an länderspezifische Darstellungsweisen anzupassen.

{fnum(totalbrutto, 'de-DE')}
{fnum(totalbrutto, 'en-US')}

Damit ändern sich automatisch:

  • Dezimaltrennzeichen
  • Tausendertrennzeichen

Rechnungspositionen automatisch erzeugen

Listen, insbesondere für Rechnungspositionen und für Abschläge, können dynamisch erzeugt

Im Template wird dafür eine Schleife verwendet:

{FOR p in positions}

{$p.anr}
{$p.aname}
{$p.amenge}
{fnum($p.anetto)} €
{fnum($p.asum)} €

{END-FOR p}

Dadurch werden alle Rechnungspositionen automatisch eingefügt. Wird der innere Teil der Schleife in einer Tabellenzeile benutzt, so wird diese Tabellenzeile automatisch wiederholt.

Und so sieht die Schleife für Abschläge aus.

{FOR a in abschlaege}

{$a.abgrund}: {fnum($a.abbetrag)} €

{END-FOR a}

Dadurch erscheinen diese Informationen nur dann auf der Rechnung, wenn sie tatsächlich vorhanden sind.

Eigene Logik mit JavaScript im Template

Innerhalb der Rechnungsvorlagen kann klassisches Javascript benutzt werden, um komplexere oder speziellere Anforderungen zu erfüllen. Da leider die geschweiften Klammern der Standardeinstellungen mit den geschweiften Klammern im Javascript-Kollidieren, ist daher zu empfehlen, dass zuerst die Markierungszeichen für die Platzhalter in RechnungFertig umgestellt werden. Das geht in den Einstellungen

Danach können zum Beispiel Javascript-Funktionen definiert werden:

+++! days = (a,b) =>{
const p=s=>{let[d,m,y]=s.split('.');return new Date(y,m-1,d, 0, 0, 0)};
return Math.ceil((p(b)-p(a))/86400000)
} ;---

Tage bis Fälligkeit: +++days(bt2,bt9)---

In der gerenderten Rechnung wird der Javascript-Code nicht angezeigt, aber die Funktionen können genutzt werden, um, wie oben gezeigt, die Differenz in Tagen zwischen zwei Datumsangaben zu berechnen. Im gerenderten Template erscheint dann zum Beispiel:

Tage bis Fälligkeit: 30

Dieses Code-Beispiel zeigt auch, dass das Datum in bt2 und bt9 bereits als gerenderter String in den Rechnungsvorlagen vorliegt in der Form D.M.YYYY und deshalb im Template erneut geparst und in ein Date-Objekt umgewandelt werden muss. Das liegt daran, dass ohne die Vorumwandlung des Datums-Objekt vor dem Rendervorgang weniger technisch versierte Nutzer sich standardmässig um die Konvertierung des Datums in ein String-Objekt kümmern müssten.

Categories:

7 Kommentare zu „Rechnungsvorlagen in Word erstellen“

  1. Avatar von Verena
    Verena

    In der Rechnung erscheint auch dann das Wort „Abschläge:“ und auch die Zeile in der unteren Berechnung für die Abschläge,. wenn gar keine benannt wurden. Kann man das ausblenden, wenn nicht mit Abschlägen gearbeitet wurde?

    1. Avatar von Martin

      Dazu kann man die Word-Vorlage so anpassen, dass das Wort „Abschläge:“ nur angezeigt wird, wenn Einträge vorhanden sind. Ersetzen Sie dazu das Wort „Abschläge:“ durch folgende Zeile

      {IF abschlaege.length > 0}Abschläge:{END-IF}

      Ich werde das im Word-Template für die nächste Version von RechnungFertig anpassen.

      Die händische Alternative für Nutzer, die nicht so gerne mit Programmcode umgehen wollen, ist, sich einfach eine weitere Word-Vorlage zu bauen, in der die Abschläge gar nicht erst aufgeführt werden und diese dann eben händisch auszuwählen, wenn man keine Abschläge hat.

  2. Avatar von Andreas Lohner
    Andreas Lohner

    Hallo Herr Pyka,
    ich möchte in RechnungFertig das Feld BT-83 (Verwendungszweck/Zahlungsreferenz) automatisch mit der aktuellen Rechnungsnummer befüllen.
    Ist es möglich, im Feld BT-83 den Platzhalter {rnr} zu verwenden, sodass dieser bei der Erstellung der ZUGFeRD-XML automatisch durch die Rechnungsnummer ersetzt wird?
    Vielen Dank und freundliche Grüße
    Andreas Lohner

  3. Avatar von Martin

    Das Feld BT-83 ist zur Zeit nicht in RechnungFertig integriert. Ich hab es aber ins Backlog aufgenommen und werde überlegen, wie sich in diesem Feld individuelle Einstellungen am bestem kombinieren lassen mit Automatismen, wie der Integration der Rechnungsnummer. Sie können aber mit der nächsten Version einen QR-Code (GiroCode) in die Rechnung integrieren, der als Verwendungszweck die Rechnungsnummer beinhaltet. Eine Testversion hierzu kann man sich bereits hier herunterladen (https://rechnungfertig.de/changelog/ unter 1.9.0)

    1. Avatar von Andreas Lohner
      Andreas Lohner

      Ah, ok. Vielen Dank
      Wenn im Giro Code der Verwendungszweck bereits vorbefüllt ist mit der Rechnungsnummer, wäre es doch eigentlich konsequent, im XML Code dasselbe zu tun.
      Als Zwischenlösung bevor das Feld bt-83 durch den User definiert werden kann.

      1. Avatar von Pyka

        Ich muss es prüfen. Die ZUGFeRD-Spec macht ein paar Angaben zu den erlaubten Zeichen für BT-83, was mit der Flexibilität bei der Rechnungsnummer nicht kollidieren darf. Außerdem hängen manchmal an solchen Feldern weitere Business Rules oder Abhängigkeiten. Außerdem will ich nichts einfach so „hinter dem Rücken“ der User einbauen. Aber wie gesagt, ich prüfe es ausführlicher und werde es in eine der nächsten Versionen integrieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert