Support vertec.com

Rechnungen nach ZUGFeRD Standard (XRechnung)

Rechnungen mit ZUGFeRD

Standard

|

Expert

CLOUD ABO

|

ON-PREMISES

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcen & Projektplanung

Business Intelligence

Erstellt: 04.09.2019
Aktualisiert: 15.12.2020 | Angepasst an Version 6.4.0.16

Mit Vertec können ab Version 6.3.0.12 Rechnungen nach ZUGFeRD 2.0  und ab Version 6.4.0.16 Rechnungen nach ZUGFeRD 2.1 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 (siehe nächsten Abschnitt) 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. Für nicht eingebaute Profile kann hier optional ein XML Datenstring übergeben werden, welcher das Schema des zu verwendenden Profils definiert.
    • Ab Vertec 6.4.0.16 kann statt der benutzerdefinierten XMP-Struktur bei schema auch eine Versionsnummer als String angegeben werden. Gültige Werte sind:
      • 2.0.1 (Standardwert)
      • 2.1.1
      Zusammen mit der Angabe des Profils ("profilename") erstellt Vertec das passende XMP-Schema der entsprechenden ZUGFeRD-Version. Fehlt die Versionsangabe, gilt der Standardwert 2.0.1. Relevant ist das nur für eingebaute Profile. Die Übergabe eines benutzerdefinierten XMP-Schemas statt der Versionsangabe ist nach wie vor möglich.

Als eingebaute Profile werden die folgenden ZUGFeRD Profile unterstützt:

  • EXTENDED
  • EN 16931 (COMFORT, XRechnung)
  • 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 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.

Als ZUGFeRD 2.0 (Standard):

    return ("EN 16931", zugferdxml)

Als ZUGFeRD 2.1 (ab Version 6.4.0.16):

    return ("EN 16931", zugferdxml, "2.1.1")

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.

Bitte wählen Sie Ihren Standort