ZUGFeRD Converter

ZUGFeRD mit der B2B

Die B2B unterstützt zukünftig eine Konvertierung von INVOIC Idocs nach ZUGFeRD 1.0. Zurzeit ist es nicht standarisiert möglich die für ZUGFeRD benötigten PDF Dateien aus den eingehenden Daten zu generieren, weshalb diese aus einem anderen System geladen werden. Eine andere mögliche Quelle der PDFs wäre eine INVOIC Visualisierung.

Vorraussetzungen

  • B2B
  • ohne Actions mit den IDs 1200, 1300, 1400, 1500
  • PDF Quelle (Implementierungen: IXOS-Archiv)
  • die Quelle muss für die B2B erreichbar sein
  • den ZUGFeRD Content

Einrichtung

Der Content wird als B2B Customizing zip zur Verfügung gestellt, das direkt eingespielt werden kann. Den Content erhalten sie momentan nach Bestellung.

Das Customizing besteht aus drei Actions und einem Service. Die erste, mit der ID 1200 ist Rechnungs-PDF holen, welche aus einem IXOS-Archiv das benötigte PDF zu einer Nachricht holt und dazu den erwähnten Service verwendet. ZUGFeRD Xml-Transformation mit der ID 1300 ist die zweite Action. Diese generiert aus dem gegebenen IDOC ein ZUGFeRD 1.0 XML. Die Dritte Action Rechnungs-PDF includieren schließlich baut die beiden Ergebnisse zusammen und erstellt somit ein valides ZUGFeRD Rechnungs-PDF.

Es wird empfohlen die IDs der drei Actions auf in den Kontext des Systems passende Werte zu setzen.

Die erste Action Rechnungs-PDF holen muss nach dem Hochladen noch für das konkrete System angepasst werden. Konkret handelt es sich um die ActionPropertys B3P_IXOS_SYSTEM_ID, welche auf die ID des IXOS-Archiv gesetzt werden muss und die IXOS_URL, unter welchem angegeben werden muss, wie das IXOS-Archiv zu erreichen ist.

Die unter ID 1500 enthaltene Outbound Mail Pdf Action dient dazu einen passenden Service zum Versand anzusprechen. Dafür muss natürlich noch die auf dem eigenen System gültige Service ID in B3P_ALTERNATIVE_SERVICE_ID angegeben werden. Zusätzlich sollte ein Mailtext in B3P_MAIL_BODY_CONTENT angegen werden. Der passende Ausdruck kann wahrscheinlich aus einer anderen OutboundMailHandler übernommen werden oder muss neu angelegt werden. Der Nachrichtenbetreff, B3P_ALTERNATIVE_SUBJECT_NAME, wird mit einem Ausdruck, wie für ausgehende Edifacts vorbelegt. Dies kann natürlich geändert werden.

Nachdem diese Konfigurationen an den Actions vorgenommen wurden, können sie in der ursprünglichen Reihenfolge in einem entsprechenden Channel verwendet werden. Es sollte ein eigener Channel verwendet werden, der dann in einem Versand endet.

Einrichtung, händische

Um den Content händisch einzurichten, oder um eine Konfiguration zu prüfen, müssen eben die drei folgenden Actions eingerichtet werden. Rechnungs-PDF holen

Eine Action zum Holen des PDFs

Es kann auch etwas Gleichwertiges verwendet werden. Eventuell eine Generierung eines PDFs aus der Rechnung.

org.b2bbp.runtime.actions.internal.SetPropertyAction

Die Konfiguration an der Action ist recht kurz, lediglich der zu verwendende Service und die Quelle für die ID des Dokuments aus dem Archiv sind anzugeben.

Eigenschaft Wert
B3P_USED_SERVICE_ID die ID des zu verwendenden Services
B3P_ARCHIVE_ID die ID des Dokuments im Archiv${template(&(this.FORMAT.attributes.DOCID))}

Zusätzlich braucht es eben den Service, der tatsächlich das PDF aus dem Archiv holt. Im Moment unterstützen wir hier Anbindungen an verschiedene Archive.

Übergreifende Konfiguration für alle entsprechenden Services:

Eigenschaft Wert
B3P_TARGET_PROPERTY LOADED_PDF_BYTES unter dieser Eigenschaft, wird das die geladene Datei im MessageContext platziert. Es wird empfohlen, den Standard beizubehalten

IXOS

