diff --git a/History.md b/History.md index cd1b1502..03285595 100644 --- a/History.md +++ b/History.md @@ -1,10 +1,15 @@ 2.1.1 ======= +2020-02-09 -- PR #217 seller order referenced document +- PR #217 seller order referenced document thanks to weclapp-dev - PR #218 allow recipient contact in XRechnung thanks to seeeeew +- PR #221 remove outdated dependency thanks to heisej +- PR #223 allow XRechnung without street thanks to murygin - only deploy library and validator to maven central, not core nor cli - a correction should reference the original invoice via invoiceReferencedDocument, not buyerOrderReferencedDocument +- upgraded CEN Schematron validation (codes 24) to v1.3.4 +- added unit tests for ubl conversion and visualization 2.1.0 ======= diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml index f6535e8e..7ef736fd 100644 --- a/Mustang-CLI/pom.xml +++ b/Mustang-CLI/pom.xml @@ -3,14 +3,14 @@ org.mustangproject core - 2.1.1-SNAPSHOT + 2.1.2-SNAPSHOT 4.0.0 org.mustangproject Mustang-CLI e-invoices commandline tool, allowing to create(embed), split and validate Factur-X/ZUGFeRD files. Validation should also work for XRechnung/CII. jar - 2.1.1-SNAPSHOT + 2.1.2-SNAPSHOT @@ -31,7 +31,7 @@ org.mustangproject validator - 2.1.1-SNAPSHOT + 2.1.2-SNAPSHOT @@ -140,6 +140,8 @@ *:* + LICENSE + NOTICE META-INF/*.SF META-INF/*.DSA META-INF/*.RSA diff --git a/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java b/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java index 4cf0b397..7216dbdd 100755 --- a/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java +++ b/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java @@ -26,6 +26,8 @@ import org.mustangproject.validator.Validator; import org.mustangproject.validator.ZUGFeRDValidator; import java.io.*; +import java.net.URL; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -48,6 +50,7 @@ public class Main { private static String getUsage() { return "Usage: --action metrics|combine|extract|a3only|ubl|validate|visualize [-d,--directory] [-l,--listfromstdin] [-i,--ignore fileextension, PDF/A errors] | [-h,--help] \r\n" + + " --action=license display open source license and notice\n" + " --action=metrics\n" + " -d, --directory count ZUGFeRD files in directory to be scanned\n" + " If it is a directory, it will recurse.\n" @@ -288,6 +291,37 @@ public class Main { c2u.convert(new File(xmlName), new File(outName)); System.out.println("Written to " + outName); + } + + public static void printLicense() { + InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("LICENSE"); + System.out.println(convertInputStreamToString(is)); + is = Thread.currentThread().getContextClassLoader().getResourceAsStream("NOTICE"); + System.out.println(convertInputStreamToString(is)); + + } + + // Plain Java + // based on https://mkyong.com/java/how-to-convert-inputstream-to-string-in-java/ + private static String convertInputStreamToString(InputStream is) { + int DEFAULT_BUFFER_SIZE = 8192; + ByteArrayOutputStream result = new ByteArrayOutputStream(); + byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; + int length; + try { + while ((length = is.read(buffer)) != -1) { + result.write(buffer, 0, length); + } + + // Java 1.1 + return result.toString(StandardCharsets.UTF_8.name()); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + // Java 10 + // return result.toString(StandardCharsets.UTF_8); + } /*** * the main function of the commandline tool... @@ -295,9 +329,9 @@ public class Main { */ public static void main(String[] args) { try { - CmdLineParser parser = new CmdLineParser(); + // Option: Help Option helpOption = parser.addBooleanOption('h', "help"); // Option: Action @@ -344,8 +378,9 @@ public class Main { String action = parser.getOptionValue(actionOption); String directoryName = parser.getOptionValue(dirnameOption); Boolean filesFromStdIn = parser.getOptionValue(filesFromStdInOption, Boolean.FALSE); - Boolean helpRequested = parser.getOptionValue(helpOption, Boolean.FALSE) || ((action!=null)&&(action.equals("help"))); Boolean ignoreFileExt = parser.getOptionValue(ignoreFileExtOption, Boolean.FALSE); + Boolean helpRequested = parser.getOptionValue(helpOption, Boolean.FALSE) || ((action!=null)&&(action.equals("help"))); + String sourceName = parser.getOptionValue(sourceOption); String sourceXMLName = parser.getOptionValue(sourceXmlOption); String outName = parser.getOptionValue(outOption); @@ -358,7 +393,10 @@ public class Main { if (helpRequested) { printHelp(); optionsRecognized=true; - } else if ((action!=null)&&(action.equals("metrics"))) { + } /* else if ((action!=null)&&(action.equals("license"))) { + printLicense(); + optionsRecognized=true; + } */ else if ((action!=null)&&(action.equals("metrics"))) { performMetrics(directoryName, filesFromStdIn, ignoreFileExt); optionsRecognized=true; } else if ((action!=null)&&(action.equals("combine"))) { diff --git a/NOTICE b/NOTICE index f37587ae..74216985 100644 --- a/NOTICE +++ b/NOTICE @@ -31,3 +31,4 @@ Based on https://github.com/itplr-kosit/xrechnung-schematron licensed under the Based on https://github.com/itplr-kosit/xrechnung-visualization licensed under the APL2.0 Based on Saxon-HE https://sourceforge.net/projects/saxon/ licensed under the MPL 2.0 Based on DOM4j https://dom4j.github.io/ licensed under the BSD license +Based on EN16931 validation artefacts https://github.com/ConnectingEurope/eInvoicing-EN16931 licensed under the EUPL 2.0 diff --git a/README.md b/README.md index bcea4a64..4e4d1c0b 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ If you setup a Maven project, you can grab the artifacts using org.mustangproject library - 2.0.2 + 2.1.1 ``` diff --git a/library/pom.xml b/library/pom.xml index a88f9c6c..d929e663 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -3,13 +3,13 @@ org.mustangproject core - 2.1.1-SNAPSHOT + 2.1.2-SNAPSHOT 4.0.0 org.mustangproject library - 2.1.1-SNAPSHOT + 2.1.2-SNAPSHOT jar Library to write, read and validate e-invoices (Factur-X, ZUGFeRD and to a limited extend XRechnung/CII). The Mustang project is a java library to read, write and validate Factur-X/ZUGFeRD meta data inside your invoice PDFs. To write files, a provided PDF/A will be combined with generated or provided XML. @@ -117,12 +117,6 @@ xmlunit-assertj 2.6.3 - - com.helger - ph-commons - 9.1.1 - compile - jakarta.xml.bind diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/CustomXMLProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/CustomXMLProvider.java index 679a091d..6da66898 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/CustomXMLProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/CustomXMLProvider.java @@ -18,6 +18,8 @@ *********************************************************************** */ package org.mustangproject.ZUGFeRD; +import java.nio.charset.StandardCharsets; + public class CustomXMLProvider implements IXMLProvider { protected byte[] zugferdData; @@ -29,7 +31,7 @@ public class CustomXMLProvider implements IXMLProvider { } public void setXML(byte[] newData) { - String zf = new String(newData); + String zf = new String(newData, StandardCharsets.UTF_8); if (!zf.contains("CrossIndustry")) { throw new RuntimeException("ZUGFeRD XML does not contain (" + XMLTools.encodeXML(party.getZIP()) - + "\n" - + " " + XMLTools.encodeXML(party.getStreet()) - + "\n"; + + "\n"; + if (party.getStreet() != null) { + xml += " " + XMLTools.encodeXML(party.getStreet()) + + "\n"; + } if (party.getAdditionalAddress() != null) { xml += " " + XMLTools.encodeXML(party.getAdditionalAddress()) + "\n"; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java index ac2d4bb9..22158c76 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java @@ -23,6 +23,7 @@ import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import java.io.*; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; @@ -77,7 +78,7 @@ public class ZUGFeRDVisualizer { FileInputStream fis=new FileInputStream(xmlFilename); String fileContent=""; try { - fileContent = new String(Files.readAllBytes(Paths.get(xmlFilename))); + fileContent = new String(Files.readAllBytes(Paths.get(xmlFilename)), StandardCharsets.UTF_8); } catch (IOException e2) { LOG.log(Level.SEVERE, null, e2); } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java index 56ba9542..b68e7dfe 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java @@ -33,6 +33,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Calendar; @@ -270,7 +271,7 @@ public class MustangReaderWriterEdgeTest extends MustangReaderTestCase { .setZUGFeRDVersion(1) .load(inputStream); ze.setTransaction(this); - String theXML = new String(ze.getProvider().getXML()); + String theXML = new String(ze.getProvider().getXML(), StandardCharsets.UTF_8); assertTrue(theXML.contains(" + * Copyright 2019 Jochen Staerk + *

