From 43d979436ae68549328435a67c960c02653299ca Mon Sep 17 00:00:00 2001 From: jstaerk Date: Sun, 21 Apr 2024 15:26:27 +0200 Subject: [PATCH] upgraded ph-schematron --- History.md | 1 + validator/pom.xml | 13 +- .../validator/XMLValidator.java | 9 +- .../xslt/XR_12/XRechnung-UBL-validation.xslt | 579 +++++++++ .../xslt/XR_20/XRechnung-UBL-validation.xslt | 721 +++++++++++ .../xslt/XR_21/XRechnung-UBL-validation.xslt | 779 ++++++++++++ .../XR_21/cii/XRechnung-CII-validation.xslt | 685 ---------- .../xslt/XR_22/XRechnung-UBL-validation.xslt | 941 ++++++++++++++ .../xslt/XR_23/XRechnung-UBL-validation.xslt | 1119 +++++++++++++++++ 9 files changed, 4159 insertions(+), 688 deletions(-) create mode 100644 validator/src/main/resources/xslt/XR_12/XRechnung-UBL-validation.xslt create mode 100644 validator/src/main/resources/xslt/XR_20/XRechnung-UBL-validation.xslt create mode 100644 validator/src/main/resources/xslt/XR_21/XRechnung-UBL-validation.xslt delete mode 100644 validator/src/main/resources/xslt/XR_21/cii/XRechnung-CII-validation.xslt create mode 100644 validator/src/main/resources/xslt/XR_22/XRechnung-UBL-validation.xslt create mode 100644 validator/src/main/resources/xslt/XR_23/XRechnung-UBL-validation.xslt diff --git a/History.md b/History.md index 70f67542..def2bf62 100644 --- a/History.md +++ b/History.md @@ -6,6 +6,7 @@ - zugferdimporter to accept xml files - UBL importer to also parse contacts - https://github.com/ZUGFeRD/mustangproject/pull/369 +- upgrade ph-scematron from 6.3.3 to 8 2.10.0 ======= diff --git a/validator/pom.xml b/validator/pom.xml index 2faed8be..1ff7e227 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -53,6 +53,17 @@ 2.1.3 + + com.helger.commons + ph-commons + 11.1.6 + + + jakarta.xml.bind + jakarta.xml.bind-api + 4.0.1 + + ch.qos.logback logback-classic @@ -88,7 +99,7 @@ com.helger.schematron ph-schematron-xslt - 6.3.3 + 8.0.0 com.helger diff --git a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java index efcbbb13..beb2a805 100644 --- a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java @@ -273,15 +273,20 @@ public class XMLValidator extends Validator { LOGGER.debug("UBL"); validateSchema(zfXML.getBytes(StandardCharsets.UTF_8), "UBL_21/maindoc/UBL-Invoice-2.1.xsd", 18, EPart.fx); xsltFilename = "/xslt/UBL_21/EN16931-UBL-validation.xsl"; + validateSchematron(zfXML, xsltFilename, 24, ESeverity.error); if (isXRechnung) { - LOGGER.debug("is XRechnung"); /* the validation against the XRechnung Schematron will happen below but a XRechnung is a EN16931 subset so the validation vis a vis FACTUR-X_EN16931.xslt=schematron also has to pass * */ //validateSchema(zfXML.getBytes(StandardCharsets.UTF_8), "ZF_211/EN16931/FACTUR-X_EN16931.xsd", 18, EPart.fx); - xsltFilename = "/xslt/XR_30/XRechnung-UBL-validation.xslt"; + String xrVersion=context.getProfile().substring(context.getProfile().length()-3).replace(".",""); + if (!xrVersion.equals("12")&&!xrVersion.equals("20")&&!xrVersion.equals("21")&&!xrVersion.equals("22")&&!xrVersion.equals("23")&&!xrVersion.equals("30")) { + throw new Exception("Unsupported XR version"); + } + LOGGER.debug("is XRechnung v"+xrVersion); + xsltFilename = "/xslt/XR_"+xrVersion+"/XRechnung-UBL-validation.xslt"; XrechnungSeverity = ESeverity.error; } diff --git a/validator/src/main/resources/xslt/XR_12/XRechnung-UBL-validation.xslt b/validator/src/main/resources/xslt/XR_12/XRechnung-UBL-validation.xslt new file mode 100644 index 00000000..eb9cec76 --- /dev/null +++ b/validator/src/main/resources/xslt/XR_12/XRechnung-UBL-validation.xslt @@ -0,0 +1,579 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + *: + + [namespace-uri()=' + + '] + + + + [ + + ] + + + + / + + @ + + + @*[local-name()=' + + ' and namespace-uri()=' + + '] + + + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + U + + U + + + + U. + + n + + + + U. + + _ + + _ + + + + + + + + + +   +   +   + + + + + + + + + + + + model-pattern + model-pattern + + + + + + + + Schematron Version 1.3.0 - XRechnung 1.2.2 compatible - UBL - Invoice + + + + + + + + + + + + + BR-DE-1 + fatal + + + + [BR-DE-1] Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten. + + + + + + + + + + BR-DE-13 + fatal + + + + [BR-DE-13] In der Rechnung müssen Angaben zu genau einer der drei Gruppen "CREDIT TRANSFER" (BG-17), "PAYMENT CARD INFORMATION" (BG-18) oder "DIRECT DEBIT" (BG-19) übermittelt werden. + + + + + + + + + + BR-DE-15 + fatal + + + + [BR-DE-15] Das Element "Buyer reference" (BT-10) muss übermittelt werden. + + + + + + + + + + BR-DE-16 + fatal + + + + [BR-DE-16] In der Rechnung muss mindestens eines der Elemente "Seller VAT identifier" (BT-31), "Seller tax registration identifier" (BT-32) oder "SELLER TAX REPRESENTATIVE PARTY" (BG-11) übermittelt werden. + + + + + + + + + + BR-DE-17 + warning + + + + [BR-DE-17] Mit dem Element Invoice type code (BT-3) sollen ausschließlich folgende Codes aus der Codeliste UNTDID 1001 übermittelt werden: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice) und 381 (Credit note),875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice). + + + + + + + + + + BR-DE-18 + fatal + + + + [BR-DE-18] Die Informationen zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen wie folgt im Element "Payment terms" (BT-20) übermittelt werden: Anzugeben ist im ersten Segment "SKONTO" oder "VERZUG", im zweiten "TAGE=n", im dritten "PROZENT=n". Prozentzahlen sind ohne Vorzeichen sowie mit Punkt getrennt von zwei Nachkommastellen anzugeben. Liegt dem zu berechnenden Betrag nicht BT-115, "fälliger Betrag" zugrunde, sondern nur ein Teil des fälligen Betrags der Rechnung, ist der Grundwert zur Berechnung von Skonto oder Verzugszins als viertes Segment "BASISBETRAG=n" gemäß dem semantischen Datentypen Amount anzugeben. Jeder Eintrag beginnt mit einer #, die Segmente sind mit einer # getrennt und eine Zeile schließt mit einer # ab. Am Ende einer vollständigen Skonto oder Verzugsangabe muss ein XML-konformer Zeilenumbruch folgen. Alle Angaben zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen in Großbuchstaben gemacht werden. Zusätzliches Whitespace (Leerzeichen, Tabulatoren oder Zeilenumbrüche) ist nicht zulässig. Andere Zeichen oder Texte als in den oberen Vorgaben genannt sind nicht zulässig. + + + + + + + + + + BR-DE-21 + warning + + + + [BR-DE-21] Das Element "Specification identifier" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen. + + + + + + + + + + + + + + + BR-DE-2 + fatal + + + + [BR-DE-2] Die Gruppe "SELLER CONTACT" (BG-6) muss übermittelt werden. + + + + + + + + + + + + + + + BR-DE-3 + fatal + + + + [BR-DE-3] Das Element "Seller city" (BT-37) muss übermittelt werden. + + + + + + + + + + BR-DE-4 + fatal + + + + [BR-DE-4] Das Element "Seller post code" (BT-38) muss übermittelt werden. + + + + + + + + + + + + + + + BR-DE-5 + fatal + + + + [BR-DE-5] Das Element "Seller contact point" (BT-41) muss übermittelt werden. + + + + + + + + + + BR-DE-6 + fatal + + + + [BR-DE-6] Das Element "Seller contact telephone number" (BT-42) muss übermittelt werden. + + + + + + + + + + BR-DE-7 + fatal + + + + [BR-DE-7] Das Element "Seller contact email address" (BT-43) muss übermittelt werden. + + + + + + + + + + + + + + + BR-DE-8 + fatal + + + + [BR-DE-8] Das Element "Buyer city" (BT-52) muss übermittelt werden. + + + + + + + + + + BR-DE-9 + fatal + + + + [BR-DE-9] Das Element "Buyer post code" (BT-53) muss übermittelt werden. + + + + + + + + + + + + + + + BR-DE-10 + fatal + + + + [BR-DE-10] Das Element "Deliver to city" (BT-77) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. + + + + + + + + + + BR-DE-11 + fatal + + + + [BR-DE-11] Das Element "Deliver to post code" (BT-78) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. + + + + + + + + + + + + + + + BR-DE-19 + warning + + + + [BR-DE-19] "Payment account identifier" (BT-84) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 58 SEPA als Zahlungsmittel gefordert wird. + + + + + + + + + + BR-DE-20 + warning + + + + [BR-DE-20] "Debited account identifier" (BT-91) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 59 SEPA als Zahlungsmittel gefordert wird. + + + + + + + + + + + + + + + BR-DE-14 + fatal + + + + [BR-DE-14] Das Element "VAT category rate" (BT-119) muss übermittelt werden. + + + + + + + + + + diff --git a/validator/src/main/resources/xslt/XR_20/XRechnung-UBL-validation.xslt b/validator/src/main/resources/xslt/XR_20/XRechnung-UBL-validation.xslt new file mode 100644 index 00000000..725088d1 --- /dev/null +++ b/validator/src/main/resources/xslt/XR_20/XRechnung-UBL-validation.xslt @@ -0,0 +1,721 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + *: + + [namespace-uri()=' + + '] + + + + [ + + ] + + + + / + + @ + + + @*[local-name()=' + + ' and namespace-uri()=' + + '] + + + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + U + + U + + + + U. + + n + + + + U. + + _ + + _ + + + + + + + + + xrechnung-model + +   +   +   + + + + + + + + + + + + variable-pattern + variable-pattern + + + + + + + + model-pattern + model-pattern + + + + + + + + ubl-extension-pattern + ubl-extension-pattern + + + + + + + + Schematron Version 1.5.0 - XRechnung 2.0.1 compatible - UBL - Invoice + + + + + + + + + + + + + + + + + + + + + BR-DE-1 + fatal + + + + [BR-DE-1] Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten. + + + + + + + + + + BR-DE-13 + fatal + + + + [BR-DE-13] In der Rechnung müssen Angaben zu genau einer der drei Gruppen "CREDIT TRANSFER" (BG-17), "PAYMENT CARD INFORMATION" (BG-18) oder "DIRECT DEBIT" (BG-19) übermittelt werden. + + + + + + + + + + BR-DE-15 + fatal + + + + [BR-DE-15] Das Element "Buyer reference" (BT-10) muss übermittelt werden. + + + + + + + + + + BR-DE-16 + fatal + + + + [BR-DE-16] In der Rechnung muss mindestens eines der Elemente "Seller VAT identifier" (BT-31), "Seller tax registration identifier" (BT-32) oder "SELLER TAX REPRESENTATIVE PARTY" (BG-11) übermittelt werden. + + + + + + + + + + BR-DE-17 + warning + + + + [BR-DE-17] Mit dem Element Invoice type code (BT-3) sollen ausschließlich folgende Codes aus der Codeliste UNTDID 1001 übermittelt werden: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice) und 381 (Credit note),875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice). + + + + + + + + + + BR-DE-18 + fatal + + + + [BR-DE-18] Skonto/Verzug Zeilen in + + muessen diesem regulaerem Ausdruck entsprechen: + + . Die Informationen zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen wie folgt im Element "Payment terms" (BT-20) übermittelt werden: Anzugeben ist im ersten Segment "SKONTO" oder "VERZUG", im zweiten "TAGE=n", im dritten "PROZENT=n". Prozentzahlen sind ohne Vorzeichen sowie mit Punkt getrennt von zwei Nachkommastellen anzugeben. Liegt dem zu berechnenden Betrag nicht BT-115, "fälliger Betrag" zugrunde, sondern nur ein Teil des fälligen Betrags der Rechnung, ist der Grundwert zur Berechnung von Skonto oder Verzugszins als viertes Segment "BASISBETRAG=n" gemäß dem semantischen Datentypen Amount anzugeben. Jeder Eintrag beginnt mit einer #, die Segmente sind mit einer # getrennt und eine Zeile schließt mit einer # ab. Am Ende einer vollständigen Skonto oder Verzugsangabe muss ein XML-konformer Zeilenumbruch folgen. Alle Angaben zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen in Großbuchstaben gemacht werden. Zusätzliches Whitespace (Leerzeichen, Tabulatoren oder Zeilenumbrüche) ist nicht zulässig. Andere Zeichen oder Texte als in den oberen Vorgaben genannt sind nicht zulässig. + + + + + + + + + + BR-DE-21 + fatal + + + + [BR-DE-21] Das Element "Specification identifier" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen. + + + + + + + + + + BR-DE-22 + fatal + + + + [BR-DE-22] Not all filename attributes of the embeddedDocumentBinaryObject elements are unique + + + + + + + + + + + + + + + + + BR-DE-2 + fatal + + + + [BR-DE-2] Die Gruppe "SELLER CONTACT" (BG-6) muss übermittelt werden. + + + + + + + + + + + + + + + + BR-DE-3 + fatal + + + + [BR-DE-3] Das Element "Seller city" (BT-37) muss übermittelt werden. + + + + + + + + + + BR-DE-4 + fatal + + + + [BR-DE-4] Das Element "Seller post code" (BT-38) muss übermittelt werden. + + + + + + + + + + + + + + + + BR-DE-5 + fatal + + + + [BR-DE-5] Das Element "Seller contact point" (BT-41) muss übermittelt werden. + + + + + + + + + + BR-DE-6 + fatal + + + + [BR-DE-6] Das Element "Seller contact telephone number" (BT-42) muss übermittelt werden. + + + + + + + + + + BR-DE-7 + fatal + + + + [BR-DE-7] Das Element "Seller contact email address" (BT-43) muss übermittelt werden. + + + + + + + + + + + + + + + + BR-DE-8 + fatal + + + + [BR-DE-8] Das Element "Buyer city" (BT-52) muss übermittelt werden. + + + + + + + + + + BR-DE-9 + fatal + + + + [BR-DE-9] Das Element "Buyer post code" (BT-53) muss übermittelt werden. + + + + + + + + + + + + + + + + BR-DE-10 + fatal + + + + [BR-DE-10] Das Element "Deliver to city" (BT-77) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. + + + + + + + + + + BR-DE-11 + fatal + + + + [BR-DE-11] Das Element "Deliver to post code" (BT-78) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. + + + + + + + + + + + + + + + + BR-DE-19 + warning + + + + [BR-DE-19] "Payment account identifier" (BT-84) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 58 SEPA als Zahlungsmittel gefordert wird. + + + + + + + + + + BR-DE-20 + warning + + + + [BR-DE-20] "Debited account identifier" (BT-91) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 59 SEPA als Zahlungsmittel gefordert wird. + + + + + + + + + + + + + + + + BR-DE-14 + fatal + + + + [BR-DE-14] Das Element "VAT category rate" (BT-119) muss übermittelt werden. + + + + + + + + + + + + + + + + + + + + + + + BR-DEX-01 + fatal + + + + [BR-DEX-01] Das Element + + "Attached Document" (BT-125) benutzt einen nicht zulässigen MIME-Code: + + . Im Falle einer Extension darf zusätzlich zu der Liste der mime codes (definiert in Abschnitt 8.2, "Binary Object") der MIME-Code application/xml genutzt werden. + + + + + + + + + + + + + + + + BR-DEX-02 + warning + + + + [BR-DEX-02] Der Wert von "Invoice line net amount" (BT-131) einer "INVOICE LINE" + (BG-25) oder einer "SUB INVOICE LINE" (BG-DEX-01) soll der Summe + der "Invoice line net amount" (BT-131) der direkt darunterliegenden "SUB + INVOICE LINE" (BG-DEX-01) entsprechen. + + + + + + + + + + BR-DEX-03 + fatal + + + + [BR-DEX-03] Eine Sub Invoice Line (BG-DEX-01) muss genau eine "SUB INVOICE LINE VAT INFORMATION" (BG-DEX-06) enthalten. + + + + + + + + + + diff --git a/validator/src/main/resources/xslt/XR_21/XRechnung-UBL-validation.xslt b/validator/src/main/resources/xslt/XR_21/XRechnung-UBL-validation.xslt new file mode 100644 index 00000000..3eb948fc --- /dev/null +++ b/validator/src/main/resources/xslt/XR_21/XRechnung-UBL-validation.xslt @@ -0,0 +1,779 @@ + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + *: + + [namespace-uri()=' + + '] + + + + [ + + ] + + + + / + + @ + + + @*[local-name()=' + + ' and namespace-uri()=' + + '] + + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + + + + + + + + + + + + + + + + + . + + + + U + + U + + + + U. + + n + + + + U. + + _ + + _ + + + + + + + + xrechnung-model + +   +   +   + + + + + + + + + + + + variable-pattern + variable-pattern + + + + + + + + ubl-pattern + ubl-pattern + + + + + + + + ubl-extension-pattern + ubl-extension-pattern + + + + + + + Schematron Version 1.6.0 - XRechnung 2.1.1 compatible - UBL - Invoice + + + + + + + + + + + + + + + + + + + + BR-DE-1 + fatal + + + + [BR-DE-1] Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten. + + + + + + + + + BR-DE-15 + fatal + + + + [BR-DE-15] Das Element "Buyer reference" (BT-10) muss übermittelt werden. + + + + + + + + + BR-DE-16 + fatal + + + + [BR-DE-16] In der Rechnung muss mindestens eines der Elemente "Seller VAT identifier" (BT-31), "Seller tax registration identifier" (BT-32) oder "SELLER TAX REPRESENTATIVE PARTY" (BG-11) übermittelt werden. + + + + + + + + + BR-DE-17 + warning + + + + [BR-DE-17] Mit dem Element "Invoice type code" (BT-3) sollen ausschließlich folgende Codes aus der Codeliste UNTDID 1001 übermittelt werden: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice) und 381 (Credit note),875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice). + + + + + + + + + BR-DE-18 + fatal + + + + [BR-DE-18] Skonto/Verzug Zeilen in + + müssen diesem regulärem Ausdruck entsprechen: + + . Die Informationen zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen wie folgt im Element "Payment terms" (BT-20) übermittelt werden: Anzugeben ist im ersten Segment "SKONTO" oder "VERZUG", im zweiten "TAGE=n", im dritten "PROZENT=n". Prozentzahlen sind ohne Vorzeichen sowie mit Punkt getrennt von zwei Nachkommastellen anzugeben. Liegt dem zu berechnenden Betrag nicht BT-115, "fälliger Betrag" zugrunde, sondern nur ein Teil des fälligen Betrags der Rechnung, ist der Grundwert zur Berechnung von Skonto oder Verzugszins als viertes Segment "BASISBETRAG=n" gemäß dem semantischen Datentypen Amount anzugeben. Jeder Eintrag beginnt mit einer #, die Segmente sind mit einer # getrennt und eine Zeile schließt mit einer # ab. Am Ende einer vollständigen Skonto oder Verzugsangabe muss ein XML-konformer Zeilenumbruch folgen. Alle Angaben zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen in Großbuchstaben gemacht werden. Zusätzliches Whitespace (Leerzeichen, Tabulatoren oder Zeilenumbrüche) ist nicht zulässig. Andere Zeichen oder Texte als in den oberen Vorgaben genannt sind nicht zulässig. + + + + + + + + + BR-DE-21 + warning + + + + [BR-DE-21] Das Element "Specification identifier" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen. + + + + + + + + + BR-DE-22 + fatal + + + + [BR-DE-22] Das "filename"-Attribut aller "EmbeddedDocumentBinaryObject"-Elemente muss eindeutig sein + + + + + + + + + BR-DE-26 + warning + + + + [BR-DE-26] Wenn im Element "Invoice type code" (BT-3) der Code 384 (Corrected invoice) übergeben wird, soll PRECEDING INVOICE REFERENCE BG-3 mind. einmal vorhanden sein. + + + + + + + + + + + + + + BR-DE-2 + fatal + + + + [BR-DE-2] Die Gruppe "SELLER CONTACT" (BG-6) muss übermittelt werden. + + + + + + + + + + + + + + BR-DE-3 + fatal + + + + [BR-DE-3] Das Element "Seller city" (BT-37) muss übermittelt werden. + + + + + + + + + BR-DE-4 + fatal + + + + [BR-DE-4] Das Element "Seller post code" (BT-38) muss übermittelt werden. + + + + + + + + + + + + + + BR-DE-5 + fatal + + + + [BR-DE-5] Das Element "Seller contact point" (BT-41) muss übermittelt werden. + + + + + + + + + BR-DE-6 + fatal + + + + [BR-DE-6] Das Element "Seller contact telephone number" (BT-42) muss übermittelt werden. + + + + + + + + + BR-DE-7 + fatal + + + + [BR-DE-7] Das Element "Seller contact email address" (BT-43) muss übermittelt werden. + + + + + + + + + + + + + + BR-DE-8 + fatal + + + + [BR-DE-8] Das Element "Buyer city" (BT-52) muss übermittelt werden. + + + + + + + + + BR-DE-9 + fatal + + + + [BR-DE-9] Das Element "Buyer post code" (BT-53) muss übermittelt werden. + + + + + + + + + + + + + + BR-DE-10 + fatal + + + + [BR-DE-10] Das Element "Deliver to city" (BT-77) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. + + + + + + + + + BR-DE-11 + fatal + + + + [BR-DE-11] Das Element "Deliver to post code" (BT-78) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. + + + + + + + + + + + + + + BR-DE-19 + warning + + + + [BR-DE-19] "Payment account identifier" (BT-84) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 58 SEPA als Zahlungsmittel gefordert wird. + + + + + + + + + BR-DE-23-a + fatal + + + + [BR-DE-23-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), muss BG-17 "CREDIT TRANSFER" übermittelt werden. + + + + + + + + + BR-DE-23-b + fatal + + + + [BR-DE-23-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), dürfen BG-18 und BG-19 nicht übermittelt werden. + + + + + + + + + + + + + + BR-DE-24-a + fatal + + + + [BR-DE-24-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), muss genau BG-18 "PAYMENT CARD INFORMATION" übermittelt werden. + + + + + + + + + BR-DE-24-b + fatal + + + + [BR-DE-24-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), dürfen BG-17 und BG-19 nicht übermittelt werden. + + + + + + + + + + + + + + BR-DE-20 + warning + + + + [BR-DE-20] "Debited account identifier" (BT-91) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 59 SEPA als Zahlungsmittel gefordert wird. + + + + + + + + + BR-DE-25-a + fatal + + + + [BR-DE-25-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), muss genau BG-19 "DIRECT DEBIT" übermittelt werden. + + + + + + + + + BR-DE-25-b + fatal + + + + [BR-DE-25-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), dürfen BG-17 und BG-18 nicht übermittelt werden. + + + + + + + + + + + + + + BR-DE-14 + fatal + + + + [BR-DE-14] Das Element "VAT category rate" (BT-119) muss übermittelt werden. + + + + + + + + + + + + + + + + + + + + BR-DEX-01 + fatal + + + + [BR-DEX-01] Das Element + + "Attached Document" (BT-125) benutzt einen nicht zulässigen MIME-Code: + + . Im Falle einer Extension darf zusätzlich zu der Liste der mime codes (definiert in Abschnitt 8.2, "Binary Object") der MIME-Code application/xml genutzt werden. + + + + + + + + + + + + + + BR-DEX-02 + warning + + + + [BR-DEX-02] Der Wert von "Invoice line net amount" (BT-131) einer "INVOICE LINE" + (BG-25) oder einer "SUB INVOICE LINE" (BG-DEX-01) soll der Summe + der "Invoice line net amount" (BT-131) der direkt darunterliegenden "SUB + INVOICE LINE" (BG-DEX-01) entsprechen. + + + + + + + + + BR-DEX-03 + fatal + + + + [BR-DEX-03] Eine Sub Invoice Line (BG-DEX-01) muss genau eine "SUB INVOICE LINE VAT INFORMATION" (BG-DEX-06) enthalten. + + + + + + + + + + diff --git a/validator/src/main/resources/xslt/XR_21/cii/XRechnung-CII-validation.xslt b/validator/src/main/resources/xslt/XR_21/cii/XRechnung-CII-validation.xslt deleted file mode 100644 index 2698cb0e..00000000 --- a/validator/src/main/resources/xslt/XR_21/cii/XRechnung-CII-validation.xslt +++ /dev/null @@ -1,685 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - / - - - - - - *: - - [namespace-uri()=' - - '] - - - - [ - - ] - - - - / - - @ - - - @*[local-name()=' - - ' and namespace-uri()=' - - '] - - - - - - - - - / - - - [ - - ] - - - - /@ - - - - - - - - / - - - [ - - ] - - - - /@ - - - - - - - - - - - - - - - - - - - - - - - - . - - - - -U - - U - - - - U. - - n - - - - U. - - _ - - _ - - - - - - - - xrechnung-model - -   -   -   - - - - - - - - - - - - variable-pattern - variable-pattern - - - - - - - - cii-pattern - cii-pattern - - - - - - - -Schematron Version 1.6.0 - XRechnung 2.1.1 compatible - CII - - - - - - - - - - - - - - - - - - - - - - - - - BR-DE-1 - fatal - - - - [BR-DE-1] Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten. - - - - - - - - - - BR-DE-15 - fatal - - - - [BR-DE-15] Das Element "Buyer reference" (BT-10) muss übermittelt werden. - - - - - - - - - - BR-DE-16 - fatal - - - - [BR-DE-16] In der Rechnung muss mindestens eines der Elemente "Seller VAT identifier" (BT-31), "Seller tax registration identifier" (BT-32) oder "SELLER TAX REPRESENTATIVE PARTY" (BG-11) übermittelt werden. - - - - - - - - - - BR-DE-17 - warning - - - - [BR-DE-17] Mit dem Element "Invoice type code" (BT-3) sollen ausschließlich folgende Codes aus der Codeliste UNTDID 1001 übermittelt werden: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice) und 381 (Credit note),875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice). - - - - - - - - - - BR-DE-18 - fatal - - - - [BR-DE-18] Skonto/Verzug Zeilen in - - muessen diesem regulärem Ausdruck entsprechen: - - . Die Informationen zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen wie folgt im Element "Payment terms" (BT-20) übermittelt werden: Anzugeben ist im ersten Segment "SKONTO" oder "VERZUG", im zweiten "TAGE=n", im dritten "PROZENT=n". Prozentzahlen sind ohne Vorzeichen sowie mit Punkt getrennt von zwei Nachkommastellen anzugeben. Liegt dem zu berechnenden Betrag nicht BT-115, "fälliger Betrag" zugrunde, sondern nur ein Teil des fälligen Betrags der Rechnung, ist der Grundwert zur Berechnung von Skonto oder Verzugszins als viertes Segment "BASISBETRAG=n" gemäß dem semantischen Datentypen Amount anzugeben. Jeder Eintrag beginnt mit einer #, die Segmente sind mit einer # getrennt und eine Zeile schließt mit einer # ab. Am Ende einer vollständigen Skonto oder Verzugsangabe muss ein XML-konformer Zeilenumbruch folgen. Alle Angaben zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen in Großbuchstaben gemacht werden. Zusätzliches Whitespace (Leerzeichen, Tabulatoren oder Zeilenumbrüche) ist nicht zulässig. Andere Zeichen oder Texte als in den oberen Vorgaben genannt sind nicht zulässig. - - - - - - - - - - BR-DE-22 - fatal - - - - [BR-DE-22] Not all filename attributes of the embeddedDocumentBinaryObject elements are unique - - - - - - - - - - BR-DE-26 - warning - - - - [BR-DE-26] Wenn im Element Invoice type code (BT-3) der Code 384 (Corrected invoice) übergeben wird, soll PRECEDING INVOICE REFERENCE BG-3 mind. einmal vorhanden sein. - - - - - - - - - - - - - - - - BR-DE-21 - warning - - - - [BR-DE-21] Das Element "Specification identifier" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen. - - - - - - - - - - - - - - - - BR-DE-2 - fatal - - - - [BR-DE-2] Die Gruppe "SELLER CONTACT" (BG-6) muss übermittelt werden. - - - - - - - - - - - - - - - - BR-DE-3 - fatal - - - - [BR-DE-3] Das Element "Seller city" (BT-37) muss übermittelt werden. - - - - - - - - - - BR-DE-4 - fatal - - - - [BR-DE-4] Das Element "Seller post code" (BT-38) muss übermittelt werden. - - - - - - - - - - - - - - - - BR-DE-5 - fatal - - - - [BR-DE-5] Das Element "Seller contact point" (BT-41) muss übermittelt werden. - - - - - - - - - - BR-DE-6 - fatal - - - - [BR-DE-6] Das Element "Seller contact telephone number" (BT-42) muss übermittelt werden. - - - - - - - - - - BR-DE-7 - fatal - - - - [BR-DE-7] Das Element "Seller contact email address" (BT-43) muss übermittelt werden. - - - - - - - - - - - - - - - - BR-DE-8 - fatal - - - - [BR-DE-8] Das Element "Buyer city" (BT-52) muss übermittelt werden. - - - - - - - - - - BR-DE-9 - fatal - - - - [BR-DE-9] Das Element "Buyer post code" (BT-53) muss übermittelt werden. - - - - - - - - - - - - - - - - BR-DE-10 - fatal - - - - [BR-DE-10] Das Element "Deliver to city" (BT-77) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. - - - - - - - - - - BR-DE-11 - fatal - - - - [BR-DE-11] Das Element "Deliver to post code" (BT-78) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. - - - - - - - - - - - - - - - - BR-DE-19 - warning - - - - [BR-DE-19] "Payment account identifier" (BT-84) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 58 SEPA als Zahlungsmittel gefordert wird. - - - - - - - - - - BR-DE-23-a - fatal - - - - [BR-DE-23-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), muss BG-17 "CREDIT TRANSFER" übermittelt werden. - - - - - - - - - - BR-DE-23-b - fatal - - - - [BR-DE-23-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), dürfen BG-18 und BG-19 nicht übermittelt werden. - - - - - - - - - - - - - - - - BR-DE-24-a - fatal - - - - [BR-DE-24-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), muss genau BG-18 "PAYMENT CARD INFORMATION" übermittelt werden. - - - - - - - - - - BR-DE-24-b - fatal - - - - [BR-DE-24-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), dürfen BG-17 und BG-19 nicht übermittelt werden. - - - - - - - - - - - - - - - - BR-DE-20 - warning - - - - [BR-DE-20] "Debited account identifier" (BT-91) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 59 SEPA als Zahlungsmittel gefordert wird. - - - - - - - - - - BR-DE-25-a - fatal - - - - [BR-DE-25-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), muss genau BG-19 "DIRECT DEBIT" übermittelt werden. - - - - - - - - - - BR-DE-25-b - fatal - - - - [BR-DE-25-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), dürfen BG-17 und BG-18 nicht übermittelt werden. - - - - - - - - - - - - - - - - BR-DE-14 - fatal - - - - [BR-DE-14] Das Element "VAT category rate" (BT-119) muss übermittelt werden. - - - - - - - - - - diff --git a/validator/src/main/resources/xslt/XR_22/XRechnung-UBL-validation.xslt b/validator/src/main/resources/xslt/XR_22/XRechnung-UBL-validation.xslt new file mode 100644 index 00000000..e3e7b541 --- /dev/null +++ b/validator/src/main/resources/xslt/XR_22/XRechnung-UBL-validation.xslt @@ -0,0 +1,941 @@ + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + *: + + [namespace-uri()=' + + '] + + + + [ + + ] + + + + / + + @ + + + @*[local-name()=' + + ' and namespace-uri()=' + + '] + + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + + + + + + + + + + + + + + + + + . + + + + U + + U + + + + U. + + n + + + + U. + + _ + + _ + + + + + + + + xrechnung-model + +   +   +   + + + + + + + + + + + + variable-pattern + variable-pattern + + + + + + + + ubl-pattern + ubl-pattern + + + + + + + + ubl-extension-pattern + ubl-extension-pattern + + + + + + + Schematron Version 1.7.3 - XRechnung 2.2.0 compatible - UBL - Invoice + + + + + + + + + + + + + + + + + + + + + + + + BR-DE-1 + fatal + + + + [BR-DE-1] Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten. + + + + + + + + + BR-DE-15 + fatal + + + + [BR-DE-15] Das Element "Buyer reference" (BT-10) muss übermittelt werden. + + + + + + + + + BR-DE-16 + fatal + + + + [BR-DE-16] In der Rechnung muss mindestens eines der Elemente "Seller VAT identifier" (BT-31), "Seller tax registration identifier" (BT-32) oder "SELLER TAX REPRESENTATIVE PARTY" (BG-11) übermittelt werden. + + + + + + + + + BR-DE-17 + warning + + + + [BR-DE-17] Mit dem Element "Invoice type code" (BT-3) sollen ausschließlich folgende Codes aus der Codeliste UNTDID 1001 übermittelt werden: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice) und 381 (Credit note),875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice). + + + + + + + + + BR-DE-18 + fatal + + + + [BR-DE-18] Skonto/Verzug Zeilen in + + müssen diesem regulärem Ausdruck entsprechen: + + . Die Informationen zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen wie folgt im Element "Payment terms" (BT-20) übermittelt werden: Anzugeben ist im ersten Segment "SKONTO" oder "VERZUG", im zweiten "TAGE=n", im dritten "PROZENT=n". Prozentzahlen sind ohne Vorzeichen sowie mit Punkt getrennt von zwei Nachkommastellen anzugeben. Liegt dem zu berechnenden Betrag nicht BT-115, "fälliger Betrag" zugrunde, sondern nur ein Teil des fälligen Betrags der Rechnung, ist der Grundwert zur Berechnung von Skonto oder Verzugszins als viertes Segment "BASISBETRAG=n" gemäß dem semantischen Datentypen Amount anzugeben. Jeder Eintrag beginnt mit einer #, die Segmente sind mit einer # getrennt und eine Zeile schließt mit einer # ab. Am Ende einer vollständigen Skonto oder Verzugsangabe muss ein XML-konformer Zeilenumbruch folgen. Alle Angaben zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen in Großbuchstaben gemacht werden. Zusätzliches Whitespace (Leerzeichen, Tabulatoren oder Zeilenumbrüche) ist nicht zulässig. Andere Zeichen oder Texte als in den oberen Vorgaben genannt sind nicht zulässig. + + + + + + + + + BR-DE-21 + warning + + + + [BR-DE-21] Das Element "Specification identifier" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen. + + + + + + + + + BR-DE-22 + fatal + + + + [BR-DE-22] Das "filename"-Attribut aller "EmbeddedDocumentBinaryObject"-Elemente muss eindeutig sein + + + + + + + + + BR-DE-26 + warning + + + + [BR-DE-26] Wenn im Element "Invoice type code" (BT-3) der Code 384 (Corrected invoice) übergeben wird, soll PRECEDING INVOICE REFERENCE BG-3 mind. einmal vorhanden sein. + + + + + + + + + + + + + + BR-DE-2 + fatal + + + + [BR-DE-2] Die Gruppe "SELLER CONTACT" (BG-6) muss übermittelt werden. + + + + + + + + + + + + + + BR-DE-3 + fatal + + + + [BR-DE-3] Das Element "Seller city" (BT-37) muss übermittelt werden. + + + + + + + + + BR-DE-4 + fatal + + + + [BR-DE-4] Das Element "Seller post code" (BT-38) muss übermittelt werden. + + + + + + + + + + + + + + BR-DE-5 + fatal + + + + [BR-DE-5] Das Element "Seller contact point" (BT-41) muss übermittelt werden. + + + + + + + + + BR-DE-6 + fatal + + + + [BR-DE-6] Das Element "Seller contact telephone number" (BT-42) muss übermittelt werden. + + + + + + + + + BR-DE-7 + fatal + + + + [BR-DE-7] Das Element "Seller contact email address" (BT-43) muss übermittelt werden. + + + + + + + + + BR-DE-27 + warning + + + + [BR-DE-27] In BT-42 sollen mindestens drei Ziffern enthalten sein. + + + + + + + + + BR-DE-28 + warning + + + + [BR-DE-28] In BT-43 soll genau ein @-Zeichen enthalten sein, welches nicht von einem Leerzeichen, einem Punkt, aber mindestens zwei Zeichen auf beiden Seiten flankiert werden soll. Ein Punkt sollte nicht am Anfang oder am Ende stehen. + + + + + + + + + + + + + + BR-DE-8 + fatal + + + + [BR-DE-8] Das Element "Buyer city" (BT-52) muss übermittelt werden. + + + + + + + + + BR-DE-9 + fatal + + + + [BR-DE-9] Das Element "Buyer post code" (BT-53) muss übermittelt werden. + + + + + + + + + + + + + + BR-DE-10 + fatal + + + + [BR-DE-10] Das Element "Deliver to city" (BT-77) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. + + + + + + + + + BR-DE-11 + fatal + + + + [BR-DE-11] Das Element "Deliver to post code" (BT-78) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. + + + + + + + + + + + + + + BR-DE-19 + warning + + + + [BR-DE-19] "Payment account identifier" (BT-84) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 58 SEPA als Zahlungsmittel gefordert wird. + + + + + + + + + BR-DE-23-a + fatal + + + + [BR-DE-23-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), muss BG-17 "CREDIT TRANSFER" übermittelt werden. + + + + + + + + + BR-DE-23-b + fatal + + + + [BR-DE-23-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), dürfen BG-18 und BG-19 nicht übermittelt werden. + + + + + + + + + + + + + + BR-DE-24-a + fatal + + + + [BR-DE-24-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), muss genau BG-18 "PAYMENT CARD INFORMATION" übermittelt werden. + + + + + + + + + BR-DE-24-b + fatal + + + + [BR-DE-24-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), dürfen BG-17 und BG-19 nicht übermittelt werden. + + + + + + + + + + + + + + BR-DE-20 + warning + + + + [BR-DE-20] "Debited account identifier" (BT-91) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 59 SEPA als Zahlungsmittel gefordert wird. + + + + + + + + + BR-DE-25-a + fatal + + + + [BR-DE-25-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), muss genau BG-19 "DIRECT DEBIT" übermittelt werden. + + + + + + + + + BR-DE-25-b + fatal + + + + [BR-DE-25-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), dürfen BG-17 und BG-18 nicht übermittelt werden. + + + + + + + + + + + + + + BR-DE-14 + fatal + + + + [BR-DE-14] Das Element "VAT category rate" (BT-119) muss übermittelt werden. + + + + + + + + + + + + + + + + + + + + BR-DEX-01 + fatal + + + + [BR-DEX-01] Das Element + + "Attached Document" (BT-125) benutzt einen nicht zulässigen MIME-Code: + + . Im Falle einer Extension darf zusätzlich zu der Liste der mime codes (definiert in Abschnitt 8.2, "Binary Object") der MIME-Code application/xml genutzt werden. + + + + + + + + + + + + + + BR-DEX-02 + warning + + + + [BR-DEX-02] Der Wert von "Invoice line net amount" (BT-131) einer "INVOICE LINE" + (BG-25) oder einer "SUB INVOICE LINE" (BG-DEX-01) soll der Summe + der "Invoice line net amount" (BT-131) der direkt darunterliegenden "SUB + INVOICE LINE" (BG-DEX-01) entsprechen. + + + + + + + + + BR-DEX-03 + fatal + + + + [BR-DEX-03] Eine Sub Invoice Line (BG-DEX-01) muss genau eine "SUB INVOICE LINE VAT INFORMATION" (BG-DEX-06) enthalten. + + + + + + + + + + + + + + BR-DEX-04 + fatal + + + + [BR-DEX-04] Any scheme identifier in + + MUST be coded using one of the ISO 6523 ICD list. + + + + + + + + + + + + + + BR-DEX-05 + fatal + + + + [BR-DEX-05] Any scheme identifier in + + MUST be coded using one of the ISO 6523 ICD list. + + + + + + + + + + + + + + BR-DEX-06 + fatal + + + + [BR-DEX-06] Any scheme identifier in + + MUST be coded using one of the ISO 6523 ICD list. + + + + + + + + + + + + + + BR-DEX-07 + fatal + + + + [BR-DEX-07] Any scheme identifier for an Endpoint Identifier in + + MUST belong to the CEF EAS code list. + + + + + + + + + + + + + + BR-DEX-08 + fatal + + + + [BR-DEX-08] Any scheme identifier for a Delivery location identifier in + + MUST be coded using one of the ISO 6523 ICD list. + + + + + + + + + + diff --git a/validator/src/main/resources/xslt/XR_23/XRechnung-UBL-validation.xslt b/validator/src/main/resources/xslt/XR_23/XRechnung-UBL-validation.xslt new file mode 100644 index 00000000..8f896db5 --- /dev/null +++ b/validator/src/main/resources/xslt/XR_23/XRechnung-UBL-validation.xslt @@ -0,0 +1,1119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + *: + + [namespace-uri()=' + + '] + + + + [ + + ] + + + + / + + @ + + + @*[local-name()=' + + ' and namespace-uri()=' + + '] + + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + / + + + [ + + ] + + + + /@ + + + + + + + + + + + + + + + + + + + + + + + . + + + + U + + U + + + + U. + + n + + + + U. + + _ + + _ + + + + + + + + xrechnung-model + +   +   +   + + + + + + + + + + + + + variable-pattern + variable-pattern + + + + + + + + ubl-pattern + ubl-pattern + + + + + + + + ubl-extension-pattern + ubl-extension-pattern + + + + + + + Schematron Version 1.8.2 - XRechnung 2.3.1 compatible - UBL - Invoice / Creditnote + + + + + + + + + + + + + + + + + + + + + + + + + + BR-DE-1 + fatal + + + + [BR-DE-1] Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten. + + + + + + + + + BR-DE-15 + fatal + + + + [BR-DE-15] Das Element "Buyer reference" (BT-10) muss übermittelt werden. + + + + + + + + + + + + + + + BR-DE-16 + fatal + + + + [BR-DE-16] Wenn in einer Rechnung die Steuercodes S, Z, E, AE, K, G, L oder M verwendet werden, muss mindestens eines der Elemente "Seller VAT identifier" (BT-31), "Seller tax registration identifier" (BT-32) + oder "SELLER TAX REPRESENTATIVE PARTY" (BG-11) übermittelt werden. + + + + + + + + + + BR-DE-17 + warning + + + + [BR-DE-17] Mit dem Element "Invoice type code" (BT-3) sollen ausschließlich folgende Codes aus der Codeliste UNTDID 1001 übermittelt werden: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice) und 381 (Credit note),875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice). + + + + + + + + + BR-DE-18 + fatal + + + + [BR-DE-18] Skonto/Verzug Zeilen in + + müssen diesem regulärem Ausdruck entsprechen: + + . Die Informationen zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen wie folgt im Element "Payment terms" (BT-20) übermittelt werden: Anzugeben ist im ersten Segment "SKONTO" oder "VERZUG", im zweiten "TAGE=n", im dritten "PROZENT=n". Prozentzahlen sind ohne Vorzeichen sowie mit Punkt getrennt von zwei Nachkommastellen anzugeben. Liegt dem zu berechnenden Betrag nicht BT-115, "fälliger Betrag" zugrunde, sondern nur ein Teil des fälligen Betrags der Rechnung, ist der Grundwert zur Berechnung von Skonto oder Verzugszins als viertes Segment "BASISBETRAG=n" gemäß dem semantischen Datentypen Amount anzugeben. Jeder Eintrag beginnt mit einer #, die Segmente sind mit einer # getrennt und eine Zeile schließt mit einer # ab. Am Ende einer vollständigen Skonto oder Verzugsangabe muss ein XML-konformer Zeilenumbruch folgen. Alle Angaben zur Gewährung von Skonto oder zur Berechnung von Verzugszinsen müssen in Großbuchstaben gemacht werden. Zusätzliches Whitespace (Leerzeichen, Tabulatoren oder Zeilenumbrüche) ist nicht zulässig. Andere Zeichen oder Texte als in den oberen Vorgaben genannt sind nicht zulässig. + + + + + + + + + BR-DE-21 + warning + + + + [BR-DE-21] Das Element "Specification identifier" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen. + + + + + + + + + BR-DE-22 + fatal + + + + [BR-DE-22] Das "filename"-Attribut aller "EmbeddedDocumentBinaryObject"-Elemente muss eindeutig sein + + + + + + + + + BR-DE-26 + warning + + + + [BR-DE-26] Wenn im Element "Invoice type code" (BT-3) der Code 384 (Corrected invoice) übergeben wird, soll PRECEDING INVOICE REFERENCE BG-3 mind. einmal vorhanden sein. + + + + + + + + + BR-DE-29 + fatal + + + + [BR-DE-29] Wenn "DIRECT DEBIT" BG-19 vorhanden ist, dann muss "Mandate reference identifier" BT-89 übermittelt werden. + + + + + + + + + BR-DE-30 + fatal + + + + [BR-DE-30] Wenn "DIRECT DEBIT" BG-19 vorhanden ist, dann muss "Bank assigned creditor identifier" BT-90 übermittelt werden. + + + + + + + + + BR-DE-31 + fatal + + + + [BR-DE-31] Wenn "DIRECT DEBIT" BG-19 vorhanden ist, dann muss "Debited account identifier" BT-91 übermittelt werden. + + + + + + + + + + + + + + BR-DE-2 + fatal + + + + [BR-DE-2] Die Gruppe "SELLER CONTACT" (BG-6) muss übermittelt werden. + + + + + + + + + + + + + + BR-DE-3 + fatal + + + + [BR-DE-3] Das Element "Seller city" (BT-37) muss übermittelt werden. + + + + + + + + + BR-DE-4 + fatal + + + + [BR-DE-4] Das Element "Seller post code" (BT-38) muss übermittelt werden. + + + + + + + + + + + + + + BR-DE-5 + fatal + + + + [BR-DE-5] Das Element "Seller contact point" (BT-41) muss übermittelt werden. + + + + + + + + + BR-DE-6 + fatal + + + + [BR-DE-6] Das Element "Seller contact telephone number" (BT-42) muss übermittelt werden. + + + + + + + + + BR-DE-7 + fatal + + + + [BR-DE-7] Das Element "Seller contact email address" (BT-43) muss übermittelt werden. + + + + + + + + + BR-DE-27 + warning + + + + [BR-DE-27] In BT-42 sollen mindestens drei Ziffern enthalten sein. + + + + + + + + + BR-DE-28 + warning + + + + [BR-DE-28] In BT-43 soll genau ein @-Zeichen enthalten sein, welches nicht von einem Leerzeichen, einem Punkt, aber mindestens zwei Zeichen auf beiden Seiten flankiert werden soll. Ein Punkt sollte nicht am Anfang oder am Ende stehen. + + + + + + + + + + + + + + BR-DE-8 + fatal + + + + [BR-DE-8] Das Element "Buyer city" (BT-52) muss übermittelt werden. + + + + + + + + + BR-DE-9 + fatal + + + + [BR-DE-9] Das Element "Buyer post code" (BT-53) muss übermittelt werden. + + + + + + + + + + + + + + BR-DE-10 + fatal + + + + [BR-DE-10] Das Element "Deliver to city" (BT-77) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. + + + + + + + + + BR-DE-11 + fatal + + + + [BR-DE-11] Das Element "Deliver to post code" (BT-78) muss übermittelt werden, wenn die Gruppe "DELIVER TO ADDRESS" (BG-15) übermittelt wird. + + + + + + + + + + + + + + BR-DE-19 + warning + + + + [BR-DE-19] "Payment account identifier" (BT-84) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 58 SEPA als Zahlungsmittel gefordert wird. + + + + + + + + + BR-DE-23-a + fatal + + + + [BR-DE-23-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), muss BG-17 "CREDIT TRANSFER" übermittelt werden. + + + + + + + + + BR-DE-23-b + fatal + + + + [BR-DE-23-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), dürfen BG-18 und BG-19 nicht übermittelt werden. + + + + + + + + + + + + + + BR-DE-24-a + fatal + + + + [BR-DE-24-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), muss genau BG-18 "PAYMENT CARD INFORMATION" übermittelt werden. + + + + + + + + + BR-DE-24-b + fatal + + + + [BR-DE-24-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Kartenzahlungen enthält (48, 54, 55), dürfen BG-17 und BG-19 nicht übermittelt werden. + + + + + + + + + + + + + + BR-DE-20 + warning + + + + [BR-DE-20] "Debited account identifier" (BT-91) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 59 SEPA als Zahlungsmittel gefordert wird. + + + + + + + + + BR-DE-25-a + fatal + + + + [BR-DE-25-a] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), muss genau BG-19 "DIRECT DEBIT" übermittelt werden. + + + + + + + + + BR-DE-25-b + fatal + + + + [BR-DE-25-b] Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), dürfen BG-17 und BG-18 nicht übermittelt werden. + + + + + + + + + + + + + + BR-DE-14 + fatal + + + + [BR-DE-14] Das Element "VAT category rate" (BT-119) muss übermittelt werden. + + + + + + + + + + + + + + + + + + + + BR-DEX-01 + fatal + + + + [BR-DEX-01] Das Element + + "Attached Document" (BT-125) benutzt einen nicht zulässigen MIME-Code: + + . Im Falle einer Extension darf zusätzlich zu der Liste der mime codes (definiert in Abschnitt 8.2, "Binary Object") der MIME-Code application/xml genutzt werden. + + + + + + + + + + + + + + BR-DEX-02 + warning + + + + [BR-DEX-02] Der Wert von "Invoice line net amount" (BT-131) einer "INVOICE LINE" + (BG-25) oder einer "SUB INVOICE LINE" (BG-DEX-01) soll der Summe + der "Invoice line net amount" (BT-131) der direkt darunterliegenden "SUB + INVOICE LINE" (BG-DEX-01) entsprechen. + + + + + + + + + BR-DEX-03 + fatal + + + + [BR-DEX-03] Eine Sub Invoice Line (BG-DEX-01) muss genau eine "SUB INVOICE LINE VAT INFORMATION" (BG-DEX-06) enthalten. + + + + + + + + + + + + + + + + + BR-DEX-09 + fatal + + + + [BR-DEX-09] Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) - Paid amount (BT-113) + Rounding amount (BT-114) - Σ Third party payment amount (BT-DEX-002). + + + + + + + + + + + + + + BR-DEX-04 + fatal + + + + [BR-DEX-04] Any scheme identifier in + + MUST be coded using one of the ISO 6523 ICD list. + + + + + + + + + + + + + + BR-DEX-05 + fatal + + + + [BR-DEX-05] Any scheme identifier in + + MUST be coded using one of the ISO 6523 ICD list. + + + + + + + + + + + + + + BR-DEX-06 + fatal + + + + [BR-DEX-06] Any scheme identifier in + + MUST be coded using one of the ISO 6523 ICD list. + + + + + + + + + + + + + + BR-DEX-07 + fatal + + + + [BR-DEX-07] Any scheme identifier for an Endpoint Identifier in + + MUST belong to the CEF EAS code list. + + + + + + + + + + + + + + BR-DEX-08 + fatal + + + + [BR-DEX-08] Any scheme identifier for a Delivery location identifier in + + MUST be coded using one of the ISO 6523 ICD list. + + + + + + + + + + + + + + BR-DEX-10 + fatal + + + + [BR-DEX-10] Das Element "Third party payment type" BT-DEX-001 muss übermittelt werden, wenn die Gruppe "THIRD PARTY PAYMENT" (BG-DEX-09) übermittelt wird. + + + + + + + + + BR-DEX-11 + fatal + + + + [BR-DEX-11] Das Element "Third party payment amount" BT-DEX-002 muss übermittelt werden, wenn die Gruppe "THIRD PARTY PAYMENT" (BG-DEX-09) übermittelt wird. + + + + + + + + + BR-DEX-12 + fatal + + + + [BR-DEX-12] Das Element "Third party payment description" BT-DEX-003 muss übermittelt werden, wenn die Gruppe "THIRD PARTY PAYMENT" (BG-DEX-09) übermittelt wird. + + + + + + + + + BR-DEX-13 + fatal + + + + [BR-DEX-13] Die maximale Anzahl zulässiger Nachkommastellen für das Element "Third party payment amount" (BT-DEX-002) ist 2." + + + + + + + + + BR-DEX-14 + fatal + + + + [BR-DEX-14] Die Währungsangabe von "Third party payment amount" BT-DEX-002 muss BT-5 ("Invoice currency code") entsprechen. + + + + + + + + + +