E-Rechnungen mit ZUGFeRD
Die Rechnung mit Leistungsliste (ab Vertec 6.3.0.12), die Rechnung mit Bearbeitersummen und die Rechnung mit Phasensummen (ab Vertec 6.8.0.12) enthalten eine ZUGFeRD Implementation, welche Metadaten nach ZUGFeRD-Standard im PDF einbettet. Somit ist jede Rechnung, die auf einer dieser Vorlagen basiert und als PDF generiert wird, automatisch auch eine E-Rechnung.
Für spezifischere Anwendungen, falls Sie Anforderungen auf Empfängerseite erfüllen müssen, können Sie die Zusatzfunktion E-Rechnungsvorlagen verwenden, womit Sie E-Rechnungen (ZUGfERD- und XRechnungen) detailliert definieren und inhaltliche Kriterien auch pro Rechnungsempfänger hinterlegen können.
Die ZUGFeRD Implementation in den mitgelieferten Rechnungsvorlagen verwendet das Profil EN 16931 und folgende Kriterien:
Rechnungssteller |
Als Rechnungssteller wird die
|
Rechnungsempfänger |
Als Rechnungsempfänger wird die Rechnungsadresse (InvoiceAddress) der Rechnung verwendet. |
Rechnungstyp |
Als Rechnungstyp wird fix 380 (Handelsrechnung) verwendet. |
Adressen |
Die Adressen (Rechnungssteller und Rechnungsempfänger) müssen folgende Angaben enthalten:
Falls das Land des Rechnungsempfängers leer ist, wird das Land des Rechnungsstellers auch für den Rechnungsempfänger verwendet, da wir dann davon ausgehen, dass sich der Rechnungsempfänger im Inland befindet. |
Währungen |
Es kann pro Rechnung immer nur eine Währung verwendet werden. Auf der Währung sollte die Rundung auf 0.01 eingestellt sein, sonst kann es zu Rundungsfehlern kommen, welche von ZUGFeRD abgelehnt werden. |
Leistungen
|
Leistungen, Spesen und Auslagen werden summiert und als jeweils einzelner Artikel übergeben. Rabatte werden dabei einfach von den Leistungen abgezogen. |
Vorschüsse |
Vorschüsse werden als Artikel wie Leistungen, Spesen und Auslagen übergeben. |
MwSt |
Bei den verwendeten MwSt-Typen muss die passende Steuerkategorie nach UNCL5305 angegeben werden. |
Sind diese Anforderungen erfüllt, 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 die Methode
metadata_zugferd(context)
Diese gibt ein Tuple zurück bestehend aus :
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.
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")
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.