Rechnungen nach ZUGFeRD Standard (XRechnung)

E-Rechnungen mit ZUGFeRD

Produktlinie

Standard

|

Expert

Betriebsart

CLOUD ABO

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 04.09.2019
Aktualisiert: 24.12.2024 | Hinweis auf Zusatzfunktion E-Rechnungsvorlagen ergänzt.

Zusatzfunktion

Mit der Zusatzfunktion E-Rechnungsvorlagen werden notwendige Vorlagen und Scripts implementiert, womit sich E-Rechnungen (ZUGfERD- und XRechnungen) per Knopfdruck erstellen lassen. Alle Informationen dazu finden Sie im entsprechenden Artikel .

E-Rechnung nach ZUGFeRD Standard

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

Dafür gibt es in den 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 gemäss den Anforderungen ihrer Rechnungsempfänger inhaltlich 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