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.
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
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.
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.
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
.