ZUGFeRD Rechnungen validieren
Sie möchten elektronische Rechnungen validieren für ihren Rechnungs Ein- oder Ausgang?
Mit den Saxon Funktionen im MBS FileMaker Plugin können Sie die ZUGFeRD Schema Dateien verwenden um die Struktur zu prüfen.
Sie würden folglich folgende Sachen prüfen:
- Ist die Datei ein PDF Dokument?
- Ist ein XML enthalten?
- Ist es ein gültiges XML?
- Welches Rechnungsprofil liegt vor?
- Passt das XML zur Schemadatei (XSD)?
- Passt die Rechnung zu den Business Regeln?
Es wäre peinlich, wenn ein Empfänger die Rechnung ablehnt, weil etwas im XML Syntax nicht passt. Oder wenn der Steuerprüfer in ein paar Jahren den Vorsteuerabzug verweigert, weil die Rechnung nicht gültig war bzw. die PDF Rechnung kein Mehrstück darstellt zum XML und wir doch zwei verschiedene Rechnungen erzeugt haben.
Die Frage nach dem Rechnungsprofil kam auf, weil unsere Saxon Funktionen zum Prüfen immer die gleiche XSD Datei verwendet hatte. Korrekterweise muss natürlich je nach der Rechnungsprofil die jeweilige Datei rausgesucht werden. Wir laden für EN16931, BASIC oder EXTENDED jeweils die passende Datei mit dem Schema.
Das Rechnungsprofil lesen wir aus dem XML folgendermaßen aus:
MBS("XML.GetPathValue"; ZUGFeRD Validation::Invoice XML; "rsm:CrossIndustryInvoice.rsm:ExchangedDocumentContext.ram:" & "GuidelineSpecifiedDocumentContextParameter.ram:ID"; 3)
Dort bekommen wir mehrere verschiedene Werte für die verschiedenen Profile:
| Profil | Wert |
|---|---|
| Minimum | urn:factur-x.eu:1p0:minimum urn:zugferd.de:2p0:minimum |
| Basic WL | urn:factur-x.eu:1p0:basicwl urn:zugferd.de:2p0:basicwl |
| Basic | urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic urn:cen.eu:en16931:2017#compliant#urn:zugferd.de:2p0:basic |
| EN16931 | urn:cen.eu:en16931:2017 |
| Extended | urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended |
Für elektronische Rechnungen ist Minimum mit nur den grundlegende Rechnungsdaten nicht zulässig. BASIC WL ohne Detailpositionen ist ebenfalls nicht erlaubt. Folglich sollten wir nur BASIC, EN 16931 oder EXTENDED bekommen.
Aus dem ZUGFeRD_2.5.2 Ordner können wir jetzt die passenden Pfade auswählen, z.B. für Extended:
MBS("Path.AddPathComponent"; ZUGFeRD Validation::Folder; "Schema"; "4_Factur-X_1.09.2_EXTENDED"; "Factur-X_1.09.2_EXTENDED.xsd")
und für das XSLT mit den Geschäftsregeln:
MBS("Path.AddPathComponent"; ZUGFeRD Validation::Folder; "Schema"; "4_Factur-X_1.09.2_EXTENDED"; "_XSLT_EXTENDED"; "FACTUR-X_EXTENDED.xslt")Wir haben unser Beispiel Saxon ZUGFeRD Validation.fmp12 für die Pluginversion 16.4 überarbeitet. Damit validieren wir jetzt die jeweilige elektronische Rechnung mit dem jeweilig passendem Schema (XSD Datei) und den Geschäftsregeln (XSLT Datei).
Siehe auch: