Rechnungen nach ZUGFeRD 2.0 Standard (X-Rechnung)

Erstellt: 04.09.2019, Änderung:
Mehr ansehen

Mit Vertec können ab Version 6.3.0.12 Rechnungen nach ZUGFeRD 2.0 Standard erstellt werden. Dafür werden im Code des erweiterten Office-Berichts die XML-Metadaten generiert und dem Reporting-Mechanismus übergeben, welcher die Metadaten ins PDF integriert.

Dafür gibt es in den Erweiterten Office-Berichten eine Methode

metadata_zugferd(context)

Diese gibt ein Tuple zurück bestehend aus :

  • profilename : Name des Zugferd Profiles. Hier muss es sich entweder um den Namen eines "eingebauten" Profils handeln oder es muss als 3. Argument eine Schema-Definition zurückgegeben werden. Ansonsten meldet der Bericht beim Ausführen einen Fehler.
  • data : ZUGFeRD XML Daten. Das XML Dokument welches die ZUGFeRD Daten zur Rechnung darstellt.
  • schema: optional XMP Metadatenstruktur. Für nicht eingebaute Profile kann hier optional ein XML Datenstring übergeben werden, welcher das Schema des zu verwendenden Profils definiert.

Als eingebaute Profile werden die aktuellen ZUGFeRD 2.0 Profile unterstützt:

  • EXTENDED
  • EN 16931 (COMFORT, X-Rechnung)
  • BASIC
  • BASIC WL
  • MINIMUM

Der mitgelieferte Standardbericht Rechnung mit Leistungsliste enthält einen entsprechenden Beispielcode für das Profil EN 16931. Kunden, die ihre Rechnungen nach ZUGFeRD 2.0 Standard oder als X-Rechnungen verwenden wollen, müssen diesen Code entsprechend anpassen.

Implementation mit eingebautem Schema

def metadata_zugferd(context):

Zuerst wird das Template erstellt. Das XML wird mit der in Vertec eingebauten Template Engine in Python erstellt. Im XML können damit Variablen verwendet werden, welche die Zahlen aus Vertec enthalten. Mit der Methode vtcapp.rendertemplate() wird das XML dann erstellt.

    zugferd_template = u"""<?xml version="1.0" encoding="UTF-8"?>
    <rsm:CrossIndustryInvoice xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"..>
        <rsm:ExchangedDocumentContext>
            <ram:GuidelineSpecifiedDocumentContextParameter>
                <ram:ID>urn:cen.eu:en16931:2017</ram:ID>
            </ram:GuidelineSpecifiedDocumentContextParameter>

        ..."""
    rechnung = context.rootlist[0]

    # Render the transferred template for ZUFGeRD
    zugferdxml = vtcapp.rendertemplate(zugferd_template, rechnung=rechnung)

Die Methode gibt das Schema sowie das fertige XML zurück, welches vom Reporting Mechanismus ins PDF integriert wird.

    return ("EN 16931", zugferdxml)

Implementation mit nicht eingebautem Schema

def metadata_zugferd(context):

Zuerst wird das Template erstellt. Das XML wird mit der in Vertec eingebauten Template Engine in Python erstellt. Im XML können damit Variablen verwendet werden, welche die Zahlen aus Vertec enthalten. Mit der Methode vtcapp.rendertemplate() wird das XML dann erstellt.

    zugferd_template = u"""<?xml version="1.0" encoding="UTF-8"?>
    <rsm:CrossIndustryInvoice xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"..>
        <rsm:ExchangedDocumentContext>
            <ram:GuidelineSpecifiedDocumentContextParameter>
                <ram:ID>urn:cen.eu:en16931:2017</ram:ID>
            </ram:GuidelineSpecifiedDocumentContextParameter>

        ..."""
    rechnung = context.rootlist[0]

    # Render the transferred template for ZUFGeRD
    zugferdxml = vtcapp.rendertemplate(zugferd_template, rechnung=rechnung)

Ausserdem wird das Schema als XML übergeben:

    schema = u"""<?xpacket begin="?" id="W5M0MpCehiHzreSzNTczkc9d"?>
    <x:xmpmeta xmlns:x="adobe:ns:meta/">
      <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <rdf:Description xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/" rdf:about="">
    ..."""

Die Methode gibt das fertige XML sowie das Schema zurück, welches vom Reporting Mechanismus ins PDF integriert wird.

    return ("", zugferdxml, Schema)

Weitere Informationen zu ZUGFeRD finden Sie auf der offiziellen FeRD-Website.