Als Unternehmen, das inzwischen intensiv mit ERPNext arbeitet, suchen wir ständig nach Möglichkeiten, das System an unsere individuellen Anforderungen und die Anforderungen unserer Kunden anzupassen. Oft besteht der Wunsch, benutzerdefinierte Felder in Dokumenttypen (Standard-Doctypes) hinzuzufügen, sodass die Daten nahtlos in andere Dokumentarten und Druckformate übertragen werden.
Anwendungsbeispiel (Use Case): Sie wollen bei der Anlage von Aufträgen einen individuellen Text eingeben können, zum Beispiel ein Hinweis auf laufende Aktionen oder die Ankündigung von Preisanpassungen etc. Dieser Text soll nach Bearbeitung des Auftrags in die Rechnung übernommen (kopiert) und auf dem Rechnungsformular ausgegeben werden.
Im Folgenden erklären wir Schritt für Schritt, wie wir diese Lösung in unser ERPNext-System integriert haben:
Schritt 1: Hinzufügen eines benutzerdefinierten Feldes zum Kundenauftrag
Mit der Funktion „Formular anpassen“ (Customize Form) können eigene Felder für Dokumenttypen definiert werden. Diese Felder können verschiedene Typen haben, Mussfelder sein etc. Im Layout-Editor können die Elemente relativ frei platziert werden. Für die weitere Verwendung muss ein technischer Name vergeben werden – in unserem Fall lautet dieser custom_additional_text.

Das neue Feld muss sowohl für Kundenaufträge als auch für Ausgangsrechnungen angelegt werden, damit es in beiden Dokumenttypen verwendet werden kann.
Schritt 2: Kopieren/Übernahme in das Rechnungsdokument
Für die Übernahme des Textinhalts in neue Rechnungen verwenden wir ein Clientskript. Dieses binden wir an die Ausgangsrechnung und setzen damit für neue Dokumente den Feldwert für custom_additional_text, den wir aus dem Vorgänger (Auftrag) übernehmen.
frappe.ui.form.on('Sales Invoice', { onload: function (frm) { if (frm.doc.custom_additional_text && frm.is_new) { frm.set_value('custom_additional_text', frm.doc.custom_additional_text); } } });
Schritt 3: Hinzufügen zur Druckausgabe
Zuletzt fügen wir das neue Feld zur Druckausgabe für Rechnungen hinzu. Dies können wir an beliebiger Stelle durch Ausgabe der Variable doc.custom_additional_text erreichen. In unserem Fall soll der Text direkt unter die Tabelle der Rechnungspositionen gedruckt werden. Das Ergebnis sieht so aus:

Diese kleine Anpassung eröffnet viele Möglichkeiten. Egal, ob personalisierte Notizen, Richtlinien-Updates oder spezielle Anweisungen hinzugefügt werden sollen – ein Feld „Zusätzlicher Text“ bietet die Flexibilität, Rechnungen individuell an den jeweiligen Auftrag anzupassen. Natürlich sind auch komplexere Logiken denk- und realisierbar. Zum Beispiel können Texte aus dem Kundenstamm gezogen oder dynamisch generiert werden. Haben Sie daran und an unseren Lösungsideen Interesse? Dann kontaktieren Sie uns gern: info@informatik-dv.com