Kundenspezifische Anpassung einer elektronischen Rechnung via Skripting

Es ist in eEvolution möglich über ein Skriptings das XML zu manipulieren, was bei der Erzeugung einer elektronischen Rechnung in den Formaten "ZUGFeRD 1.0"," ZUGFeRD 2.1" und "XRechnung" von eEvolution generiert wird, um so kundenspezifische Anforderungen an die elektronische Rechnung umzusetzen.

Die Umsetzung in dem folgenden Beispiel erfolgt über eine DLL, die in eEvolution eingebunden wird und beinhaltet folgende Beispiele:

Das komplette Beispiel inklusive WTS ist unter dem Namen "ERechnung.EEvo.Extensions.Angauf" im Ordner "eEvolution SDK" im Ausführungsverzeichnis von eEvolution zu finden.

Beispielprojekt für Visual Studio

Wir empfehlen, dass die Anpassungen von elektronischen Rechnungen in einer eigenen DLL vorgenommen werden. Ein Beispielprojekt welches die Einbindung über den Auftrag von eEvolution vornimmt, können Sie im Zip-Archiv „ERechnung.EEvo.Extensions.Angauf.zip“ finden, welches sich im Ausführungsverzeichnis von eEvolution im Ordner „eEvolution SDK“ befindet. Dieses Projekt können Sie wie gewohnt mit Visual Studio öffnen und erstellen.

Bitte beachten Sie:

Denken Sie daran, dass Sie ggf. die Verweispfade in Visual Studio anpassen müssen:

Das Aktivieren der DLL findet über die ebenfalls im Zip-Archiv enthaltene “callout.wts”-Datei im Ordner „ERechnung.EEvo.Extensions.Angauf\WTS“ statt.

 

Mit den folgenden Beispielen werden die beiden Möglichkeiten für die Manipulation der E-Rechnung dargelegt:

Beide Möglichkeiten können genutzt werden, um eine Änderung der Daten vor der Versendung der elektronischen Rechnung in den Formaten "ZUGFeRD 1.0"," ZUGFeRD 2.1" und "XRechnung" vorzunehmen. Im Folgenden werden die beiden Möglichkeiten noch einmal näher an den Code-Beispielen erläutert.

Einstiegspunkt der Anpassung

In der Anpassungs-DLL muss ein Einstiegspunkt angelegt werden, über welchen gesteuert wird , ob das Model oder das XML selbst erweitert werden soll. In dem folgenden Code-Beispiel wird sich einmal an das „ERechnung_Post_CreateModel“-Event gehangen, um dort das Model um die ZUSATZINFO des Kunden zu erweitern und damit die Kopfinformationen einer elektronischen Rechnung zu manipulieren. Darüber hinaus wird sich auch an das „ERechnung_Post_CreateXml“-Event gehangen, um die Rechnungspositionen um die ABEZ5 des Artikels zu erweitern und damit die Positionen in einer elektronischen Rechnung zu manipulieren.

Zeitlich gesehen wird zuerst das Model generiert und anschließend das XML erzeugt, dabei gibt es folgende Manipulationsmöglichkeiten:

Beispiel 1: Anpassung des Models einer elektronischen Rechnung - Ergänzen der KUNDE.ZUSATZINFO

Für den Fall, dass man bestehende Werte im elektronischen Rechnungsmodel ändern möchte, bietet sich diese Möglichkeit der Anpassung an. Um diese Änderungen durchzuführen, sollte man das „ERechnung_Post_CreateModel”-Event mit den folgend dargestellten Eigenschaften nutzen.

In den Argumenten des Callout-Events ist das entsprechende Locals-Objekt vom Typ „DBAnbindung.ScriptingLocals”, in welchem sich das Model-Datenobjekt vom Typ “CrossIndustryDocumentType” befindet und nach eigenem Bedarf abgeändert werden kann.

Der folgende Codeausschnitt zeigt die Möglichkeit, wie die Spalte ZUSATZINFO aus der Tabelle KUNDE in die „BuyerTraderParty“ eingebunden wird:

 

Falls im Model die "ID" des Kunden gesetzt wurde, wird diese mit der KDNR1 in der Tabelle KUNDE auf der DB abgeglichen, die ZUSATZINFO des passenden Datensatzes gesucht und gespeichert. Anschließend wird der Name des Kunden um die ZUSATZINFO ergänzt, so dass nicht mehr nur der Name 1- 4 des Kunden, sondern zusätzlich auch die ZUSATZINFO ausgegeben wird.

Sollte die "ID" nicht vergeben sein, sondern stattdessen die "GlobalID", so wird diese mit der Spalte ILN in der Tabelle KUNDE abgeglichen, die ZUSATZINFO des passenden Datensatzes gesucht und gespeichert. Anschließend wird der Name des Kunden um die ZUSATZINFO ergänzt, so dass nicht mehr nur der Name 1- 4 des Kunden, sondern zusätzlich auch die ZUSATZINFO ausgegeben wird.

 

Beispiel XML mit ZUSATZINFO

Im XML wird die <ram:Name> um die ZUSATZINFO des Kunden ergänzt: 

Beispiel 2: Anpassung des XMLs einer elektronischen Rechnung - Setzen der ARTIKEL.ABEZ5

Für den Fall, dass man das XML einer elektronischen Rechnung ändern möchte, bietet sich diese Möglichkeit der Anpassung an. Um diese Änderungen durchzuführen, sollte man das „ERechnung_Post_CreateXml“-Event mit den folgenden dargestellten Eigenschaften nutzen: 

In den Argumenten des Callout-Events ist das entsprechende Locals Objekt vom Typ „ZugferdDokument.ScriptingLocals”, in welchem sich das XML-Objekt vom Typ “XmlWithVersion” befindet und nach eigenem Bedarf abgeändert werden kann.

 

Der folgende Codeausschnitt zeigt die Möglichkeit, wie die Spalte ABEZ5 aus der Tabelle ARTIKEL in die „IncludedSupplyChainTradeLineItem“ eingebunden wird:

 

Hier werden alle Knoten auf ein XML-Element “IncludedSupplyChainTradeLineItem“ untersucht und für jeden gefundenen Knoten wird dann die „SellerAssignedID“ gesucht, um daraus die ARTNR1 aus der Tabelle ARTIKEL zu bestimmen. Sobald diese gefunden wurde, wird der entsprechende Artikel geladen, seine ABEZ5 gesucht und gespeichert, so dass diese anschließend an den Namen des Artikels im XML gehangen werden kann.

Beispiel XML mit ABEZ5:

Im XML wird die <ram:Name> um die ABEZZ5 des Artikels ergänzt: 

Verwandte Themen

ZUGFeRD - Elektronische Rechnungen in eEvolution

XRechnung - Elektronische Rechnungen in eEvolution