+ * Use is subject to license terms. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0. + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + *

+ * See the License for the specific language governing permissions and + * limitations under the License. + *

+ * ********************************************************************** + */ +package org.mustangproject.ZUGFeRD; + +import org.junit.FixMethodOrder; +import org.junit.runners.MethodSorters; +import org.mustangproject.CII.CIIToUBL; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class UBLTest extends ResourceCase { + + public void testUBLBasic() { + + // the writing part + CIIToUBL c2u = new CIIToUBL(); + String sourceFilename = "factur-x.xml"; + File input = getResourceAsFile(sourceFilename); + File expectedFile = getResourceAsFile("ubl-conv-ubl-output-factur-x.xml"); + String expected = null; + String result = null; + try { + File tempFile = File.createTempFile("ZUGFeRD-UBL-", "-test"); + c2u.convert(input, tempFile); + expected = ResourceUtilities.readFile(StandardCharsets.UTF_8, expectedFile.getAbsolutePath()); + result = ResourceUtilities.readFile(StandardCharsets.UTF_8, tempFile.getAbsolutePath()); + } catch (IOException e) { + fail("Exception should not happen: "+e.getMessage()); + } + + + assertNotNull(result); + assertEquals(expected, result); + } +} diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/VisualizationTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/VisualizationTest.java new file mode 100644 index 00000000..bea917a4 --- /dev/null +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/VisualizationTest.java @@ -0,0 +1,69 @@ + +/** ********************************************************************** + * + * Copyright 2019 Jochen Staerk + * + * Use is subject to license terms. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * + * See the License for the specific language governing permissions and + * limitations under the License. + * + *********************************************************************** */ +package org.mustangproject.ZUGFeRD; + +import org.junit.FixMethodOrder; +import org.junit.runners.MethodSorters; +import org.mustangproject.CII.CIIToUBL; + +import javax.xml.transform.TransformerException; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class VisualizationTest extends ResourceCase { + + public void testVisualizationBasic() { + + // the writing part + CIIToUBL c2u = new CIIToUBL(); + String sourceFilename = "factur-x.xml"; + File input = getResourceAsFile(sourceFilename); + + String expected = null; + String result = null; + try { + ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer(); + /* remove file endings so that tests can also pass after checking + out from git with arbitrary options (which may include CSRF changes) + */ + result = zvi.visualize(input.getAbsolutePath()).replace("\r","").replace("\n",""); + + File expectedResult=getResourceAsFile("factur-x.html"); + expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8).replace("\r","").replace("\n",""); + // remove linebreaks as well... + + } catch (TransformerException e) { + fail("Exception should not happen: "+e.getMessage()); + } catch (IOException e) { + fail("Exception should not happen: "+e.getMessage()); + } + + + + assertNotNull(result); + // Reading ZUGFeRD + assertEquals(expected, result); + } +} diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java index ac94775d..a584e8dc 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java @@ -31,6 +31,7 @@ import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.util.Date; import static org.xmlunit.assertj.XmlAssert.assertThat; @@ -43,22 +44,13 @@ public class XRTest extends TestCase { public void testXRExport() { // the writing part - - String orgname = "Test company"; - String number = "123"; - String amountStr = "1.00"; - BigDecimal amount = new BigDecimal(amountStr); - Invoice i = new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()) - .setSender(new TradeParty(orgname,"teststr","55232","teststadt","DE").addTaxID("DE4711").addVATID("DE0815").setContact(new Contact("Hans Test","+49123456789","test@example.org")).addBankDetails(new BankDetails("DE12500105170648489890","COBADEFXXX"))) - .setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")) - .setReferenceNumber("991-01484-64")//leitweg-id - // not using any VAT, this is also a test of zero-rated goods: - .setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", BigDecimal.ZERO), amount, new BigDecimal(1.0))); + TradeParty recipient = new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE"); + Invoice i = createInvoice(recipient); ZUGFeRD2PullProvider zf2p = new ZUGFeRD2PullProvider(); zf2p.setProfile(Profiles.getByName("XRechnung")); zf2p.generateXML(i); - String theXML = new String(zf2p.getXML()); + String theXML = new String(zf2p.getXML(), StandardCharsets.UTF_8); assertTrue(theXML.contains(" + + + + XRechnung + + + + +

+ +
+
+
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
+
Informationen zum Käufer
+
+
+
Leitweg-ID:
+
AB321
+
+
+
Name:
+
Theodor Est
+
+
+
Straße / Hausnummer:
+
Bahnstr. 42
+
+
+
Postfach:
+
+
+
+
Adresszusatz:
+
+
+
+
PLZ:
+
88802
+
+
+
Ort:
+
Spielkreis
+
+
+
Land:
+
DE
+
+
+
Kennung:
+
2
+
+
+
Schema der Kennung:
+
+
+
+
Name:
+
+
+
+
Telefon:
+
+
+
+
E-Mail-Adresse:
+
+
+
+
+
+
+
Informationen zum Verkäufer
+
+
+
Firmenname:
+
Bei Spiel GmbH
+
+
+
Straße / Hausnummer:
+
Ecke 12
+
+
+
Postfach:
+
+
+
+
Adresszusatz:
+
+
+
+
PLZ:
+
12345
+
+
+
Ort:
+
Stadthausen
+
+
+
Bundesland:
+
+
+
+
Ländercode:
+
DE
+
+
+
Kennung:
+
+
+
+
Schema der Kennung:
+
+
+
+
Name:
+
+
+
+
Telefon:
+
+
+
+
E-Mail-Adresse:
+
+
+
+
+
+
+
+
+
+
Rechnungsdaten
+
+
+
+
+
Rechnungsnummer:
+
RE-20201121/508
+
+
+
Rechnungsdatum:
+
21.11.2020
+
+
+
Rechnungsart:
+
380
+
+
+
Währung:
+
EUR
+
+
+

Abrechnungszeitraum:

+
+
+
von:
+
+
+
+
bis:
+
+
+
+
+
+
+
+
+
Projektnummer:
+
+
+
+
Vertragsnummer:
+
+
+
+
Bestellnummer:
+
+
+
+
Auftragsnummer:
+
+
+
+

Vorausgegangene Rechnungen:

+
+
+
+
+
+
+
+
+
Gesamtbeträge der Rechnung
+
+
+
Summe aller Positionen
+
netto
+
496,00
+
+
+
Summe Nachlässe
+
netto
+
+
+
+
Summe Zuschläge
+
netto
+
,00
+
+
+
Gesamtsumme
+
netto
+
496,00
+
+
+
Summe Umsatzsteuer
+
+
+
+
+
Summe Umsatzsteuer in Abrechnungswährung
+
+
75,04
+
+
+
Gesamtsumme
+
brutto
+
571,04
+
+
+
Gezahlter Betrag
+
brutto
+
,00
+
+
+
Rundungsbetrag
+
brutto
+
+
+
+
Fälliger Betrag
+
brutto
+
571,04
+
+
+
+
+
+
+
+
+
Aufschlüsselung der Umsatzsteuer auf Ebene der Rechnung
+
+
+
Umsatzsteuerkategorie: S
+
+
+
+
+
Gesamtsumme
+
netto
+
160,00
+
+
+
Umsatzsteuersatz
+
+
7.00%
+
+
+
Umsatzsteuerbetrag
+
+
11,20
+
+
+
+
Befreiungsgrund:
+
Kennung für den Befreiungsgrund:
+
+
+
+
+
+
Aufschlüsselung der Umsatzsteuer auf Ebene der Rechnung
+
+
+
Umsatzsteuerkategorie: S
+
+
+
+
+
Gesamtsumme
+
netto
+
336,00
+
+
+
Umsatzsteuersatz
+
+
19.00%
+
+
+
Umsatzsteuerbetrag
+
+
63,84
+
+
+
+
Befreiungsgrund:
+
Kennung für den Befreiungsgrund:
+
+
+
+
+
+
+
+
+
+
Zahlungsdaten
+
+
+
Skonto; weitere Zahlungsbedingungen:
+
Zahlbar ohne Abzug bis 12.12.2020
+
+
+
Fälligkeitsdatum:
+
12.12.2020
+
+
+
Code für das Zahlungsmittel:
+
42
+
+
+
Zahlungsmittel:
+
Bank transfer
+
+
+
Verwendungszweck:
+
+
+
+
+
+
Karteninformation
+
+
+
Kartennummer:
+
+
+
+
Karteninhaber:
+
+
+
+
+
+
+
+
+
+
Lastschrift
+
+
+
Mandatsreferenznr.:
+
+
+
+
IBAN:
+
+
+
+
Gläubiger-ID:
+
+
+
+
+
+
Überweisung
+
+
+
Kontoinhaber:
+
Max Mustermann
+
+
+
IBAN:
+
DE88200800000970375700
+
+
+
BIC:
+
COBADEFFXXX COBADEFFXXX
+
+
+
+
+
+
+
+
+
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
+
Position 1
+
+
+
Freitext:
+
+
+
+
Objektkennung:
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis:
+
+
+

Abrechnungszeitraum:

+
+
von:
+
+
+
+
bis:
+
+
+
+
+
+
Preiseinzelheiten
+
+
+
Menge
+
1.0000
+
+
+
Einheit
+
HUR
+
+
+
Preis pro Einheit (netto)
+
160,00
+
+
+
Gesamtpreis (netto)
+
160,00
+
+
+
+
+
Rabatt (netto):
+
+
+
+
Listenpreis (netto):
+
160,00
+
+
+
Anzahl der Einheit:
+
1.0000 1.0000
+
+
+
Code der Maßeinheit:
+
HUR
+
+
+
Umsatzsteuer:
+
S
+
+
+
Umsatzsteuersatz in Prozent:
+
7.00%
+
+
+
+
+
+
+
+
+
Nachlässe auf Ebene der Rechnungsposition
+
+
+
Grundbetrag (netto)
+
+
+
+
Prozentsatz
+
%
+
+
+
Nachlass (netto)
+
+
+
+
+
Grund des Nachlasses:
+
Code für den Nachlassgrund:
+
+
+
+
Zuschläge auf Ebene der Rechnungsposition
+
+
+
Grundbetrag (netto)
+
+
+
+
Prozentsatz
+
%
+
+
+
Zuschlag (netto)
+
+
+
+
+
Grund des Zuschlags:
+
Code für den Zuschlagsgrund:
+
+
+
+
+
+
+
+
Artikelinformationen
+
+
+
+
+
+
Bezeichnung:
+
Design (hours)
+
+
+
Beschreibung:
+
Of a sample invoice
+
+
+
Artikelnummer:
+
+
+
+
Artikelkennung des Käufers:
+
+
+

Eigenschaften des Artikels:

+
+
+
+
+
+
+
Artikelkennung:
+
+
+
+
Schema der Artikelkennung:
+
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
+
+
+
+
+
+
+
+
Position 2
+
+
+
Freitext:
+
+
+
+
Objektkennung:
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis:
+
+
+

Abrechnungszeitraum:

+
+
von:
+
+
+
+
bis:
+
+
+
+
+
+
Preiseinzelheiten
+
+
+
Menge
+
400.0000
+
+
+
Einheit
+
H87
+
+
+
Preis pro Einheit (netto)
+
,79
+
+
+
Gesamtpreis (netto)
+
316,00
+
+
+
+
+
Rabatt (netto):
+
+
+
+
Listenpreis (netto):
+
,79
+
+
+
Anzahl der Einheit:
+
1.0000 1.0000
+
+
+
Code der Maßeinheit:
+
H87
+
+
+
Umsatzsteuer:
+
S
+
+
+
Umsatzsteuersatz in Prozent:
+
19.00%
+
+
+
+
+
+
+
+
+
Nachlässe auf Ebene der Rechnungsposition
+
+
+
Grundbetrag (netto)
+
+
+
+
Prozentsatz
+
%
+
+
+
Nachlass (netto)
+
+
+
+
+
Grund des Nachlasses:
+
Code für den Nachlassgrund:
+
+
+
+
Zuschläge auf Ebene der Rechnungsposition
+
+
+
Grundbetrag (netto)
+
+
+
+
Prozentsatz
+
%
+
+
+
Zuschlag (netto)
+
+
+
+
+
Grund des Zuschlags:
+
Code für den Zuschlagsgrund:
+
+
+
+
+
+
+
+
Artikelinformationen
+
+
+
+
+
+
Bezeichnung:
+
Ballons
+
+
+
Beschreibung:
+
various colors, ~2000ml
+
+
+
Artikelnummer:
+
+
+
+
Artikelkennung des Käufers:
+
+
+

Eigenschaften des Artikels:

+
+
+
+
+
+
+
Artikelkennung:
+
+
+
+
Schema der Artikelkennung:
+
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
+
+
+
+
+
+
+
+
Position 3
+
+
+
Freitext:
+
+
+
+
Objektkennung:
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis:
+
+
+

Abrechnungszeitraum:

+
+
von:
+
+
+
+
bis:
+
+
+
+
+
+
Preiseinzelheiten
+
+
+
Menge
+
800.0000
+
+
+
Einheit
+
LTR
+
+
+
Preis pro Einheit (netto)
+
,02
+
+
+
Gesamtpreis (netto)
+
20,00
+
+
+
+
+
Rabatt (netto):
+
+
+
+
Listenpreis (netto):
+
,02
+
+
+
Anzahl der Einheit:
+
1.0000 1.0000
+
+
+
Code der Maßeinheit:
+
LTR
+
+
+
Umsatzsteuer:
+
S
+
+
+
Umsatzsteuersatz in Prozent:
+
19.00%
+
+
+
+
+
+
+
+
+
Nachlässe auf Ebene der Rechnungsposition
+
+
+
Grundbetrag (netto)
+
+
+
+
Prozentsatz
+
%
+
+
+
Nachlass (netto)
+
+
+
+
+
Grund des Nachlasses:
+
Code für den Nachlassgrund:
+
+
+
+
Zuschläge auf Ebene der Rechnungsposition
+
+
+
Grundbetrag (netto)
+
+
+
+
Prozentsatz
+
%
+
+
+
Zuschlag (netto)
+
+
+
+
+
Grund des Zuschlags:
+
Code für den Zuschlagsgrund:
+
+
+
+
+
+
+
+
Artikelinformationen
+
+
+
+
+
+
Bezeichnung:
+
Hot air „heiße Luft“ (litres)
+
+
+
Beschreibung:
+
+
+
+
Artikelnummer:
+
+
+
+
Artikelkennung des Käufers:
+
+
+

Eigenschaften des Artikels:

+
+
+
+
+
+
+
Artikelkennung:
+
+
+
+
Schema der Artikelkennung:
+
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
+
+
+
+
+
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
+
Informationen zum Verkäufer
+
+
+
Abweichender Handelsname:
+
+
+
+
Bundesland:
+
+
+
+
Elektronische Adresse:
+
+
+
+
Schema der elektronischen Adresse:
+
+
+
+
Register-/Registriernummer:
+
+
+
+
Umsatzsteuer-ID:
+
DE136695976
+
+
+
Steuernummer:
+
+
+
+
Schema der Steuernummer:
+
+
+
+
Weitere rechtliche Informationen:
+
+
+
+
Code der Umsatzsteuerwährung:
+
+
+
+
+
+
+
+
+
+
+
Informationen zum Käufer
+
+
+
Abweichender Handelsname:
+
+
+
+
Bundesland:
+
+
+
+
Elektronische Adresse:
+
+
+
+
Schema der elektronischen Adresse:
+
+
+
+
Register-/Registriernummer:
+
+
+
+
Schema der Register-/Registriernummer:
+
+
+
+
Umsatzsteuer-ID:
+
+
+
+
Abrechnungsdatum der Umsatzsteuer:
+
+
+
+
Code des Umsatzsteuer-Abrechnungsdatums:
+
+
+
+
Kontierungsinformation:
+
+
+
+
+
+
+
+
+
+
+
Informationen zum Vertrag
+
+
+
Vergabenummer:
+
+
+
+
Kennung der Empfangsbestätigung:
+
+
+
+
Kennung der Versandanzeige:
+
+
+
+
Prozesskennung:
+
+
+
+
Spezifikationskennung:
+
urn:cen.eu:en16931:2017
+
+
+
Objektkennung:
+
+
+
+
Schema der Objektkennung:
+
+
+
+
+
+
+
+
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
+
Rechnungsbegründende Unterlagen
+
+
+
+
+
+
+
+
+
Bearbeitungshistorie
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/library/src/test/resources/factur-x.xml b/library/src/test/resources/factur-x.xml new file mode 100644 index 00000000..44ce2bd5 --- /dev/null +++ b/library/src/test/resources/factur-x.xml @@ -0,0 +1,191 @@ + + + + + + urn:cen.eu:en16931:2017 + + + + RE-20201121/508 + 380 + + 20201121 + + + + + + 1 + + + Design (hours) + Of a sample invoice + + + + 160.0000 + 1.0000 + + + 160.0000 + 1.0000 + + + + 1.0000 + + + + VAT + S + 7.00 + + + 160.00 + + + + + + 2 + + + Ballons + various colors, ~2000ml + + + + 0.7900 + 1.0000 + + + 0.7900 + 1.0000 + + + + 400.0000 + + + + VAT + S + 19.00 + + + 316.00 + + + + + + 3 + + + Hot air „heiße Luft“ (litres) + + + + + 0.0250 + 1.0000 + + + 0.0250 + 1.0000 + + + + 800.0000 + + + + VAT + S + 19.00 + + + 20.00 + + + + + AB321 + + Bei Spiel GmbH + + 12345 + Ecke 12 + Stadthausen + DE + + + DE136695976 + + + + 2 + Theodor Est + + 88802 + Bahnstr. 42 + Spielkreis + DE + + + + + + + 20201110 + + + + + RE-20201121/508 + EUR + + 42 + Bank transfer + + DE88200800000970375700 + Max Mustermann + + + COBADEFFXXX + + + + 11.20 + VAT + 160.00 + S + 7.00 + + + 63.84 + VAT + 336.00 + S + 19.00 + + + Zahlbar ohne Abzug bis 12.12.2020 + + 20201212 + + + + 496.00 + 0.00 + 0.00 + 496.00 + 75.04 + 571.04 + 0.00 + 571.04 + + + + diff --git a/library/src/test/resources/ubl-conv-ubl-output-factur-x.xml b/library/src/test/resources/ubl-conv-ubl-output-factur-x.xml new file mode 100644 index 00000000..f5358a65 --- /dev/null +++ b/library/src/test/resources/ubl-conv-ubl-output-factur-x.xml @@ -0,0 +1,156 @@ + + + urn:cen.eu:en16931:2017:extended:urn:fdc:peppol.eu:2017:poacc:billing:3.0 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + RE-20201121/508 + 2020-11-21 + 2020-12-12 + 380 + EUR + AB321 + + + + Bei Spiel GmbH + + + Ecke 12 + Stadthausen + 12345 + + DE + + + + DE136695976 + + VAT + + + + Bei Spiel GmbH + + + + + + + 2 + + + Theodor Est + + + Bahnstr. 42 + Spielkreis + 88802 + + DE + + + + Theodor Est + + + + + 2020-11-10 + + + Zahlbar ohne Abzug bis 12.12.2020 + + + 75.04 + + 160.00 + 11.20 + + S + 7.00 + + VAT + + + + + 336.00 + 63.84 + + S + 19.00 + + VAT + + + + + + 496.00 + 496.00 + 571.04 + 0.00 + 0.00 + 0.00 + 571.04 + + + 1 + 1.0000 + 160.00 + + Of a sample invoice + Design (hours) + + S + 7.00 + + VAT + + + + + 160.0000 + 1.0000 + + + + 2 + 400.0000 + 316.00 + + various colors, ~2000ml + Ballons + + S + 19.00 + + VAT + + + + + 0.7900 + 1.0000 + + + + 3 + 800.0000 + 20.00 + + + Hot air „heiße Luft“ (litres) + + S + 19.00 + + VAT + + + + + 0.0250 + 1.0000 + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index ebd0d717..8b8f7472 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.mustangproject core - 2.1.1-SNAPSHOT + 2.1.2-SNAPSHOT pom Mustang diff --git a/validator/pom.xml b/validator/pom.xml index 97ec12c2..56d21399 100644 --- a/validator/pom.xml +++ b/validator/pom.xml @@ -3,7 +3,7 @@ org.mustangproject core - 2.1.1-SNAPSHOT + 2.1.2-SNAPSHOT 4.0.0 org.mustangproject @@ -11,7 +11,7 @@ Library to validate e-invoices (ZUGFeRD, Factur-X and Xrechnung) jar - 2.1.1-SNAPSHOT + 2.1.2-SNAPSHOT @@ -77,7 +77,7 @@ org.mustangproject library - 2.1.1-SNAPSHOT + 2.1.2-SNAPSHOT org.xmlunit @@ -176,6 +176,8 @@ *:* + LICENSE + NOTICE META-INF/*.SF META-INF/*.DSA META-INF/*.RSA diff --git a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java index 5d20e272..704ed669 100644 --- a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java @@ -62,7 +62,7 @@ public class XMLValidator extends Validator { // file existence must have been checked before try { - zfXML = new String(XMLTools.removeBOM(Files.readAllBytes(Paths.get(name)))); + zfXML = new String(XMLTools.removeBOM(Files.readAllBytes(Paths.get(name))), StandardCharsets.UTF_8); } catch (IOException e) { ValidationResultItem vri = new ValidationResultItem(ESeverity.exception, e.getMessage()).setSection(9) diff --git a/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java b/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java index e8d976eb..b0fcbdef 100644 --- a/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java @@ -1,6 +1,7 @@ package org.mustangproject.validator; import java.io.*; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -166,7 +167,7 @@ public class ZUGFeRDValidator { byte[] content=Files.readAllBytes(file.toPath()); content= XMLTools.removeBOM(content); - String s=new String(content); + String s=new String(content, StandardCharsets.UTF_8); InputSource is = new InputSource(new StringReader(s)); Document doc = db.parse(is); diff --git a/validator/src/main/resources/xslt/EN16931-CII-validation.xslt b/validator/src/main/resources/xslt/EN16931-CII-validation.xslt index d61cd073..f5c5d6c0 100644 --- a/validator/src/main/resources/xslt/EN16931-CII-validation.xslt +++ b/validator/src/main/resources/xslt/EN16931-CII-validation.xslt @@ -1,22 +1,10 @@ - + - + @@ -182,6 +170,7 @@ + @@ -190,7 +179,7 @@ EN16931-CII-Model - + @@ -199,7 +188,7 @@ EN16931-CII-Syntax - + @@ -208,7 +197,7 @@ EN16931-Codes - + @@ -219,7 +208,7 @@ - + @@ -236,11 +225,11 @@ - + - + @@ -257,11 +246,11 @@ - + - + @@ -293,11 +282,11 @@ - + - + @@ -314,12 +303,12 @@ - + - - + + @@ -338,9 +327,9 @@ - + - + BR-32 fatal @@ -425,12 +414,12 @@ - + - - + + @@ -449,9 +438,9 @@ - + - + BR-37 fatal @@ -536,11 +525,11 @@ - + - + @@ -605,6 +594,21 @@ + + + + BR-53 + fatal + + + + [BR-53]-If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided. + + + + + + @@ -620,9 +624,9 @@ - + - + BR-CO-11 fatal @@ -635,9 +639,9 @@ - + - + BR-CO-12 fatal @@ -650,9 +654,9 @@ - + - + BR-CO-13 fatal @@ -680,9 +684,9 @@ - + - + BR-CO-16 fatal @@ -842,11 +846,11 @@ - + - + @@ -956,9 +960,9 @@ - + - + BR-08 fatal @@ -971,9 +975,9 @@ - + - + BR-09 fatal @@ -986,9 +990,9 @@ - + - + BR-10 fatal @@ -1001,9 +1005,9 @@ - + - + BR-11 fatal @@ -1084,7 +1088,7 @@ - [BR-S-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is “Standard rated” shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated". + [BR-S-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Standard rated" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated". @@ -1099,7 +1103,7 @@ - [BR-Z-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is “Zero rated” shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Zero rated". + [BR-Z-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Zero rated" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Zero rated". @@ -1114,7 +1118,7 @@ - [BR-E-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is “Exempt from VAT” shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT". + [BR-E-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Exempt from VAT" shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT". @@ -1129,7 +1133,7 @@ - [BR-AE-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is “Reverse charge” shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge". + [BR-AE-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Reverse charge" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge". @@ -1144,7 +1148,7 @@ - [BR-IC-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is “Intra-community supply” shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Intra-community supply". + [BR-IC-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Intra-community supply" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Intra-community supply". @@ -1159,7 +1163,7 @@ - [BR-G-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is “Export outside the EU” shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU". + [BR-G-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Export outside the EU" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU". @@ -1174,7 +1178,7 @@ - [BR-O-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is “Not subject to VAT” shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT". + [BR-O-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Not subject to VAT" shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT". @@ -1189,7 +1193,7 @@ - [BR-IG-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is “IGIC” shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IGIC". + [BR-IG-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "IGIC" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IGIC". @@ -1204,15 +1208,45 @@ - [BR-IP-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is “IPSI” shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IPSI". + [BR-IP-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "IPSI" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IPSI". - + + + + + + + BR-B-01 + fatal + + + + [BR-B-01]-An Invoice where the VAT category code (BT-151, BT-95 or BT-102) is “Split payment” shall be a domestic Italian invoice. + + + + + + + + + + BR-B-02 + fatal + + + + [BR-B-02]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is “Split payment" shall not contain an invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is “Standard rated”. + + + + - + @@ -1367,9 +1401,9 @@ - + - + BR-CO-04 fatal @@ -1409,12 +1443,12 @@ - + - - + + @@ -1505,12 +1539,12 @@ - + - - + + @@ -1601,11 +1635,11 @@ - + - + @@ -1637,11 +1671,11 @@ - + - + @@ -1673,11 +1707,11 @@ - + - + @@ -1694,11 +1728,11 @@ - + - + @@ -1715,11 +1749,11 @@ - + - + @@ -1736,11 +1770,26 @@ - + + + + + + + BR-CO-27 + fatal + + + + [BR-CO-27]- Either the IBAN or a Proprietary ID (BT-84) shall be used. + + + + - + @@ -1757,18 +1806,18 @@ - + - + - + - + BR-CO-26 fatal @@ -1778,11 +1827,11 @@ - + - + @@ -1832,9 +1881,9 @@ - + - + BR-56 fatal @@ -1844,32 +1893,11 @@ - + - - - - - - - - - BR-53 - fatal - - - - [BR-53]-If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided. - - - - - - - - + @@ -1886,12 +1914,12 @@ - + - - + + @@ -1907,24 +1935,24 @@ - + - - + + - + - + BR-AE-08 fatal - [BR-AE-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are “Reverse charge". + [BR-AE-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Reverse charge". @@ -1939,7 +1967,7 @@ - [BR-AE-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is “Reverse charge” shall be 0 (zero). + [BR-AE-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" shall be 0 (zero). @@ -1958,24 +1986,24 @@ - + - - + + - + - + BR-AE-03 fatal - [BR-AE-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is “Reverse charge” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47). + [BR-AE-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47). @@ -1994,24 +2022,24 @@ - + - - + + - + - + BR-AE-04 fatal - [BR-AE-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is “Reverse charge” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47). + [BR-AE-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47). @@ -2030,24 +2058,24 @@ - + - - + + - + - + BR-AE-02 fatal - [BR-AE-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is “Reverse charge” shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47). + [BR-AE-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47). @@ -2066,24 +2094,24 @@ - + - - + + - + - + BR-AF-08 fatal - [BR-IG-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IGIC", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is “IGIC” and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119). + [BR-IG-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IGIC", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "IGIC" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119). @@ -2117,24 +2145,24 @@ - + - - + + - + - + BR-AF-02 fatal - [BR-IG-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is “IGIC” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-IG-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -2153,24 +2181,24 @@ - + - - + + - + - + BR-AF-03 fatal - [BR-IG-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is “IGIC” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-IG-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -2189,24 +2217,24 @@ - + - - + + - + - + BR-AF-04 fatal - [BR-IG-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is “IGIC” shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-IG-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -2225,24 +2253,24 @@ - + - - + + - + - + BR-AG-08 fatal - [BR-IP-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IPSI", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is “IPSI” and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119). + [BR-IP-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IPSI", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "IPSI" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119). @@ -2276,24 +2304,24 @@ - + - - + + - + - + BR-AG-02 fatal - [BR-IP-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is “IPSI” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-IP-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -2312,24 +2340,24 @@ - + - - + + - + - + BR-AG-03 fatal - [BR-IP-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is “IPSI” shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-IP-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -2348,24 +2376,24 @@ - + - - + + - + - + BR-AG-04 fatal - [BR-IP-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is “IPSI” shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-IP-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -2384,24 +2412,24 @@ - + - - + + - + - + BR-E-08 fatal - [BR-E-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Exempt from VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are “Exempt from VAT". + [BR-E-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Exempt from VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Exempt from VAT". @@ -2435,24 +2463,24 @@ - + - - + + - + - + BR-E-03 fatal - [BR-E-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is “Exempt from VAT” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-E-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -2471,24 +2499,24 @@ - + - - + + - + - + BR-E-04 fatal - [BR-E-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is “Exempt from VAT” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-E-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -2507,24 +2535,24 @@ - + - - + + - + - + BR-E-02 fatal - [BR-E-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is “Exempt from VAT” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-E-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -2543,24 +2571,24 @@ - + - - + + - + - + BR-G-08 fatal - [BR-G-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are “Export outside the EU". + [BR-G-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Export outside the EU". @@ -2575,7 +2603,7 @@ - [BR-G-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is “Export outside the EU” shall be 0 (zero). + [BR-G-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" shall be 0 (zero). @@ -2594,24 +2622,24 @@ - + - - + + - + - + BR-G-03 fatal - [BR-G-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is “Export outside the EU” shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63). + [BR-G-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63). @@ -2630,24 +2658,24 @@ - + - - + + - + - + BR-G-04 fatal - [BR-G-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is “Export outside the EU” shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63). + [BR-G-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63). @@ -2666,24 +2694,24 @@ - + - - + + - + - + BR-G-02 fatal - [BR-G-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is “Export outside the EU” shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63). + [BR-G-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63). @@ -2702,24 +2730,24 @@ - + - - + + - + - + BR-IC-08 fatal - [BR-IC-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are “Intra-community supply". + [BR-IC-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Intra-community supply". @@ -2734,7 +2762,7 @@ - [BR-IC-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is “Intra-community supply” shall be 0 (zero). + [BR-IC-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" shall be 0 (zero). @@ -2783,24 +2811,24 @@ - + - - + + - + - + BR-IC-03 fatal - [BR-IC-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is “Intra-community supply” shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48). + [BR-IC-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48). @@ -2819,24 +2847,24 @@ - + - - + + - + - + BR-IC-04 fatal - [BR-IC-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is “Intra-community supply” shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48). + [BR-IC-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48). @@ -2855,24 +2883,24 @@ - + - - + + - + - + BR-IC-02 fatal - [BR-IC-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is “Intra-community supply” shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48). + [BR-IC-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48). @@ -2891,24 +2919,24 @@ - + - - + + - + - + BR-O-08 fatal - [BR-O-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is " Not subject to VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are “Not subject to VAT". + [BR-O-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is " Not subject to VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Not subject to VAT". @@ -2923,7 +2951,7 @@ - [BR-O-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is “Not subject to VAT” shall be 0 (zero). + [BR-O-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Not subject to VAT" shall be 0 (zero). @@ -3002,24 +3030,24 @@ - + - - + + - + - + BR-O-03 fatal - [BR-O-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is “Not subject to VAT” shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48). + [BR-O-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Not subject to VAT" shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48). @@ -3038,24 +3066,24 @@ - + - - + + - + - + BR-O-04 fatal - [BR-O-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is “Not subject to VAT” shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48). + [BR-O-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Not subject to VAT" shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48). @@ -3074,24 +3102,24 @@ - + - - + + - + - + BR-O-02 fatal - [BR-O-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is “Not subject to VAT” shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-46). + [BR-O-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Not subject to VAT" shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48). @@ -3110,33 +3138,33 @@ - + - + - + - + BR-S-08 fatal - [BR-S-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "Standard rated", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is “Standard rated” and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119). + [BR-S-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "Standard rated", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "Standard rated" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119). - + - + BR-S-09 fatal @@ -3161,24 +3189,24 @@ - + - - + + - + - + BR-S-02 fatal - [BR-S-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is “Standard rated” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-S-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -3197,24 +3225,24 @@ - + - - + + - + - + BR-S-03 fatal - [BR-S-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is “Standard rated” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-S-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -3233,24 +3261,24 @@ - + - - + + - + - + BR-S-04 fatal - [BR-S-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is “Standard rated” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-S-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -3269,24 +3297,24 @@ - + - + - + - + BR-Z-08 fatal - [BR-Z-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amount (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are “Zero rated". + [BR-Z-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amount (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Zero rated". @@ -3320,24 +3348,24 @@ - + - - + + - + - + BR-Z-03 fatal - [BR-Z-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is “Zero rated” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-Z-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -3356,24 +3384,24 @@ - + - - + + - + - + BR-Z-04 fatal - [BR-Z-04]-An Invoice that contains a Document level charge where the Document level charge VAT category code (BT-102) is “Zero rated” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-Z-04]-An Invoice that contains a Document level charge where the Document level charge VAT category code (BT-102) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -3392,24 +3420,24 @@ - + - - + + - + - + BR-Z-02 fatal - [BR-Z-02]-An Invoice that contains an Invoice line where the Invoiced item VAT category code (BT-151) is “Zero rated” shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). + [BR-Z-02]-An Invoice that contains an Invoice line where the Invoiced item VAT category code (BT-151) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). @@ -3428,11 +3456,11 @@ - + - + @@ -3467,9 +3495,9 @@ - + - + BR-47 fatal @@ -3482,9 +3510,9 @@ - + - + BR-48 fatal @@ -3497,9 +3525,9 @@ - + - + BR-CO-03 fatal @@ -3512,9 +3540,9 @@ - + - + BR-CO-17 fatal @@ -3554,18 +3582,18 @@ - + - - - + + + - + @@ -3717,11 +3745,11 @@ - + - + @@ -4008,11 +4036,11 @@ - + - + @@ -4029,11 +4057,11 @@ - + - + @@ -4200,11 +4228,11 @@ - + - + @@ -5046,11 +5074,11 @@ - + - + @@ -5082,11 +5110,11 @@ - + - + @@ -5331,9 +5359,9 @@ - + - + CII-SR-119 warning @@ -5868,11 +5896,11 @@ - + - + @@ -6279,11 +6307,11 @@ - + - + @@ -6915,11 +6943,11 @@ - + - + @@ -8226,11 +8254,26 @@ - + + + + + + + CII-SR-450 + warning + + + + [CII-SR-450] - Only one buyer identifier should be present (either the ID or the Global ID) + + + + - + @@ -8697,11 +8740,26 @@ - + + + + + + + CII-SR-449 + warning + + + + [CII-SR-449] - Only one delivery to location identifier should be present (either the ID or the Global ID) + + + + - + @@ -9081,6 +9139,21 @@ + + + + CII-SR-451 + warning + + + + [CII-SR-451] - Only one payee identifier should be present (either the ID or the Global ID) + + + + + + @@ -9978,11 +10051,11 @@ - + - + @@ -10134,11 +10207,11 @@ - + - + @@ -10185,11 +10258,11 @@ - + - + @@ -10221,11 +10294,11 @@ - + - + @@ -10287,26 +10360,11 @@ - - - - - - - CII-DT-097 - fatal - - - - [CII-DT-097] - schemeVersionID should not be present - - - - + - + @@ -10353,11 +10411,11 @@ - + - + @@ -10389,11 +10447,11 @@ - + - + @@ -10440,18 +10498,84 @@ - + - + + + + + + + + + CII-DT-045 + warning + + + + [CII-DT-045] - @listID should not be present + + + + + + + + + + CII-DT-046 + warning + + + + [CII-DT-046] - @listAgencyID should not be present + + + + + + + + + + CII-DT-047 + warning + + + + [CII-DT-047] - @listVersionID should not be present + + + + + + + + + + CII-DT-048 + warning + + + + [CII-DT-048] - @listURI should not be present + + + + + + + + - + - + CII-DT-015 fatal @@ -10494,9 +10618,9 @@ - + - + CII-DT-018 fatal @@ -10539,9 +10663,9 @@ - + - + CII-DT-021 fatal @@ -10554,9 +10678,9 @@ - + - + CII-DT-022 fatal @@ -10584,9 +10708,9 @@ - + - + CII-DT-024 fatal @@ -10629,9 +10753,9 @@ - + - + CII-DT-027 fatal @@ -10686,11 +10810,11 @@ - + - + @@ -10722,11 +10846,11 @@ - + - + @@ -10788,11 +10912,11 @@ - + - + @@ -10917,66 +11041,6 @@ - - - - CII-DT-045 - warning - - - - [CII-DT-045] - @listID should not be present - - - - - - - - - - CII-DT-046 - warning - - - - [CII-DT-046] - @listAgencyID should not be present - - - - - - - - - - CII-DT-047 - warning - - - - [CII-DT-047] - @listVersionID should not be present - - - - - - - - - - CII-DT-048 - warning - - - - [CII-DT-048] - @listURI should not be present - - - - - - @@ -11022,9 +11086,9 @@ - + - + CII-DT-052 warning @@ -11037,9 +11101,9 @@ - + - + CII-DT-098 warning @@ -11274,11 +11338,11 @@ - + - + @@ -11490,11 +11554,11 @@ - + - + @@ -11706,18 +11770,18 @@ - + - - - + + + - + @@ -11726,7 +11790,7 @@ BR-CL-01 - warning + fatal @@ -11734,18 +11798,18 @@ - + - - + + - + - + BR-CL-03 fatal @@ -11755,18 +11819,18 @@ - + - + - + - + BR-CL-04 fatal @@ -11776,18 +11840,18 @@ - + - + - + - + BR-CL-05 fatal @@ -11797,11 +11861,11 @@ - + - + @@ -11818,18 +11882,18 @@ - + - + - + - + BR-CL-07 fatal @@ -11839,18 +11903,18 @@ - + - + - + - + BR-CL-08 fatal @@ -11860,18 +11924,18 @@ - + - - + + - + - + BR-CL-10 fatal @@ -11881,18 +11945,18 @@ - + - - + + - + - + BR-CL-11 fatal @@ -11902,18 +11966,18 @@ - + - - + + - + - + BR-CL-13 fatal @@ -11923,18 +11987,18 @@ - + - + - + - + BR-CL-14 fatal @@ -11944,18 +12008,18 @@ - + - + - + - + BR-CL-15 fatal @@ -11965,18 +12029,18 @@ - + - + - + - + BR-CL-16 fatal @@ -11986,18 +12050,18 @@ - + - + - + - + BR-CL-17 fatal @@ -12007,18 +12071,18 @@ - + - + - + - + BR-CL-18 fatal @@ -12028,39 +12092,39 @@ - + - - + + - + - + BR-CL-19 fatal - [BR-CL-19]-Coded allowance reasons MUST belong to the UNCL 4465 code list + [BR-CL-19]-Coded allowance reasons MUST belong to the UNCL 5189 code list - + - - + + - + - + BR-CL-20 fatal @@ -12070,18 +12134,18 @@ - + - - + + - + - + BR-CL-21 fatal @@ -12092,18 +12156,39 @@ - + - - + + - + - + + BR-CL-22 + fatal + + + + [BR-CL-22]-Tax exemption reason code identifier scheme identifier MUST belong to the CEF VATEX code list + + + + + + + + + + + + + + + BR-CL-23 fatal @@ -12113,18 +12198,18 @@ - + - - + + - + - + BR-CL-24 fatal @@ -12134,10 +12219,53 @@ - + - - - + + + + + + + + + + + BR-CL-25 + fatal + + + + [BR-CL-25]-Endpoint identifier scheme identifier MUST belong to the CEF EAS code list + + + + + + + + + + + + + + + + BR-CL-26 + fatal + + + + [BR-CL-26]-Delivery location identifier scheme identifier MUST belong to the ISO 6523 ICD + code list + + + + + + + +