Update: Mit dem Release des Service Packs 25.002 unterstützt List & Label nun auch die ZUGFeRD Version 2.1, analog zu Version 2.0.
Mit Hilfe des ZUGFeRD Standards kann der elektronische Rechnungsaustausch zwischen Verbrauchern, öffentlichen Verwaltungen und Unternehmen stark vereinfacht werden, da die Rechnungsdaten in hybrider Form zur Verfügung gestellt werden. Zum einen werden die Rechnungsdaten als unveränderliches PDF-Dokument mit dem PDF/A-3 Standard als visuelle Komponente bereitgestellt, zum anderen als strukturierte XML-Datei mit den XML-Rechnungsdaten für die technische Weiterverarbeitung.
Die Spezifikation für ZUGFeRD 2.0 wurde für Deutschland im März 2019 offiziell freigegeben und lehnt sich an den französischen Standard Factur-X 1.0 an, sodass beide Implementierungen technisch identisch sind und für einen einheitlichen Standard im Rechnungsaustausch auf europäischer Ebene sorgen.
Im Vergleich zum Standard ZUGFeRD 1.0 gibt es jedoch einen entscheidenden Unterschied in Bezug auf die Lizenzierung. Denn das Komitee hat sich dazu entschieden, den neuen Standard unter die Apache 2.0 Lizenzierung zu stellen, was sich mit dem bisher vereinfachten Deployment von List & Label nicht vereinbaren ließ.
Deshalb haben wir die ZUGFeRD 2.0 Unterstützung in ein anderes Modul ausgelagert. Damit muss bei der Redistribution einer Anwendung mit List & Label die Apache 2.0 Lizenz nicht weitergegeben werden, wenn gar kein ZUGFeRD 2.0 zum Einsatz kommt. Dieses Modul steht sowohl als 32- sowie als 64-Bit Build zur Verfügung.
Die neuen Module c[m/x]LL25xl_zugferd2.dll befinden sich im Verzeichnis „..\Verschiedenes\Optionale Module unter OSI-Lizenzen\ZUGFeRD\“. Dort finden Sie auch die Apache 2.0 Lizenzierung in Form der Datei „license.txt“.
Sie müssen lediglich diese beiden Module (abhängig von der Bitness der Anwendung) zum Deployment-Paket von List & Label hinzufügen – was übrigens auch ganz einfach mit dem Redistributionsassistenten gemacht werden kann. Natürlich sollten Sie die Apache 2.0 Lizenz vor der Weitergabe aufmerksam lesen.
Was nach wie vor von der Anwendung selbst bereitgestellt werden muss, sind die Rohdaten der Rechnung im XML-Format für die Integration in das PDF-Dokument. So könnte nun ein PDF-Export mit ZUGFeRD 2.0 aussehen:
// create export configuration ExportConfiguration exportConfiguration = new ExportConfiguration(LlExportTarget.Pdf, "Export.pdf", "invoice.lst"); // define ZUGFeRD 2.0 options LL.ExportOptions.Add(LlExportOption.PdfZUGFeRDVersion, "2.0"); LL.ExportOptions.Add(LlExportOption.PdfZUGFeRDConformanceLevel, "EXTENDED"); LL.ExportOptions.Add(LlExportOption.PdfZUGFeRDXmlPath, "ZUGFeRD-invoice.xml"); // start export LL.Export(exportConfiguration);
Neu ist hierbei die Export-Option LlExportOption.PdfZUGFeRDVersion, mit der man gezielt die ZUGFeRD Version bestimmen kann. Denn nach wie vor kann List & Label auch die Spezifikation 1.0 erfüllen und ist damit vollständig abwärtskompatibel. Ein kleiner Auszug aus der Dokumentation dazu:
Wert | Bedeutung |
0 | In der angegebenen Datei ‚zugferd-invoice.xml‘ (siehe auch PDF.ZUGFeRDXmlPath) wird geprüft, ob es sich um ein ZUGFeRD 1.0 oder 2.0 Format handelt. Das entsprechende Format wird dann verwendet. Sollte das Format nicht ausgelesen werden können, weil beispielsweise zu diesem Zeitpunkt die Datei ‚zugferd-invoice.xml‘ noch nicht existiert, wird fest von ZUGFeRD 2.0 ausgegangen. |
2.0 | Es wird ZUGFeRD in der Version 2.0 forciert. |
1.0 | Es wird ZUGFeRD in der Version 1.0 forciert. |
Default | 0 |
Erfahren Sie mehr über die vielen neuen Highlights von List & Label 25.
Daniel wurde bei combit zum Softwareentwickler ausgebildet und leitet als Manager den Customer Support. Neben der Softwareentwicklung betreut er auch technische Kooperationen mit Geschäftspartnern, hält Workshops für Entwickler und unterstützt das Sales- und Service-Team als Berater im technischen Bereich. In seiner Freizeit findet man ihn auf seinem Mountainbike oder Rennrad rund um den Bodensee und in den nahen Alpen. Er nimmt sich auch Zeit für chinesische Kampfkünste wie Wushu Kungfu und Taichi.
Hallo,
habt ihr ein Beispiel für eure Demo, wo man sich die Erstellung eines XMLs und dem PDF/A mal anschauen kann?
Gruß,
LV
Hallo Herr Vietense,
vielen Dank für Ihre Anmerkung.
Als Beispiel können wir nur das .NET Code-Snippet aus diesem Beitrag nennen, mit dem man es schnell und einfach bspw. im C# Export Sample einbauen und testen kann. Der Grund dafür ist, dass combit List & Label die angesprochene ZUGFeRD XML-Datei _nicht_ bereitstellt oder zur Verfügung stellt. Das ist ein Task, den der Entwickler immer selbst durchführen muss. List & Label verwendet dann die XML-Datei und bindet Sie gemäß ZUGFeRDConformanceLevel und ZUGFeRDVersion korrekt in das zu erstellende PDF-Dokument ein.
Sollten Sie das Code-Snippet in einer anderen Programmiersprache benötigen, so lassen Sie es uns bitte wissen.
Viel Erfolg und beste Grüße,
Daniel Stein
Hallo Herr Stein.
Ich bin gerade dabei die ZugFeRD in der Version 2.1 zu erstellen.
Bei LlExportOption.PdfZUGFeRDVersion muss man die ZugFeRD Version übergeben. Nun meine Frage:
Bisher habe ich keine Position gefunden, wo man die ZugFeRD-Version in der XML-Datei definiert bzw. abfragen kann. Ergibt sich die Versions-Nr. rein aus dem Inhalt der XML-Datei, oder wo steht die Versions-Nr.?
MFG, Alfred Janssen
Guten Tag Herr Janssen,
vielen Dank für Ihren Beitrag. Gerne können Sie Fragestellungen auch in unserem gut besuchten Reporting Forum (https://forum.combit.net/).
Die verwendete Version ZUGFeRD/Factur-x oder XRechnung ergibt sich immer in der XML-Datei und unterschiedet sich da auch immer von der verwendete Version des Standards und/oder der Konformität und ist nicht pauschal 1:1 mit der Version der Export-Option LlExportOption.PdfZUGFeRDVersion kompatibel.
Für ZUGFeRD-Version „2.1“ wird im XML bspw. „factur-x:1p0“ (ZUGFeRD und Factur-x wurden vor einigen Jahren auf EU-Ebene zusammengeführt) definiert in dem auch die Konformität enthalten ist – hier nun „Extended“:
urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended
Hier nun die Version „2.1“ und „Basic“:
urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic
Und wenn man dann den Kosit-Standard für „XRechnung“ verwenden möchte sähe es in der XML-Datei so aus:
urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_1.2
Kurz: Dafür müsste man sich entsprechend an den passenden Standard wenden. Bei deren Downloads sind aber auch immer meist Beispiel-XML Dokumente enthalten an denen man sich sehr gut orientieren kann. Weiterführend externe Links dazu:
* https://www.ferd-net.de/
* https://www.e-rechnung-bund.de/faq/xrechnung/
* https://xeinkauf.de/dokumente/
Aktuell (Stand 09/2024) unterstützen wir ZUGFeRD bis in die Version 2.1 und dabei aber lediglich den CII-Standard für die XML-Struktur – nicht aber den auch vorhanden UBL-Standard.
ZUGFeRD, Factur-X und XRechnung – Elektronische Rechnungsformate in List & Label
https://forum.combit.net/t/zugferd-factur-x-und-xrechnung-elektronische-rechnungsformate-in-list-label/7248
Viel Erfolg und beste Grüße,
Daniel Stein
Hallo.
Vielen Dank für die Antwort, jetzt komme ich weiter.
MFG, Alfred Janssen