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: 29.01.2025 | Abschnitt "Voraussetzungen" 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.

Voraussetzungen

Folgende Daten müssen in Vertec vorhanden sein, um ZUGFeRD-konforme Rechnungen erstellen zu können:

  1. In den Systemeinstellungen muss die eigene Firma eingetragen sein.
  2. Vom Rechnungssteller muss eine vollständige Adresse sowie eine USt-IdNr. im Format XXYYYYYYYYY (wobei XX dem zweistelligen Ländercode und YYYYYYYYY den folgenden neuen Ziffern entsprechen) vorhanden sein.
  3. Vom Rechnungsempfänger muss eine vollständige Adresse hinterlegt sein (analog zu Punkt 2).
  4. Die Steuerkategorie, bzw. der MwSt-Typ, muss mit einem Code nach UNCL5305 angegeben werden:
  • S = Umsatzsteuer fällt mit Normalsatz an
  • Z = nach dem Nullsatz zu versteuernde Waren
  • E = steuerbefreit
  • AE = Umkehrung der Steuerschuldnerschaft
  • AA = Reduzierter Steuersatz
  • K = kein Ausweis der Umsatzsteuer bei innergemeinschaftlichen Lieferungen
  • G = Steuer nicht erhoben aufgrund von Export ausserhalb der EU
  • O = ausserhalb des Steueranwendungsbereichs

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 Bericht-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 Bericht-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 Bericht-Mechanismus ins PDF integriert wird.

    return ("", zugferdxml, Schema)

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