com.nextlevel.b2bbp.ixos.IxosFileGetter Die Konfiguration ist noch wesentlich kürzer.

Eigenschaft Wert
B3P_IXOS_SYSTEM_ID die ID des anzusprechenden Systems

Easy

com.nextlevel.b2bbp.easy.api.EasyFileGetter

Hier ist keine zusätzliche Konfiguration nötig.

Transformation

Die tatsächliche Transformation aus dem IDOC in ein ZUGFeRD-XML ZUGFeRD Xml-Transformation org.b2bbp.runtime.actions.managed.TransformerAction

Für eine vollständige Dokumentation siehe die TransformerAction.

Eigenschaft Wert
B3P_CONTENT_PROVIDER NLI
B3P_CONTENT_VERSION 1.0
B3P_CONTENT_TYPE application/xslt+xml
B3P_CONTENT_FORMAT_VERSION 2.6D (bzw. die zu konvertierende INVOIC Version)
B3P_CONTENT_DESTINATION_FORMAT ZUGFeRD
B3P_SOURCE CURRENT_PAYLOAD

Zusammenbauen von XML und PDF

Als drittes verbleibt beides zusammen zu bringen. Dazu wird folgende Action verwendet. ZUGFeRD Xml-Transformation

com.b2bbp.runtime.actions.general.EmbedFileInPdfAction

Eigenschaft Wert Beschreibung
B3P_DATA_SOURCE LOADED_PDF_BYTES oder welche Eigenschaft beim Holen des PDFS als B3P_TARGET_PROPERTY angegeben wurde
INSERTION_TYPE ZUGFeRD ohne werden notwendige Metadaten zum Finden des Xmls in dem PDF nicht geschrieben
EMBEDDED_FILE_NAME ZUGFeRD-invoice.xml dieser Eintrag ist für ZUGFeRD standarisiert
EMBEDDED_FILE_SOURCE (optional) CURRENT_PAYLOAD default; Wenn die zu inkludierende Datei nicht der CURRENT_PAYLOAD ist, kann das hier konfiguriert werden
PDF_DESTINATION (optional) CURRENT_PAYLOAD default; Wohin das bearbeitete PDF in dne MessageContext geschrieben werden soll
PDF_DEBUG_PATH (debug, nicht produktiv) diese Eigenschaft ist nicht für den Produktivbetrieb gedacht.
PDF_DEBUG_PATH
kann auf einen Dateipfad gesetzt werden, von welchem dann ein PDF geladen wird, welches anstatt des PDFs im MessageContext zum befüllen verwendet wird. Die Eigenschaft überschreibt, wenn gesetzt, immer B3P_DATA_SOURCE. Falls unter dem Pfad keine Datei liegt, wird dennoch versucht, aus dem MessageContext zu laden. Die Eigenschaft ist lediglich dazu gedacht, den Workflow zu testen, wenn das holen/generieren der PDFs noch nicht funktioniert.

Versenden

Nachdem jetzt ein korrektes ZUGFeRD-PDF in unserem MesageContext liegt, kann dieses jetzt versendet werden. Dafür benötigen wir eine Action um einen Ausgangsservice anzusprechen. ZUGFeRD Versand

org.b2bbp.runtime.actions.internal.OutboundMailHandler

Eigenschaft Wert
B3P_IS_BINARY_MESSAGE true (wir versenden ein PDF)
B3P_ALTERNATIVE_ATTACHMENT_NAME ZUGFeRD.pdf (Der Name des Anhangs, anpassbar)
B3P_ALTERNATIVE_SERVICE_ID die ID des Service zum Versand
B3P_ALTERNATIVE_SUBJECT_NAME Der Mail Betreff
B3P_MAIL_BODY_CONTENT Der Mailtext. Hier werden für gewöhnlich Texte aus Extensions geladen

Fortgeschritten:

Es ist möglich die angegeben Konfiguration in den Standard OutboundMailHandler zu integrieren, wenn man einen dynamischen Ausdruck für B3P_IS_BINARY_MESSAGE verwendet, der dann zwischen dem normalen Versand und dem PDF Versand unterscheidet. B3P_ALTERNATIVE_SERVICE_ID und B3P_ALTERNATIVE_SUBJECT_NAME müssen dann dennoch gesetzt werden, auch wenn sie die selben Werte beinhalten sollen wie B3P_USED_SERVICE_ID und B3P_MAIL_BODY_CONTENT.

View Me   Edit Me