diff --git a/History.md b/History.md
index 16a492f5..dc7128ab 100644
--- a/History.md
+++ b/History.md
@@ -1,7 +1,41 @@
-- 481
-- 494
-- 391
-- 491
+2.15.0
+=======
+2024-
+- 435 use invoiceimporter as common technical basis also for zugferdimporter
+- also import delivery address
+- 527 metrics may raise error on some pdf files
+- 517 read product GlobalID
+- 380 Added test for input stream validation
+- 518 corrently validate more XRechnung versions
+- make document charges and allowances serializable
+- 523 Verapdf claims PDF-A/3s created witth visualize are invalid
+- 530 duedate can not be set directly
+- 532 support validation warnings!
+- 534 new signature
+- 538 Mustang validator always claims PDF is invalid if flavour is PDF/A-3A
+- 555 be able to validate ubl credit notes
+- when parsing now distinguishing between the parseExceptions StructureException and ArithmetricException
+
+
+2.14.2
+=======
+2024-10-14
+
+- also parse BICs in InvoiceImporter not only IBANs
+- #509 CLI currently does not write a logfile
+- #505 crash after invoking ZUGFeRD2PullProvider
+- #506 Fix POM missing dependencies
+
+2.14.1
+=======
+2024-10-06
+
+- #481 also be able to convert XRechnung/UBL to PDF not only CII
+- #494 Quantity/Price Decimal Places
+- #391 Runden bei Negativwerten
+- #491/501 non terminating decimal expansion
+- upgraded en16931 cen schematron to 1.3.12
+- #499/500 PDF layout corrections
2.14.0
=======
diff --git a/Mustang-CLI/pom.xml b/Mustang-CLI/pom.xml
index 3ea82b7d..1c108da5 100644
--- a/Mustang-CLI/pom.xml
+++ b/Mustang-CLI/pom.xml
@@ -35,11 +35,30 @@
1.8.0
+
+
+
+ ch.qos.logback
+ logback-classic
+ 1.2.13
+
+
+ ch.qos.logback
+ logback-core
+ 1.2.13
+
+
+
+ org.codehaus.janino
+ janino
+ 3.1.7
+
org.slf4j
slf4j-simple
2.0.12
+
org.junit.jupiter
diff --git a/Mustang-CLI/src/test/java/org/mustangproject/commandline/CliIT.java b/Mustang-CLI/src/test/java/org/mustangproject/commandline/CliIT.java
index 73c35cd0..a6cf0bd9 100644
--- a/Mustang-CLI/src/test/java/org/mustangproject/commandline/CliIT.java
+++ b/Mustang-CLI/src/test/java/org/mustangproject/commandline/CliIT.java
@@ -1,8 +1,6 @@
package org.mustangproject.commandline;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
+import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -10,18 +8,43 @@ import java.nio.file.Paths;
import java.util.concurrent.TimeUnit;
import static org.junit.jupiter.api.Assertions.assertTrue;
+
import org.junit.jupiter.api.Test;
public class CliIT {
+ public static File getResourceAsFile(String resourcePath) {
+ try {
+ InputStream in = ClassLoader.getSystemClassLoader().getResourceAsStream(resourcePath);
+ if (in == null) {
+ return null;
+ }
+
+ File tempFile = File.createTempFile(String.valueOf(in.hashCode()), ".tmp");
+ tempFile.deleteOnExit();
+
+ try (FileOutputStream out = new FileOutputStream(tempFile)) {
+ // copy stream
+ byte[] buffer = new byte[1024];
+ int bytesRead;
+ while ((bytesRead = in.read(buffer)) != -1) {
+ out.write(buffer, 0, bytesRead);
+ }
+ }
+ return tempFile;
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
@Test
public void testCii2Ubl() throws Exception {
Path output = Paths.get("target/ubl.xml");
Files.deleteIfExists(output);
Path jar = Files.newDirectoryStream(Paths.get("target"), "Mustang-CLI-*.jar").iterator().next();
ProcessBuilder pb = new ProcessBuilder("java", "-jar", jar.toString(),
- "--action", "ubl", "--source", "src/test/resources/cii.xml", "--out",
- output.toString());
+ "--action", "ubl", "--source", "src/test/resources/cii.xml", "--out",
+ output.toString());
pb.redirectErrorStream(true);
Process process = pb.start();
String result = getOutput(process);
@@ -43,4 +66,17 @@ public class CliIT {
return builder.toString();
}
+ @Test
+ public void testMetric() {
+ StatRun sr = new StatRun();
+ File tempFile = getResourceAsFile("corrupt-factur-x-waytoosmall.pdf");
+
+ FileChecker fc = new FileChecker(tempFile.getAbsolutePath(), sr);
+
+ fc.checkForZUGFeRD();
+ System.out.print(fc.getOutputLine());
+
+
+ }
+
}
diff --git a/Mustang-CLI/src/test/resources/corrupt-factur-x-waytoosmall.pdf b/Mustang-CLI/src/test/resources/corrupt-factur-x-waytoosmall.pdf
new file mode 100644
index 00000000..672888d1
--- /dev/null
+++ b/Mustang-CLI/src/test/resources/corrupt-factur-x-waytoosmall.pdf
@@ -0,0 +1,2 @@
+%PDF-1.4
+%ª«¬
diff --git a/library/pom.xml b/library/pom.xml
index ccdde504..a6e875df 100644
--- a/library/pom.xml
+++ b/library/pom.xml
@@ -64,7 +64,8 @@
net.sf.saxon
Saxon-HE
12.4
-
+
+
com.fasterxml.jackson.core
jackson-databind
@@ -74,7 +75,7 @@
org.apache.xmlgraphics
fop
- 2.9
+ 2.10
xml-apis
@@ -82,18 +83,24 @@
-
+
jakarta.xml.bind
jakarta.xml.bind-api
4.0.2
-
+
+
+ org.glassfish.jaxb
+ jaxb-runtime
+ 4.0.5
+
+
org.eclipse.angus
angus-activation
2.0.2
-
+
org.apache.pdfbox
preflight
@@ -104,11 +111,20 @@
pdfbox
3.0.2
+
org.dom4j
dom4j
2.1.4
+
+
+ com.helger
+ en16931-cii2ubl
+ 2.2.4
+
+
+
org.junit.jupiter
junit-jupiter-api
@@ -121,27 +137,12 @@
5.10.2
test
-
-
-
- com.helger
- en16931-cii2ubl
- 2.2.4
-
-
-
- org.glassfish.jaxb
- jaxb-runtime
- 4.0.5
-
-
org.xmlunit
xmlunit-core
2.10.0
test
-
org.xmlunit
xmlunit-assertj
@@ -232,11 +233,9 @@
maven-shade-plugin
3.5.3
- true
- false
-
+ true
+ false
-
*:*
@@ -245,18 +244,6 @@
META-INF/*.RSA
-
- log4j:log4j
-
- **
-
-
-
- commons-logging:commons-logging
-
- **
-
-
@@ -265,15 +252,6 @@
shade
-
-
-
-
-
-
-
diff --git a/library/src/main/java/org/mustangproject/Allowance.java b/library/src/main/java/org/mustangproject/Allowance.java
index df117e2b..9c26d02e 100644
--- a/library/src/main/java/org/mustangproject/Allowance.java
+++ b/library/src/main/java/org/mustangproject/Allowance.java
@@ -1,5 +1,7 @@
package org.mustangproject;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
import java.math.BigDecimal;
/***
@@ -28,6 +30,7 @@ public class Allowance extends Charge {
* @return false since its not supposed to be calculated negatively
*/
@Override
+ @JsonIgnore
public boolean isCharge() {
return false;
}
diff --git a/library/src/main/java/org/mustangproject/CalculatedInvoice.java b/library/src/main/java/org/mustangproject/CalculatedInvoice.java
new file mode 100644
index 00000000..729d0f9b
--- /dev/null
+++ b/library/src/main/java/org/mustangproject/CalculatedInvoice.java
@@ -0,0 +1,30 @@
+// Copyright (c) 2023 Jochen Stärk, see LICENSE file
+package org.mustangproject;
+
+
+import org.mustangproject.ZUGFeRD.TransactionCalculator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+public class CalculatedInvoice extends Invoice implements Serializable {
+
+ protected BigDecimal grandTotal=null;
+
+ public void calculate() {
+ TransactionCalculator tc=new TransactionCalculator(this);
+ grandTotal=tc.getGrandTotal();
+ }
+ public BigDecimal getGrandTotal() {
+ if (grandTotal==null) {
+ calculate();
+ }
+ return grandTotal;
+ }
+ public CalculatedInvoice setGrandTotal(BigDecimal grand) {
+ grandTotal=grand;
+ return this;
+ }
+}
diff --git a/library/src/main/java/org/mustangproject/Charge.java b/library/src/main/java/org/mustangproject/Charge.java
index a16f5e66..0e081397 100644
--- a/library/src/main/java/org/mustangproject/Charge.java
+++ b/library/src/main/java/org/mustangproject/Charge.java
@@ -1,5 +1,6 @@
package org.mustangproject;
+import com.fasterxml.jackson.annotation.JsonIgnore;
import org.mustangproject.ZUGFeRD.IAbsoluteValueProvider;
import org.mustangproject.ZUGFeRD.IZUGFeRDAllowanceCharge;
@@ -151,6 +152,7 @@ public class Charge implements IZUGFeRDAllowanceCharge {
* @return true since it is supposed to be calculated negatively
*/
@Override
+ @JsonIgnore
public boolean isCharge() {
return true;
}
diff --git a/library/src/main/java/org/mustangproject/Exceptions/ArithmetricException.java b/library/src/main/java/org/mustangproject/Exceptions/ArithmetricException.java
new file mode 100644
index 00000000..de063e81
--- /dev/null
+++ b/library/src/main/java/org/mustangproject/Exceptions/ArithmetricException.java
@@ -0,0 +1,13 @@
+package org.mustangproject.Exceptions;
+
+import java.text.ParseException;
+
+/***
+ * will be thrown if a invoice cant be reproduced numerically
+ */
+public class ArithmetricException extends ParseException {
+ public ArithmetricException() {
+ super(
+ "Could not reproduce the invoice, this could mean that it could not be read properly", 0);
+ }
+}
diff --git a/library/src/main/java/org/mustangproject/Exceptions/StructureException.java b/library/src/main/java/org/mustangproject/Exceptions/StructureException.java
new file mode 100644
index 00000000..1859da7a
--- /dev/null
+++ b/library/src/main/java/org/mustangproject/Exceptions/StructureException.java
@@ -0,0 +1,12 @@
+package org.mustangproject.Exceptions;
+
+import java.text.ParseException;
+
+/***
+ * will be thrown if a invoice cant be read
+ */
+public class StructureException extends ParseException {
+ public StructureException(String message, int line) {
+ super(message, line);
+ }
+}
diff --git a/library/src/main/java/org/mustangproject/Invoice.java b/library/src/main/java/org/mustangproject/Invoice.java
index 8461e977..346c5f43 100644
--- a/library/src/main/java/org/mustangproject/Invoice.java
+++ b/library/src/main/java/org/mustangproject/Invoice.java
@@ -26,6 +26,7 @@ import java.util.Collection;
import java.util.Date;
import java.util.List;
+import com.fasterxml.jackson.annotation.JsonInclude;
import org.mustangproject.ZUGFeRD.*;
import org.mustangproject.ZUGFeRD.model.DocumentCodeTypeConstants;
@@ -37,6 +38,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
* @see IExportableTransaction if you want to implement an interface instead
*/
@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Invoice implements IExportableTransaction {
protected String documentName = null, documentCode = null, number = null, ownOrganisationFullPlaintextInfo = null, referenceNumber = null, shipToOrganisationID = null, shipToOrganisationName = null, shipToStreet = null, shipToZIP = null, shipToLocation = null, shipToCountry = null, buyerOrderReferencedDocumentID = null, invoiceReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null;
@@ -520,6 +522,20 @@ public class Invoice implements IExportableTransaction {
}
}
+ /***
+ * this is wrong and only used from jackson
+ * @param iza
+ * @return
+ */
+ public Invoice setZFAllowances(Allowance[] iza) {
+ Allowances=new ArrayList<>();
+
+ for (IZUGFeRDAllowanceCharge cz:iza) {
+ Allowances.add(cz);
+ }
+ return this;
+ }
+
@Override
public IZUGFeRDAllowanceCharge[] getZFCharges() {
@@ -530,6 +546,18 @@ public class Invoice implements IExportableTransaction {
}
}
+ /***
+ * this is wrong and only used from jackson
+ * @param iza
+ * @return
+ */
+ public Invoice setZFCharges(Charge[] iza) {
+ Charges=new ArrayList<>();
+ for (IZUGFeRDAllowanceCharge cz:iza) {
+ Charges.add(cz);
+ }
+ return this;
+ }
@Override
public IZUGFeRDAllowanceCharge[] getZFLogisticsServiceCharges() {
diff --git a/library/src/main/java/org/mustangproject/Item.java b/library/src/main/java/org/mustangproject/Item.java
index 9f568a6d..d726ed08 100644
--- a/library/src/main/java/org/mustangproject/Item.java
+++ b/library/src/main/java/org/mustangproject/Item.java
@@ -1,6 +1,7 @@
package org.mustangproject;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
import org.mustangproject.ZUGFeRD.IReferencedDocument;
import org.mustangproject.ZUGFeRD.IZUGFeRDAllowanceCharge;
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableItem;
@@ -18,6 +19,7 @@ import java.util.Date;
*/
@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Item implements IZUGFeRDExportableItem {
protected BigDecimal price = BigDecimal.ZERO;
protected BigDecimal quantity;
@@ -314,7 +316,7 @@ public class Item implements IZUGFeRDExportableItem {
/***
- * adds item level references along with their typecodes and issuerassignedIDs (contract ID, cost centre, ...)
+ * adds item level references along with their typecodes and issuerassignedIDs (contract ID, cost centre, ...)
* @param doc the ReferencedDocument to add
* @return fluent setter
*/
@@ -333,8 +335,8 @@ public class Item implements IZUGFeRDExportableItem {
}
return additionalReference.toArray(new IReferencedDocument[0]);
}
-
-
+
+
/***
* specify a item level delivery period
* (apart from the document level delivery period, and the document level
diff --git a/library/src/main/java/org/mustangproject/Product.java b/library/src/main/java/org/mustangproject/Product.java
index 1da0292e..1263d593 100644
--- a/library/src/main/java/org/mustangproject/Product.java
+++ b/library/src/main/java/org/mustangproject/Product.java
@@ -1,6 +1,7 @@
package org.mustangproject;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
import org.mustangproject.ZUGFeRD.IDesignatedProductClassification;
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableProduct;
import org.mustangproject.util.NodeMap;
@@ -17,6 +18,8 @@ import java.util.Map;
* describes a product, good or service used in an invoice item line
*/
@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+
public class Product implements IZUGFeRDExportableProduct {
protected String unit, name, sellerAssignedID, buyerAssignedID;
protected String description="";
diff --git a/library/src/main/java/org/mustangproject/TradeParty.java b/library/src/main/java/org/mustangproject/TradeParty.java
index 46a457c5..871a0e82 100644
--- a/library/src/main/java/org/mustangproject/TradeParty.java
+++ b/library/src/main/java/org/mustangproject/TradeParty.java
@@ -5,6 +5,7 @@ import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import com.fasterxml.jackson.annotation.JsonInclude;
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableContact;
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableTradeParty;
import org.mustangproject.ZUGFeRD.IZUGFeRDLegalOrganisation;
@@ -19,9 +20,10 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
* A organisation, i.e. usually a company
*/
@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class TradeParty implements IZUGFeRDExportableTradeParty {
- protected String name, zip, street, location, country;
+ protected String name, zip, street, location, country, taxScheme;
protected String taxID = null, vatID = null;
protected String ID = null;
protected String description = null;
@@ -89,21 +91,46 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
}
}
- if (currentTopElementName.equals("PartyIdentification")) {
+ if (currentTopElementName.equals("PartyTaxScheme")) {
+ NodeList partyTaxScheme = party.item(partyIndex).getChildNodes();
+ for (int partyTaxSchemeIndex = 0; partyTaxSchemeIndex < partyTaxScheme.getLength(); partyTaxSchemeIndex++) {
+ if (partyTaxScheme.item(partyTaxSchemeIndex).getLocalName() != null) {
+ if (partyTaxScheme.item(partyTaxSchemeIndex).getLocalName().equals("CompanyID")) {
+ setTaxID(partyTaxScheme.item(partyTaxSchemeIndex).getTextContent());
- NodeList partyName = party.item(partyIndex).getChildNodes();
- for (int partyNameIndex = 0; partyNameIndex < partyName.getLength(); partyNameIndex++) {
- if (partyName.item(partyNameIndex).getLocalName() != null) {
- if (partyName.item(partyNameIndex).getLocalName().equals("ID")) {
- setID(partyName.item(partyNameIndex).getTextContent());
}
-
}
- }
+ }
}
- // UBL only: formally it can have a name as well but BT27 party name *should* be stored in
- // so overwrite if one exists
+
+// if (currentTopElementName.equals("PartyTaxScheme")) {
+// NodeList partyTaxScheme = party.item(partyIndex).getChildNodes();
+// for (int partyTaxSchemeIndex = 0; partyTaxSchemeIndex < partyTaxScheme.getLength(); partyTaxSchemeIndex++) {
+// if (partyTaxScheme.item(partyTaxSchemeIndex).getLocalName() != null) {
+// if (partyTaxScheme.item(partyTaxSchemeIndex).getLocalName().equals("TaxScheme")) {
+// NodeList taxScheme = partyTaxScheme.item(partyTaxSchemeIndex).getChildNodes();
+// for (int taxSchemeIndex = 0 ; taxSchemeIndex < taxScheme.getLength(); taxSchemeIndex++) {
+// if (taxScheme.item(taxSchemeIndex).getLocalName() != null) {
+// if(taxScheme.item(taxSchemeIndex).getLocalName().equals("ID")){
+// if (partyTaxScheme.item(partyTaxSchemeIndex).getLocalName().equals("CompanyID")) {
+// setTaxID(partyTaxScheme.item(partyTaxSchemeIndex).getTextContent());
+// } else {
+// setVATID(partyTaxScheme.item(partyTaxSchemeIndex).getTextContent());
+// }
+// }
+// }
+// }
+// }
+//
+// }
+// }
+// }
+ /*
+ UBL only: formally it can have a name as well but BT27 party name *should* be stored in
+ so overwrite if one exists
+ */
+
if (currentTopElementName.equals("PartyLegalEntity")) {
NodeList legal = party.item(partyIndex).getChildNodes();
for (int legalChildIndex = 0; legalChildIndex < legal.getLength(); legalChildIndex++) {
@@ -111,6 +138,9 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
if (legal.item(legalChildIndex).getLocalName().equals("RegistrationName")) {
setName(legal.item(legalChildIndex).getTextContent());
}
+ if (legal.item(legalChildIndex).getLocalName().equals("CompanyLegalForm")) {
+ setDescription(legal.item(legalChildIndex).getTextContent());
+ }
}
}
}
@@ -223,26 +253,27 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
}
- if (currentUBLChild.equals("SpecifiedTaxRegistration")) {
+ if (currentUBLChild.equals("PartyTaxScheme")) {
NodeList taxChilds = nodes.item(nodeIndex).getChildNodes();
for (int taxChildIndex = 0; taxChildIndex < taxChilds.getLength(); taxChildIndex++) {
if (taxChilds.item(taxChildIndex).getLocalName() != null) {
- if ((taxChilds.item(taxChildIndex).getLocalName().equals("ID"))) {
- if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("schemeID") != null) {
- Node firstChild = taxChilds.item(taxChildIndex).getFirstChild();
- if (firstChild != null) {
- if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("schemeID").getNodeValue().equals("VA")) {
- setVATID(firstChild.getNodeValue());
+ if ((taxChilds.item(taxChildIndex).getLocalName().equals("TaxScheme"))) {
+ if (taxChilds.item(taxChildIndex).getLocalName().equals("CompanyID")) {
+ if (taxChilds.item(taxChildIndex).getLocalName().equals("ID")) {
+ if (taxChilds.item(taxChildIndex).getLocalName().equals("CompanyID")) {
+ setVATID(taxChilds.item(taxChildIndex).getTextContent());
}
- if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("schemeID").getNodeValue().equals("FC")) {
- setTaxID(firstChild.getNodeValue());
+// setTaxID(partyTaxScheme.item(partyTaxSchemeIndex).getTextContent());
+ if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("ID").getNodeValue().equals("FC")) {
+ if (taxChilds.item(taxChildIndex).getLocalName().equals("CompanyID")) {
+ setTaxID(taxChilds.item(taxChildIndex).getTextContent());
+ }
}
}
}
}
}
}
-
}
}
}
@@ -324,7 +355,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
NodeList itemChilds = currentItemNode.getChildNodes();
for (int itemChildIndex = 0; itemChildIndex < itemChilds.getLength(); itemChildIndex++) {
if (itemChilds.item(itemChildIndex).getLocalName() != null) {
- if (itemChilds.item(itemChildIndex).getLocalName().equals("GlobalID")) {
+ if (itemChilds.item(itemChildIndex).getLocalName().equals("ID")) {
setID(itemChilds.item(itemChildIndex).getTextContent());
}
if (itemChilds.item(itemChildIndex).getLocalName().equals("Name")) {
@@ -513,6 +544,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
return this;
}
+
/**
* (optional)
*
@@ -524,6 +556,14 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
return this;
}
+ /**
+ * primarily for invoiceimporter and JSON
+ * @return the list of sepa mandates
+ */
+ public List getDebitDetails() {
+ return debitDetails;
+ }
+
@Override
public IZUGFeRDLegalOrganisation getLegalOrganisation() {
return legalOrg;
@@ -660,7 +700,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
@Override
public String getCountry() {
- return country;
+ return taxScheme;
}
/***
@@ -669,7 +709,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
* @return fluent setter
*/
public TradeParty setCountry(String country) {
- this.country = country;
+ this.taxScheme = country;
return this;
}
@@ -683,6 +723,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
return contact;
}
+ @JsonIgnore
public IZUGFeRDTradeSettlement[] getAsTradeSettlement() {
if (bankDetails.isEmpty() && debitDetails.isEmpty()) {
return null;
diff --git a/library/src/main/java/org/mustangproject/XMLTools.java b/library/src/main/java/org/mustangproject/XMLTools.java
index 8ee9fe5a..dbccd4b0 100644
--- a/library/src/main/java/org/mustangproject/XMLTools.java
+++ b/library/src/main/java/org/mustangproject/XMLTools.java
@@ -4,9 +4,13 @@ import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import org.apache.commons.io.IOUtils;
import org.dom4j.io.XMLWriter;
+import org.mustangproject.ZUGFeRD.ZUGFeRDDateFormat;
+import org.w3c.dom.Node;
public class XMLTools extends XMLWriter {
@Override
@@ -21,7 +25,7 @@ public class XMLTools extends XMLWriter {
public static String nDigitFormat(BigDecimal value, int scale) {
/*
- * I needed 123,45, locale independent.I tried
+ * I needed 123.45, locale independent.I tried
* NumberFormat.getCurrencyInstance().format( 12345.6789 ); but that is locale
* specific.I also tried DecimalFormat df = new DecimalFormat( "0,00" );
* df.setDecimalSeparatorAlwaysShown(true); df.setGroupingUsed(false);
@@ -39,6 +43,105 @@ public class XMLTools extends XMLWriter {
}
+ /**
+ * returns the value of an node
+ *
+ * @param node the Node to get the value from
+ * @return A String or empty String, if no value was found
+ */
+ public static String getNodeValue(Node node) {
+ if (node != null && node.getFirstChild() != null) {
+ return node.getFirstChild().getNodeValue();
+ }
+ return "";
+ }
+
+
+ /**
+ * tries to convert a String to BigDecimal.
+ *
+ * @param nodeValue The value as String
+ * @return a BigDecimal with the value provides as String or a BigDecimal with value 0.00 if an error occurs
+ */
+ public static BigDecimal tryBigDecimal(String nodeValue) {
+ try {
+ return new BigDecimal(nodeValue);
+ } catch (final Exception e) {
+ try {
+ return BigDecimal.valueOf(Float.valueOf(nodeValue));
+ } catch (final Exception ex) {
+ return new BigDecimal("0.00");
+ }
+ }
+ }
+
+
+ /**
+ * tries to convert a Node to a BigDecimal.
+ *
+ * @param node The value as String
+ * @return a BigDecimal with the value provides as String or a BigDecimal with value 0.00 if an error occurs
+ */
+ public static BigDecimal tryBigDecimal(Node node) {
+ final String nodeValue = XMLTools.getNodeValue(node);
+ if (nodeValue.isEmpty()) {
+ return null;
+ }
+ return XMLTools.tryBigDecimal(nodeValue);
+ }
+ /***
+ * formats a number so that at least minDecimals are displayed but at the maximum maxDecimals are there, i.e.
+ * cuts potential 0s off the end until minDecimals
+ * @param value
+ * @param maxDecimals number of maximal scale
+ * @param minDecimals number of minimal scale
+ * @return value as String with decimals in the specified range
+ */
+ public static String nDigitFormatDecimalRange(BigDecimal value, int maxDecimals, int minDecimals) {
+ if ((maxDecimalsminDecimals) && (value.setScale(curDecimals, RoundingMode.HALF_UP).compareTo(value.setScale(curDecimals-1, RoundingMode.HALF_UP))==0)) {
+ curDecimals--;
+ }
+ return value.setScale(curDecimals, RoundingMode.HALF_UP).toPlainString();
+
+ }
+
+
+ /***
+ * returns a util.Date from a 102 String yyyymmdd in a node
+ * @param node the node
+ * @return a util.Date, or null, if not parseable
+ */
+ public static Date tryDate(Node node) {
+ final String nodeValue = XMLTools.getNodeValue(node);
+ if (nodeValue.isEmpty()) {
+ return null;
+ }
+ return tryDate(nodeValue);
+ }
+
+ /***
+ * returns a util.Date from a 102 String yyyymmdd
+ * @param toParse the string
+ * @return a util.Date, or null, if not parseable
+ */
+ public static Date tryDate(String toParse) {
+ final SimpleDateFormat formatter = ZUGFeRDDateFormat.DATE.getFormatter();
+ try {
+ return formatter.parse(toParse);
+ } catch (final Exception e) {
+ return null;
+ }
+ }
+
+ /***
+ * relplaces some entities like < , > and & with their escaped pendant like <
+ * @param s the string
+ * @return the "safe" string
+ */
public static String encodeXML(CharSequence s) {
if (s == null) {
return "";
@@ -111,4 +214,16 @@ public class XMLTools extends XMLWriter {
return IOUtils.toByteArray (fileinput);
}
+
+ public static String trimOrNull(Node node) {
+ if (node != null) {
+ String textContent = node.getTextContent();
+ if (textContent != null) {
+ return textContent.trim();
+ }
+ }
+ return null;
+ }
+
+
}
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java b/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java
index 3dbe1091..f3e8aa2d 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java
@@ -34,13 +34,17 @@ public class LineCalculator {
}
}
- BigDecimal vatPercent = currentItem.getProduct().getVATPercent();
- if (vatPercent == null)
+ BigDecimal vatPercent = null;
+ if (currentItem.getProduct()!=null) {
+ vatPercent = currentItem.getProduct().getVATPercent();
+ }
+ if (vatPercent == null) {
vatPercent = BigDecimal.ZERO;
+ }
BigDecimal multiplicator = vatPercent.divide(BigDecimal.valueOf(100));
priceGross = currentItem.getPrice(); // see https://github.com/ZUGFeRD/mustangproject/issues/159
price = priceGross.subtract(allowance).add(charge);
- itemTotalNetAmount = currentItem.getQuantity().multiply(getPrice()).divide(currentItem.getBasisQuantity(), RoundingMode.HALF_UP)
+ itemTotalNetAmount = currentItem.getQuantity().multiply(getPrice()).divide(currentItem.getBasisQuantity(), 18, RoundingMode.HALF_UP)
.subtract(allowanceItemTotal).setScale(2, RoundingMode.HALF_UP);
itemTotalVATAmount = itemTotalNetAmount.multiply(multiplicator);
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
index c7557f9f..03ed3099 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
@@ -76,11 +76,13 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
}
protected String priceFormat(BigDecimal value) {
- return XMLTools.nDigitFormat(value, 18);
+ // 18 decimals are max for price and qty due to xml restrictions,
+ // see Chapter 3.2.3 of https://www.w3.org/TR/xmlschema-2/
+ return XMLTools.nDigitFormatDecimalRange(value, 18, 4);
}
protected String quantityFormat(BigDecimal value) {
- return XMLTools.nDigitFormat(value, 18);
+ return XMLTools.nDigitFormatDecimalRange(value, 18, 4);
}
@Override
@@ -332,7 +334,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
this.trans = trans;
this.calc = new TransactionCalculator(trans);
- boolean hasDueDate = false;
+ boolean hasDueDate = trans.getDueDate()!=null;
final SimpleDateFormat germanDateFormat = new SimpleDateFormat("dd.MM.yyyy");
String exemptionReason = "";
@@ -816,7 +818,6 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
}
}
-
if ((trans.getPaymentTerms() == null) && (getProfile() != Profiles.getByName("Minimum")) && ((paymentTermsDescription != null) || (trans.getTradeSettlement() != null) || (hasDueDate))) {
xml += "";
@@ -832,7 +833,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
}
}
- if (hasDueDate && (trans.getDueDate() != null)) {
+ if (trans.getDueDate() != null) {
xml += "" // $NON-NLS-2$
+ DATE.udtFormat(trans.getDueDate())
+ "";// 20130704
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
index 4016e2a1..cebeb824 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java
@@ -13,92 +13,34 @@ package org.mustangproject.ZUGFeRD;
* @version 1.1.0
* @author jstaerk
*/
-
import java.io.*;
-import java.math.BigDecimal;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
import java.text.SimpleDateFormat;
import java.util.*;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
-import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
-import org.apache.commons.io.IOUtils;
-import org.apache.pdfbox.Loader;
-import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
-import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
-import org.apache.pdfbox.pdmodel.common.PDNameTreeNode;
-import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
-import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
import org.mustangproject.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-public class ZUGFeRDImporter {
+public class ZUGFeRDImporter extends ZUGFeRDInvoiceImporter {
private static final Logger LOGGER = LoggerFactory.getLogger(ZUGFeRDImporter.class);
- /**
- * if metadata has been found
- */
- protected boolean containsMeta = false;
- /**
- * map filenames of additional XML files to their contents
- */
- private final HashMap additionalXMLs = new HashMap<>();
- /**
- * map filenames of all embedded files in the respective PDF
- */
- private final ArrayList PDFAttachments = new ArrayList<>();
- /**
- * Raw XML form of the extracted data - may be directly obtained.
- */
- private byte[] rawXML = null;
- /**
- * XMP metadata
- */
- private String xmpString = null; // XMP metadata
- /**
- * parsed Document
- */
- private Document document;
- private Integer version;
-
-
- protected ZUGFeRDImporter() {
- //constructor for extending classes
+ public ZUGFeRDImporter() {
+ super();
}
- public ZUGFeRDImporter(String pdfFilename) {
- try (InputStream bis = Files.newInputStream(Paths.get(pdfFilename), StandardOpenOption.READ)) {
- extractLowLevel(bis);
- } catch (final IOException e) {
- LOGGER.error("Failed to extract ZUGFeRD data", e);
- throw new ZUGFeRDExportException(e);
- }
+ public ZUGFeRDImporter(String filename) {
+ super(filename);
}
-
- public ZUGFeRDImporter(InputStream pdfStream) {
- try {
- extractLowLevel(pdfStream);
- } catch (final IOException e) {
- LOGGER.error("Failed to extract ZUGFeRD data", e);
- throw new ZUGFeRDExportException(e);
- }
+ public ZUGFeRDImporter(InputStream stream) {
+ super(stream);
}
@@ -113,169 +55,21 @@ public class ZUGFeRDImporter {
- /**
- * Extracts a ZUGFeRD invoice from a PDF document represented by an input stream. Errors are reported via exception handling.
- *
- * @param inStream a inputstream of a pdf file
- */
- private void extractLowLevel(InputStream inStream) throws IOException {
- BufferedInputStream pdfStream = new BufferedInputStream(inStream);
- byte[] pad = new byte[4];
- pdfStream.mark(0);
- pdfStream.read(pad);
- pdfStream.reset();
- byte[] pdfSignature = {'%', 'P', 'D', 'F'};
- if (Arrays.equals(pad, pdfSignature)) { // we have a pdf
-
-
- try (PDDocument doc = Loader.loadPDF(IOUtils.toByteArray(pdfStream))) {
- // PDDocumentInformation info = doc.getDocumentInformation();
- final PDDocumentNameDictionary names = new PDDocumentNameDictionary(doc.getDocumentCatalog());
- //start
-
- if (doc.getDocumentCatalog() == null || doc.getDocumentCatalog().getMetadata() == null) {
- LOGGER.info("no-xmlpart");
- return;
- }
-
- final InputStream XMP = doc.getDocumentCatalog().getMetadata().exportXMPMetadata();
- xmpString = convertStreamToString(XMP);
-
- final PDEmbeddedFilesNameTreeNode etn = names.getEmbeddedFiles();
- if (etn == null) {
- return;
- }
-
- final Map efMap = etn.getNames();
- // String filePath = "/tmp/";
-
- if (efMap != null) {
- extractFiles(efMap); // see
- // https://memorynotfound.com/apache-pdfbox-extract-embedded-file-pdf-document/
- } else {
-
- final List> kids = etn.getKids();
- if (kids == null) {
- return;
- }
- for (final PDNameTreeNode node : kids) {
- final Map namesL = node.getNames();
- extractFiles(namesL);
- }
- }
- }
- } else {
- // no PDF probably XML
- containsMeta = true;
- setRawXML(XMLTools.getBytesFromStream(pdfStream));
-
- }
- }
-
-
- private void extractFiles(Map names) throws IOException {
- for (final String alias : names.keySet()) {
-
- final PDComplexFileSpecification fileSpec = names.get(alias);
- final String filename = fileSpec.getFilename();
- /**
- * filenames for invoice data (ZUGFeRD v1 and v2, Factur-X)
- */
-
- final PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile();
- if ((filename.equals("ZUGFeRD-invoice.xml") || (filename.equals("zugferd-invoice.xml")) || filename.equals("factur-x.xml")) || filename.equals("xrechnung.xml") || filename.equals("order-x.xml") || filename.equals("cida.xml")) {
- containsMeta = true;
-
- // String embeddedFilename = filePath + filename;
- // File file = new File(filePath + filename);
- // System.out.println("Writing " + embeddedFilename);
- // ByteArrayOutputStream fileBytes=new
- // ByteArrayOutputStream();
- // FileOutputStream fos = new FileOutputStream(file);
-
- setRawXML(embeddedFile.toByteArray());
-
- // fos.write(embeddedFile.getByteArray());
- // fos.close();
- }
- if (filename.startsWith("additional_data")) {
- additionalXMLs.put(filename, embeddedFile.toByteArray());
- }
- PDFAttachments.add(new FileAttachment(filename, embeddedFile.getSubtype(), "Data", embeddedFile.toByteArray()));
- }
- }
-
-
- protected Document getDocument() {
- return document;
- }
-
-
- private void setDocument() throws ParserConfigurationException, IOException, SAXException {
- final DocumentBuilderFactory xmlFact = DocumentBuilderFactory.newInstance();
- xmlFact.setNamespaceAware(true);
- final DocumentBuilder builder = xmlFact.newDocumentBuilder();
- final ByteArrayInputStream is = new ByteArrayInputStream(rawXML);
- /// is.skip(guessBOMSize(is));
- document = builder.parse(is);
- }
-
-
- public void setRawXML(byte[] rawXML) throws IOException {
- this.containsMeta = true;
- this.rawXML = rawXML;
- this.version = null;
- try {
- setDocument();
- } catch (ParserConfigurationException | SAXException e) {
- LOGGER.error("Failed to parse XML", e);
- throw new ZUGFeRDExportException(e);
- }
- }
-
-
- protected String extractString(String xpathStr) {
- if (!containsMeta) {
- throw new ZUGFeRDExportException("No suitable data/ZUGFeRD file could be found.");
- }
- final String result;
- try {
- final Document document = getDocument();
- final XPathFactory xpathFact = XPathFactory.newInstance();
- final XPath xpath = xpathFact.newXPath();
- result = xpath.evaluate(xpathStr, document);
- } catch (final XPathExpressionException e) {
- LOGGER.error("Failed to evaluate XPath", e);
- throw new ZUGFeRDExportException(e);
- }
- return result;
- }
-
- /***
- * Wrapper for protected method extractString
- * @param xpathStr the xpath expression to be evaluated
- * @return the extracted String for the specific path in the document
- */
- public String wExtractString(String xpathStr) {
- return extractString(xpathStr);
- }
-
+ ////////////////////////////////////
/**
* @return the reference (purpose) the sender specified for this invoice
*/
public String getForeignReference() {
- String result = extractString("//*[local-name() = 'ApplicableHeaderTradeSettlement']/*[local-name() = 'PaymentReference']");
- if (result == null || result.isEmpty()) {
- result = extractString("//*[local-name() = 'ApplicableSupplyChainTradeSettlement']/*[local-name() = 'PaymentReference']");
- }
- return result;
+
+ return importedInvoice.getNumber();
}
/**
* @return the ZUGFeRD Profile
*/
public String getZUGFeRDProfil() {
+
String guideline = extractString("//*[local-name() = 'GuidelineSpecifiedDocumentContextParameter']//*[local-name() = 'ID']");
if (guideline.contains("xrechnung")) {
return "XRECHNUNG";
@@ -299,21 +93,6 @@ public class ZUGFeRDImporter {
}
}
- /**
- * @return the Invoice Currency Code
- */
- public String getInvoiceCurrencyCode() {
- try {
- if (getVersion() == 1) {
- return extractString("//*[local-name() = 'ApplicableSupplyChainTradeSettlement']//*[local-name() = 'InvoiceCurrencyCode']");
- } else {
- return extractString("//*[local-name() = 'ApplicableHeaderTradeSettlement']//*[local-name() = 'InvoiceCurrencyCode']");
- }
- } catch (final Exception e) {
- // Exception was already logged
- return "";
- }
- }
/**
* @return the IssuerAssigned ID
@@ -336,57 +115,6 @@ public class ZUGFeRDImporter {
return extractIssuerAssignedID("ContractReferencedDocument");
}
- private String extractIssuerAssignedID(String propertyName) {
- try {
- if (getVersion() == 1) {
- return extractString("//*[local-name() = '" + propertyName + "']//*[local-name() = 'ID']");
- } else {
- return extractString("//*[local-name() = '" + propertyName + "']//*[local-name() = 'IssuerAssignedID']");
- }
- } catch (final Exception e) {
- // Exception was already logged
- return "";
- }
- }
-
- /**
- * @return the BuyerTradeParty ID
- */
- public String getBuyerTradePartyID() {
- return extractString("//*[local-name() = 'BuyerTradeParty']//*[local-name() = 'ID']");
- }
-
- /**
- * @return the Issue Date()
- */
- public String getIssueDate() {
- try {
- if (getVersion() == 1) {
- return extractString("//*[local-name() = 'HeaderExchangedDocument']//*[local-name() = 'IssueDateTime']//*[local-name() = 'DateTimeString']");
- } else {
- return extractString("//*[local-name() = 'ExchangedDocument']//*[local-name() = 'IssueDateTime']//*[local-name() = 'DateTimeString']");
- }
- } catch (final Exception e) {
- // Exception was already logged
- return "";
- }
- }
-
- public Date getDetailedDeliveryPeriodFrom() {
- final String toParse = extractString(
- "//*[local-name() = 'ApplicableHeaderTradeSettlement']" +
- "//*[local-name() = 'BillingSpecifiedPeriod']" +
- "//*[local-name() = 'StartDateTime']//*[local-name() = 'DateTimeString']");
- return tryDate(toParse);
- }
-
- public Date getDetailedDeliveryPeriodTo() {
- final String toParse = extractString(
- "//*[local-name() = 'ApplicableHeaderTradeSettlement']" +
- "//*[local-name() = 'BillingSpecifiedPeriod']" +
- "//*[local-name() = 'EndDateTime']//*[local-name() = 'DateTimeString']");
- return tryDate(toParse);
- }
/**
* @return the TaxBasisTotalAmount
@@ -470,7 +198,16 @@ public class ZUGFeRDImporter {
* @return the BuyerTradeParty SpecifiedTaxRegistration ID
*/
public String getBuyertradePartySpecifiedTaxRegistrationID() {
- return extractString("//*[local-name() = 'BuyerTradeParty']//*[local-name() = 'SpecifiedTaxRegistration']//*[local-name() = 'ID']");
+ String id = null;
+ if ((importedInvoice.getRecipient()!=null) && (importedInvoice.getRecipient().getLegalOrganisation()!=null)) {
+ // this *should* be the official result
+ id = importedInvoice.getRecipient().getLegalOrganisation().getSchemedID().getID();
+ }
+ // but also provide some fallback
+ if (id == null) {
+ id = getBuyerTradePartyID();
+ }
+ return id;
}
@@ -494,14 +231,14 @@ public class ZUGFeRDImporter {
* @return the BuyerTradeParty Name
*/
public String getBuyerTradePartyName() {
- return extractString("//*[local-name() = 'BuyerTradeParty']//*[local-name() = 'Name']");
+ return importedInvoice.getRecipient().getName();
}
/**
* @return the BuyerTradeParty Name
*/
public String getDeliveryTradePartyName() {
- return extractString("//*[local-name() = 'ShipToTradeParty']//*[local-name() = 'Name']");
+ return importedInvoice.getDeliveryAddress().getName();
}
@@ -548,16 +285,7 @@ public class ZUGFeRDImporter {
* @return the Invoice ID
*/
public String getInvoiceID() {
- try {
- if (getVersion() == 1) {
- return extractString("//*[local-name() = 'HeaderExchangedDocument']//*[local-name() = 'ID']");
- } else {
- return extractString("//*[local-name() = 'ExchangedDocument']//*[local-name() = 'ID']");
- }
- } catch (final Exception e) {
- // Exception was already logged
- return "";
- }
+ return importedInvoice.getNumber();
}
@@ -615,11 +343,21 @@ public class ZUGFeRDImporter {
* @return the sender's account IBAN code
*/
public String getIBAN() {
- return extractString("//*[local-name() = 'PayeePartyCreditorFinancialAccount']/*[local-name() = 'IBANID']");
+ for (IZUGFeRDTradeSettlement settlement : importedInvoice.getTradeSettlement()) {
+ if (settlement instanceof IZUGFeRDTradeSettlementDebit) {
+ return ((IZUGFeRDTradeSettlementDebit) settlement).getIBAN();
+ }
+ if (settlement instanceof IZUGFeRDTradeSettlementPayment) {
+ return ((IZUGFeRDTradeSettlementPayment) settlement).getOwnIBAN();
+ }
+ }
+ return null;
}
public String getHolder() {
+
+
return extractString("//*[local-name() = 'SellerTradeParty']/*[local-name() = 'Name']");
}
@@ -628,14 +366,8 @@ public class ZUGFeRDImporter {
* @return the total payable amount
*/
public String getAmount() {
- String result = extractString("//*[local-name() = 'SpecifiedTradeSettlementHeaderMonetarySummation']/*[local-name() = 'DuePayableAmount']");
- if (result == null || result.isEmpty()) {
- /* fx/zf would be SpecifiedTradeSettlementMonetarySummation
- * but ox is SpecifiedTradeSettlementHeaderMonetarySummation...*/
- result = extractString("//*[local-name() = 'GrandTotalAmount']");
- }
- return result;
+ return importedInvoice.getGrandTotal().toPlainString();
}
@@ -643,7 +375,60 @@ public class ZUGFeRDImporter {
* @return when the payment is due
*/
public String getDueDate() {
- return extractString("//*[local-name() = 'SpecifiedTradePaymentTerms']/*[local-name() = 'DueDateDateTime']/*[local-name() = 'DateTimeString']");
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+ return sdf.format(importedInvoice.getDueDate());
+ }
+
+
+ ////////////////////
+
+ /**
+ * @return the Invoice Currency Code
+ */
+ public String getInvoiceCurrencyCode() {
+ return importedInvoice.getCurrency();
+ }
+
+
+ private String extractIssuerAssignedID(String propertyName) {
+ try {
+ if (getVersion() == 1) {
+ return extractString("//*[local-name() = '" + propertyName + "']//*[local-name() = 'ID']");
+ } else {
+ return extractString("//*[local-name() = '" + propertyName + "']//*[local-name() = 'IssuerAssignedID']");
+ }
+ } catch (final Exception e) {
+ // Exception was already logged
+ return "";
+ }
+ }
+
+ /**
+ * @return the BuyerTradeParty ID
+ */
+ public String getBuyerTradePartyID() {
+ String id = importedInvoice.getRecipient().getID();
+ if (id == null) {
+ // provide some fallback
+ id = importedInvoice.getRecipient().getVATID();
+ }
+ return id;
+ }
+
+ /**
+ * @return the Issue Date()
+ */
+ public String getIssueDate() {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+ return sdf.format(importedInvoice.getIssueDate());
+ }
+
+ public Date getDetailedDeliveryPeriodFrom() {
+ return importedInvoice.getDetailedDeliveryPeriodFrom();
+ }
+
+ public Date getDetailedDeliveryPeriodTo() {
+ return importedInvoice.getDetailedDeliveryPeriodTo();
}
@@ -691,28 +476,6 @@ public class ZUGFeRDImporter {
}
- public EStandard getStandard() throws Exception {
- if (!containsMeta) {
- throw new Exception("Not yet parsed");
- }
- final String head = getUTF8();
- String rootNode = extractString("local-name(/*)");
- if (rootNode.equals("CrossIndustryDocument")) {
- return EStandard.zugferd;
- } else if (rootNode.equals("Invoice")) {
- return EStandard.ubl;
- } else if (rootNode.equals("CrossIndustryInvoice")) {
- return EStandard.facturx;
- } else if (rootNode.equals("SCRDMCCBDACIDAMessageStructure")) {
- return EStandard.despatchadvice;
- } else if (head.contains(" fileAttachments=new ArrayList<>();
+ /**
+ * map filenames of additional XML files to their contents
+ */
+ protected final HashMap additionalXMLs = new HashMap<>();
+ /**
+ * map filenames of all embedded files in the respective PDF
+ */
+ protected final ArrayList PDFAttachments = new ArrayList<>();
+ /**
+ * if metadata has been found
+ */
+ protected boolean containsMeta = false;
+ /**
+ * Raw XML form of the extracted data - may be directly obtained.
+ */
+ protected byte[] rawXML = null;
+ /**
+ * XMP metadata
+ */
+ protected String xmpString = null; // XMP metadata
+ /**
+ * parsed Document
+ */
+ protected Document document;
+ /***
+ * automatically parse into importedInvoice
+ */
+ protected boolean parseAutomatically = true;
+ protected Integer version;
+ protected CalculatedInvoice importedInvoice = null;
+ protected boolean recalcPrice = false;
+ protected boolean ignoreCalculationErrors = false;
+ protected ArrayList fileAttachments = new ArrayList<>();
public ZUGFeRDInvoiceImporter() {
- super();
+ //constructor for extending classes
}
- public ZUGFeRDInvoiceImporter(String filename) {
- super(filename);
+ public ZUGFeRDInvoiceImporter(String pdfFilename) {
+ setPDFFilename(pdfFilename);
}
- public ZUGFeRDInvoiceImporter(InputStream stream) {
- super(stream);
+ public ZUGFeRDInvoiceImporter(InputStream pdfStream) {
+ setInputStream(pdfStream);
}
- public void fromXML(String XML) {
- try {
- containsMeta = true;
- setRawXML(XML.getBytes(StandardCharsets.UTF_8));
- } catch (IOException e) {
- LOGGER.error(e.getMessage(), e);
+ public void setPDFFilename(String pdfFilename) {
+ try (InputStream bis = Files.newInputStream(Paths.get(pdfFilename), StandardOpenOption.READ)) {
+ extractLowLevel(bis);
+ } catch (final IOException e) {
+ LOGGER.error("Failed to extract ZUGFeRD data", e);
+ throw new ZUGFeRDExportException(e);
}
}
+ public void setInputStream(InputStream pdfStream) {
+ try {
+ extractLowLevel(pdfStream);
+ } catch (final IOException e) {
+ LOGGER.error("Failed to extract ZUGFeRD data", e);
+ throw new ZUGFeRDExportException(e);
+ }
+ }
+
+ /***
+ * return the file names of all files embedded into the PDF
+ * @see for XML embedded files please use ZUGFeRDInvoiceImporter.getFileAttachmentsXML
+ * @return a ArrayList of FileAttachments, empty if none
+ */
+ public List getFileAttachmentsPDF() {
+ return PDFAttachments;
+ }
+
+ /**
+ * Extracts a ZUGFeRD invoice from a PDF document represented by an input stream. Errors are reported via exception handling.
+ *
+ * @param inStream a inputstream of a pdf file
+ */
+ private void extractLowLevel(InputStream inStream) throws IOException {
+ BufferedInputStream pdfStream = new BufferedInputStream(inStream);
+ byte[] pad = new byte[4];
+ pdfStream.mark(0);
+ pdfStream.read(pad);
+ pdfStream.reset();
+ byte[] pdfSignature = {'%', 'P', 'D', 'F'};
+ if (Arrays.equals(pad, pdfSignature)) { // we have a pdf
+
+
+ try {
+ PDDocument doc = Loader.loadPDF(IOUtils.toByteArray(pdfStream));
+ // PDDocumentInformation info = doc.getDocumentInformation();
+ final PDDocumentNameDictionary names = new PDDocumentNameDictionary(doc.getDocumentCatalog());
+ //start
+
+ if (doc.getDocumentCatalog() == null || doc.getDocumentCatalog().getMetadata() == null) {
+ LOGGER.info("no-xmlpart");
+ return;
+ }
+
+ final InputStream XMP = doc.getDocumentCatalog().getMetadata().exportXMPMetadata();
+
+ xmpString = new String(XMLTools.getBytesFromStream(XMP), StandardCharsets.UTF_8);
+
+ final PDEmbeddedFilesNameTreeNode etn = names.getEmbeddedFiles();
+ if (etn == null) {
+ return;
+ }
+
+ final Map efMap = etn.getNames();
+ // String filePath = "/tmp/";
+
+ if (efMap != null) {
+ extractFiles(efMap); // see
+ // https://memorynotfound.com/apache-pdfbox-extract-embedded-file-pdf-document/
+ } else {
+
+ final List> kids = etn.getKids();
+ if (kids == null) {
+ return;
+ }
+ for (final PDNameTreeNode node : kids) {
+ final Map namesL = node.getNames();
+ extractFiles(namesL);
+ }
+ }
+ } catch (Exception e) {
+ LOGGER.error("Failed to parse PDF", e);
+ //ignore otherwise
+ }
+ } else {
+ // no PDF probably XML
+ containsMeta = true;
+ setRawXML(XMLTools.getBytesFromStream(pdfStream));
+
+ }
+ }
+
+ /***
+ * have the item prices be determined from the line total.
+ * That's a workaround for some invoices which just put 0 as item price
+ */
+ public void doRecalculateItemPricesFromLineTotals() {
+ recalcPrice = true;
+ }
+
+ /***
+ * do not raise ParseExceptions even if the reproduced invoice total does not match the given value
+ */
+ public void doIgnoreCalculationErrors() {
+ ignoreCalculationErrors = true;
+ }
+
+ /***
+ * sets th pdf attachments, and if a file is recognized (e.g. a factur-x.xml) triggers processing
+ * @param names the Hashmap of String, PDComplexFileSpecification
+ * @throws IOException
+ */
+ private void extractFiles(Map names) throws IOException {
+ for (final String alias : names.keySet()) {
+
+ final PDComplexFileSpecification fileSpec = names.get(alias);
+ final String filename = fileSpec.getFilename();
+ /**
+ * filenames for invoice data (ZUGFeRD v1 and v2, Factur-X)
+ */
+
+ final PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile();
+ if ((filename.equals("ZUGFeRD-invoice.xml") || (filename.equals("zugferd-invoice.xml")) || filename.equals("factur-x.xml")) || filename.equals("xrechnung.xml") || filename.equals("order-x.xml") || filename.equals("cida.xml")) {
+ containsMeta = true;
+
+ // String embeddedFilename = filePath + filename;
+ // File file = new File(filePath + filename);
+ // System.out.println("Writing " + embeddedFilename);
+ // ByteArrayOutputStream fileBytes=new
+ // ByteArrayOutputStream();
+ // FileOutputStream fos = new FileOutputStream(file);
+
+ setRawXML(embeddedFile.toByteArray());
+
+ // fos.write(embeddedFile.getByteArray());
+ // fos.close();
+ }
+ if (filename.startsWith("additional_data")) {
+ additionalXMLs.put(filename, embeddedFile.toByteArray());
+ }
+ PDFAttachments.add(new FileAttachment(filename, embeddedFile.getSubtype(), "Data", embeddedFile.toByteArray()));
+ }
+ }
+
+ /***
+ * set the xml of a CII invoice
+ * @param rawXML the xml string
+ * @param doParse automatically parse input for zugferdImporter (not ZUGFeRDInvoiceImporter)
+ * @throws IOException
+ */
+ public void setRawXML(byte[] rawXML, boolean doParse) throws IOException {
+ this.containsMeta = true;
+ this.rawXML = rawXML;
+ this.version = null;
+ parseAutomatically = doParse;
+
+ try {
+ setDocument();
+ } catch (ParserConfigurationException | SAXException e) {
+ LOGGER.error("Failed to parse XML", e);
+ throw new ZUGFeRDExportException(e);
+ }
+
+ }
+
+ /***
+ * set the xml of a CII invoice, simple version
+ * @param rawXML the cii(?) as a string
+ * @throws IOException
+ */
+ public void setRawXML(byte[] rawXML) throws IOException {
+ setRawXML(rawXML, true);
+ }
+
+ private void setDocument() throws ParserConfigurationException, IOException, SAXException {
+ final DocumentBuilderFactory xmlFact = DocumentBuilderFactory.newInstance();
+ xmlFact.setNamespaceAware(true);
+ final DocumentBuilder builder = xmlFact.newDocumentBuilder();
+ final ByteArrayInputStream is = new ByteArrayInputStream(rawXML);
+ /// is.skip(guessBOMSize(is));
+ document = builder.parse(is);
+ if (parseAutomatically) {
+ try {
+ importedInvoice = new CalculatedInvoice();
+ extractInto(importedInvoice);
+ } catch (XPathExpressionException e) {
+ throw new RuntimeException(e);
+ } catch (ParseException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
/***
* This will parse a XML into the given invoice object
@@ -63,6 +284,8 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
String number = "";
String typeCode = null;
+ String deliveryPeriodStart = null;
+ String deliveryPeriodEnd = null;
/*
* dummywerte sind derzeit noch setDueDate setIssueDate setDeliveryDate
* setSender setRecipient setnumber bspw. due date
@@ -72,6 +295,12 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
XPath xpath = xpathFact.newXPath();
XPathExpression xpr = xpath.compile("//*[local-name()=\"SellerTradeParty\"]|//*[local-name()=\"AccountingSupplierParty\"]/*");
NodeList SellerNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
+ XPathExpression shipEx = xpath.compile("//*[local-name()=\"ShipToTradeParty\"]");
+ NodeList deliveryNodes = (NodeList) shipEx.evaluate(getDocument(), XPathConstants.NODESET);
+ if (deliveryNodes != null) {
+ zpp.setDeliveryAddress(new TradeParty(deliveryNodes));
+ }
+
xpr = xpath.compile("//*[local-name()=\"BuyerTradeParty\"]|//*[local-name()=\"AccountingCustomerParty\"]/*");
NodeList BuyerNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
@@ -86,13 +315,19 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
BigDecimal expectedGrandTotal = null;
NodeList totalNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
if (totalNodes.getLength() > 0) {
- expectedGrandTotal = new BigDecimal(totalNodes.item(0).getTextContent());
+ expectedGrandTotal = new BigDecimal(XMLTools.trimOrNull(totalNodes.item(0)));
+ if (zpp instanceof CalculatedInvoice) {
+ // usually we would re-calculate the invoice to get expectedGrandTotal
+ // however, for "minimal" invoices or other invoices without lines
+ // this will not work
+ ((CalculatedInvoice) zpp).setGrandTotal(expectedGrandTotal);
+ }
}
xpr = xpath.compile("//*[local-name()=\"PrepaidAmount\"]");
NodeList prepaidNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
if (prepaidNodes.getLength() > 0) {
- zpp.setTotalPrepaidAmount(new BigDecimal(prepaidNodes.item(0).getTextContent()));
+ zpp.setTotalPrepaidAmount(new BigDecimal(XMLTools.trimOrNull(prepaidNodes.item(0))));
}
Date issueDate = null;
@@ -100,24 +335,22 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
Date deliveryDate = null;
String despatchAdviceReferencedDocument = null;
for (int i = 0; i < ExchangedDocumentNodes.getLength(); i++) {
-
- // nodes.item(i).getTextContent())) {
Node exchangedDocumentNode = ExchangedDocumentNodes.item(i);
NodeList exchangedDocumentChilds = exchangedDocumentNode.getChildNodes();
for (int documentChildIndex = 0; documentChildIndex < exchangedDocumentChilds.getLength(); documentChildIndex++) {
Node item = exchangedDocumentChilds.item(documentChildIndex);
if ((item.getLocalName() != null) && (item.getLocalName().equals("ID"))) {
- number = item.getTextContent();
+ number = XMLTools.trimOrNull(item);
}
if ((item.getLocalName() != null) && (item.getLocalName().equals("TypeCode"))) {
- typeCode = item.getTextContent();
+ typeCode = XMLTools.trimOrNull(item);
}
if ((item.getLocalName() != null) && (item.getLocalName().equals("IssueDateTime"))) {
NodeList issueDateTimeChilds = item.getChildNodes();
for (int issueDateChildIndex = 0; issueDateChildIndex < issueDateTimeChilds.getLength(); issueDateChildIndex++) {
if ((issueDateTimeChilds.item(issueDateChildIndex).getLocalName() != null)
&& (issueDateTimeChilds.item(issueDateChildIndex).getLocalName().equals("DateTimeString"))) {
- issueDate = new SimpleDateFormat("yyyyMMdd").parse(issueDateTimeChilds.item(issueDateChildIndex).getTextContent());
+ issueDate = new SimpleDateFormat("yyyyMMdd").parse(XMLTools.trimOrNull(issueDateTimeChilds.item(issueDateChildIndex)));
}
}
}
@@ -127,6 +360,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
if (rootNode.equals("Invoice")) {
// UBL...
number = extractString("//*[local-name()=\"Invoice\"]/*[local-name()=\"ID\"]").trim();
+ typeCode = extractString("//*[local-name()=\"Invoice\"]/*[local-name()=\"InvoiceTypeCode\"]").trim();
issueDate = new SimpleDateFormat("yyyy-MM-dd").parse(extractString("//*[local-name()=\"Invoice\"]/*[local-name()=\"IssueDate\"]").trim());
String dueDt = extractString("//*[local-name()=\"Invoice\"]/*[local-name()=\"DueDate\"]").trim();
if (dueDt.length() > 0) {
@@ -141,7 +375,6 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
NodeList headerTradeDeliveryNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
for (int i = 0; i < headerTradeDeliveryNodes.getLength(); i++) {
- // nodes.item(i).getTextContent())) {
Node headerTradeDeliveryNode = headerTradeDeliveryNodes.item(i);
NodeList headerTradeDeliveryChilds = headerTradeDeliveryNode.getChildNodes();
for (int deliveryChildIndex = 0; deliveryChildIndex < headerTradeDeliveryChilds.getLength(); deliveryChildIndex++) {
@@ -155,7 +388,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
for (int occurenceChildIndex = 0; occurenceChildIndex < occurenceChilds.getLength(); occurenceChildIndex++) {
if ((occurenceChilds.item(occurenceChildIndex).getLocalName() != null)
&& (occurenceChilds.item(occurenceChildIndex).getLocalName().equals("DateTimeString"))) {
- deliveryDate = new SimpleDateFormat("yyyyMMdd").parse(occurenceChilds.item(occurenceChildIndex).getTextContent());
+ deliveryDate = new SimpleDateFormat("yyyyMMdd").parse(XMLTools.trimOrNull(occurenceChilds.item(occurenceChildIndex)));
}
}
}
@@ -167,7 +400,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
for (int despatchAdviceChildIndex = 0; despatchAdviceChildIndex < despatchAdviceChilds.getLength(); despatchAdviceChildIndex++) {
if (despatchAdviceChilds.item(despatchAdviceChildIndex).getLocalName() != null
&& despatchAdviceChilds.item(despatchAdviceChildIndex).getLocalName().equals("IssuerAssignedID")) {
- despatchAdviceReferencedDocument = despatchAdviceChilds.item(despatchAdviceChildIndex).getTextContent();
+ despatchAdviceReferencedDocument = XMLTools.trimOrNull(despatchAdviceChilds.item(despatchAdviceChildIndex));
}
}
}
@@ -180,7 +413,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
String buyerOrderIssuerAssignedID = null;
String sellerOrderIssuerAssignedID = null;
for (int i = 0; i < headerTradeAgreementNodes.getLength(); i++) {
- // nodes.item(i).getTextContent())) {
+ // XMLTools.trimOrNull(nodes.item(i)))) {
Node headerTradeAgreementNode = headerTradeAgreementNodes.item(i);
NodeList headerTradeAgreementChilds = headerTradeAgreementNode.getChildNodes();
for (int agreementChildIndex = 0; agreementChildIndex < headerTradeAgreementChilds.getLength(); agreementChildIndex++) {
@@ -190,7 +423,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
for (int buyerOrderChildIndex = 0; buyerOrderChildIndex < buyerOrderChilds.getLength(); buyerOrderChildIndex++) {
if ((buyerOrderChilds.item(buyerOrderChildIndex).getLocalName() != null)
&& (buyerOrderChilds.item(buyerOrderChildIndex).getLocalName().equals("IssuerAssignedID"))) {
- buyerOrderIssuerAssignedID = buyerOrderChilds.item(buyerOrderChildIndex).getTextContent();
+ buyerOrderIssuerAssignedID = XMLTools.trimOrNull(buyerOrderChilds.item(buyerOrderChildIndex));
}
}
}
@@ -200,7 +433,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
for (int sellerOrderChildIndex = 0; sellerOrderChildIndex < sellerOrderChilds.getLength(); sellerOrderChildIndex++) {
if ((sellerOrderChilds.item(sellerOrderChildIndex).getLocalName() != null)
&& (sellerOrderChilds.item(sellerOrderChildIndex).getLocalName().equals("IssuerAssignedID"))) {
- sellerOrderIssuerAssignedID = sellerOrderChilds.item(sellerOrderChildIndex).getTextContent();
+ sellerOrderIssuerAssignedID = XMLTools.trimOrNull(sellerOrderChilds.item(sellerOrderChildIndex));
}
}
}
@@ -210,13 +443,19 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
}
+ String currency = extractString("//*[local-name()=\"ApplicableHeaderTradeSettlement\"]/*[local-name()=\"InvoiceCurrencyCode\"]|//*[local-name()=\"DocumentCurrencyCode\"]") ;
+ zpp.setCurrency(currency);
+
xpr = xpath.compile("//*[local-name()=\"ApplicableHeaderTradeSettlement\"]|//*[local-name()=\"ApplicableSupplyChainTradeSettlement\"]");
NodeList headerTradeSettlementNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
List bankDetails = new ArrayList<>();
+ String directDebitMandateID = null;
+ String IBAN = null, BIC = null;
for (int i = 0; i < headerTradeSettlementNodes.getLength(); i++) {
- // nodes.item(i).getTextContent())) {
+ // XMLTools.trimOrNull(nodes.item(i)))) {
Node headerTradeSettlementNode = headerTradeSettlementNodes.item(i);
+
NodeList headerTradeSettlementChilds = headerTradeSettlementNode.getChildNodes();
for (int settlementChildIndex = 0; settlementChildIndex < headerTradeSettlementChilds.getLength(); settlementChildIndex++) {
if ((headerTradeSettlementChilds.item(settlementChildIndex).getLocalName() != null)
@@ -227,52 +466,86 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
NodeList dueDateChilds = paymentTermChilds.item(paymentTermChildIndex).getChildNodes();
for (int dueDateChildIndex = 0; dueDateChildIndex < dueDateChilds.getLength(); dueDateChildIndex++) {
if ((dueDateChilds.item(dueDateChildIndex).getLocalName() != null) && (dueDateChilds.item(dueDateChildIndex).getLocalName().equals("DateTimeString"))) {
- dueDate = new SimpleDateFormat("yyyyMMdd").parse(dueDateChilds.item(dueDateChildIndex).getTextContent());
+ dueDate = new SimpleDateFormat("yyyyMMdd").parse(XMLTools.trimOrNull(dueDateChilds.item(dueDateChildIndex)));
}
}
}
+ if ((paymentTermChilds.item(paymentTermChildIndex).getLocalName() != null) && (paymentTermChilds.item(paymentTermChildIndex).getLocalName().equals("DirectDebitMandateID"))) {
+ directDebitMandateID = paymentTermChilds.item(paymentTermChildIndex).getTextContent();
+ }
}
}
if ((headerTradeSettlementChilds.item(settlementChildIndex).getLocalName() != null)
&& (headerTradeSettlementChilds.item(settlementChildIndex).getLocalName().equals("SpecifiedTradeSettlementPaymentMeans"))) {
NodeList paymentMeansChilds = headerTradeSettlementChilds.item(settlementChildIndex).getChildNodes();
+ IBAN = null;
+ BIC = null;
for (int paymentMeansChildIndex = 0; paymentMeansChildIndex < paymentMeansChilds.getLength(); paymentMeansChildIndex++) {
- String IBAN = null, BIC = null;
- if ((paymentMeansChilds.item(paymentMeansChildIndex).getLocalName() != null) && (paymentMeansChilds.item(paymentMeansChildIndex).getLocalName().equals("PayeePartyCreditorFinancialAccount"))) {
+
+ if ((paymentMeansChilds.item(paymentMeansChildIndex).getLocalName() != null) && (paymentMeansChilds.item(paymentMeansChildIndex).getLocalName().equals("PayeePartyCreditorFinancialAccount") || paymentMeansChilds.item(paymentMeansChildIndex).getLocalName().equals("PayerPartyDebtorFinancialAccount"))) {
NodeList accountChilds = paymentMeansChilds.item(paymentMeansChildIndex).getChildNodes();
for (int accountChildIndex = 0; accountChildIndex < accountChilds.getLength(); accountChildIndex++) {
if ((accountChilds.item(accountChildIndex).getLocalName() != null) && (accountChilds.item(accountChildIndex).getLocalName().equals("IBANID"))) {//CII
- IBAN = accountChilds.item(accountChildIndex).getTextContent();
+ IBAN = XMLTools.trimOrNull(accountChilds.item(accountChildIndex));
}
}
}
- if ((paymentMeansChilds.item(paymentMeansChildIndex).getLocalName() != null) && (paymentMeansChilds.item(paymentMeansChildIndex).getLocalName().equals("PayeePartyCreditorFinancialInstitution"))) {
+ if ((paymentMeansChilds.item(paymentMeansChildIndex).getLocalName() != null) && (paymentMeansChilds.item(paymentMeansChildIndex).getLocalName().equals("PayeeSpecifiedCreditorFinancialInstitution"))) {
NodeList accountChilds = paymentMeansChilds.item(paymentMeansChildIndex).getChildNodes();
for (int accountChildIndex = 0; accountChildIndex < accountChilds.getLength(); accountChildIndex++) {
if ((accountChilds.item(accountChildIndex).getLocalName() != null) && (accountChilds.item(accountChildIndex).getLocalName().equals("BICID"))) {//CII
- BIC = accountChilds.item(accountChildIndex).getTextContent();
+ BIC = XMLTools.trimOrNull(accountChilds.item(accountChildIndex));
}
}
}
- if (IBAN != null) {
- BankDetails bd = new BankDetails(IBAN);
- if (BIC != null) {
- bd.setBIC(BIC);
+
+ }
+ if (IBAN != null) {
+ BankDetails bd = new BankDetails(IBAN);
+ if (BIC != null) {
+ bd.setBIC(BIC);
+ }
+ bankDetails.add(bd);
+ }
+ }
+ if ((headerTradeSettlementChilds.item(settlementChildIndex).getLocalName() != null)
+ && (headerTradeSettlementChilds.item(settlementChildIndex).getLocalName().equals("BillingSpecifiedPeriod"))) {
+ NodeList periodChilds = headerTradeSettlementChilds.item(settlementChildIndex).getChildNodes();
+ for (int periodChildIndex = 0; periodChildIndex < periodChilds.getLength(); periodChildIndex++) {
+ if ((periodChilds.item(periodChildIndex).getLocalName() != null) && (periodChilds.item(periodChildIndex).getLocalName().equals("StartDateTime"))) {
+
+ NodeList startPeriodChilds = periodChilds.item(periodChildIndex).getChildNodes();
+ for (int startPeriodIndex = 0; startPeriodIndex < startPeriodChilds.getLength(); startPeriodIndex++) {
+ if ((startPeriodChilds.item(startPeriodIndex).getLocalName() != null) && (startPeriodChilds.item(startPeriodIndex).getLocalName().equals("DateTimeString"))) {//CII
+ deliveryPeriodStart = XMLTools.trimOrNull(startPeriodChilds.item(startPeriodIndex));
+ }
+ }
+ }
+ if ((periodChilds.item(periodChildIndex).getLocalName() != null) && (periodChilds.item(periodChildIndex).getLocalName().equals("EndDateTime"))) {
+ NodeList endPeriodChilds = periodChilds.item(periodChildIndex).getChildNodes();
+ for (int endPeriodIndex = 0; endPeriodIndex < endPeriodChilds.getLength(); endPeriodIndex++) {
+ if ((endPeriodChilds.item(endPeriodIndex).getLocalName() != null) && (endPeriodChilds.item(endPeriodIndex).getLocalName().equals("DateTimeString"))) {//CII
+ deliveryPeriodEnd = XMLTools.trimOrNull(endPeriodChilds.item(endPeriodIndex));
+ }
}
- bankDetails.add(bd);
}
}
}
}
}
+ if ((deliveryPeriodStart != null) && (deliveryPeriodEnd != null)) {
+ zpp.setDetailedDeliveryPeriod(XMLTools.tryDate(deliveryPeriodStart), XMLTools.tryDate(deliveryPeriodEnd));
+ } else if (deliveryPeriodStart != null) {
+ zpp.setDeliveryDate(XMLTools.tryDate(deliveryPeriodStart));
+ }
xpr = xpath.compile("//*[local-name()=\"PaymentMeans\"]"); //UBL only
NodeList paymentMeansNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
for (int i = 0; i < paymentMeansNodes.getLength(); i++) {
- // nodes.item(i).getTextContent())) {
+ // XMLTools.trimOrNull(nodes.item(i)))) {
Node paymentMeansNode = paymentMeansNodes.item(i);
NodeList paymentMeansChilds = paymentMeansNode.getChildNodes();
for (int meansChildIndex = 0; meansChildIndex < paymentMeansChilds.getLength(); meansChildIndex++) {
@@ -281,7 +554,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
NodeList paymentTermChilds = paymentMeansChilds.item(meansChildIndex).getChildNodes();
for (int paymentTermChildIndex = 0; paymentTermChildIndex < paymentTermChilds.getLength(); paymentTermChildIndex++) {
if ((paymentTermChilds.item(paymentTermChildIndex).getLocalName() != null) && (paymentTermChilds.item(paymentTermChildIndex).getLocalName().equals("ID"))) {
- String IBAN = paymentTermChilds.item(paymentTermChildIndex).getTextContent();
+ IBAN = XMLTools.trimOrNull(paymentTermChilds.item(paymentTermChildIndex));
if (IBAN != null) {
BankDetails bd = new BankDetails(IBAN);
bankDetails.add(bd);
@@ -294,6 +567,11 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
zpp.setDueDate(dueDate).setDeliveryDate(deliveryDate).setIssueDate(issueDate).setSender(new TradeParty(SellerNodes)).setRecipient(new TradeParty(BuyerNodes)).setNumber(number).setDocumentCode(typeCode);
+ if ((directDebitMandateID != null) && (IBAN != null)) {
+ DirectDebit d = new DirectDebit(IBAN, directDebitMandateID);
+ zpp.getSender().addDebitDetails(d);
+ }
+
bankDetails.forEach(bankDetail -> zpp.getSender().addBankDetails(bankDetail));
if (payeeNodes.getLength() > 0) {
@@ -303,6 +581,9 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
if (buyerOrderIssuerAssignedID != null) {
zpp.setBuyerOrderReferencedDocumentID(buyerOrderIssuerAssignedID);
}
+ else {
+ zpp.setBuyerOrderReferencedDocumentID(extractString("//*[local-name()=\"OrderReference\"]/*[local-name()=\"ID\"]"));
+ }
if (sellerOrderIssuerAssignedID != null) {
zpp.setSellerOrderReferencedDocumentID(sellerOrderIssuerAssignedID);
}
@@ -316,7 +597,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
String buyerReference = null;
prepaidNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
if (prepaidNodes.getLength() > 0) {
- buyerReference = prepaidNodes.item(0).getTextContent();
+ buyerReference = XMLTools.trimOrNull(prepaidNodes.item(0));
}
if (buyerReference != null) {
zpp.setReferenceNumber(buyerReference);
@@ -338,9 +619,9 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
xpr = xpath.compile("//*[local-name()=\"AttachmentBinaryObject\"]|//*[local-name()=\"EmbeddedDocumentBinaryObject\"]");
NodeList attachmentNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
for (int i = 0; i < attachmentNodes.getLength(); i++) {
- FileAttachment fa=new FileAttachment(attachmentNodes.item(i).getAttributes().getNamedItem("filename").getNodeValue(),attachmentNodes.item(i).getAttributes().getNamedItem("mimeCode").getNodeValue(),"Data", Base64.getDecoder().decode(attachmentNodes.item(i).getTextContent()));
+ FileAttachment fa = new FileAttachment(attachmentNodes.item(i).getAttributes().getNamedItem("filename").getNodeValue(), attachmentNodes.item(i).getAttributes().getNamedItem("mimeCode").getNodeValue(), "Data", Base64.getDecoder().decode(XMLTools.trimOrNull(attachmentNodes.item(i))));
fileAttachments.add(fa);
- // filename = "Aufmass.png" mimeCode = "image/png"
+ // filename = "Aufmass.png" mimeCode = "image/png"
//EmbeddedDocumentBinaryObject cbc:EmbeddedDocumentBinaryObject mimeCode="image/png" filename="Aufmass.png"
}
@@ -366,21 +647,21 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
for (int indicatorChildIndex = 0; indicatorChildIndex < indicatorChilds.getLength(); indicatorChildIndex++) {
if ((indicatorChilds.item(indicatorChildIndex).getLocalName() != null)
&& (indicatorChilds.item(indicatorChildIndex).getLocalName().equals("Indicator"))) {
- isCharge = indicatorChilds.item(indicatorChildIndex).getTextContent().equalsIgnoreCase("true");
+ isCharge = XMLTools.trimOrNull(indicatorChilds.item(indicatorChildIndex)).equalsIgnoreCase("true");
}
}
} else if (chargeChildName.equals("ActualAmount")) {
- chargeAmount = chargeNodeChilds.item(chargeChildIndex).getTextContent();
+ chargeAmount = XMLTools.trimOrNull(chargeNodeChilds.item(chargeChildIndex));
} else if (chargeChildName.equals("Reason")) {
- reason = chargeNodeChilds.item(chargeChildIndex).getTextContent();
+ reason = XMLTools.trimOrNull(chargeNodeChilds.item(chargeChildIndex));
} else if (chargeChildName.equals("ReasonCode")) {
- reasonCode = chargeNodeChilds.item(chargeChildIndex).getTextContent();
+ reasonCode = XMLTools.trimOrNull(chargeNodeChilds.item(chargeChildIndex));
} else if (chargeChildName.equals("CategoryTradeTax")) {
NodeList taxChilds = chargeNodeChilds.item(chargeChildIndex).getChildNodes();
for (int taxChildIndex = 0; taxChildIndex < taxChilds.getLength(); taxChildIndex++) {
String taxItemName = taxChilds.item(taxChildIndex).getLocalName();
if ((taxItemName != null) && (taxItemName.equals("RateApplicablePercent") || taxItemName.equals("ApplicablePercent"))) {
- taxPercent = taxChilds.item(taxChildIndex).getTextContent();
+ taxPercent = XMLTools.trimOrNull(taxChilds.item(taxChildIndex));
}
}
}
@@ -422,21 +703,92 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
try {
whichType = getStandard();
} catch (Exception e) {
- throw new ParseException("Could not find out if it's an invoice, order, or delivery advice", 0);
-
+ throw new StructureException("Could not find out if it's an invoice, order, or delivery advice", 0);
}
if ((whichType != EStandard.despatchadvice)
&& ((!expectedStringTotalGross.equals(XMLTools.nDigitFormat(expectedGrandTotal, 2)))
&& (!ignoreCalculationErrors))) {
- throw new ParseException(
- "Could not reproduce the invoice, this could mean that it could not be read properly", 0);
+ throw new ArithmetricException();
}
}
return zpp;
}
+ protected Document getDocument() {
+ return document;
+ }
+
+ protected String extractString(String xpathStr) {
+ if (!containsMeta) {
+ throw new ZUGFeRDExportException("No suitable data/ZUGFeRD file could be found.");
+ }
+ final String result;
+ try {
+ final Document document = getDocument();
+ final XPathFactory xpathFact = XPathFactory.newInstance();
+ final XPath xpath = xpathFact.newXPath();
+ result = xpath.evaluate(xpathStr, document);
+ } catch (final XPathExpressionException e) {
+ LOGGER.error("Failed to evaluate XPath", e);
+ throw new ZUGFeRDExportException(e);
+ }
+ return result;
+ }
+
+ public EStandard getStandard() throws Exception {
+ if (!containsMeta) {
+ throw new Exception("Not yet parsed");
+ }
+ final String head = getUTF8();
+ String rootNode = extractString("local-name(/*)");
+ if (rootNode.equals("CrossIndustryDocument")) {
+ return EStandard.zugferd;
+ } else if (rootNode.equals("Invoice")) {
+ return EStandard.ubl;
+ } else if (rootNode.equals("CreditNote")) {
+ return EStandard.ubl;
+ } else if (rootNode.equals("CrossIndustryInvoice")) {
+ return EStandard.facturx;
+ } else if (rootNode.equals("SCRDMCCBDACIDAMessageStructure")) {
+ return EStandard.despatchadvice;
+ } else if (head.contains("Art der Fremdforderung
Betrag der Fremdforderung
Beschreibung der Fremdforderung
- Übersicht
+ Daten der E-Rechnung
Informationen zum Käufer
Informationen zum Verkäufer
Rechnungsdaten
@@ -214,7 +214,7 @@
Lastschrift
Überweisung
Bemerkungen zur Rechnung
- Details
+ Rechnungspositionen
Abrechnungszeitraum
Preiseinzelheiten
Nachlässe auf Ebene der Rechnungsposition
diff --git a/library/src/main/resources/stylesheets/xr-content.xsl b/library/src/main/resources/stylesheets/xr-content.xsl
index 5c4207ad..4b8adb6f 100644
--- a/library/src/main/resources/stylesheets/xr-content.xsl
+++ b/library/src/main/resources/stylesheets/xr-content.xsl
@@ -807,10 +807,11 @@
-
+
+
diff --git a/library/src/main/resources/stylesheets/xr-pdf.xsl b/library/src/main/resources/stylesheets/xr-pdf.xsl
index 153dba41..406e4044 100644
--- a/library/src/main/resources/stylesheets/xr-pdf.xsl
+++ b/library/src/main/resources/stylesheets/xr-pdf.xsl
@@ -64,7 +64,7 @@
-
+
+
+
+ urn:cen.eu:en16931:2017
+
+
+
+ 471102
+ 380
+
+ 20180304
+
+
+
+
+
+ 1
+
+
+ Trennblätter A4
+
+
+
+ 9.9000
+ 1.0000
+
+
+
+ 20.0000
+
+
+
+ VAT
+ S
+ 19.00
+
+
+ 198.00
+
+
+
+
+
+ 2
+
+
+ Joghurt Banane
+
+
+
+ 5.5000
+ 1.0000
+
+
+
+ 50.0000
+
+
+
+ VAT
+ S
+ 7.00
+
+
+ 275.00
+
+
+
+
+
+ Lieferant GmbH
+
+ 80333
+ Lieferantenstraße 20
+ München
+ DE
+
+
+ DE123456789
+
+
+ 201/113/40209
+
+
+
+ Kunden AG Mitte
+
+ 69876
+ Kundenstraße 15
+ Frankfurt
+ DE
+
+
+
+
+
+
+ 20180304
+
+
+
+
+ DE98ZZZ09999999999
+ EUR
+
+ 59
+
+ DE21860000000086001055
+
+
+ 19.25
+ VAT
+ 275.00
+ S
+ 7.00
+
+
+ 37.62
+ VAT
+ 198.00
+ S
+ 19.00
+
+
+ Der Betrag in Höhe von EUR 529,87 wird am 20.03.2018 von Ihrem Konto per SEPA-Lastschrift eingezogen.
+
+ REF A-123
+
+
+ 473.00
+ 0.00
+ 0.00
+ 473.00
+ 56.87
+ 529.87
+ 0.00
+ 529.87
+
+
+
+
\ No newline at end of file
diff --git a/library/src/test/resources/not_validating_full_invoice_based_onTest_EeISI_300_CENfullmodel.cii.xml b/library/src/test/resources/not_validating_full_invoice_based_onTest_EeISI_300_CENfullmodel.cii.xml
index 9f8d1044..1b88d4d4 100644
--- a/library/src/test/resources/not_validating_full_invoice_based_onTest_EeISI_300_CENfullmodel.cii.xml
+++ b/library/src/test/resources/not_validating_full_invoice_based_onTest_EeISI_300_CENfullmodel.cii.xml
@@ -1,411 +1,415 @@
-
-
-
- BT-23 Business Process Type
-
-
- urn:cen.eu:en16931:2017
-
-
-
- Test_EeISI_100
- 380
-
- 20181112
-
-
- invoice note text
- #AAA#
-
-
- invoice note text 2
- #AAA#
-
-
-
-
-
- 1a
-
- Invoice line note
-
-
-
- Item standar identifier
- Item seller's identifier
- Item buyer's identifier
- Item name
- Item description
-
- Color
- Red
-
-
- Size
- L
-
-
- Item classification identifier0
-
-
- IT
-
-
-
-
- 12345
-
-
- 11.00
- 1.00
-
-
- false
-
- 1.00
-
-
-
- 10.00
- 1.00
-
-
-
- 10.00
-
-
-
- VAT
- S
- 5.00
-
-
-
+
+
+
+ BT-23 Business Process Type
+
+
+ urn:cen.eu:en16931:2017
+
+
+
+ Test_EeISI_100
+ 380
+
20181112
-
-
- 20181130
-
-
-
-
- false
-
- 1.00
- 1000.00
- 10.00
- 55
- Invoice line allowance reason
-
-
-
- true
-
- 1.00
- 1000.00
- 10.00
- AAA
- Invoice line charge reason
-
-
- 1000.00
-
-
- Line object identifier
- 130
-
-
-
- 6789
-
-
-
-
-
- 1b
-
-
- Item name 2
-
-
-
- 10.00
-
-
-
- 10.00
-
-
-
- VAT
- E
- 0.00
-
-
- 1000.00
-
-
-
-
- 123
-
- Seller identifier 1
- Seller identifier 2
- Seller name
- Seller additional legal information
-
- Seller legal identifier
- Seller trading name
-
-
- Seller contact point
-
- +41 345 654455
-
-
- seller@contact.de
-
-
-
- 12345
- Seller address line 1
- Seller address line 2
- Seller address line 3
- Seller city
- DE
- Seller country subdivision
-
-
- Seller electronic address
-
-
- DE12345677
-
-
- DE49294093
-
-
-
- Buyer identifier
- Buyer name
-
- Buyer legal registration identifier
- Buyer trading name
-
-
- Buyer contact point
-
- +353 2948584
-
-
- buyer@contact.ie
-
-
-
- 34562
- Buyer address line 1
- Buyer address line 2
- Buyer address line 3
- Buyer city
- IE
- Buyer country subdivision
-
-
- Buyer electronic address
-
-
- IE394838894
-
-
-
- Tax representative name
-
- 23455
- Tax representative address line 1
- Tax representative address line 2
- Tax representative address line 3
- Tax representative city
- DE
- Tax representative country subdivision
-
-
- DE3949053
-
-
-
- def
-
-
- abc
-
-
- 789
-
-
- Supporting document ref
- External document location
- 916
- Supporting document descr
- ZGVmYXVsdA==
-
-
- rst
- 130
- 0090
-
-
- 456
- Project reference
-
-
-
-
- deliver location identifier
- Deliver to party name
-
- 98765
- Deliver to address line 1
- Deliver to address line 2
- Deliver to address line 3
- Deliver to city
- IE
- Deliver to country subdivision
-
-
-
-
- 20181204
-
-
-
- lmn
-
-
- ghi
-
-
-
- Bank assigned creditor identifier
- Remittance information
- NOK
- EUR
-
- Payee identifier
- Payee name
-
- Payee legal registration identifier
-
-
-
- 4
- SEPA
-
- 1234
- Payment card holder name
-
-
- Debited account identifier
-
-
- IT1212341234123412
- Payment account name
-
-
- BSCTCH22
-
-
- IT1212341234123413
- Payment account name 2
-
-
- BSCTCH22
-
-
-
- 50.00
- VAT
- 1000.00
- S
- 29
- 5.00
-
-
- 0.00
- VAT
- Exemtion reason text
- 1000.00
- E
- Exemption reason code
- 29
- 0.00
-
-
-
- 20181112
-
-
- 20181130
-
-
-
-
- false
-
- 1.00
- 1000.00
- 10.00
- 55
- Doc allowance reason text
-
- VAT
- S
- 5.00
-
-
-
-
- true
-
- 1.00
- 1000.00
- 10.00
- AAA
- Doc charge reason text
-
- VAT
- S
- 5.00
-
-
-
- total amount
-
- 20181130
-
- Mandate reference identifier
-
-
- 2000.00
- 10.00
- 10.00
- 2000.00
- 50.00
- 46.00
- 0.00
- 2050.00
- 0.00
- 2050.00
-
-
- abc123
-
- 20181004
-
-
-
- uvz
-
-
-
+
+
+ invoice note text
+ AAA
+
+
+ invoice note text 2
+ AAA
+
+
+
+
+
+ 1a
+
+ Invoice line note
+
+
+
+ Item standar identifier
+
+
+ Item seller's identifier
+ Item buyer's identifier
+ Item name
+ Item description
+
+ Color
+ Red
+
+
+ Size
+ L
+
+
+ Item classification identifier0
+
+
+ IT
+
+
+
+
+ 12345
+
+
+ 11.00
+ 1.00
+
+
+ false
+
+ 1.00
+
+
+
+ 10.00
+ 1.00
+
+
+
+ 10.00
+
+
+
+ VAT
+ S
+ 5.00
+
+
+
+ 20181112
+
+
+ 20181130
+
+
+
+
+ false
+
+ 1.00
+ 100.00
+ 10.00
+ 95
+ Invoice line allowance reason
+
+
+
+ true
+
+ 1.00
+ 100.00
+ 10.00
+ AAA
+ Invoice line charge reason
+
+
+ 100.00
+
+
+ Line object identifier
+ 130
+
+
+ 6789
+
+
+
+
+
+ 1b
+
+
+ Item name 2
+
+
+
+ 10.00
+
+
+
+ 10.00
+
+
+
+ VAT
+ E
+ 0.00
+
+
+ 100.00
+
+
+
+
+ 123
+
+ Seller identifier 1
+ Seller identifier 2
+ Seller name
+ Seller additional legal information
+
+
+ Seller trading name
+
+
+ Seller contact point
+
+ +41 345 654455
+
+
+ seller@contact.de
+
+
+
+ 12345
+ Seller address line 1
+ Seller address line 2
+ Seller address line 3
+ Seller city
+ DE
+ Seller country subdivision
+
+
+ Seller electronic address
+
+
+ DE12345677
+
+
+ DE49294093
+
+
+
+ Buyer identifier
+ Buyer name
+
+ Buyer legal registration identifier
+ Buyer trading name
+
+
+ Buyer contact point
+
+ +353 2948584
+
+
+ buyer@contact.ie
+
+
+
+ 34562
+ Buyer address line 1
+ Buyer address line 2
+ Buyer address line 3
+ Buyer city
+ IE
+ Buyer country subdivision
+
+
+ Buyer electronic address
+
+
+ IE394838894
+
+
+
+ Tax representative name
+
+ 23455
+ Tax representative address line 1
+ Tax representative address line 2
+ Tax representative address line 3
+ Tax representative city
+ DE
+ Tax representative country subdivision
+
+
+ DE3949053
+
+
+
+ def
+
+
+ abc
+
+
+ 789
+
+
+ Supporting document ref
+ External document location
+ 916
+ Supporting document descr
+ ZGVmYXVsdA==
+
+
+ rst
+ 130
+ AAA
+
+
+ 456
+ Project reference
+
+
+
+
+ deliver location identifier
+ Deliver to party name
+
+ 98765
+ Deliver to address line 1
+ Deliver to address line 2
+ Deliver to address line 3
+ Deliver to city
+ IE
+ Deliver to country subdivision
+
+
+
+
+ 20181204
+
+
+
+ lmn
+
+
+ ghi
+
+
+
+ Bank assigned creditor identifier
+ Remittance information
+ NOK
+ EUR
+
+ Payee identifier
+ Payee name
+
+ Payee legal registration identifier
+
+
+
+ 4
+ SEPA
+
+ 1234
+ Payment card holder name
+
+
+ Debited account identifier
+
+
+ IT1212341234123412
+ Payment account name
+
+
+
+
+
+
+ 5.00
+ VAT
+ 100.00
+ S
+
+ 5.00
+
+
+ 0.00
+ VAT
+ Exemtion reason text
+ 100.00
+ E
+ VATEX-EU-O
+ 29
+ 0.00
+
+
+
+ 20181112
+
+
+ 20181130
+
+
+
+
+ false
+
+ 1.00
+ 100.00
+ 10.00
+ 95
+ Doc allowance reason text
+
+ VAT
+ S
+ 5.00
+
+
+
+
+ true
+
+ 1.00
+ 100.00
+ 10.00
+ AAA
+ Doc charge reason text
+
+ VAT
+ S
+ 5.00
+
+
+
+ total amount
+
+ 20181130
+
+ Mandate reference identifier
+
+
+ 200.00
+ 10.00
+ 10.00
+ 200.00
+ 5.00
+ 4.60
+ 0.00
+ 205.00
+ 0.00
+ 205.00
+
+
+ abc123
+
+ 20181004
+
+
+
+ uvz
+
+
+
diff --git a/library/src/test/resources/not_validating_full_invoice_based_onTest_EeISI_300_CENfullmodel.ubl.xml b/library/src/test/resources/not_validating_full_invoice_based_onTest_EeISI_300_CENfullmodel.ubl.xml
index a314773a..6aec88d9 100644
--- a/library/src/test/resources/not_validating_full_invoice_based_onTest_EeISI_300_CENfullmodel.ubl.xml
+++ b/library/src/test/resources/not_validating_full_invoice_based_onTest_EeISI_300_CENfullmodel.ubl.xml
@@ -1,404 +1,365 @@
-
- urn:cen.eu:en16931:2017
- BT-23 Business Process Type
- Test_EeISI_100
- 2018-11-12
- 2018-11-30
- 380
- ##AAA##invoice note text
- ##AAA##invoice note text 2
- EUR
- NOK
- uvz
- 123
-
- 2018-11-12
- 2018-11-30
- 35
-
-
- abc
- def
-
-
-
- abc123
- 2018-10-04
-
-
-
- lmn
-
-
- ghi
-
-
- opq
-
-
- 789
-
-
- rst
- 130
-
-
- Supporting document ref
- Supporting document descr
-
- ZGVmYXVsdA==
-
- External document location
-
-
-
-
- 456
-
-
-
- Seller electronic address
+
+ urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ Test_EeISI_100
+ 2018-11-12
+ 2018-11-30
+ 380
+ #AAA#invoice note text
+ #AAA#invoice note text 2
+ EUR
+ NOK
+ uvz
+ 123
+
+ 2018-11-12
+ 2018-11-30
+
+
+ abc
+ def
+
+
+
+ abc123
+ 2018-10-04
+
+
+
+ lmn
+
+
+ ghi
+
+
+ 789
+
+
+ Supporting document ref
+ Supporting document descr
+
+ ZGVmYXVsdA==
+
+ External document location
+
+
+
+
+ rst
+ 130
+
+
+ 456
+
+
+
+ Seller electronic address
+
+ Seller identifier 1
+
+
+ Seller identifier 2
+
+
+ Seller trading name
+
+
+ Seller address line 1
+ Seller address line 2
+ Seller city
+ 12345
+ Seller country subdivision
+
+ Seller address line 3
+
+
+ DE
+
+
+
+ DE12345677
+
+ VAT
+
+
+
+ DE49294093
+
+ FC
+
+
+
+ Seller name
+ Seller additional legal information
+
+
+ Seller contact point
+ +41 345 654455
+ seller@contact.de
+
+
+
+
+
+ Buyer electronic address
+
+ Buyer identifier
+
+
+ Buyer trading name
+
+
+ Buyer address line 1
+ Buyer address line 2
+ Buyer city
+ 34562
+ Buyer country subdivision
+
+ Buyer address line 3
+
+
+ IE
+
+
+
+ IE394838894
+
+ VAT
+
+
+
+ Buyer name
+ Buyer legal registration identifier
+
+
+ Buyer contact point
+ +353 2948584
+ buyer@contact.ie
+
+
+
+
- Seller identifier 1
-
-
- Seller identifier 2
-
-
- Bank assigned creditor identifier
+ Payee identifier
- Seller trading name
+ Payee name
+
+
+
+
+ Tax representative name
- Seller address line 1
- Seller address line 2
- Seller city
- 12345
- Seller country subdivision
+ Tax representative address line 1
+ Tax representative address line 2
+ Tax representative city
+ 23455
+ Tax representative country subdivision
- Seller address line 3
+ Tax representative address line 3
DE
- DE12345677
+ DE3949053
VAT
-
- DE49294093
-
- NOVAT
-
-
-
- Seller name
- Seller legal identifier
- Seller additional legal information
-
-
- Seller contact point
- +41 345 654455
- seller@contact.de
-
-
-
-
-
- Buyer electronic address
-
- 0190:Buyer identifier
-
-
- Buyer trading name
-
-
- Buyer address line 1
- Buyer address line 2
- Buyer city
- 34562
- Buyer country subdivision
-
- Buyer address line 3
-
-
- IE
-
-
-
- IE394838894
-
- VAT
-
-
-
- Buyer name
- Buyer legal registration identifier
-
-
- Buyer contact point
- +353 2948584
- buyer@contact.ie
-
-
-
-
-
- Payee identifier
-
-
- Payee name
-
-
- Payee legal registration identifier
-
-
-
-
- Tax representative name
-
-
- Tax representative address line 1
- Tax representative address line 2
- Tax representative city
- 23455
- Tax representative country subdivision
-
- Tax representative address line 3
-
-
- DE
-
-
-
- DE3949053
-
- VAT
-
-
-
-
- 2018-12-04
-
- deliver location identifier
-
- Deliver to address line 1
- Deliver to address line 2
- Deliver to city
- 98765
- Deliver to country subdivision
-
- Deliver to address line 3
-
-
- IE
-
-
-
-
-
- Deliver to party name
-
-
-
-
- 4
- Remittance information
-
- 1234
- mandatory network id
- Payment card holder name
-
-
- IT1212341234123412
- Payment account name
-
- BSCTCH22
-
-
-
- IT1212341234123413
- Payment account name 2
-
- BSCTCH22
-
-
-
- Mandate reference identifier
-
- Debited account identifier
-
-
-
-
- total amount
-
-
- false
- 55
- Doc allowance reason text
- 1.0000
- 10.00
- 1000.00
-
- S
- 5.00
-
- VAT
-
-
-
-
- true
- AAA
- Doc charge reason text
- 1.0000
- 10.00
- 1000.00
-
- S
- 5.00
-
- VAT
-
-
-
-
- 46.00
-
-
- 50.00
-
- 1000.00
- 50.00
-
- S
- 5.00
-
- VAT
-
-
-
-
- 1000.00
- 0.00
-
- E
- 0.00
- Exemption reason code
- Exemtion reason text
-
- VAT
-
-
-
-
-
- 2000.00
- 2000.00
- 2050.00
- 10.00
- 10.00
- 2050.00
-
-
- 1a
- Invoice line note
- 10.00000000
- 1000.00
- 6789
-
- 2018-11-12
- 2018-11-30
-
-
- 12345
-
-
- Line object identifier
- 130
-
+
+
+ 2018-12-04
+
+ deliver location identifier
+
+ Deliver to address line 1
+ Deliver to address line 2
+ Deliver to city
+ 98765
+ Deliver to country subdivision
+
+ Deliver to address line 3
+
+
+ IE
+
+
+
+
+
+ Deliver to party name
+
+
+
+
+ total amount
+
false
- 55
- Invoice line allowance reason
- 1
+ 95
+ Doc allowance reason text
+ 1.00
10
1000
+
+ S
+ 5
+
+ VAT
+
+
true
AAA
- Invoice line charge reason
- 1
+ Doc charge reason text
+ 1.00
10
1000
-
-
- Item description
- Item name
-
- Item buyer's identifier
-
-
- Item seller's identifier
-
-
- Item standar identifier
-
-
- IT
-
-
- Item classification identifier0
-
-
+
S
- 5.00
+ 5
VAT
-
-
- Color
- Red
-
-
- Size
- L
-
-
-
- 10.00
- 1.00
+
+
+
+ 50
+
+ 1000
+ 50
+
+ S
+ 5
+
+ VAT
+
+
+
+
+ 1000
+ 0
+
+ E
+ 0
+ VATEX-EU-O
+ Exemtion reason text
+
+ VAT
+
+
+
+
+
+ 46
+
+
+ 200
+ 200
+ 205
+ 10
+ 10
+ 0
+ 205
+
+
+ 1a
+ Invoice line note
+ 10
+ 1000
+ 6789
+
+ 2018-11-12
+ 2018-11-30
+
+
+ 12345
+
+
+ Line object identifier
+ 130
+
false
- 1
- 11
+ 95
+ Invoice line allowance reason
+ 1.00
+ 10
+ 1000
-
-
-
- 1b
- 10.00000000
- 1000.00
-
- Item name 2
-
- E
- 0.00
-
- VAT
-
-
-
-
- 10.00
-
-
-
+
+ true
+ AAA
+ Invoice line charge reason
+ 1.00
+ 10
+ 1000
+
+
+ Item description
+ Item name
+
+ Item buyer's identifier
+
+
+ Item seller's identifier
+
+
+ Item standar identifier
+
+
+ IT
+
+
+ Item classification identifier0
+
+
+ S
+ 5
+
+ VAT
+
+
+
+ Color
+ Red
+
+
+ Size
+ L
+
+
+
+ 10
+ 1
+
+ false
+ 1
+ 11
+
+
+
+
+ 1b
+ 10
+ 1000
+
+ Item name 2
+
+ E
+ 0
+
+ VAT
+
+
+
+
+ 10
+
+
+
diff --git a/validator/pom.xml b/validator/pom.xml
index ec333d9e..362ce454 100644
--- a/validator/pom.xml
+++ b/validator/pom.xml
@@ -54,7 +54,6 @@
org.apache.pdfbox
pdfbox
3.0.2
- test
jakarta.xml.bind
diff --git a/validator/src/main/java/org/mustangproject/validator/PDFValidator.java b/validator/src/main/java/org/mustangproject/validator/PDFValidator.java
index da719f9b..c42caa9e 100644
--- a/validator/src/main/java/org/mustangproject/validator/PDFValidator.java
+++ b/validator/src/main/java/org/mustangproject/validator/PDFValidator.java
@@ -52,7 +52,7 @@ public class PDFValidator extends Validator {
}
private static final Logger LOGGER = LoggerFactory.getLogger(PDFValidator.class.getCanonicalName()); // log output
- private static final PDFAFlavour[] PDF_A_3_FLAVOURS = {PDFAFlavour.PDFA_3_A, PDFAFlavour.PDFA_3_A, PDFAFlavour.PDFA_3_A};
+ private static final PDFAFlavour[] PDF_A_3_FLAVOURS = {PDFAFlavour.PDFA_3_A, PDFAFlavour.PDFA_3_B, PDFAFlavour.PDFA_3_U};
private String pdfFilename;
@@ -239,7 +239,8 @@ public class PDFValidator extends Validator {
boolean versionValid = false;
for (int i = 0; i < nodes.getLength(); i++) {
- final String[] valueArray = {"1.0", "2p0", "1.2", "2.0", "2.1"}; //1.2, 2.0 and 2.1 are for xrechnung 1.2, 2p0 can be ZF 2.0, 2.1, 2.1.1
+ final String[] valueArray = {"1.0", "2p0", "1.2", "2.0", "2.1", "2.2", "2.3", "3.0"}; //1.2, 2.0, 2.1, 2.2, 2.3 and 3.0 are for xrechnung 1.2, 2p0 can be ZF 2.0, 2.1, 2.1.1
+
if (stringArrayContains(valueArray, nodes.item(i).getTextContent())) {
versionValid = true;
} // e.g. 1.0
@@ -263,6 +264,7 @@ public class PDFValidator extends Validator {
final byte[] konikSignature = "Konik".getBytes(StandardCharsets.UTF_8);
final byte[] pdfMachineSignature = "pdfMachine from Broadgun Software".getBytes(StandardCharsets.UTF_8);
final byte[] ghostscriptSignature = "%%Invocation:".getBytes(StandardCharsets.UTF_8);
+ final byte[] cibpdfbrewerSignature = "CIB pdf brewer".getBytes(StandardCharsets.UTF_8);
if (ByteArraySearcher.contains(fileContents, symtraxSignature)) {
Signature = "Symtrax";
@@ -278,6 +280,8 @@ public class PDFValidator extends Validator {
Signature = "pdfMachine";
} else if (ByteArraySearcher.contains(fileContents, ghostscriptSignature)) {
Signature = "Ghostscript";
+ } else if (ByteArraySearcher.contains(fileContents, cibpdfbrewerSignature)) {
+ Signature = "CIB pdf brewer";
}
context.setSignature(Signature);
@@ -297,8 +301,10 @@ public class PDFValidator extends Validator {
if (!processorResult.getValidationResult().isCompliant()) {
context.setInvalid();
}
+
+ PDFAFlavour pdfaFlavourFromValidationResult = processorResult.getValidationResult().getPDFAFlavour();
if (Arrays.stream(PDF_A_3_FLAVOURS)
- .anyMatch(pdfaFlavour -> processorResult.getValidationResult().getPDFAFlavour().equals(pdfaFlavour))) {
+ .noneMatch(pdfaFlavourFromValidationResult::equals)) {
context.addResultItem(
new ValidationResultItem(ESeverity.error, "Not a PDF/A-3").setSection(23).setPart(EPart.pdf));
diff --git a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java
index 3d11ff88..c2124b87 100644
--- a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java
+++ b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java
@@ -269,14 +269,14 @@ public class XMLValidator extends Validator {
// saxon java net.sf.saxon.Transform -o tcdl2.0.tsdtf.sch.tmp.xsl -s
// tcdl2.0.tsdtf.sch iso_svrl.xsl
- } else if (root.getLocalName().equalsIgnoreCase("Invoice")) {
+ } else if (root.getLocalName().equalsIgnoreCase("Invoice") || root.getLocalName().equalsIgnoreCase("CreditNote") ) {
context.setGeneration("2");
context.setFormat("UBL");
isXRechnung = context.getProfile().contains("xrechnung");
// UBL
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.xslt";
+ validateSchema(zfXML.getBytes(StandardCharsets.UTF_8), "UBL_21/maindoc/UBL-"+root.getLocalName()+"-2.1.xsd", 18, EPart.fx);
+ xsltFilename = "/xslt/en16931schematron/EN16931-UBL-validation.xslt";
mainSchematronSectionErrorTypeCode=24;
@@ -364,7 +364,7 @@ public class XMLValidator extends Validator {
if (context.getGeneration().equals("2")
&& (isBasic || isEN16931 || isXRechnung)) {
//additionally validate against CEN
- validateSchematron(zfXML, "/xslt/cii16931schematron/EN16931-CII-validation.xslt", 24, ESeverity.error);
+ validateSchematron(zfXML, "/xslt/en16931schematron/EN16931-CII-validation.xslt", 24, ESeverity.error);
if (!disableNotices || XrechnungSeverity != ESeverity.notice) {
validateXR(zfXML, XrechnungSeverity);
}
@@ -419,11 +419,16 @@ public class XMLValidator extends Validator {
* @param xml the xml to be checked
* @param xsltFilename the filename of the intermediate XSLT file
* @param section the error type code, if one arises
- * @param severity how serious a error should be treated - may only be notice
+ * @param defaultSeverity how serious a error should be treated - may only be notice
* @throws IrrecoverableValidationError if anything happened that prevents further checks
*/
- public void validateSchematron(String xml, String xsltFilename, int section, ESeverity severity) throws IrrecoverableValidationError {
+ public void validateSchematron(String xml, String xsltFilename, int section, ESeverity defaultSeverity) throws IrrecoverableValidationError {
ISchematronResource aResSCH = null;
+ ESeverity severity=defaultSeverity;
+ if (defaultSeverity!=ESeverity.notice) {
+ severity=ESeverity.error;
+ }
+
aResSCH = SchematronResourceXSLT.fromClassPath(xsltFilename);
if (aResSCH != null) {
@@ -465,6 +470,16 @@ public class XMLValidator extends Validator {
thisFailLocation = currentFailNode.getAttributes().getNamedItem("location").getNodeValue();
}
+ if (currentFailNode.getAttributes().getNamedItem("flag") != null) {
+ // the XR issues warnings with flag=warning
+ if (currentFailNode.getAttributes().getNamedItem("flag").getNodeValue().equals("warning")) {
+ if (defaultSeverity!=ESeverity.notice) {
+ severity=ESeverity.warning;
+ }
+ }
+
+ }
+
NodeList failChilds = currentFailNode.getChildNodes();
for (int failChildIndex = 0; failChildIndex < failChilds.getLength(); failChildIndex++) {
if (failChilds.item(failChildIndex).getLocalName() != null) {
diff --git a/validator/src/main/resources/xslt/UBL_21/EN16931-UBL-validation.xslt b/validator/src/main/resources/xslt/UBL_21/EN16931-UBL-validation.xslt
deleted file mode 100644
index c2048d78..00000000
--- a/validator/src/main/resources/xslt/UBL_21/EN16931-UBL-validation.xslt
+++ /dev/null
@@ -1,15540 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /
-
-
-
-
-
- *:
-
- [namespace-uri()='
-
- ']
-
-
-
- [
-
- ]
-
-
-
- /
-
- @
-
-
- @*[local-name()='
-
- ' and namespace-uri()='
-
- ']
-
-
-
-
-
-
-
-
- /
-
-
- [
-
- ]
-
-
-
- /@
-
-
-
-
-
-
-
- /
-
-
- [
-
- ]
-
-
-
- /@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- .
-
-
-
-
- U
-
- U
-
-
-
- U.
-
- n
-
-
-
- U.
-
- _
-
- _
-
-
-
-
-
-
-
-
- Â
- Â
- Â
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-model
- UBL-model
-
-
-
-
-
-
-
- UBL-syntax
- UBL-syntax
-
-
-
-
-
-
-
- Codesmodel
- Codesmodel
-
-
-
-
-
-
-
- EN16931 model bound to UBL
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-52
- fatal
-
-
-
- [BR-52]-Each Additional supporting document (BG-24) shall contain a Supporting document reference (BT-122).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CO-25
- fatal
-
-
-
- [BR-CO-25]-In case the Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-63
- fatal
-
-
-
- [BR-63]-The Buyer electronic address (BT-49) shall have a Scheme identifier.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-11
- fatal
-
-
-
- [BR-11]-The Buyer postal address shall contain a Buyer country code (BT-55).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-51
- warning
-
-
-
- [BR-51]-In accordance with card payments security standards an invoice should never include a full card primary account number (BT-87). At the moment PCI Security Standards Council has defined that the first 6 digits and last 4 digits are the maximum number of digits to be shown.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-57
- fatal
-
-
-
- [BR-57]-Each Deliver to address (BG-15) shall contain a Deliver to country code (BT-80).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-31
- fatal
-
-
-
- [BR-31]-Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).
-
-
-
-
-
-
-
-
-
- BR-32
- fatal
-
-
-
- [BR-32]-Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).
-
-
-
-
-
-
-
-
-
- BR-33
- fatal
-
-
-
- [BR-33]-Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).
-
-
-
-
-
-
-
-
-
- BR-CO-05
- fatal
-
-
-
- [BR-CO-05]-Document level allowance reason code (BT-98) and Document level allowance reason (BT-97) shall indicate the same type of allowance.
-
-
-
-
-
-
-
-
-
- BR-CO-21
- fatal
-
-
-
- [BR-CO-21]-Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.
-
-
-
-
-
-
-
-
-
- BR-DEC-01
- fatal
-
-
-
- [BR-DEC-01]-The allowed maximum number of decimals for the Document level allowance amount (BT-92) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-02
- fatal
-
-
-
- [BR-DEC-02]-The allowed maximum number of decimals for the Document level allowance base amount (BT-93) is 2.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-36
- fatal
-
-
-
- [BR-36]-Each Document level charge (BG-21) shall have a Document level charge amount (BT-99).
-
-
-
-
-
-
-
-
-
- BR-37
- fatal
-
-
-
- [BR-37]-Each Document level charge (BG-21) shall have a Document level charge VAT category code (BT-102).
-
-
-
-
-
-
-
-
-
- BR-38
- fatal
-
-
-
- [BR-38]-Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).
-
-
-
-
-
-
-
-
-
- BR-CO-06
- fatal
-
-
-
- [BR-CO-06]-Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.
-
-
-
-
-
-
-
-
-
- BR-CO-22
- fatal
-
-
-
- [BR-CO-22]-Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.
-
-
-
-
-
-
-
-
-
- BR-DEC-05
- fatal
-
-
-
- [BR-DEC-05]-The allowed maximum number of decimals for the Document level charge amount (BT-99) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-06
- fatal
-
-
-
- [BR-DEC-06]-The allowed maximum number of decimals for the Document level charge base amount (BT-100) is 2.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-12
- fatal
-
-
-
- [BR-12]-An Invoice shall have the Sum of Invoice line net amount (BT-106).
-
-
-
-
-
-
-
-
-
- BR-13
- fatal
-
-
-
- [BR-13]-An Invoice shall have the Invoice total amount without VAT (BT-109).
-
-
-
-
-
-
-
-
-
- BR-14
- fatal
-
-
-
- [BR-14]-An Invoice shall have the Invoice total amount with VAT (BT-112).
-
-
-
-
-
-
-
-
-
- BR-15
- fatal
-
-
-
- [BR-15]-An Invoice shall have the Amount due for payment (BT-115).
-
-
-
-
-
-
-
-
-
- BR-CO-10
- fatal
-
-
-
- [BR-CO-10]-Sum of Invoice line net amount (BT-106) = Σ Invoice line net amount (BT-131).
-
-
-
-
-
-
-
-
-
- BR-CO-11
- fatal
-
-
-
- [BR-CO-11]-Sum of allowances on document level (BT-107) = Σ Document level allowance amount (BT-92).
-
-
-
-
-
-
-
-
-
- BR-CO-12
- fatal
-
-
-
- [BR-CO-12]-Sum of charges on document level (BT-108) = Σ Document level charge amount (BT-99).
-
-
-
-
-
-
-
-
-
- BR-CO-13
- fatal
-
-
-
- [BR-CO-13]-Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).
-
-
-
-
-
-
-
-
-
- BR-CO-16
- fatal
-
-
-
- [BR-CO-16]-Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).
-
-
-
-
-
-
-
-
-
- BR-DEC-09
- fatal
-
-
-
- [BR-DEC-09]-The allowed maximum number of decimals for the Sum of Invoice line net amount (BT-106) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-10
- fatal
-
-
-
- [BR-DEC-10]-The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-11
- fatal
-
-
-
- [BR-DEC-11]-The allowed maximum number of decimals for the Sum of charges on document level (BT-108) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-12
- fatal
-
-
-
- [BR-DEC-12]-The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-14
- fatal
-
-
-
- [BR-DEC-14]-The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-16
- fatal
-
-
-
- [BR-DEC-16]-The allowed maximum number of decimals for the Paid amount (BT-113) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-17
- fatal
-
-
-
- [BR-DEC-17]-The allowed maximum number of decimals for the Rounding amount (BT-114) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-18
- fatal
-
-
-
- [BR-DEC-18]-The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2.Â
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-01
- fatal
-
-
-
- [BR-01]-An Invoice shall have a Specification identifier (BT-24). Â
-
-
-
-
-
-
-
-
-
- BR-02
- fatal
-
-
-
- [BR-02]-An Invoice shall have an Invoice number (BT-1).
-
-
-
-
-
-
-
-
-
- BR-03
- fatal
-
-
-
- [BR-03]-An Invoice shall have an Invoice issue date (BT-2).
-
-
-
-
-
-
-
-
-
- BR-04
- fatal
-
-
-
- [BR-04]-An Invoice shall have an Invoice type code (BT-3).
-
-
-
-
-
-
-
-
-
- BR-05
- fatal
-
-
-
- [BR-05]-An Invoice shall have an Invoice currency code (BT-5).
-
-
-
-
-
-
-
-
-
- BR-06
- fatal
-
-
-
- [BR-06]-An Invoice shall contain the Seller name (BT-27).
-
-
-
-
-
-
-
-
-
- BR-07
- fatal
-
-
-
- [BR-07]-An Invoice shall contain the Buyer name (BT-44).
-
-
-
-
-
-
-
-
-
- BR-08
- fatal
-
-
-
- [BR-08]-An Invoice shall contain the Seller postal address.
-
-
-
-
-
-
-
-
-
- BR-10
- fatal
-
-
-
- [BR-10]-An Invoice shall contain the Buyer postal address (BG-8).
-
-
-
-
-
-
-
-
-
- BR-16
- fatal
-
-
-
- [BR-16]-An Invoice shall have at least one Invoice line (BG-25)
-
-
-
-
-
-
-
-
-
- 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.
-
-
-
-
-
-
-
-
-
- BR-66
- fatal
-
-
-
- [BR-66]-An Invoice shall contain maximum one Payment Card account (BG-18).
-
-
-
-
-
-
-
-
-
- BR-67
- fatal
-
-
-
- [BR-67]-An Invoice shall contain maximum one Payment Mandate (BG-19).
-
-
-
-
-
-
-
-
-
- BR-AE-01
- fatal
-
-
-
- [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-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-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-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-CO-03
- fatal
-
-
-
- [BR-CO-03]-Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.
-
-
-
-
-
-
-
-
-
- BR-CO-15
- fatal
-
-
-
- [BR-CO-15]-Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).
-
-
-
-
-
-
-
-
-
- BR-CO-18
- fatal
-
-
-
- [BR-CO-18]-An Invoice shall at least have one VAT breakdown group (BG-23).
-
-
-
-
-
-
-
-
-
- BR-DEC-13
- fatal
-
-
-
- [BR-DEC-13]-The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-15
- fatal
-
-
-
- [BR-DEC-15]-The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2.
-
-
-
-
-
-
-
-
-
- BR-E-01
- fatal
-
-
-
- [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-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-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-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-G-01
- fatal
-
-
-
- [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-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-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-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-IC-01
- fatal
-
-
-
- [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-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-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-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-11
- fatal
-
-
-
- [BR-IC-11]-In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.
-
-
-
-
-
-
-
-
-
- BR-IC-12
- fatal
-
-
-
- [BR-IC-12]-In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Deliver to country code (BT-80) shall not be blank.
-
-
-
-
-
-
-
-
-
- BR-IG-01
- fatal
-
-
-
- [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-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-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-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-IP-01
- fatal
-
-
-
- [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-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-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-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-O-01
- fatal
-
-
-
- [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-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-48).
-
-
-
-
-
-
-
-
-
- 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-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-11
- fatal
-
-
-
- [BR-O-11]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain other VAT breakdown groups (BG-23).
-
-
-
-
-
-
-
-
-
- BR-O-12
- fatal
-
-
-
- [BR-O-12]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is not "Not subject to VAT".
-
-
-
-
-
-
-
-
-
- BR-O-13
- fatal
-
-
-
- [BR-O-13]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".
-
-
-
-
-
-
-
-
-
- BR-O-14
- fatal
-
-
-
- [BR-O-14]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level charges (BG-21) where Document level charge VAT category code (BT-102) is not "Not subject to VAT".
-
-
-
-
-
-
-
-
-
- BR-S-01
- fatal
-
-
-
- [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-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-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-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-Z-01
- fatal
-
-
-
- [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-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-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-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-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â€.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-21
- fatal
-
-
-
- [BR-21]-Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).
-
-
-
-
-
-
-
-
-
- BR-22
- fatal
-
-
-
- [BR-22]-Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).
-
-
-
-
-
-
-
-
-
- BR-23
- fatal
-
-
-
- [BR-23]-An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).
-
-
-
-
-
-
-
-
-
- BR-24
- fatal
-
-
-
- [BR-24]-Each Invoice line (BG-25) shall have an Invoice line net amount (BT-131).
-
-
-
-
-
-
-
-
-
- BR-25
- fatal
-
-
-
- [BR-25]-Each Invoice line (BG-25) shall contain the Item name (BT-153).
-
-
-
-
-
-
-
-
-
- BR-26
- fatal
-
-
-
- [BR-26]-Each Invoice line (BG-25) shall contain the Item net price (BT-146).
-
-
-
-
-
-
-
-
-
- BR-27
- fatal
-
-
-
- [BR-27]-The Item net price (BT-146) shall NOT be negative.
-
-
-
-
-
-
-
-
-
- BR-28
- fatal
-
-
-
- [BR-28]-The Item gross price (BT-148) shall NOT be negative.
-
-
-
-
-
-
-
-
-
- BR-CO-04
- fatal
-
-
-
- [BR-CO-04]-Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).
-
-
-
-
-
-
-
-
-
- BR-DEC-23
- fatal
-
-
-
- [BR-DEC-23]-The allowed maximum number of decimals for the Invoice line net amount (BT-131) is 2.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-41
- fatal
-
-
-
- [BR-41]-Each Invoice line allowance (BG-27) shall have an Invoice line allowance amount (BT-136).
-
-
-
-
-
-
-
-
-
- BR-42
- fatal
-
-
-
- [BR-42]-Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).
-
-
-
-
-
-
-
-
-
- BR-CO-07
- fatal
-
-
-
- [BR-CO-07]-Invoice line allowance reason code (BT-140) and Invoice line allowance reason (BT-139) shall indicate the same type of allowance reason.
-
-
-
-
-
-
-
-
-
- BR-CO-23
- fatal
-
-
-
- [BR-CO-23]-Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.
-
-
-
-
-
-
-
-
-
- BR-DEC-24
- fatal
-
-
-
- [BR-DEC-24]-The allowed maximum number of decimals for the Invoice line allowance amount (BT-136) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-25
- fatal
-
-
-
- [BR-DEC-25]-The allowed maximum number of decimals for the Invoice line allowance base amount (BT-137) is 2.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-43
- fatal
-
-
-
- [BR-43]-Each Invoice line charge (BG-28) shall have an Invoice line charge amount (BT-141).
-
-
-
-
-
-
-
-
-
- BR-44
- fatal
-
-
-
- [BR-44]-Each Invoice line charge shall have an Invoice line charge reason or an invoice line allowance reason code.
-
-
-
-
-
-
-
-
-
- BR-CO-08
- fatal
-
-
-
- [BR-CO-08]-Invoice line charge reason code (BT-145) and Invoice line charge reason (BT-144) shall indicate the same type of charge reason.
-
-
-
-
-
-
-
-
-
- BR-CO-24
- fatal
-
-
-
- [BR-CO-24]-Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.
-
-
-
-
-
-
-
-
-
- BR-DEC-27
- fatal
-
-
-
- [BR-DEC-27]-The allowed maximum number of decimals for the Invoice line charge amount (BT-141) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-28
- fatal
-
-
-
- [BR-DEC-28]-The allowed maximum number of decimals for the Invoice line charge base amount (BT-142) is 2.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-30
- fatal
-
-
-
- [BR-30]-If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).
-
-
-
-
-
-
-
-
-
- BR-CO-20
- fatal
-
-
-
- [BR-CO-20]-If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-29
- fatal
-
-
-
- [BR-29]-If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).
-
-
-
-
-
-
-
-
-
- BR-CO-19
- fatal
-
-
-
- [BR-CO-19]-If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-54
- fatal
-
-
-
- [BR-54]-Each Item attribute (BG-32) shall contain an Item attribute name (BT-160) and an Item attribute value (BT-161).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-65
- fatal
-
-
-
- [BR-65]-The Item classification identifier (BT-158) shall have a Scheme identifier.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-64
- fatal
-
-
-
- [BR-64]-The Item standard identifier (BT-157) shall have a Scheme identifier.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-08
- fatal
-
-
-
- [BR-CL-08]-Invoiced note subject code shall be coded using UNCL4451
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-17
- fatal
-
-
-
- [BR-17]-The Payee name (BT-59) shall be provided in the Invoice, if the Payee (BG-10) is different from the Seller (BG-4)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-50
- fatal
-
-
-
- [BR-50]-A Payment account identifier (BT-84) shall be present if Credit transfer (BG-17) information is provided in the Invoice.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-49
- fatal
-
-
-
- [BR-49]-A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).
-
-
-
-
-
-
-
-
-
- BR-61
- fatal
-
-
-
- [BR-61]-If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-55
- fatal
-
-
-
- [BR-55]-Each Preceding Invoice reference (BG-3) shall contain a Preceding Invoice reference (BT-25).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CO-26
- fatal
-
-
-
- [BR-CO-26]-In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.Â
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-62
- fatal
-
-
-
- [BR-62]-The Seller electronic address (BT-34) shall have a Scheme identifier.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-09
- fatal
-
-
-
- [BR-09]-The Seller postal address (BG-5) shall contain a Seller country code (BT-40).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-18
- fatal
-
-
-
- [BR-18]-The Seller tax representative name (BT-62) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11)
-
-
-
-
-
-
-
-
-
- BR-19
- fatal
-
-
-
- [BR-19]-The Seller tax representative postal address (BG-12) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).
-
-
-
-
-
-
-
-
-
- BR-56
- fatal
-
-
-
- [BR-56]-Each Seller tax representative party (BG-11) shall have a Seller tax representative VAT identifier (BT-63).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-20
- fatal
-
-
-
- [BR-20]-The Seller tax representative postal address (BG-12) shall contain a Tax representative country code (BT-69), if the Seller (BG-4) has a Seller tax representative party (BG-11).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CO-14
- fatal
-
-
-
- [BR-CO-14]-Invoice total VAT amount (BT-110) = Σ VAT category tax amount (BT-117).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-45
- fatal
-
-
-
- [BR-45]-Each VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).
-
-
-
-
-
-
-
-
-
- BR-46
- fatal
-
-
-
- [BR-46]-Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).
-
-
-
-
-
-
-
-
-
- BR-47
- fatal
-
-
-
- [BR-47]-Each VAT breakdown (BG-23) shall be defined through a VAT category code (BT-118).
-
-
-
-
-
-
-
-
-
- BR-48
- fatal
-
-
-
- [BR-48]-Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.
-
-
-
-
-
-
-
-
-
- BR-CO-17
- fatal
-
-
-
- [BR-CO-17]-VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.
-
-
-
-
-
-
-
-
-
- BR-DEC-19
- fatal
-
-
-
- [BR-DEC-19]-The allowed maximum number of decimals for the VAT category taxable amount (BT-116) is 2.
-
-
-
-
-
-
-
-
-
- BR-DEC-20
- fatal
-
-
-
- [BR-DEC-20]-The allowed maximum number of decimals for the VAT category tax amount (BT-117) is 2. Â Â
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CO-09
- fatal
-
-
-
- [BR-CO-09]-The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix ‘EL’.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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-09
- fatal
-
-
-
- [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-10
- fatal
-
-
-
- [BR-AE-10]-A VAT breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-AE-06
- fatal
-
-
-
- [BR-AE-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" the Document level allowance VAT rate (BT-96) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-AE-07
- fatal
-
-
-
- [BR-AE-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-AE-05
- fatal
-
-
-
- [BR-AE-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" the Invoiced item VAT rate (BT-152) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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-09
- fatal
-
-
-
- [BR-E-09]-The VAT category tax amount (BT-117) In a VAT breakdown (BG-23) where the VAT category code (BT-118) equals "Exempt from VAT" shall equal 0 (zero).
-
-
-
-
-
-
-
-
-
- BR-E-10
- fatal
-
-
-
- [BR-E-10]-A VAT breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-E-06
- fatal
-
-
-
- [BR-E-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT", the Document level allowance VAT rate (BT-96) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-E-07
- fatal
-
-
-
- [BR-E-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT", the Document level charge VAT rate (BT-103) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-E-05
- fatal
-
-
-
- [BR-E-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT", the Invoiced item VAT rate (BT-152) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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-09
- fatal
-
-
-
- [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-10
- fatal
-
-
-
- [BR-G-10]-A VAT breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-G-06
- fatal
-
-
-
- [BR-G-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" the Document level allowance VAT rate (BT-96) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-G-07
- fatal
-
-
-
- [BR-G-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" the Document level charge VAT rate (BT-103) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-G-05
- fatal
-
-
-
- [BR-G-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" the Invoiced item VAT rate (BT-152) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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-09
- fatal
-
-
-
- [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-10
- fatal
-
-
-
- [BR-IC-10]-A VAT breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-IC-06
- fatal
-
-
-
- [BR-IC-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Intra-community supply" the Document level allowance VAT rate (BT-96) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-IC-07
- fatal
-
-
-
- [BR-IC-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" the Document level charge VAT rate (BT-103) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-IC-05
- fatal
-
-
-
- [BR-IC-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intracommunity supply" the Invoiced item VAT rate (BT-152) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-IG-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-09
- fatal
-
-
-
- [BR-IG-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).
-
-
-
-
-
-
-
-
-
- BR-IG-10
- fatal
-
-
-
- [BR-IG-10]-A VAT breakdown (BG-23) with VAT Category code (BT-118) "IGIC" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-IG-06
- fatal
-
-
-
- [BR-IG-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-IG-07
- fatal
-
-
-
- [BR-IG-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-IG-05
- fatal
-
-
-
- [BR-IG-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" the invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-IP-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-09
- fatal
-
-
-
- [BR-IP-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).
-
-
-
-
-
-
-
-
-
- BR-IP-10
- fatal
-
-
-
- [BR-IP-10]-A VAT breakdown (BG-23) with VAT Category code (BT-118) "IPSI" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-IP-06
- fatal
-
-
-
- [BR-IP-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-IP-07
- fatal
-
-
-
- [BR-IP-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-IP-05
- fatal
-
-
-
- [BR-IP-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" the Invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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-09
- fatal
-
-
-
- [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-10
- fatal
-
-
-
- [BR-O-10]-A VAT breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-O-06
- fatal
-
-
-
- [BR-O-06]-A Document level allowance (BG-20) where VAT category code (BT-95) is "Not subject to VAT" shall not contain a Document level allowance VAT rate (BT-96).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-O-07
- fatal
-
-
-
- [BR-O-07]-A Document level charge (BG-21) where the VAT category code (BT-102) is "Not subject to VAT" shall not contain a Document level charge VAT rate (BT-103).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-O-05
- fatal
-
-
-
- [BR-O-05]-An Invoice line (BG-25) where the VAT category code (BT-151) is "Not subject to VAT" shall not contain an Invoiced item VAT rate (BT-152).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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-09
- fatal
-
-
-
- [BR-S-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).
-
-
-
-
-
-
-
-
-
- BR-S-10
- fatal
-
-
-
- [BR-S-10]-A VAT breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-S-06
- fatal
-
-
-
- [BR-S-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" the Document level allowance VAT rate (BT-96) shall be greater than zero.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-S-07
- fatal
-
-
-
- [BR-S-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" the Document level charge VAT rate (BT-103) shall be greater than zero.Â
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-S-05
- fatal
-
-
-
- [BR-S-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" the Invoiced item VAT rate (BT-152) shall be greater than zero.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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-09
- fatal
-
-
-
- [BR-Z-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" shall equal 0 (zero).
-
-
-
-
-
-
-
-
-
- BR-Z-10
- fatal
-
-
-
- [BR-Z-10]-A VAT breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-Z-06
- fatal
-
-
-
- [BR-Z-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" the Document level allowance VAT rate (BT-96) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-Z-07
- fatal
-
-
-
- [BR-Z-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Zero rated" the Document level charge VAT rate (BT-103) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-Z-05
- fatal
-
-
-
- [BR-Z-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Zero rated" the Invoiced item VAT rate (BT-152) shall be 0 (zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-51
- fatal
-
-
-
- [UBL-SR-51]-An address can only have one third line.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-42
- fatal
-
-
-
- [UBL-SR-42]-Party tax scheme shall occur maximum twice in accounting supplier party
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-33
- fatal
-
-
-
- [UBL-SR-33]-Supporting document description shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-43
- fatal
-
-
-
- [UBL-SR-43]-Scheme identifier shall only be used for invoiced object (document type code with value 130 or 50)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-DT-01
- fatal
-
-
-
- [UBL-DT-01]-Amounts shall be decimal up to two fraction digits
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-DT-06
- fatal
-
-
-
- [UBL-DT-06]-Binary object elements shall contain the mime code attribute
-
-
-
-
-
-
-
-
-
- UBL-DT-07
- fatal
-
-
-
- [UBL-DT-07]-Binary object elements shall contain the file name attribute
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-25
- fatal
-
-
-
- [UBL-SR-25]-Deliver to party name shall occur maximum once
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-30
- fatal
-
-
-
- [UBL-SR-30]-Document level allowance reason shall occur maximum once
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-31
- fatal
-
-
-
- [UBL-SR-31]-Document level charge reason shall occur maximum once
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-CR-001
- warning
-
-
-
- [UBL-CR-001]-A UBL invoice should not include extensions
-
-
-
-
-
-
-
-
-
- UBL-CR-002
- warning
-
-
-
- [UBL-CR-002]-A UBL invoice should not include the UBLVersionID or it should be 2.1
-
-
-
-
-
-
-
-
-
- UBL-CR-003
- warning
-
-
-
- [UBL-CR-003]-A UBL invoice should not include the ProfileExecutionID
-
-
-
-
-
-
-
-
-
- UBL-CR-004
- warning
-
-
-
- [UBL-CR-004]-A UBL invoice should not include the CopyIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-005
- warning
-
-
-
- [UBL-CR-005]-A UBL invoice should not include the UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-006
- warning
-
-
-
- [UBL-CR-006]-A UBL invoice should not include the IssueTime
-
-
-
-
-
-
-
-
-
- UBL-CR-007
- warning
-
-
-
- [UBL-CR-007]-A UBL invoice should not include the PricingCurrencyCode
-
-
-
-
-
-
-
-
-
- UBL-CR-008
- warning
-
-
-
- [UBL-CR-008]-A UBL invoice should not include the PaymentCurrencyCode
-
-
-
-
-
-
-
-
-
- UBL-CR-009
- warning
-
-
-
- [UBL-CR-009]-A UBL invoice should not include the PaymentAlternativeCurrencyCode
-
-
-
-
-
-
-
-
-
- UBL-CR-010
- warning
-
-
-
- [UBL-CR-010]-A UBL invoice should not include the AccountingCostCode
-
-
-
-
-
-
-
-
-
- UBL-CR-011
- warning
-
-
-
- [UBL-CR-011]-A UBL invoice should not include the LineCountNumeric
-
-
-
-
-
-
-
-
-
- UBL-CR-012
- warning
-
-
-
- [UBL-CR-012]-A UBL invoice should not include the InvoicePeriod StartTime
-
-
-
-
-
-
-
-
-
- UBL-CR-013
- warning
-
-
-
- [UBL-CR-013]-A UBL invoice should not include the InvoicePeriod EndTime
-
-
-
-
-
-
-
-
-
- UBL-CR-014
- warning
-
-
-
- [UBL-CR-014]-A UBL invoice should not include the InvoicePeriod DurationMeasure
-
-
-
-
-
-
-
-
-
- UBL-CR-015
- warning
-
-
-
- [UBL-CR-015]-A UBL invoice should not include the InvoicePeriod Description
-
-
-
-
-
-
-
-
-
- UBL-CR-016
- warning
-
-
-
- [UBL-CR-016]-A UBL invoice should not include the OrderReference CopyIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-017
- warning
-
-
-
- [UBL-CR-017]-A UBL invoice should not include the OrderReference UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-018
- warning
-
-
-
- [UBL-CR-018]-A UBL invoice should not include the OrderReference IssueDate
-
-
-
-
-
-
-
-
-
- UBL-CR-019
- warning
-
-
-
- [UBL-CR-019]-A UBL invoice should not include the OrderReference IssueTime
-
-
-
-
-
-
-
-
-
- UBL-CR-020
- warning
-
-
-
- [UBL-CR-020]-A UBL invoice should not include the OrderReference CustomerReference
-
-
-
-
-
-
-
-
-
- UBL-CR-021
- warning
-
-
-
- [UBL-CR-021]-A UBL invoice should not include the OrderReference OrderTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-022
- warning
-
-
-
- [UBL-CR-022]-A UBL invoice should not include the OrderReference DocumentReference
-
-
-
-
-
-
-
-
-
- UBL-CR-023
- warning
-
-
-
- [UBL-CR-023]-A UBL invoice should not include the BillingReference CopyIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-024
- warning
-
-
-
- [UBL-CR-024]-A UBL invoice should not include the BillingReference UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-025
- warning
-
-
-
- [UBL-CR-025]-A UBL invoice should not include the BillingReference IssueTime
-
-
-
-
-
-
-
-
-
- UBL-CR-026
- warning
-
-
-
- [UBL-CR-026]-A UBL invoice should not include the BillingReference DocumentTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-027
- warning
-
-
-
- [UBL-CR-027]-A UBL invoice should not include the BillingReference DocumentType
-
-
-
-
-
-
-
-
-
- UBL-CR-028
- warning
-
-
-
- [UBL-CR-028]-A UBL invoice should not include the BillingReference Xpath
-
-
-
-
-
-
-
-
-
- UBL-CR-029
- warning
-
-
-
- [UBL-CR-029]-A UBL invoice should not include the BillingReference LanguageID
-
-
-
-
-
-
-
-
-
- UBL-CR-030
- warning
-
-
-
- [UBL-CR-030]-A UBL invoice should not include the BillingReference LocaleCode
-
-
-
-
-
-
-
-
-
- UBL-CR-031
- warning
-
-
-
- [UBL-CR-031]-A UBL invoice should not include the BillingReference VersionID
-
-
-
-
-
-
-
-
-
- UBL-CR-032
- warning
-
-
-
- [UBL-CR-032]-A UBL invoice should not include the BillingReference DocumentStatusCode
-
-
-
-
-
-
-
-
-
- UBL-CR-033
- warning
-
-
-
- [UBL-CR-033]-A UBL invoice should not include the BillingReference DocumenDescription
-
-
-
-
-
-
-
-
-
- UBL-CR-034
- warning
-
-
-
- [UBL-CR-034]-A UBL invoice should not include the BillingReference Attachment
-
-
-
-
-
-
-
-
-
- UBL-CR-035
- warning
-
-
-
- [UBL-CR-035]-A UBL invoice should not include the BillingReference ValidityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-036
- warning
-
-
-
- [UBL-CR-036]-A UBL invoice should not include the BillingReference IssuerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-037
- warning
-
-
-
- [UBL-CR-037]-A UBL invoice should not include the BillingReference ResultOfVerification
-
-
-
-
-
-
-
-
-
- UBL-CR-038
- warning
-
-
-
- [UBL-CR-038]-A UBL invoice should not include the BillingReference SelfBilledInvoiceDocumentReference
-
-
-
-
-
-
-
-
-
- UBL-CR-039
- warning
-
-
-
- [UBL-CR-039]-A UBL invoice should not include the BillingReference CreditNoteDocumentReference
-
-
-
-
-
-
-
-
-
- UBL-CR-040
- warning
-
-
-
- [UBL-CR-040]-A UBL invoice should not include the BillingReference SelfBilledCreditNoteDocumentReference
-
-
-
-
-
-
-
-
-
- UBL-CR-041
- warning
-
-
-
- [UBL-CR-041]-A UBL invoice should not include the BillingReference DebitNoteDocumentReference
-
-
-
-
-
-
-
-
-
- UBL-CR-042
- warning
-
-
-
- [UBL-CR-042]-A UBL invoice should not include the BillingReference ReminderDocumentReference
-
-
-
-
-
-
-
-
-
- UBL-CR-043
- warning
-
-
-
- [UBL-CR-043]-A UBL invoice should not include the BillingReference AdditionalDocumentReference
-
-
-
-
-
-
-
-
-
- UBL-CR-044
- warning
-
-
-
- [UBL-CR-044]-A UBL invoice should not include the BillingReference BillingReferenceLine
-
-
-
-
-
-
-
-
-
- UBL-CR-045
- warning
-
-
-
- [UBL-CR-045]-A UBL invoice should not include the DespatchDocumentReference CopyIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-046
- warning
-
-
-
- [UBL-CR-046]-A UBL invoice should not include the DespatchDocumentReference UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-047
- warning
-
-
-
- [UBL-CR-047]-A UBL invoice should not include the DespatchDocumentReference IssueDate
-
-
-
-
-
-
-
-
-
- UBL-CR-048
- warning
-
-
-
- [UBL-CR-048]-A UBL invoice should not include the DespatchDocumentReference IssueTime
-
-
-
-
-
-
-
-
-
- UBL-CR-049
- warning
-
-
-
- [UBL-CR-049]-A UBL invoice should not include the DespatchDocumentReference DocumentTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-050
- warning
-
-
-
- [UBL-CR-050]-A UBL invoice should not include the DespatchDocumentReference DocumentType
-
-
-
-
-
-
-
-
-
- UBL-CR-051
- warning
-
-
-
- [UBL-CR-051]-A UBL invoice should not include the DespatchDocumentReference Xpath
-
-
-
-
-
-
-
-
-
- UBL-CR-052
- warning
-
-
-
- [UBL-CR-052]-A UBL invoice should not include the DespatchDocumentReference LanguageID
-
-
-
-
-
-
-
-
-
- UBL-CR-053
- warning
-
-
-
- [UBL-CR-053]-A UBL invoice should not include the DespatchDocumentReference LocaleCode
-
-
-
-
-
-
-
-
-
- UBL-CR-054
- warning
-
-
-
- [UBL-CR-054]-A UBL invoice should not include the DespatchDocumentReference VersionID
-
-
-
-
-
-
-
-
-
- UBL-CR-055
- warning
-
-
-
- [UBL-CR-055]-A UBL invoice should not include the DespatchDocumentReference DocumentStatusCode
-
-
-
-
-
-
-
-
-
- UBL-CR-056
- warning
-
-
-
- [UBL-CR-056]-A UBL invoice should not include the DespatchDocumentReference DocumentDescription
-
-
-
-
-
-
-
-
-
- UBL-CR-057
- warning
-
-
-
- [UBL-CR-057]-A UBL invoice should not include the DespatchDocumentReference Attachment
-
-
-
-
-
-
-
-
-
- UBL-CR-058
- warning
-
-
-
- [UBL-CR-058]-A UBL invoice should not include the DespatchDocumentReference ValidityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-059
- warning
-
-
-
- [UBL-CR-059]-A UBL invoice should not include the DespatchDocumentReference IssuerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-060
- warning
-
-
-
- [UBL-CR-060]-A UBL invoice should not include the DespatchDocumentReference ResultOfVerification
-
-
-
-
-
-
-
-
-
- UBL-CR-061
- warning
-
-
-
- [UBL-CR-061]-A UBL invoice should not include the ReceiptDocumentReference CopyIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-062
- warning
-
-
-
- [UBL-CR-062]-A UBL invoice should not include the ReceiptDocumentReference UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-063
- warning
-
-
-
- [UBL-CR-063]-A UBL invoice should not include the ReceiptDocumentReference IssueDate
-
-
-
-
-
-
-
-
-
- UBL-CR-064
- warning
-
-
-
- [UBL-CR-064]-A UBL invoice should not include the ReceiptDocumentReference IssueTime
-
-
-
-
-
-
-
-
-
- UBL-CR-065
- warning
-
-
-
- [UBL-CR-065]-A UBL invoice should not include the ReceiptDocumentReference DocumentTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-066
- warning
-
-
-
- [UBL-CR-066]-A UBL invoice should not include the ReceiptDocumentReference DocumentType
-
-
-
-
-
-
-
-
-
- UBL-CR-067
- warning
-
-
-
- [UBL-CR-067]-A UBL invoice should not include the ReceiptDocumentReference Xpath
-
-
-
-
-
-
-
-
-
- UBL-CR-068
- warning
-
-
-
- [UBL-CR-068]-A UBL invoice should not include the ReceiptDocumentReference LanguageID
-
-
-
-
-
-
-
-
-
- UBL-CR-069
- warning
-
-
-
- [UBL-CR-069]-A UBL invoice should not include the ReceiptDocumentReference LocaleCode
-
-
-
-
-
-
-
-
-
- UBL-CR-070
- warning
-
-
-
- [UBL-CR-070]-A UBL invoice should not include the ReceiptDocumentReference VersionID
-
-
-
-
-
-
-
-
-
- UBL-CR-071
- warning
-
-
-
- [UBL-CR-071]-A UBL invoice should not include the ReceiptDocumentReference DocumentStatusCode
-
-
-
-
-
-
-
-
-
- UBL-CR-072
- warning
-
-
-
- [UBL-CR-072]-A UBL invoice should not include the ReceiptDocumentReference DocumentDescription
-
-
-
-
-
-
-
-
-
- UBL-CR-073
- warning
-
-
-
- [UBL-CR-073]-A UBL invoice should not include the ReceiptDocumentReference Attachment
-
-
-
-
-
-
-
-
-
- UBL-CR-074
- warning
-
-
-
- [UBL-CR-074]-A UBL invoice should not include the ReceiptDocumentReference ValidityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-075
- warning
-
-
-
- [UBL-CR-075]-A UBL invoice should not include the ReceiptDocumentReference IssuerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-076
- warning
-
-
-
- [UBL-CR-076]-A UBL invoice should not include the ReceiptDocumentReference ResultOfVerification
-
-
-
-
-
-
-
-
-
- UBL-CR-077
- warning
-
-
-
- [UBL-CR-077]-A UBL invoice should not include the StatementDocumentReference
-
-
-
-
-
-
-
-
-
- UBL-CR-078
- warning
-
-
-
- [UBL-CR-078]-A UBL invoice should not include the OriginatorDocumentReference CopyIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-079
- warning
-
-
-
- [UBL-CR-079]-A UBL invoice should not include the OriginatorDocumentReference UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-080
- warning
-
-
-
- [UBL-CR-080]-A UBL invoice should not include the OriginatorDocumentReference IssueDate
-
-
-
-
-
-
-
-
-
- UBL-CR-081
- warning
-
-
-
- [UBL-CR-081]-A UBL invoice should not include the OriginatorDocumentReference IssueTime
-
-
-
-
-
-
-
-
-
- UBL-CR-082
- warning
-
-
-
- [UBL-CR-082]-A UBL invoice should not include the OriginatorDocumentReference DocumentTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-083
- warning
-
-
-
- [UBL-CR-083]-A UBL invoice should not include the OriginatorDocumentReference DocumentType
-
-
-
-
-
-
-
-
-
- UBL-CR-084
- warning
-
-
-
- [UBL-CR-084]-A UBL invoice should not include the OriginatorDocumentReference Xpath
-
-
-
-
-
-
-
-
-
- UBL-CR-085
- warning
-
-
-
- [UBL-CR-085]-A UBL invoice should not include the OriginatorDocumentReference LanguageID
-
-
-
-
-
-
-
-
-
- UBL-CR-086
- warning
-
-
-
- [UBL-CR-086]-A UBL invoice should not include the OriginatorDocumentReference LocaleCode
-
-
-
-
-
-
-
-
-
- UBL-CR-087
- warning
-
-
-
- [UBL-CR-087]-A UBL invoice should not include the OriginatorDocumentReference VersionID
-
-
-
-
-
-
-
-
-
- UBL-CR-088
- warning
-
-
-
- [UBL-CR-088]-A UBL invoice should not include the OriginatorDocumentReference DocumentStatusCode
-
-
-
-
-
-
-
-
-
- UBL-CR-089
- warning
-
-
-
- [UBL-CR-089]-A UBL invoice should not include the OriginatorDocumentReference DocumentDescription
-
-
-
-
-
-
-
-
-
- UBL-CR-090
- warning
-
-
-
- [UBL-CR-090]-A UBL invoice should not include the OriginatorDocumentReference Attachment
-
-
-
-
-
-
-
-
-
- UBL-CR-091
- warning
-
-
-
- [UBL-CR-091]-A UBL invoice should not include the OriginatorDocumentReference ValidityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-092
- warning
-
-
-
- [UBL-CR-092]-A UBL invoice should not include the OriginatorDocumentReference IssuerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-093
- warning
-
-
-
- [UBL-CR-093]-A UBL invoice should not include the OriginatorDocumentReference ResultOfVerification
-
-
-
-
-
-
-
-
-
- UBL-CR-094
- warning
-
-
-
- [UBL-CR-094]-A UBL invoice should not include the ContractDocumentReference CopyIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-095
- warning
-
-
-
- [UBL-CR-095]-A UBL invoice should not include the ContractDocumentReference UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-096
- warning
-
-
-
- [UBL-CR-096]-A UBL invoice should not include the ContractDocumentReference IssueDate
-
-
-
-
-
-
-
-
-
- UBL-CR-097
- warning
-
-
-
- [UBL-CR-097]-A UBL invoice should not include the ContractDocumentReference IssueTime
-
-
-
-
-
-
-
-
-
- UBL-CR-098
- warning
-
-
-
- [UBL-CR-098]-A UBL invoice should not include the ContractDocumentReference DocumentTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-099
- warning
-
-
-
- [UBL-CR-099]-A UBL invoice should not include the ContractDocumentReference DocumentType
-
-
-
-
-
-
-
-
-
- UBL-CR-100
- warning
-
-
-
- [UBL-CR-100]-A UBL invoice should not include the ContractDocumentReference Xpath
-
-
-
-
-
-
-
-
-
- UBL-CR-101
- warning
-
-
-
- [UBL-CR-101]-A UBL invoice should not include the ContractDocumentReference LanguageID
-
-
-
-
-
-
-
-
-
- UBL-CR-102
- warning
-
-
-
- [UBL-CR-102]-A UBL invoice should not include the ContractDocumentReference LocaleCode
-
-
-
-
-
-
-
-
-
- UBL-CR-103
- warning
-
-
-
- [UBL-CR-103]-A UBL invoice should not include the ContractDocumentReference VersionID
-
-
-
-
-
-
-
-
-
- UBL-CR-104
- warning
-
-
-
- [UBL-CR-104]-A UBL invoice should not include the ContractDocumentReference DocumentStatusCode
-
-
-
-
-
-
-
-
-
- UBL-CR-105
- warning
-
-
-
- [UBL-CR-105]-A UBL invoice should not include the ContractDocumentReference DocumentDescription
-
-
-
-
-
-
-
-
-
- UBL-CR-106
- warning
-
-
-
- [UBL-CR-106]-A UBL invoice should not include the ContractDocumentReference Attachment
-
-
-
-
-
-
-
-
-
- UBL-CR-107
- warning
-
-
-
- [UBL-CR-107]-A UBL invoice should not include the ContractDocumentReference ValidityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-108
- warning
-
-
-
- [UBL-CR-108]-A UBL invoice should not include the ContractDocumentReference IssuerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-109
- warning
-
-
-
- [UBL-CR-109]-A UBL invoice should not include the ContractDocumentReference ResultOfVerification
-
-
-
-
-
-
-
-
-
- UBL-CR-110
- warning
-
-
-
- [UBL-CR-110]-A UBL invoice should not include the AdditionalDocumentReference CopyIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-111
- warning
-
-
-
- [UBL-CR-111]-A UBL invoice should not include the AdditionalDocumentReference UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-112
- warning
-
-
-
- [UBL-CR-112]-A UBL invoice should not include the AdditionalDocumentReference IssueDate
-
-
-
-
-
-
-
-
-
- UBL-CR-113
- warning
-
-
-
- [UBL-CR-113]-A UBL invoice should not include the AdditionalDocumentReference IssueTime
-
-
-
-
-
-
-
-
-
- UBL-CR-114
- warning
-
-
-
- [UBL-CR-114]-A UBL invoice should not include the AdditionalDocumentReference DocumentType
-
-
-
-
-
-
-
-
-
- UBL-CR-115
- warning
-
-
-
- [UBL-CR-115]-A UBL invoice should not include the AdditionalDocumentReference Xpath
-
-
-
-
-
-
-
-
-
- UBL-CR-116
- warning
-
-
-
- [UBL-CR-116]-A UBL invoice should not include the AdditionalDocumentReference LanguageID
-
-
-
-
-
-
-
-
-
- UBL-CR-117
- warning
-
-
-
- [UBL-CR-117]-A UBL invoice should not include the AdditionalDocumentReference LocaleCode
-
-
-
-
-
-
-
-
-
- UBL-CR-118
- warning
-
-
-
- [UBL-CR-118]-A UBL invoice should not include the AdditionalDocumentReference VersionID
-
-
-
-
-
-
-
-
-
- UBL-CR-119
- warning
-
-
-
- [UBL-CR-119]-A UBL invoice should not include the AdditionalDocumentReference DocumentStatusCode
-
-
-
-
-
-
-
-
-
- UBL-CR-121
- warning
-
-
-
- [UBL-CR-121]-A UBL invoice should not include the AdditionalDocumentReference Attachment External DocumentHash
-
-
-
-
-
-
-
-
-
- UBL-CR-122
- warning
-
-
-
- [UBL-CR-122]-A UBL invoice should not include the AdditionalDocumentReference Attachment External HashAlgorithmMethod
-
-
-
-
-
-
-
-
-
- UBL-CR-123
- warning
-
-
-
- [UBL-CR-123]-A UBL invoice should not include the AdditionalDocumentReference Attachment External ExpiryDate
-
-
-
-
-
-
-
-
-
- UBL-CR-124
- warning
-
-
-
- [UBL-CR-124]-A UBL invoice should not include the AdditionalDocumentReference Attachment External ExpiryTime
-
-
-
-
-
-
-
-
-
- UBL-CR-125
- warning
-
-
-
- [UBL-CR-125]-A UBL invoice should not include the AdditionalDocumentReference Attachment External MimeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-126
- warning
-
-
-
- [UBL-CR-126]-A UBL invoice should not include the AdditionalDocumentReference Attachment External FormatCode
-
-
-
-
-
-
-
-
-
- UBL-CR-127
- warning
-
-
-
- [UBL-CR-127]-A UBL invoice should not include the AdditionalDocumentReference Attachment External EncodingCode
-
-
-
-
-
-
-
-
-
- UBL-CR-128
- warning
-
-
-
- [UBL-CR-128]-A UBL invoice should not include the AdditionalDocumentReference Attachment External CharacterSetCode
-
-
-
-
-
-
-
-
-
- UBL-CR-129
- warning
-
-
-
- [UBL-CR-129]-A UBL invoice should not include the AdditionalDocumentReference Attachment External FileName
-
-
-
-
-
-
-
-
-
- UBL-CR-130
- warning
-
-
-
- [UBL-CR-130]-A UBL invoice should not include the AdditionalDocumentReference Attachment External Descriprion
-
-
-
-
-
-
-
-
-
- UBL-CR-131
- warning
-
-
-
- [UBL-CR-131]-A UBL invoice should not include the AdditionalDocumentReference ValidityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-132
- warning
-
-
-
- [UBL-CR-132]-A UBL invoice should not include the AdditionalDocumentReference IssuerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-133
- warning
-
-
-
- [UBL-CR-133]-A UBL invoice should not include the AdditionalDocumentReference ResultOfVerification
-
-
-
-
-
-
-
-
-
- UBL-CR-134
- warning
-
-
-
- [UBL-CR-134]-A UBL invoice should not include the ProjectReference UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-135
- warning
-
-
-
- [UBL-CR-135]-A UBL invoice should not include the ProjectReference IssueDate
-
-
-
-
-
-
-
-
-
- UBL-CR-136
- warning
-
-
-
- [UBL-CR-136]-A UBL invoice should not include the ProjectReference WorkPhaseReference
-
-
-
-
-
-
-
-
-
- UBL-CR-137
- warning
-
-
-
- [UBL-CR-137]-A UBL invoice should not include the Signature
-
-
-
-
-
-
-
-
-
- UBL-CR-138
- warning
-
-
-
- [UBL-CR-138]-A UBL invoice should not include the AccountingSupplierParty CustomerAssignedAccountID
-
-
-
-
-
-
-
-
-
- UBL-CR-139
- warning
-
-
-
- [UBL-CR-139]-A UBL invoice should not include the AccountingSupplierParty AdditionalAccountID
-
-
-
-
-
-
-
-
-
- UBL-CR-140
- warning
-
-
-
- [UBL-CR-140]-A UBL invoice should not include the AccountingSupplierParty DataSendingCapability
-
-
-
-
-
-
-
-
-
- UBL-CR-141
- warning
-
-
-
- [UBL-CR-141]-A UBL invoice should not include the AccountingSupplierParty Party MarkCareIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-142
- warning
-
-
-
- [UBL-CR-142]-A UBL invoice should not include the AccountingSupplierParty Party MarkAttentionIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-143
- warning
-
-
-
- [UBL-CR-143]-A UBL invoice should not include the AccountingSupplierParty Party WebsiteURI
-
-
-
-
-
-
-
-
-
- UBL-CR-144
- warning
-
-
-
- [UBL-CR-144]-A UBL invoice should not include the AccountingSupplierParty Party LogoReferenceID
-
-
-
-
-
-
-
-
-
- UBL-CR-145
- warning
-
-
-
- [UBL-CR-145]-A UBL invoice should not include the AccountingSupplierParty Party IndustryClassificationCode
-
-
-
-
-
-
-
-
-
- UBL-CR-146
- warning
-
-
-
- [UBL-CR-146]-A UBL invoice should not include the AccountingSupplierParty Party Language
-
-
-
-
-
-
-
-
-
- UBL-CR-147
- warning
-
-
-
- [UBL-CR-147]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress ID
-
-
-
-
-
-
-
-
-
- UBL-CR-148
- warning
-
-
-
- [UBL-CR-148]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress AddressTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-149
- warning
-
-
-
- [UBL-CR-149]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress AddressFormatCode
-
-
-
-
-
-
-
-
-
- UBL-CR-150
- warning
-
-
-
- [UBL-CR-150]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress Postbox
-
-
-
-
-
-
-
-
-
- UBL-CR-151
- warning
-
-
-
- [UBL-CR-151]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress Floor
-
-
-
-
-
-
-
-
-
- UBL-CR-152
- warning
-
-
-
- [UBL-CR-152]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress Room
-
-
-
-
-
-
-
-
-
- UBL-CR-153
- warning
-
-
-
- [UBL-CR-153]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress BlockName
-
-
-
-
-
-
-
-
-
- UBL-CR-154
- warning
-
-
-
- [UBL-CR-154]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress BuildingName
-
-
-
-
-
-
-
-
-
- UBL-CR-155
- warning
-
-
-
- [UBL-CR-155]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress BuildingNumber
-
-
-
-
-
-
-
-
-
- UBL-CR-156
- warning
-
-
-
- [UBL-CR-156]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress InhouseMail
-
-
-
-
-
-
-
-
-
- UBL-CR-157
- warning
-
-
-
- [UBL-CR-157]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress Department
-
-
-
-
-
-
-
-
-
- UBL-CR-158
- warning
-
-
-
- [UBL-CR-158]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress MarkAttention
-
-
-
-
-
-
-
-
-
- UBL-CR-159
- warning
-
-
-
- [UBL-CR-159]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress MarkCare
-
-
-
-
-
-
-
-
-
- UBL-CR-160
- warning
-
-
-
- [UBL-CR-160]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress PlotIdentification
-
-
-
-
-
-
-
-
-
- UBL-CR-161
- warning
-
-
-
- [UBL-CR-161]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress CitySubdivisionName
-
-
-
-
-
-
-
-
-
- UBL-CR-162
- warning
-
-
-
- [UBL-CR-162]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress CountrySubentityCode
-
-
-
-
-
-
-
-
-
- UBL-CR-163
- warning
-
-
-
- [UBL-CR-163]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress Region
-
-
-
-
-
-
-
-
-
- UBL-CR-164
- warning
-
-
-
- [UBL-CR-164]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress District
-
-
-
-
-
-
-
-
-
- UBL-CR-165
- warning
-
-
-
- [UBL-CR-165]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress TimezoneOffset
-
-
-
-
-
-
-
-
-
- UBL-CR-166
- warning
-
-
-
- [UBL-CR-166]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress Country Name
-
-
-
-
-
-
-
-
-
- UBL-CR-167
- warning
-
-
-
- [UBL-CR-167]-A UBL invoice should not include the AccountingSupplierParty Party PostalAddress LocationCoordinate
-
-
-
-
-
-
-
-
-
- UBL-CR-168
- warning
-
-
-
- [UBL-CR-168]-A UBL invoice should not include the AccountingSupplierParty Party PhysicalLocation
-
-
-
-
-
-
-
-
-
- UBL-CR-169
- warning
-
-
-
- [UBL-CR-169]-A UBL invoice should not include the AccountingSupplierParty Party PartyTaxScheme RegistrationName
-
-
-
-
-
-
-
-
-
- UBL-CR-170
- warning
-
-
-
- [UBL-CR-170]-A UBL invoice should not include the AccountingSupplierParty Party PartyTaxScheme TaxLevelCode
-
-
-
-
-
-
-
-
-
- UBL-CR-171
- warning
-
-
-
- [UBL-CR-171]-A UBL invoice should not include the AccountingSupplierParty Party PartyTaxScheme ExemptionReasonCode
-
-
-
-
-
-
-
-
-
- UBL-CR-172
- warning
-
-
-
- [UBL-CR-172]-A UBL invoice should not include the AccountingSupplierParty Party PartyTaxScheme ExemptionReason
-
-
-
-
-
-
-
-
-
- UBL-CR-173
- warning
-
-
-
- [UBL-CR-173]-A UBL invoice should not include the AccountingSupplierParty Party PartyTaxScheme RegistrationAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-174
- warning
-
-
-
- [UBL-CR-174]-A UBL invoice should not include the AccountingSupplierParty Party PartyTaxScheme TaxScheme Name
-
-
-
-
-
-
-
-
-
- UBL-CR-175
- warning
-
-
-
- [UBL-CR-175]-A UBL invoice should not include the AccountingSupplierParty Party PartyTaxScheme TaxScheme TaxTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-176
- warning
-
-
-
- [UBL-CR-176]-A UBL invoice should not include the AccountingSupplierParty Party PartyTaxScheme TaxScheme CurrencyCode
-
-
-
-
-
-
-
-
-
- UBL-CR-177
- warning
-
-
-
- [UBL-CR-177]-A UBL invoice should not include the AccountingSupplierParty Party PartyTaxScheme TaxScheme JurisdictionRegionAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-178
- warning
-
-
-
- [UBL-CR-178]-A UBL invoice should not include the AccountingSupplierParty Party PartyLegalEntity RegistrationDate
-
-
-
-
-
-
-
-
-
- UBL-CR-179
- warning
-
-
-
- [UBL-CR-179]-A UBL invoice should not include the AccountingSupplierParty Party PartyLegalEntity RegistrationExpirationDate
-
-
-
-
-
-
-
-
-
- UBL-CR-180
- warning
-
-
-
- [UBL-CR-180]-A UBL invoice should not include the AccountingSupplierParty Party PartyLegalEntity CompanyLegalFormCode
-
-
-
-
-
-
-
-
-
- UBL-CR-181
- warning
-
-
-
- [UBL-CR-181]-A UBL invoice should not include the AccountingSupplierParty Party PartyLegalEntity SoleProprietorshipIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-182
- warning
-
-
-
- [UBL-CR-182]-A UBL invoice should not include the AccountingSupplierParty Party PartyLegalEntity CompanyLiquidationStatusCode
-
-
-
-
-
-
-
-
-
- UBL-CR-183
- warning
-
-
-
- [UBL-CR-183]-A UBL invoice should not include the AccountingSupplierParty Party PartyLegalEntity CorporateStockAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-184
- warning
-
-
-
- [UBL-CR-184]-A UBL invoice should not include the AccountingSupplierParty Party PartyLegalEntity FullyPaidSharesIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-185
- warning
-
-
-
- [UBL-CR-185]-A UBL invoice should not include the AccountingSupplierParty Party PartyLegalEntity RegistrationAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-186
- warning
-
-
-
- [UBL-CR-186]-A UBL invoice should not include the AccountingSupplierParty Party PartyLegalEntity CorporateRegistrationScheme
-
-
-
-
-
-
-
-
-
- UBL-CR-187
- warning
-
-
-
- [UBL-CR-187]-A UBL invoice should not include the AccountingSupplierParty Party PartyLegalEntity HeadOfficeParty
-
-
-
-
-
-
-
-
-
- UBL-CR-188
- warning
-
-
-
- [UBL-CR-188]-A UBL invoice should not include the AccountingSupplierParty Party PartyLegalEntity ShareholderParty
-
-
-
-
-
-
-
-
-
- UBL-CR-189
- warning
-
-
-
- [UBL-CR-189]-A UBL invoice should not include the AccountingSupplierParty Party Contact ID
-
-
-
-
-
-
-
-
-
- UBL-CR-190
- warning
-
-
-
- [UBL-CR-190]-A UBL invoice should not include the AccountingSupplierParty Party Contact Telefax
-
-
-
-
-
-
-
-
-
- UBL-CR-191
- warning
-
-
-
- [UBL-CR-191]-A UBL invoice should not include the AccountingSupplierParty Party Contact Note
-
-
-
-
-
-
-
-
-
- UBL-CR-192
- warning
-
-
-
- [UBL-CR-192]-A UBL invoice should not include the AccountingSupplierParty Party Contact OtherCommunication
-
-
-
-
-
-
-
-
-
- UBL-CR-193
- warning
-
-
-
- [UBL-CR-193]-A UBL invoice should not include the AccountingSupplierParty Party Person
-
-
-
-
-
-
-
-
-
- UBL-CR-194
- warning
-
-
-
- [UBL-CR-194]-A UBL invoice should not include the AccountingSupplierParty Party AgentParty
-
-
-
-
-
-
-
-
-
- UBL-CR-195
- warning
-
-
-
- [UBL-CR-195]-A UBL invoice should not include the AccountingSupplierParty Party ServiceProviderParty
-
-
-
-
-
-
-
-
-
- UBL-CR-196
- warning
-
-
-
- [UBL-CR-196]-A UBL invoice should not include the AccountingSupplierParty Party PowerOfAttorney
-
-
-
-
-
-
-
-
-
- UBL-CR-197
- warning
-
-
-
- [UBL-CR-197]-A UBL invoice should not include the AccountingSupplierParty Party FinancialAccount
-
-
-
-
-
-
-
-
-
- UBL-CR-198
- warning
-
-
-
- [UBL-CR-198]-A UBL invoice should not include the AccountingSupplierParty DespatchContact
-
-
-
-
-
-
-
-
-
- UBL-CR-199
- warning
-
-
-
- [UBL-CR-199]-A UBL invoice should not include the AccountingSupplierParty AccountingContact
-
-
-
-
-
-
-
-
-
- UBL-CR-200
- warning
-
-
-
- [UBL-CR-200]-A UBL invoice should not include the AccountingSupplierParty SellerContact
-
-
-
-
-
-
-
-
-
- UBL-CR-201
- warning
-
-
-
- [UBL-CR-201]-A UBL invoice should not include the AccountingCustomerParty CustomerAssignedAccountID
-
-
-
-
-
-
-
-
-
- UBL-CR-202
- warning
-
-
-
- [UBL-CR-202]-A UBL invoice should not include the AccountingCustomerParty SupplierAssignedAccountID
-
-
-
-
-
-
-
-
-
- UBL-CR-203
- warning
-
-
-
- [UBL-CR-203]-A UBL invoice should not include the AccountingCustomerParty AdditionalAccountID
-
-
-
-
-
-
-
-
-
- UBL-CR-204
- warning
-
-
-
- [UBL-CR-204]-A UBL invoice should not include the AccountingCustomerParty Party MarkCareIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-205
- warning
-
-
-
- [UBL-CR-205]-A UBL invoice should not include the AccountingCustomerParty Party MarkAttentionIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-206
- warning
-
-
-
- [UBL-CR-206]-A UBL invoice should not include the AccountingCustomerParty Party WebsiteURI
-
-
-
-
-
-
-
-
-
- UBL-CR-207
- warning
-
-
-
- [UBL-CR-207]-A UBL invoice should not include the AccountingCustomerParty Party LogoReferenceID
-
-
-
-
-
-
-
-
-
- UBL-CR-208
- warning
-
-
-
- [UBL-CR-208]-A UBL invoice should not include the AccountingCustomerParty Party IndustryClassificationCode
-
-
-
-
-
-
-
-
-
- UBL-CR-209
- warning
-
-
-
- [UBL-CR-209]-A UBL invoice should not include the AccountingCustomerParty Party Language
-
-
-
-
-
-
-
-
-
- UBL-CR-210
- warning
-
-
-
- [UBL-CR-210]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress ID
-
-
-
-
-
-
-
-
-
- UBL-CR-211
- warning
-
-
-
- [UBL-CR-211]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress AddressTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-212
- warning
-
-
-
- [UBL-CR-212]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress AddressFormatCode
-
-
-
-
-
-
-
-
-
- UBL-CR-213
- warning
-
-
-
- [UBL-CR-213]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress Postbox
-
-
-
-
-
-
-
-
-
- UBL-CR-214
- warning
-
-
-
- [UBL-CR-214]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress Floor
-
-
-
-
-
-
-
-
-
- UBL-CR-215
- warning
-
-
-
- [UBL-CR-215]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress Room
-
-
-
-
-
-
-
-
-
- UBL-CR-216
- warning
-
-
-
- [UBL-CR-216]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress BlockName
-
-
-
-
-
-
-
-
-
- UBL-CR-217
- warning
-
-
-
- [UBL-CR-217]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress BuildingName
-
-
-
-
-
-
-
-
-
- UBL-CR-218
- warning
-
-
-
- [UBL-CR-218]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress BuildingNumber
-
-
-
-
-
-
-
-
-
- UBL-CR-219
- warning
-
-
-
- [UBL-CR-219]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress InhouseMail
-
-
-
-
-
-
-
-
-
- UBL-CR-220
- warning
-
-
-
- [UBL-CR-220]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress Department
-
-
-
-
-
-
-
-
-
- UBL-CR-221
- warning
-
-
-
- [UBL-CR-221]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress MarkAttention
-
-
-
-
-
-
-
-
-
- UBL-CR-222
- warning
-
-
-
- [UBL-CR-222]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress MarkCare
-
-
-
-
-
-
-
-
-
- UBL-CR-223
- warning
-
-
-
- [UBL-CR-223]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress PlotIdentification
-
-
-
-
-
-
-
-
-
- UBL-CR-224
- warning
-
-
-
- [UBL-CR-224]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress CitySubdivisionName
-
-
-
-
-
-
-
-
-
- UBL-CR-225
- warning
-
-
-
- [UBL-CR-225]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress CountrySubentityCode
-
-
-
-
-
-
-
-
-
- UBL-CR-226
- warning
-
-
-
- [UBL-CR-226]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress Region
-
-
-
-
-
-
-
-
-
- UBL-CR-227
- warning
-
-
-
- [UBL-CR-227]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress District
-
-
-
-
-
-
-
-
-
- UBL-CR-228
- warning
-
-
-
- [UBL-CR-228]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress TimezoneOffset
-
-
-
-
-
-
-
-
-
- UBL-CR-229
- warning
-
-
-
- [UBL-CR-229]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress Country Name
-
-
-
-
-
-
-
-
-
- UBL-CR-230
- warning
-
-
-
- [UBL-CR-230]-A UBL invoice should not include the AccountingCustomerParty Party PostalAddress LocationCoordinate
-
-
-
-
-
-
-
-
-
- UBL-CR-231
- warning
-
-
-
- [UBL-CR-231]-A UBL invoice should not include the AccountingCustomerParty Party PhysicalLocation
-
-
-
-
-
-
-
-
-
- UBL-CR-232
- warning
-
-
-
- [UBL-CR-232]-A UBL invoice should not include the AccountingCustomerParty Party PartyTaxScheme RegistrationName
-
-
-
-
-
-
-
-
-
- UBL-CR-233
- warning
-
-
-
- [UBL-CR-233]-A UBL invoice should not include the AccountingCustomerParty Party PartyTaxScheme TaxLevelCode
-
-
-
-
-
-
-
-
-
- UBL-CR-234
- warning
-
-
-
- [UBL-CR-234]-A UBL invoice should not include the AccountingCustomerParty Party PartyTaxScheme ExemptionReasonCode
-
-
-
-
-
-
-
-
-
- UBL-CR-235
- warning
-
-
-
- [UBL-CR-235]-A UBL invoice should not include the AccountingCustomerParty Party PartyTaxScheme ExemptionReason
-
-
-
-
-
-
-
-
-
- UBL-CR-236
- warning
-
-
-
- [UBL-CR-236]-A UBL invoice should not include the AccountingCustomerParty Party PartyTaxScheme RegistrationAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-237
- warning
-
-
-
- [UBL-CR-237]-A UBL invoice should not include the AccountingCustomerParty Party PartyTaxScheme TaxScheme Name
-
-
-
-
-
-
-
-
-
- UBL-CR-238
- warning
-
-
-
- [UBL-CR-238]-A UBL invoice should not include the AccountingCustomerParty Party PartyTaxScheme TaxScheme TaxTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-239
- warning
-
-
-
- [UBL-CR-239]-A UBL invoice should not include the AccountingCustomerParty Party PartyTaxScheme TaxScheme CurrencyCode
-
-
-
-
-
-
-
-
-
- UBL-CR-240
- warning
-
-
-
- [UBL-CR-240]-A UBL invoice should not include the AccountingCustomerParty Party PartyTaxScheme TaxScheme JurisdictionRegionAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-241
- warning
-
-
-
- [UBL-CR-241]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity RegistrationDate
-
-
-
-
-
-
-
-
-
- UBL-CR-242
- warning
-
-
-
- [UBL-CR-242]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity RegistrationExpirationDate
-
-
-
-
-
-
-
-
-
- UBL-CR-243
- warning
-
-
-
- [UBL-CR-243]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity CompanyLegalFormCode
-
-
-
-
-
-
-
-
-
- UBL-CR-244
- warning
-
-
-
- [UBL-CR-244]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity CompanyLegalForm
-
-
-
-
-
-
-
-
-
- UBL-CR-245
- warning
-
-
-
- [UBL-CR-245]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity SoleProprietorshipIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-246
- warning
-
-
-
- [UBL-CR-246]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity CompanyLiquidationStatusCode
-
-
-
-
-
-
-
-
-
- UBL-CR-247
- warning
-
-
-
- [UBL-CR-247]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity CorporateStockAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-248
- warning
-
-
-
- [UBL-CR-248]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity FullyPaidSharesIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-249
- warning
-
-
-
- [UBL-CR-249]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity RegistrationAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-250
- warning
-
-
-
- [UBL-CR-250]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity CorporateRegistrationScheme
-
-
-
-
-
-
-
-
-
- UBL-CR-251
- warning
-
-
-
- [UBL-CR-251]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity HeadOfficeParty
-
-
-
-
-
-
-
-
-
- UBL-CR-252
- warning
-
-
-
- [UBL-CR-252]-A UBL invoice should not include the AccountingCustomerParty Party PartyLegalEntity ShareholderParty
-
-
-
-
-
-
-
-
-
- UBL-CR-253
- warning
-
-
-
- [UBL-CR-253]-A UBL invoice should not include the AccountingCustomerParty Party Contact ID
-
-
-
-
-
-
-
-
-
- UBL-CR-254
- warning
-
-
-
- [UBL-CR-254]-A UBL invoice should not include the AccountingCustomerParty Party Contact Telefax
-
-
-
-
-
-
-
-
-
- UBL-CR-255
- warning
-
-
-
- [UBL-CR-255]-A UBL invoice should not include the AccountingCustomerParty Party Contact Note
-
-
-
-
-
-
-
-
-
- UBL-CR-256
- warning
-
-
-
- [UBL-CR-256]-A UBL invoice should not include the AccountingCustomerParty Party Contact OtherCommunication
-
-
-
-
-
-
-
-
-
- UBL-CR-257
- warning
-
-
-
- [UBL-CR-257]-A UBL invoice should not include the AccountingCustomerParty Party Person
-
-
-
-
-
-
-
-
-
- UBL-CR-258
- warning
-
-
-
- [UBL-CR-258]-A UBL invoice should not include the AccountingCustomerParty Party AgentParty
-
-
-
-
-
-
-
-
-
- UBL-CR-259
- warning
-
-
-
- [UBL-CR-259]-A UBL invoice should not include the AccountingCustomerParty Party ServiceProviderParty
-
-
-
-
-
-
-
-
-
- UBL-CR-260
- warning
-
-
-
- [UBL-CR-260]-A UBL invoice should not include the AccountingCustomerParty Party PowerOfAttorney
-
-
-
-
-
-
-
-
-
- UBL-CR-261
- warning
-
-
-
- [UBL-CR-261]-A UBL invoice should not include the AccountingCustomerParty Party FinancialAccount
-
-
-
-
-
-
-
-
-
- UBL-CR-262
- warning
-
-
-
- [UBL-CR-262]-A UBL invoice should not include the AccountingCustomerParty DeliveryContact
-
-
-
-
-
-
-
-
-
- UBL-CR-263
- warning
-
-
-
- [UBL-CR-263]-A UBL invoice should not include the AccountingCustomerParty AccountingContact
-
-
-
-
-
-
-
-
-
- UBL-CR-264
- warning
-
-
-
- [UBL-CR-264]-A UBL invoice should not include the AccountingCustomerParty BuyerContact
-
-
-
-
-
-
-
-
-
- UBL-CR-265
- warning
-
-
-
- [UBL-CR-265]-A UBL invoice should not include the PayeeParty MarkCareIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-266
- warning
-
-
-
- [UBL-CR-266]-A UBL invoice should not include the PayeeParty MarkAttentionIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-267
- warning
-
-
-
- [UBL-CR-267]-A UBL invoice should not include the PayeeParty WebsiteURI
-
-
-
-
-
-
-
-
-
- UBL-CR-268
- warning
-
-
-
- [UBL-CR-268]-A UBL invoice should not include the PayeeParty LogoReferenceID
-
-
-
-
-
-
-
-
-
- UBL-CR-269
- warning
-
-
-
- [UBL-CR-269]-A UBL invoice should not include the PayeeParty EndpointID
-
-
-
-
-
-
-
-
-
- UBL-CR-270
- warning
-
-
-
- [UBL-CR-270]-A UBL invoice should not include the PayeeParty IndustryClassificationCode
-
-
-
-
-
-
-
-
-
- UBL-CR-271
- warning
-
-
-
- [UBL-CR-271]-A UBL invoice should not include the PayeeParty Language
-
-
-
-
-
-
-
-
-
- UBL-CR-272
- warning
-
-
-
- [UBL-CR-272]-A UBL invoice should not include the PayeeParty PostalAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-273
- warning
-
-
-
- [UBL-CR-273]-A UBL invoice should not include the PayeeParty PhysicalLocation
-
-
-
-
-
-
-
-
-
- UBL-CR-274
- warning
-
-
-
- [UBL-CR-274]-A UBL invoice should not include the PayeeParty PartyTaxScheme
-
-
-
-
-
-
-
-
-
- UBL-CR-275
- warning
-
-
-
- [UBL-CR-275]-A UBL invoice should not include the PayeeParty PartyLegalEntity RegistrationName
-
-
-
-
-
-
-
-
-
- UBL-CR-276
- warning
-
-
-
- [UBL-CR-276]-A UBL invoice should not include the PayeeParty PartyLegalEntity RegistrationDate
-
-
-
-
-
-
-
-
-
- UBL-CR-277
- warning
-
-
-
- [UBL-CR-277]-A UBL invoice should not include the PayeeParty PartyLegalEntity RegistrationExpirationDate
-
-
-
-
-
-
-
-
-
- UBL-CR-278
- warning
-
-
-
- [UBL-CR-278]-A UBL invoice should not include the PayeeParty PartyLegalEntity CompanyLegalFormCode
-
-
-
-
-
-
-
-
-
- UBL-CR-279
- warning
-
-
-
- [UBL-CR-279]-A UBL invoice should not include the PayeeParty PartyLegalEntity CompanyLegalForm
-
-
-
-
-
-
-
-
-
- UBL-CR-280
- warning
-
-
-
- [UBL-CR-280]-A UBL invoice should not include the PayeeParty PartyLegalEntity SoleProprietorshipIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-281
- warning
-
-
-
- [UBL-CR-281]-A UBL invoice should not include the PayeeParty PartyLegalEntity CompanyLiquidationStatusCode
-
-
-
-
-
-
-
-
-
- UBL-CR-282
- warning
-
-
-
- [UBL-CR-282]-A UBL invoice should not include the PayeeParty PartyLegalEntity CorporateStockAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-283
- warning
-
-
-
- [UBL-CR-283]-A UBL invoice should not include the PayeeParty PartyLegalEntity FullyPaidSharesIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-284
- warning
-
-
-
- [UBL-CR-284]-A UBL invoice should not include the PayeeParty PartyLegalEntity RegistrationAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-285
- warning
-
-
-
- [UBL-CR-285]-A UBL invoice should not include the PayeeParty PartyLegalEntity CorporateRegistrationScheme
-
-
-
-
-
-
-
-
-
- UBL-CR-286
- warning
-
-
-
- [UBL-CR-286]-A UBL invoice should not include the PayeeParty PartyLegalEntity HeadOfficeParty
-
-
-
-
-
-
-
-
-
- UBL-CR-287
- warning
-
-
-
- [UBL-CR-287]-A UBL invoice should not include the PayeeParty PartyLegalEntity ShareholderParty
-
-
-
-
-
-
-
-
-
- UBL-CR-288
- warning
-
-
-
- [UBL-CR-288]-A UBL invoice should not include the PayeeParty Contact
-
-
-
-
-
-
-
-
-
- UBL-CR-289
- warning
-
-
-
- [UBL-CR-289]-A UBL invoice should not include the PayeeParty Person
-
-
-
-
-
-
-
-
-
- UBL-CR-290
- warning
-
-
-
- [UBL-CR-290]-A UBL invoice should not include the PayeeParty AgentParty
-
-
-
-
-
-
-
-
-
- UBL-CR-291
- warning
-
-
-
- [UBL-CR-291]-A UBL invoice should not include the PayeeParty ServiceProviderParty
-
-
-
-
-
-
-
-
-
- UBL-CR-292
- warning
-
-
-
- [UBL-CR-292]-A UBL invoice should not include the PayeeParty PowerOfAttorney
-
-
-
-
-
-
-
-
-
- UBL-CR-293
- warning
-
-
-
- [UBL-CR-293]-A UBL invoice should not include the PayeeParty FinancialAccount
-
-
-
-
-
-
-
-
-
- UBL-CR-294
- warning
-
-
-
- [UBL-CR-294]-A UBL invoice should not include the BuyerCustomerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-295
- warning
-
-
-
- [UBL-CR-295]-A UBL invoice should not include the SellerSupplierParty
-
-
-
-
-
-
-
-
-
- UBL-CR-296
- warning
-
-
-
- [UBL-CR-296]-A UBL invoice should not include the TaxRepresentativeParty MarkCareIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-297
- warning
-
-
-
- [UBL-CR-297]-A UBL invoice should not include the TaxRepresentativeParty MarkAttentionIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-298
- warning
-
-
-
- [UBL-CR-298]-A UBL invoice should not include the TaxRepresentativeParty WebsiteURI
-
-
-
-
-
-
-
-
-
- UBL-CR-299
- warning
-
-
-
- [UBL-CR-299]-A UBL invoice should not include the TaxRepresentativeParty LogoReferenceID
-
-
-
-
-
-
-
-
-
- UBL-CR-300
- warning
-
-
-
- [UBL-CR-300]-A UBL invoice should not include the TaxRepresentativeParty EndpointID
-
-
-
-
-
-
-
-
-
- UBL-CR-301
- warning
-
-
-
- [UBL-CR-301]-A UBL invoice should not include the TaxRepresentativeParty IndustryClassificationCode
-
-
-
-
-
-
-
-
-
- UBL-CR-302
- warning
-
-
-
- [UBL-CR-302]-A UBL invoice should not include the TaxRepresentativeParty PartyIdentification
-
-
-
-
-
-
-
-
-
- UBL-CR-303
- warning
-
-
-
- [UBL-CR-303]-A UBL invoice should not include the TaxRepresentativeParty Language
-
-
-
-
-
-
-
-
-
- UBL-CR-304
- warning
-
-
-
- [UBL-CR-304]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress ID
-
-
-
-
-
-
-
-
-
- UBL-CR-305
- warning
-
-
-
- [UBL-CR-305]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress AddressTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-306
- warning
-
-
-
- [UBL-CR-306]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress AddressFormatCode
-
-
-
-
-
-
-
-
-
- UBL-CR-307
- warning
-
-
-
- [UBL-CR-307]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress Postbox
-
-
-
-
-
-
-
-
-
- UBL-CR-308
- warning
-
-
-
- [UBL-CR-308]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress Floor
-
-
-
-
-
-
-
-
-
- UBL-CR-309
- warning
-
-
-
- [UBL-CR-309]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress Room
-
-
-
-
-
-
-
-
-
- UBL-CR-310
- warning
-
-
-
- [UBL-CR-310]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress BlockName
-
-
-
-
-
-
-
-
-
- UBL-CR-311
- warning
-
-
-
- [UBL-CR-311]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress BuildingName
-
-
-
-
-
-
-
-
-
- UBL-CR-312
- warning
-
-
-
- [UBL-CR-312]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress BuildingNumber
-
-
-
-
-
-
-
-
-
- UBL-CR-313
- warning
-
-
-
- [UBL-CR-313]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress InhouseMail
-
-
-
-
-
-
-
-
-
- UBL-CR-314
- warning
-
-
-
- [UBL-CR-314]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress Department
-
-
-
-
-
-
-
-
-
- UBL-CR-315
- warning
-
-
-
- [UBL-CR-315]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress MarkAttention
-
-
-
-
-
-
-
-
-
- UBL-CR-316
- warning
-
-
-
- [UBL-CR-316]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress MarkCare
-
-
-
-
-
-
-
-
-
- UBL-CR-317
- warning
-
-
-
- [UBL-CR-317]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress PlotIdentification
-
-
-
-
-
-
-
-
-
- UBL-CR-318
- warning
-
-
-
- [UBL-CR-318]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress CitySubdivisionName
-
-
-
-
-
-
-
-
-
- UBL-CR-319
- warning
-
-
-
- [UBL-CR-319]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress CountrySubentityCode
-
-
-
-
-
-
-
-
-
- UBL-CR-320
- warning
-
-
-
- [UBL-CR-320]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress Region
-
-
-
-
-
-
-
-
-
- UBL-CR-321
- warning
-
-
-
- [UBL-CR-321]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress District
-
-
-
-
-
-
-
-
-
- UBL-CR-322
- warning
-
-
-
- [UBL-CR-322]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress TimezoneOffset
-
-
-
-
-
-
-
-
-
- UBL-CR-323
- warning
-
-
-
- [UBL-CR-323]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress Country Name
-
-
-
-
-
-
-
-
-
- UBL-CR-324
- warning
-
-
-
- [UBL-CR-324]-A UBL invoice should not include the TaxRepresentativeParty PostalAddress LocationCoordinate
-
-
-
-
-
-
-
-
-
- UBL-CR-325
- warning
-
-
-
- [UBL-CR-325]-A UBL invoice should not include the TaxRepresentativeParty PhysicalLocation
-
-
-
-
-
-
-
-
-
- UBL-CR-326
- warning
-
-
-
- [UBL-CR-326]-A UBL invoice should not include the TaxRepresentativeParty PartyTaxScheme RegistrationName
-
-
-
-
-
-
-
-
-
- UBL-CR-327
- warning
-
-
-
- [UBL-CR-327]-A UBL invoice should not include the TaxRepresentativeParty PartyTaxScheme TaxLevelCode
-
-
-
-
-
-
-
-
-
- UBL-CR-328
- warning
-
-
-
- [UBL-CR-328]-A UBL invoice should not include the TaxRepresentativeParty PartyTaxScheme ExemptionReasonCode
-
-
-
-
-
-
-
-
-
- UBL-CR-329
- warning
-
-
-
- [UBL-CR-329]-A UBL invoice should not include the TaxRepresentativeParty PartyTaxScheme ExemptionReason
-
-
-
-
-
-
-
-
-
- UBL-CR-330
- warning
-
-
-
- [UBL-CR-330]-A UBL invoice should not include the TaxRepresentativeParty PartyTaxScheme RegistrationAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-331
- warning
-
-
-
- [UBL-CR-331]-A UBL invoice should not include the TaxRepresentativeParty PartyTaxScheme TaxScheme Name
-
-
-
-
-
-
-
-
-
- UBL-CR-332
- warning
-
-
-
- [UBL-CR-332]-A UBL invoice should not include the TaxRepresentativeParty PartyTaxScheme TaxScheme TaxTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-333
- warning
-
-
-
- [UBL-CR-333]-A UBL invoice should not include the TaxRepresentativeParty PartyTaxScheme TaxScheme CurrencyCode
-
-
-
-
-
-
-
-
-
- UBL-CR-334
- warning
-
-
-
- [UBL-CR-334]-A UBL invoice should not include the TaxRepresentativeParty PartyTaxScheme TaxScheme JurisdictionRegionAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-335
- warning
-
-
-
- [UBL-CR-335]-A UBL invoice should not include the TaxRepresentativeParty PartyLegalEntity
-
-
-
-
-
-
-
-
-
- UBL-CR-336
- warning
-
-
-
- [UBL-CR-336]-A UBL invoice should not include the TaxRepresentativeParty Contact
-
-
-
-
-
-
-
-
-
- UBL-CR-337
- warning
-
-
-
- [UBL-CR-337]-A UBL invoice should not include the TaxRepresentativeParty Person
-
-
-
-
-
-
-
-
-
- UBL-CR-338
- warning
-
-
-
- [UBL-CR-338]-A UBL invoice should not include the TaxRepresentativeParty AgentParty
-
-
-
-
-
-
-
-
-
- UBL-CR-339
- warning
-
-
-
- [UBL-CR-339]-A UBL invoice should not include the TaxRepresentativeParty ServiceProviderParty
-
-
-
-
-
-
-
-
-
- UBL-CR-340
- warning
-
-
-
- [UBL-CR-340]-A UBL invoice should not include the TaxRepresentativeParty PowerOfAttorney
-
-
-
-
-
-
-
-
-
- UBL-CR-341
- warning
-
-
-
- [UBL-CR-341]-A UBL invoice should not include the TaxRepresentativeParty FinancialAccount
-
-
-
-
-
-
-
-
-
- UBL-CR-342
- warning
-
-
-
- [UBL-CR-342]-A UBL invoice should not include the Delivery ID
-
-
-
-
-
-
-
-
-
- UBL-CR-343
- warning
-
-
-
- [UBL-CR-343]-A UBL invoice should not include the Delivery Quantity
-
-
-
-
-
-
-
-
-
- UBL-CR-344
- warning
-
-
-
- [UBL-CR-344]-A UBL invoice should not include the Delivery MinimumQuantity
-
-
-
-
-
-
-
-
-
- UBL-CR-345
- warning
-
-
-
- [UBL-CR-345]-A UBL invoice should not include the Delivery MaximumQuantity
-
-
-
-
-
-
-
-
-
- UBL-CR-346
- warning
-
-
-
- [UBL-CR-346]-A UBL invoice should not include the Delivery ActualDeliveryTime
-
-
-
-
-
-
-
-
-
- UBL-CR-347
- warning
-
-
-
- [UBL-CR-347]-A UBL invoice should not include the Delivery LatestDeliveryDate
-
-
-
-
-
-
-
-
-
- UBL-CR-348
- warning
-
-
-
- [UBL-CR-348]-A UBL invoice should not include the Delivery LatestDeliveryTime
-
-
-
-
-
-
-
-
-
- UBL-CR-349
- warning
-
-
-
- [UBL-CR-349]-A UBL invoice should not include the Delivery ReleaseID
-
-
-
-
-
-
-
-
-
- UBL-CR-350
- warning
-
-
-
- [UBL-CR-350]-A UBL invoice should not include the Delivery TrackingID
-
-
-
-
-
-
-
-
-
- UBL-CR-351
- warning
-
-
-
- [UBL-CR-351]-A UBL invoice should not include the Delivery DeliveryLocation Description
-
-
-
-
-
-
-
-
-
- UBL-CR-352
- warning
-
-
-
- [UBL-CR-352]-A UBL invoice should not include the Delivery DeliveryLocation Conditions
-
-
-
-
-
-
-
-
-
- UBL-CR-353
- warning
-
-
-
- [UBL-CR-353]-A UBL invoice should not include the Delivery DeliveryLocation CountrySubentity
-
-
-
-
-
-
-
-
-
- UBL-CR-354
- warning
-
-
-
- [UBL-CR-354]-A UBL invoice should not include the Delivery DeliveryLocation CountrySubentityCode
-
-
-
-
-
-
-
-
-
- UBL-CR-355
- warning
-
-
-
- [UBL-CR-355]-A UBL invoice should not include the Delivery DeliveryLocation LocationTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-356
- warning
-
-
-
- [UBL-CR-356]-A UBL invoice should not include the Delivery DeliveryLocation InformationURI
-
-
-
-
-
-
-
-
-
- UBL-CR-357
- warning
-
-
-
- [UBL-CR-357]-A UBL invoice should not include the Delivery DeliveryLocation Name
-
-
-
-
-
-
-
-
-
- UBL-CR-358
- warning
-
-
-
- [UBL-CR-358]-A UBL invoice should not include the Delivery DeliveryLocation ValidityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-359
- warning
-
-
-
- [UBL-CR-359]-A UBL invoice should not include the Delivery DeliveryLocation Address ID
-
-
-
-
-
-
-
-
-
- UBL-CR-360
- warning
-
-
-
- [UBL-CR-360]-A UBL invoice should not include the Delivery DeliveryLocation Address AddressTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-361
- warning
-
-
-
- [UBL-CR-361]-A UBL invoice should not include the Delivery DeliveryLocation Address AddressFormatCode
-
-
-
-
-
-
-
-
-
- UBL-CR-362
- warning
-
-
-
- [UBL-CR-362]-A UBL invoice should not include the Delivery DeliveryLocation Address Postbox
-
-
-
-
-
-
-
-
-
- UBL-CR-363
- warning
-
-
-
- [UBL-CR-363]-A UBL invoice should not include the Delivery DeliveryLocation Address Floor
-
-
-
-
-
-
-
-
-
- UBL-CR-364
- warning
-
-
-
- [UBL-CR-364]-A UBL invoice should not include the Delivery DeliveryLocation Address Room
-
-
-
-
-
-
-
-
-
- UBL-CR-365
- warning
-
-
-
- [UBL-CR-365]-A UBL invoice should not include the Delivery DeliveryLocation Address BlockName
-
-
-
-
-
-
-
-
-
- UBL-CR-366
- warning
-
-
-
- [UBL-CR-366]-A UBL invoice should not include the Delivery DeliveryLocation Address BuildingName
-
-
-
-
-
-
-
-
-
- UBL-CR-367
- warning
-
-
-
- [UBL-CR-367]-A UBL invoice should not include the Delivery DeliveryLocation Address BuildingNumber
-
-
-
-
-
-
-
-
-
- UBL-CR-368
- warning
-
-
-
- [UBL-CR-368]-A UBL invoice should not include the Delivery DeliveryLocation Address InhouseMail
-
-
-
-
-
-
-
-
-
- UBL-CR-369
- warning
-
-
-
- [UBL-CR-369]-A UBL invoice should not include the Delivery DeliveryLocation Address Department
-
-
-
-
-
-
-
-
-
- UBL-CR-370
- warning
-
-
-
- [UBL-CR-370]-A UBL invoice should not include the Delivery DeliveryLocation Address MarkAttention
-
-
-
-
-
-
-
-
-
- UBL-CR-371
- warning
-
-
-
- [UBL-CR-371]-A UBL invoice should not include the Delivery DeliveryLocation Address MarkCare
-
-
-
-
-
-
-
-
-
- UBL-CR-372
- warning
-
-
-
- [UBL-CR-372]-A UBL invoice should not include the Delivery DeliveryLocation Address PlotIdentification
-
-
-
-
-
-
-
-
-
- UBL-CR-373
- warning
-
-
-
- [UBL-CR-373]-A UBL invoice should not include the Delivery DeliveryLocation Address CitySubdivisionName
-
-
-
-
-
-
-
-
-
- UBL-CR-374
- warning
-
-
-
- [UBL-CR-374]-A UBL invoice should not include the Delivery DeliveryLocation Address CountrySubentityCode
-
-
-
-
-
-
-
-
-
- UBL-CR-375
- warning
-
-
-
- [UBL-CR-375]-A UBL invoice should not include the Delivery DeliveryLocation Address Region
-
-
-
-
-
-
-
-
-
- UBL-CR-376
- warning
-
-
-
- [UBL-CR-376]-A UBL invoice should not include the Delivery DeliveryLocation Address District
-
-
-
-
-
-
-
-
-
- UBL-CR-377
- warning
-
-
-
- [UBL-CR-377]-A UBL invoice should not include the Delivery DeliveryLocation Address TimezoneOffset
-
-
-
-
-
-
-
-
-
- UBL-CR-378
- warning
-
-
-
- [UBL-CR-378]-A UBL invoice should not include the Delivery DeliveryLocation Address Country Name
-
-
-
-
-
-
-
-
-
- UBL-CR-379
- warning
-
-
-
- [UBL-CR-379]-A UBL invoice should not include the Delivery DeliveryLocation Address LocationCoordinate
-
-
-
-
-
-
-
-
-
- UBL-CR-380
- warning
-
-
-
- [UBL-CR-380]-A UBL invoice should not include the Delivery DeliveryLocation SubsidiaryLocation
-
-
-
-
-
-
-
-
-
- UBL-CR-381
- warning
-
-
-
- [UBL-CR-381]-A UBL invoice should not include the Delivery DeliveryLocation LocationCoordinate
-
-
-
-
-
-
-
-
-
- UBL-CR-382
- warning
-
-
-
- [UBL-CR-382]-A UBL invoice should not include the Delivery AlternativeDeliveryLocation
-
-
-
-
-
-
-
-
-
- UBL-CR-383
- warning
-
-
-
- [UBL-CR-383]-A UBL invoice should not include the Delivery RequestedDeliveryPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-384
- warning
-
-
-
- [UBL-CR-384]-A UBL invoice should not include the Delivery EstimatedDeliveryPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-385
- warning
-
-
-
- [UBL-CR-385]-A UBL invoice should not include the Delivery CarrierParty
-
-
-
-
-
-
-
-
-
- UBL-CR-386
- warning
-
-
-
- [UBL-CR-386]-A UBL invoice should not include the DeliveryParty MarkCareIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-387
- warning
-
-
-
- [UBL-CR-387]-A UBL invoice should not include the DeliveryParty MarkAttentionIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-388
- warning
-
-
-
- [UBL-CR-388]-A UBL invoice should not include the DeliveryParty WebsiteURI
-
-
-
-
-
-
-
-
-
- UBL-CR-389
- warning
-
-
-
- [UBL-CR-389]-A UBL invoice should not include the DeliveryParty LogoReferenceID
-
-
-
-
-
-
-
-
-
- UBL-CR-390
- warning
-
-
-
- [UBL-CR-390]-A UBL invoice should not include the DeliveryParty EndpointID
-
-
-
-
-
-
-
-
-
- UBL-CR-391
- warning
-
-
-
- [UBL-CR-391]-A UBL invoice should not include the DeliveryParty IndustryClassificationCode
-
-
-
-
-
-
-
-
-
- UBL-CR-392
- warning
-
-
-
- [UBL-CR-392]-A UBL invoice should not include the DeliveryParty PartyIdentification
-
-
-
-
-
-
-
-
-
- UBL-CR-393
- warning
-
-
-
- [UBL-CR-393]-A UBL invoice should not include the DeliveryParty Language
-
-
-
-
-
-
-
-
-
- UBL-CR-394
- warning
-
-
-
- [UBL-CR-394]-A UBL invoice should not include the DeliveryParty PostalAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-395
- warning
-
-
-
- [UBL-CR-395]-A UBL invoice should not include the DeliveryParty PhysicalLocation
-
-
-
-
-
-
-
-
-
- UBL-CR-396
- warning
-
-
-
- [UBL-CR-396]-A UBL invoice should not include the DeliveryParty PartyTaxScheme
-
-
-
-
-
-
-
-
-
- UBL-CR-397
- warning
-
-
-
- [UBL-CR-397]-A UBL invoice should not include the DeliveryParty PartyLegalEntity
-
-
-
-
-
-
-
-
-
- UBL-CR-398
- warning
-
-
-
- [UBL-CR-398]-A UBL invoice should not include the DeliveryParty Contact
-
-
-
-
-
-
-
-
-
- UBL-CR-399
- warning
-
-
-
- [UBL-CR-399]-A UBL invoice should not include the DeliveryParty Person
-
-
-
-
-
-
-
-
-
- UBL-CR-400
- warning
-
-
-
- [UBL-CR-400]-A UBL invoice should not include the DeliveryParty AgentParty
-
-
-
-
-
-
-
-
-
- UBL-CR-401
- warning
-
-
-
- [UBL-CR-401]-A UBL invoice should not include the DeliveryParty ServiceProviderParty
-
-
-
-
-
-
-
-
-
- UBL-CR-402
- warning
-
-
-
- [UBL-CR-402]-A UBL invoice should not include the DeliveryParty PowerOfAttorney
-
-
-
-
-
-
-
-
-
- UBL-CR-403
- warning
-
-
-
- [UBL-CR-403]-A UBL invoice should not include the DeliveryParty FinancialAccount
-
-
-
-
-
-
-
-
-
- UBL-CR-404
- warning
-
-
-
- [UBL-CR-404]-A UBL invoice should not include the Delivery NotifyParty
-
-
-
-
-
-
-
-
-
- UBL-CR-405
- warning
-
-
-
- [UBL-CR-405]-A UBL invoice should not include the Delivery Despatch
-
-
-
-
-
-
-
-
-
- UBL-CR-406
- warning
-
-
-
- [UBL-CR-406]-A UBL invoice should not include the Delivery DeliveryTerms
-
-
-
-
-
-
-
-
-
- UBL-CR-407
- warning
-
-
-
- [UBL-CR-407]-A UBL invoice should not include the Delivery MinimumDeliveryUnit
-
-
-
-
-
-
-
-
-
- UBL-CR-408
- warning
-
-
-
- [UBL-CR-408]-A UBL invoice should not include the Delivery MaximumDeliveryUnit
-
-
-
-
-
-
-
-
-
- UBL-CR-409
- warning
-
-
-
- [UBL-CR-409]-A UBL invoice should not include the Delivery Shipment
-
-
-
-
-
-
-
-
-
- UBL-CR-410
- warning
-
-
-
- [UBL-CR-410]-A UBL invoice should not include the DeliveryTerms
-
-
-
-
-
-
-
-
-
- UBL-CR-411
- warning
-
-
-
- [UBL-CR-411]-A UBL invoice should not include the PaymentMeans ID
-
-
-
-
-
-
-
-
-
- UBL-CR-412
- warning
-
-
-
- [UBL-CR-412]-A UBL invoice should not include the PaymentMeans PaymentDueDate
-
-
-
-
-
-
-
-
-
- UBL-CR-413
- warning
-
-
-
- [UBL-CR-413]-A UBL invoice should not include the PaymentMeans PaymentChannelCode
-
-
-
-
-
-
-
-
-
- UBL-CR-414
- warning
-
-
-
- [UBL-CR-414]-A UBL invoice should not include the PaymentMeans InstructionID
-
-
-
-
-
-
-
-
-
- UBL-CR-415
- warning
-
-
-
- [UBL-CR-415]-A UBL invoice should not include the PaymentMeans CardAccount CardTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-416
- warning
-
-
-
- [UBL-CR-416]-A UBL invoice should not include the PaymentMeans CardAccount ValidityStartDate
-
-
-
-
-
-
-
-
-
- UBL-CR-417
- warning
-
-
-
- [UBL-CR-417]-A UBL invoice should not include the PaymentMeans CardAccount ExpiryDate
-
-
-
-
-
-
-
-
-
- UBL-CR-418
- warning
-
-
-
- [UBL-CR-418]-A UBL invoice should not include the PaymentMeans CardAccount IssuerID
-
-
-
-
-
-
-
-
-
- UBL-CR-419
- warning
-
-
-
- [UBL-CR-419]-A UBL invoice should not include the PaymentMeans CardAccount IssueNumberID
-
-
-
-
-
-
-
-
-
- UBL-CR-420
- warning
-
-
-
- [UBL-CR-420]-A UBL invoice should not include the PaymentMeans CardAccount CV2ID
-
-
-
-
-
-
-
-
-
- UBL-CR-421
- warning
-
-
-
- [UBL-CR-421]-A UBL invoice should not include the PaymentMeans CardAccount CardChipCode
-
-
-
-
-
-
-
-
-
- UBL-CR-422
- warning
-
-
-
- [UBL-CR-422]-A UBL invoice should not include the PaymentMeans CardAccount ChipApplicationID
-
-
-
-
-
-
-
-
-
- UBL-CR-424
- warning
-
-
-
- [UBL-CR-424]-A UBL invoice should not include the PaymentMeans PayeeFinancialAccount AliasName
-
-
-
-
-
-
-
-
-
- UBL-CR-425
- warning
-
-
-
- [UBL-CR-425]-A UBL invoice should not include the PaymentMeans PayeeFinancialAccount AccountTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-426
- warning
-
-
-
- [UBL-CR-426]-A UBL invoice should not include the PaymentMeans PayeeFinancialAccount AccountFormatCode
-
-
-
-
-
-
-
-
-
- UBL-CR-427
- warning
-
-
-
- [UBL-CR-427]-A UBL invoice should not include the PaymentMeans PayeeFinancialAccount CurrencyCode
-
-
-
-
-
-
-
-
-
- UBL-CR-428
- warning
-
-
-
- [UBL-CR-428]-A UBL invoice should not include the PaymentMeans PayeeFinancialAccount PaymentNote
-
-
-
-
-
-
-
-
-
- UBL-CR-429
- warning
-
-
-
- [UBL-CR-429]-A UBL invoice should not include the PaymentMeans PayeeFinancialAccount FinancialInstitutionBranch Name
-
-
-
-
-
-
-
-
-
- UBL-CR-430
- warning
-
-
-
- [UBL-CR-430]-A UBL invoice should not include the PaymentMeans PayeeFinancialAccount FinancialInstitutionBranch FinancialInstitution Name
-
-
-
-
-
-
-
-
-
- UBL-CR-431
- warning
-
-
-
- [UBL-CR-431]-A UBL invoice should not include the PaymentMeans PayeeFinancialAccount FinancialInstitutionBranch FinancialInstitution Address
-
-
-
-
-
-
-
-
-
- UBL-CR-432
- warning
-
-
-
- [UBL-CR-432]-A UBL invoice should not include the PaymentMeans PayeeFinancialAccount FinancialInstitutionBranch Address
-
-
-
-
-
-
-
-
-
- UBL-CR-433
- warning
-
-
-
- [UBL-CR-433]-A UBL invoice should not include the PaymentMeans PayeeFinancialAccount Country
-
-
-
-
-
-
-
-
-
- UBL-CR-434
- warning
-
-
-
- [UBL-CR-434]-A UBL invoice should not include the PaymentMeans CreditAccount
-
-
-
-
-
-
-
-
-
- UBL-CR-435
- warning
-
-
-
- [UBL-CR-435]-A UBL invoice should not include the PaymentMeans PaymentMandate MandateTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-436
- warning
-
-
-
- [UBL-CR-436]-A UBL invoice should not include the PaymentMeans PaymentMandate MaximumPaymentInstructionsNumeric
-
-
-
-
-
-
-
-
-
- UBL-CR-437
- warning
-
-
-
- [UBL-CR-437]-A UBL invoice should not include the PaymentMeans PaymentMandate MaximumPaidAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-438
- warning
-
-
-
- [UBL-CR-438]-A UBL invoice should not include the PaymentMeans PaymentMandate SignatureID
-
-
-
-
-
-
-
-
-
- UBL-CR-439
- warning
-
-
-
- [UBL-CR-439]-A UBL invoice should not include the PaymentMeans PaymentMandate PayerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-440
- warning
-
-
-
- [UBL-CR-440]-A UBL invoice should not include the PaymentMeans PaymentMandate PayerFinancialAccount Name
-
-
-
-
-
-
-
-
-
- UBL-CR-441
- warning
-
-
-
- [UBL-CR-441]-A UBL invoice should not include the PaymentMeans PaymentMandate PayerFinancialAccount AliasName
-
-
-
-
-
-
-
-
-
- UBL-CR-442
- warning
-
-
-
- [UBL-CR-442]-A UBL invoice should not include the PaymentMeans PaymentMandate PayerFinancialAccount AccountTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-443
- warning
-
-
-
- [UBL-CR-443]-A UBL invoice should not include the PaymentMeans PaymentMandate PayerFinancialAccount AccountFormatCode
-
-
-
-
-
-
-
-
-
- UBL-CR-444
- warning
-
-
-
- [UBL-CR-444]-A UBL invoice should not include the PaymentMeans PaymentMandate PayerFinancialAccount CurrencyCode
-
-
-
-
-
-
-
-
-
- UBL-CR-445
- warning
-
-
-
- [UBL-CR-445]-A UBL invoice should not include the PaymentMeans PaymentMandate PayerFinancialAccount PaymentNote
-
-
-
-
-
-
-
-
-
- UBL-CR-446
- warning
-
-
-
- [UBL-CR-446]-A UBL invoice should not include the PaymentMeans PaymentMandate PayerFinancialAccount FinancialInstitutionBranch
-
-
-
-
-
-
-
-
-
- UBL-CR-447
- warning
-
-
-
- [UBL-CR-447]-A UBL invoice should not include the PaymentMeans PaymentMandate PayerFinancialAccount Country
-
-
-
-
-
-
-
-
-
- UBL-CR-448
- warning
-
-
-
- [UBL-CR-448]-A UBL invoice should not include the PaymentMeans PaymentMandate ValidityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-449
- warning
-
-
-
- [UBL-CR-449]-A UBL invoice should not include the PaymentMeans PaymentMandate PaymentReversalPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-450
- warning
-
-
-
- [UBL-CR-450]-A UBL invoice should not include the PaymentMeans PaymentMandate Clause
-
-
-
-
-
-
-
-
-
- UBL-CR-451
- warning
-
-
-
- [UBL-CR-451]-A UBL invoice should not include the PaymentMeans TradeFinancing
-
-
-
-
-
-
-
-
-
- UBL-CR-452
- warning
-
-
-
- [UBL-CR-452]-A UBL invoice should not include the PaymentTerms ID
-
-
-
-
-
-
-
-
-
- UBL-CR-453
- warning
-
-
-
- [UBL-CR-453]-A UBL invoice should not include the PaymentTerms PaymentMeansID
-
-
-
-
-
-
-
-
-
- UBL-CR-454
- warning
-
-
-
- [UBL-CR-454]-A UBL invoice should not include the PaymentTerms PrepaidPaymentReferenceID
-
-
-
-
-
-
-
-
-
- UBL-CR-455
- warning
-
-
-
- [UBL-CR-455]-A UBL invoice should not include the PaymentTerms ReferenceEventCode
-
-
-
-
-
-
-
-
-
- UBL-CR-456
- warning
-
-
-
- [UBL-CR-456]-A UBL invoice should not include the PaymentTerms SettlementDiscountPercent
-
-
-
-
-
-
-
-
-
- UBL-CR-457
- warning
-
-
-
- [UBL-CR-457]-A UBL invoice should not include the PaymentTerms PenaltySurchargePercent
-
-
-
-
-
-
-
-
-
- UBL-CR-458
- warning
-
-
-
- [UBL-CR-458]-A UBL invoice should not include the PaymentTerms PaymentPercent
-
-
-
-
-
-
-
-
-
- UBL-CR-459
- warning
-
-
-
- [UBL-CR-459]-A UBL invoice should not include the PaymentTerms Amount
-
-
-
-
-
-
-
-
-
- UBL-CR-460
- warning
-
-
-
- [UBL-CR-460]-A UBL invoice should not include the PaymentTerms SettlementDiscountAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-461
- warning
-
-
-
- [UBL-CR-461]-A UBL invoice should not include the PaymentTerms PenaltyAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-462
- warning
-
-
-
- [UBL-CR-462]-A UBL invoice should not include the PaymentTerms PaymentTermsDetailsURI
-
-
-
-
-
-
-
-
-
- UBL-CR-463
- warning
-
-
-
- [UBL-CR-463]-A UBL invoice should not include the PaymentTerms PaymentDueDate
-
-
-
-
-
-
-
-
-
- UBL-CR-464
- warning
-
-
-
- [UBL-CR-464]-A UBL invoice should not include the PaymentTerms InstallmentDueDate
-
-
-
-
-
-
-
-
-
- UBL-CR-465
- warning
-
-
-
- [UBL-CR-465]-A UBL invoice should not include the PaymentTerms InvoicingPartyReference
-
-
-
-
-
-
-
-
-
- UBL-CR-466
- warning
-
-
-
- [UBL-CR-466]-A UBL invoice should not include the PaymentTerms SettlementPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-467
- warning
-
-
-
- [UBL-CR-467]-A UBL invoice should not include the PaymentTerms PenaltyPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-468
- warning
-
-
-
- [UBL-CR-468]-A UBL invoice should not include the PaymentTerms ExchangeRate
-
-
-
-
-
-
-
-
-
- UBL-CR-469
- warning
-
-
-
- [UBL-CR-469]-A UBL invoice should not include the PaymentTerms ValidityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-470
- warning
-
-
-
- [UBL-CR-470]-A UBL invoice should not include the PrepaidPayment
-
-
-
-
-
-
-
-
-
- UBL-CR-471
- warning
-
-
-
- [UBL-CR-471]-A UBL invoice should not include the AllowanceCharge ID
-
-
-
-
-
-
-
-
-
- UBL-CR-472
- warning
-
-
-
- [UBL-CR-472]-A UBL invoice should not include the AllowanceCharge PrepaidIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-473
- warning
-
-
-
- [UBL-CR-473]-A UBL invoice should not include the AllowanceCharge SequenceNumeric
-
-
-
-
-
-
-
-
-
- UBL-CR-474
- warning
-
-
-
- [UBL-CR-474]-A UBL invoice should not include the AllowanceCharge AccountingCostCode
-
-
-
-
-
-
-
-
-
- UBL-CR-475
- warning
-
-
-
- [UBL-CR-475]-A UBL invoice should not include the AllowanceCharge AccountingCost
-
-
-
-
-
-
-
-
-
- UBL-CR-476
- warning
-
-
-
- [UBL-CR-476]-A UBL invoice should not include the AllowanceCharge PerUnitAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-477
- warning
-
-
-
- [UBL-CR-477]-A UBL invoice should not include the AllowanceCharge TaxCategory Name
-
-
-
-
-
-
-
-
-
- UBL-CR-478
- warning
-
-
-
- [UBL-CR-478]-A UBL invoice should not include the AllowanceCharge TaxCategory BaseUnitMeasure
-
-
-
-
-
-
-
-
-
- UBL-CR-479
- warning
-
-
-
- [UBL-CR-479]-A UBL invoice should not include the AllowanceCharge TaxCategory PerUnitAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-480
- warning
-
-
-
- [UBL-CR-480]-A UBL invoice should not include the AllowanceCharge TaxCategory TaxExemptionReasonCode
-
-
-
-
-
-
-
-
-
- UBL-CR-481
- warning
-
-
-
- [UBL-CR-481]-A UBL invoice should not include the AllowanceCharge TaxCategory TaxExemptionReason
-
-
-
-
-
-
-
-
-
- UBL-CR-482
- warning
-
-
-
- [UBL-CR-482]-A UBL invoice should not include the AllowanceCharge TaxCategory TierRange
-
-
-
-
-
-
-
-
-
- UBL-CR-483
- warning
-
-
-
- [UBL-CR-483]-A UBL invoice should not include the AllowanceCharge TaxCategory TierRatePercent
-
-
-
-
-
-
-
-
-
- UBL-CR-484
- warning
-
-
-
- [UBL-CR-484]-A UBL invoice should not include the AllowanceCharge TaxCategory TaxScheme Name
-
-
-
-
-
-
-
-
-
- UBL-CR-485
- warning
-
-
-
- [UBL-CR-485]-A UBL invoice should not include the AllowanceCharge TaxCategory TaxScheme TaxTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-486
- warning
-
-
-
- [UBL-CR-486]-A UBL invoice should not include the AllowanceCharge TaxCategory TaxScheme CurrencyCode
-
-
-
-
-
-
-
-
-
- UBL-CR-487
- warning
-
-
-
- [UBL-CR-487]-A UBL invoice should not include the AllowanceCharge TaxCategory TaxScheme JurisdictionRegionAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-488
- warning
-
-
-
- [UBL-CR-488]-A UBL invoice should not include the AllowanceCharge TaxTotal
-
-
-
-
-
-
-
-
-
- UBL-CR-489
- warning
-
-
-
- [UBL-CR-489]-A UBL invoice should not include the AllowanceCharge PaymentMeans
-
-
-
-
-
-
-
-
-
- UBL-CR-490
- warning
-
-
-
- [UBL-CR-490]-A UBL invoice should not include the TaxExchangeRate
-
-
-
-
-
-
-
-
-
- UBL-CR-491
- warning
-
-
-
- [UBL-CR-491]-A UBL invoice should not include the PricingExchangeRate
-
-
-
-
-
-
-
-
-
- UBL-CR-492
- warning
-
-
-
- [UBL-CR-492]-A UBL invoice should not include the PaymentExchangeRate
-
-
-
-
-
-
-
-
-
- UBL-CR-493
- warning
-
-
-
- [UBL-CR-493]-A UBL invoice should not include the PaymentAlternativeExchangeRate
-
-
-
-
-
-
-
-
-
- UBL-CR-494
- warning
-
-
-
- [UBL-CR-494]-A UBL invoice should not include the TaxTotal RoundingAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-495
- warning
-
-
-
- [UBL-CR-495]-A UBL invoice should not include the TaxTotal TaxEvidenceIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-496
- warning
-
-
-
- [UBL-CR-496]-A UBL invoice should not include the TaxTotal TaxIncludedIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-497
- warning
-
-
-
- [UBL-CR-497]-A UBL invoice should not include the TaxTotal TaxSubtotal CalulationSequenceNumeric
-
-
-
-
-
-
-
-
-
- UBL-CR-498
- warning
-
-
-
- [UBL-CR-498]-A UBL invoice should not include the TaxTotal TaxSubtotal TransactionCurrencyTaxAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-499
- warning
-
-
-
- [UBL-CR-499]-A UBL invoice should not include the TaxTotal TaxSubtotal Percent
-
-
-
-
-
-
-
-
-
- UBL-CR-500
- warning
-
-
-
- [UBL-CR-500]-A UBL invoice should not include the TaxTotal TaxSubtotal BaseUnitMeasure
-
-
-
-
-
-
-
-
-
- UBL-CR-501
- warning
-
-
-
- [UBL-CR-501]-A UBL invoice should not include the TaxTotal TaxSubtotal PerUnitAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-502
- warning
-
-
-
- [UBL-CR-502]-A UBL invoice should not include the TaxTotal TaxSubtotal TierRange
-
-
-
-
-
-
-
-
-
- UBL-CR-503
- warning
-
-
-
- [UBL-CR-503]-A UBL invoice should not include the TaxTotal TaxSubtotal TierRatePercent
-
-
-
-
-
-
-
-
-
- UBL-CR-504
- warning
-
-
-
- [UBL-CR-504]-A UBL invoice should not include the TaxTotal TaxSubtotal TaxCategory Name
-
-
-
-
-
-
-
-
-
- UBL-CR-505
- warning
-
-
-
- [UBL-CR-505]-A UBL invoice should not include the TaxTotal TaxSubtotal TaxCategory BaseUnitMeasure
-
-
-
-
-
-
-
-
-
- UBL-CR-506
- warning
-
-
-
- [UBL-CR-506]-A UBL invoice should not include the TaxTotal TaxSubtotal TaxCategory PerUnitAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-507
- warning
-
-
-
- [UBL-CR-507]-A UBL invoice should not include the TaxTotal TaxSubtotal TaxCategory TierRange
-
-
-
-
-
-
-
-
-
- UBL-CR-508
- warning
-
-
-
- [UBL-CR-508]-A UBL invoice should not include the TaxTotal TaxSubtotal TaxCategory TierRatePercent
-
-
-
-
-
-
-
-
-
- UBL-CR-509
- warning
-
-
-
- [UBL-CR-509]-A UBL invoice should not include the TaxTotal TaxSubtotal TaxCategory TaxScheme Name
-
-
-
-
-
-
-
-
-
- UBL-CR-510
- warning
-
-
-
- [UBL-CR-510]-A UBL invoice should not include the TaxTotal TaxSubtotal TaxCategory TaxScheme TaxTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-511
- warning
-
-
-
- [UBL-CR-511]-A UBL invoice should not include the TaxTotal TaxSubtotal TaxCategory TaxScheme CurrencyCode
-
-
-
-
-
-
-
-
-
- UBL-CR-512
- warning
-
-
-
- [UBL-CR-512]-A UBL invoice should not include the TaxTotal TaxSubtotal TaxCategory TaxScheme JurisdictionRegionAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-513
- warning
-
-
-
- [UBL-CR-513]-A UBL invoice should not include the WithholdingTaxTotal
-
-
-
-
-
-
-
-
-
- UBL-CR-514
- warning
-
-
-
- [UBL-CR-514]-A UBL invoice should not include the LegalMonetaryTotal PayableAlternativeAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-515
- warning
-
-
-
- [UBL-CR-515]-A UBL invoice should not include the InvoiceLine UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-516
- warning
-
-
-
- [UBL-CR-516]-A UBL invoice should not include the InvoiceLine TaxPointDate
-
-
-
-
-
-
-
-
-
- UBL-CR-517
- warning
-
-
-
- [UBL-CR-517]-A UBL invoice should not include the InvoiceLine AccountingCostCode
-
-
-
-
-
-
-
-
-
- UBL-CR-518
- warning
-
-
-
- [UBL-CR-518]-A UBL invoice should not include the InvoiceLine PaymentPurposeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-519
- warning
-
-
-
- [UBL-CR-519]-A UBL invoice should not include the InvoiceLine FreeOfChargeIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-520
- warning
-
-
-
- [UBL-CR-520]-A UBL invoice should not include the InvoiceLine InvoicePeriod StartTime
-
-
-
-
-
-
-
-
-
- UBL-CR-521
- warning
-
-
-
- [UBL-CR-521]-A UBL invoice should not include the InvoiceLine InvoicePeriod EndTime
-
-
-
-
-
-
-
-
-
- UBL-CR-522
- warning
-
-
-
- [UBL-CR-522]-A UBL invoice should not include the InvoiceLine InvoicePeriod DurationMeasure
-
-
-
-
-
-
-
-
-
- UBL-CR-523
- warning
-
-
-
- [UBL-CR-523]-A UBL invoice should not include the InvoiceLine InvoicePeriod DescriptionCode
-
-
-
-
-
-
-
-
-
- UBL-CR-524
- warning
-
-
-
- [UBL-CR-524]-A UBL invoice should not include the InvoiceLine InvoicePeriod Description
-
-
-
-
-
-
-
-
-
- UBL-CR-525
- warning
-
-
-
- [UBL-CR-525]-A UBL invoice should not include the InvoiceLine OrderLineReference SalesOrderLineID
-
-
-
-
-
-
-
-
-
- UBL-CR-526
- warning
-
-
-
- [UBL-CR-526]-A UBL invoice should not include the InvoiceLine OrderLineReference UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-527
- warning
-
-
-
- [UBL-CR-527]-A UBL invoice should not include the InvoiceLine OrderLineReference LineStatusCode
-
-
-
-
-
-
-
-
-
- UBL-CR-528
- warning
-
-
-
- [UBL-CR-528]-A UBL invoice should not include the InvoiceLine OrderLineReference OrderReference
-
-
-
-
-
-
-
-
-
- UBL-CR-529
- warning
-
-
-
- [UBL-CR-529]-A UBL invoice should not include the InvoiceLine DespatchLineReference
-
-
-
-
-
-
-
-
-
- UBL-CR-530
- warning
-
-
-
- [UBL-CR-530]-A UBL invoice should not include the InvoiceLine ReceiptLineReference
-
-
-
-
-
-
-
-
-
- UBL-CR-531
- warning
-
-
-
- [UBL-CR-531]-A UBL invoice should not include the InvoiceLine BillingReference
-
-
-
-
-
-
-
-
-
- UBL-CR-532
- warning
-
-
-
- [UBL-CR-532]-A UBL invoice should not include the InvoiceLine DocumentReference CopyIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-533
- warning
-
-
-
- [UBL-CR-533]-A UBL invoice should not include the InvoiceLine DocumentReference UUID
-
-
-
-
-
-
-
-
-
- UBL-CR-534
- warning
-
-
-
- [UBL-CR-534]-A UBL invoice should not include the InvoiceLine DocumentReference IssueDate
-
-
-
-
-
-
-
-
-
- UBL-CR-535
- warning
-
-
-
- [UBL-CR-535]-A UBL invoice should not include the InvoiceLine DocumentReference IssueTime
-
-
-
-
-
-
-
-
-
- UBL-CR-537
- warning
-
-
-
- [UBL-CR-537]-A UBL invoice should not include the InvoiceLine DocumentReference DocumentType
-
-
-
-
-
-
-
-
-
- UBL-CR-538
- warning
-
-
-
- [UBL-CR-538]-A UBL invoice should not include the InvoiceLine DocumentReference Xpath
-
-
-
-
-
-
-
-
-
- UBL-CR-539
- warning
-
-
-
- [UBL-CR-539]-A UBL invoice should not include the InvoiceLine DocumentReference LanguageID
-
-
-
-
-
-
-
-
-
- UBL-CR-540
- warning
-
-
-
- [UBL-CR-540]-A UBL invoice should not include the InvoiceLine DocumentReference LocaleCode
-
-
-
-
-
-
-
-
-
- UBL-CR-541
- warning
-
-
-
- [UBL-CR-541]-A UBL invoice should not include the InvoiceLine DocumentReference VersionID
-
-
-
-
-
-
-
-
-
- UBL-CR-542
- warning
-
-
-
- [UBL-CR-542]-A UBL invoice should not include the InvoiceLine DocumentReference DocumentStatusCode
-
-
-
-
-
-
-
-
-
- UBL-CR-543
- warning
-
-
-
- [UBL-CR-543]-A UBL invoice should not include the InvoiceLine DocumentReference DocumentDescription
-
-
-
-
-
-
-
-
-
- UBL-CR-544
- warning
-
-
-
- [UBL-CR-544]-A UBL invoice should not include the InvoiceLine DocumentReference Attachment
-
-
-
-
-
-
-
-
-
- UBL-CR-545
- warning
-
-
-
- [UBL-CR-545]-A UBL invoice should not include the InvoiceLine DocumentReference ValidityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-546
- warning
-
-
-
- [UBL-CR-546]-A UBL invoice should not include the InvoiceLine DocumentReference IssuerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-547
- warning
-
-
-
- [UBL-CR-547]-A UBL invoice should not include the InvoiceLine DocumentReference ResultOfVerification
-
-
-
-
-
-
-
-
-
- UBL-CR-548
- warning
-
-
-
- [UBL-CR-548]-A UBL invoice should not include the InvoiceLine PricingReference
-
-
-
-
-
-
-
-
-
- UBL-CR-549
- warning
-
-
-
- [UBL-CR-549]-A UBL invoice should not include the InvoiceLine OriginatorParty
-
-
-
-
-
-
-
-
-
- UBL-CR-550
- warning
-
-
-
- [UBL-CR-550]-A UBL invoice should not include the InvoiceLine Delivery
-
-
-
-
-
-
-
-
-
- UBL-CR-551
- warning
-
-
-
- [UBL-CR-551]-A UBL invoice should not include the InvoiceLine PaymentTerms
-
-
-
-
-
-
-
-
-
- UBL-CR-552
- warning
-
-
-
- [UBL-CR-552]-A UBL invoice should not include the InvoiceLine AllowanceCharge ID
-
-
-
-
-
-
-
-
-
- UBL-CR-553
- warning
-
-
-
- [UBL-CR-553]-A UBL invoice should not include the InvoiceLine AllowanceCharge PrepaidIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-554
- warning
-
-
-
- [UBL-CR-554]-A UBL invoice should not include the InvoiceLine AllowanceCharge SequenceNumeric
-
-
-
-
-
-
-
-
-
- UBL-CR-555
- warning
-
-
-
- [UBL-CR-555]-A UBL invoice should not include the InvoiceLine AllowanceCharge AccountingCostCode
-
-
-
-
-
-
-
-
-
- UBL-CR-556
- warning
-
-
-
- [UBL-CR-556]-A UBL invoice should not include the InvoiceLine AllowanceCharge AccountingCost
-
-
-
-
-
-
-
-
-
- UBL-CR-557
- warning
-
-
-
- [UBL-CR-557]-A UBL invoice should not include the InvoiceLine AllowanceCharge PerUnitAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-558
- warning
-
-
-
- [UBL-CR-558]-A UBL invoice should not include the InvoiceLine AllowanceCharge TaxCategory
-
-
-
-
-
-
-
-
-
- UBL-CR-559
- warning
-
-
-
- [UBL-CR-559]-A UBL invoice should not include the InvoiceLine AllowanceCharge TaxTotal
-
-
-
-
-
-
-
-
-
- UBL-CR-560
- warning
-
-
-
- [UBL-CR-560]-A UBL invoice should not include the InvoiceLine AllowanceCharge PaymentMeans
-
-
-
-
-
-
-
-
-
- UBL-CR-561
- warning
-
-
-
- [UBL-CR-561]-A UBL invoice should not include the InvoiceLine TaxTotal
-
-
-
-
-
-
-
-
-
- UBL-CR-562
- warning
-
-
-
- [UBL-CR-562]-A UBL invoice should not include the InvoiceLine WithholdingTaxTotal
-
-
-
-
-
-
-
-
-
- UBL-CR-563
- warning
-
-
-
- [UBL-CR-563]-A UBL invoice should not include the InvoiceLine Item PackQuantity
-
-
-
-
-
-
-
-
-
- UBL-CR-564
- warning
-
-
-
- [UBL-CR-564]-A UBL invoice should not include the InvoiceLine Item PackSizeNumeric
-
-
-
-
-
-
-
-
-
- UBL-CR-565
- warning
-
-
-
- [UBL-CR-565]-A UBL invoice should not include the InvoiceLine Item CatalogueIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-566
- warning
-
-
-
- [UBL-CR-566]-A UBL invoice should not include the InvoiceLine Item HazardousRiskIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-567
- warning
-
-
-
- [UBL-CR-567]-A UBL invoice should not include the InvoiceLine Item AdditionalInformation
-
-
-
-
-
-
-
-
-
- UBL-CR-568
- warning
-
-
-
- [UBL-CR-568]-A UBL invoice should not include the InvoiceLine Item Keyword
-
-
-
-
-
-
-
-
-
- UBL-CR-569
- warning
-
-
-
- [UBL-CR-569]-A UBL invoice should not include the InvoiceLine Item BrandName
-
-
-
-
-
-
-
-
-
- UBL-CR-570
- warning
-
-
-
- [UBL-CR-570]-A UBL invoice should not include the InvoiceLine Item ModelName
-
-
-
-
-
-
-
-
-
- UBL-CR-571
- warning
-
-
-
- [UBL-CR-571]-A UBL invoice should not include the InvoiceLine Item BuyersItemIdentification ExtendedID
-
-
-
-
-
-
-
-
-
- UBL-CR-572
- warning
-
-
-
- [UBL-CR-572]-A UBL invoice should not include the InvoiceLine Item BuyersItemIdentification BarecodeSymbologyID
-
-
-
-
-
-
-
-
-
- UBL-CR-573
- warning
-
-
-
- [UBL-CR-573]-A UBL invoice should not include the InvoiceLine Item BuyersItemIdentification PhysicalAttribute
-
-
-
-
-
-
-
-
-
- UBL-CR-574
- warning
-
-
-
- [UBL-CR-574]-A UBL invoice should not include the InvoiceLine Item BuyersItemIdentification MeasurementDimension
-
-
-
-
-
-
-
-
-
- UBL-CR-575
- warning
-
-
-
- [UBL-CR-575]-A UBL invoice should not include the InvoiceLine Item BuyersItemIdentification IssuerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-576
- warning
-
-
-
- [UBL-CR-576]-A UBL invoice should not include the InvoiceLine Item SellersItemIdentification ExtendedID
-
-
-
-
-
-
-
-
-
- UBL-CR-577
- warning
-
-
-
- [UBL-CR-577]-A UBL invoice should not include the InvoiceLine Item SellersItemIdentification BarecodeSymbologyID
-
-
-
-
-
-
-
-
-
- UBL-CR-578
- warning
-
-
-
- [UBL-CR-578]-A UBL invoice should not include the InvoiceLine Item SellersItemIdentification PhysicalAttribute
-
-
-
-
-
-
-
-
-
- UBL-CR-579
- warning
-
-
-
- [UBL-CR-579]-A UBL invoice should not include the InvoiceLine Item SellersItemIdentification MeasurementDimension
-
-
-
-
-
-
-
-
-
- UBL-CR-580
- warning
-
-
-
- [UBL-CR-580]-A UBL invoice should not include the InvoiceLine Item SellersItemIdentification IssuerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-581
- warning
-
-
-
- [UBL-CR-581]-A UBL invoice should not include the InvoiceLine Item ManufacturersItemIdentification
-
-
-
-
-
-
-
-
-
- UBL-CR-582
- warning
-
-
-
- [UBL-CR-582]-A UBL invoice should not include the InvoiceLine Item StandardItemIdentification ExtendedID
-
-
-
-
-
-
-
-
-
- UBL-CR-583
- warning
-
-
-
- [UBL-CR-583]-A UBL invoice should not include the InvoiceLine Item StandardItemIdentification BarecodeSymbologyID
-
-
-
-
-
-
-
-
-
- UBL-CR-584
- warning
-
-
-
- [UBL-CR-584]-A UBL invoice should not include the InvoiceLine Item StandardItemIdentification PhysicalAttribute
-
-
-
-
-
-
-
-
-
- UBL-CR-585
- warning
-
-
-
- [UBL-CR-585]-A UBL invoice should not include the InvoiceLine Item StandardItemIdentification MeasurementDimension
-
-
-
-
-
-
-
-
-
- UBL-CR-586
- warning
-
-
-
- [UBL-CR-586]-A UBL invoice should not include the InvoiceLine Item StandardItemIdentification IssuerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-587
- warning
-
-
-
- [UBL-CR-587]-A UBL invoice should not include the InvoiceLine Item CatalogueItemIdentification
-
-
-
-
-
-
-
-
-
- UBL-CR-588
- warning
-
-
-
- [UBL-CR-588]-A UBL invoice should not include the InvoiceLine Item AdditionalItemIdentification
-
-
-
-
-
-
-
-
-
- UBL-CR-589
- warning
-
-
-
- [UBL-CR-589]-A UBL invoice should not include the InvoiceLine Item CatalogueDocumentReference
-
-
-
-
-
-
-
-
-
- UBL-CR-590
- warning
-
-
-
- [UBL-CR-590]-A UBL invoice should not include the InvoiceLine Item ItemSpecificationDocumentReference
-
-
-
-
-
-
-
-
-
- UBL-CR-591
- warning
-
-
-
- [UBL-CR-591]-A UBL invoice should not include the InvoiceLine Item OriginCountry Name
-
-
-
-
-
-
-
-
-
- UBL-CR-592
- warning
-
-
-
- [UBL-CR-592]-A UBL invoice should not include the InvoiceLine Item CommodityClassification NatureCode
-
-
-
-
-
-
-
-
-
- UBL-CR-593
- warning
-
-
-
- [UBL-CR-593]-A UBL invoice should not include the InvoiceLine Item CommodityClassification CargoTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-594
- warning
-
-
-
- [UBL-CR-594]-A UBL invoice should not include the InvoiceLine Item CommodityClassification CommodityCode
-
-
-
-
-
-
-
-
-
- UBL-CR-595
- warning
-
-
-
- [UBL-CR-595]-A UBL invoice should not include the InvoiceLine Item TransactionConditions
-
-
-
-
-
-
-
-
-
- UBL-CR-596
- warning
-
-
-
- [UBL-CR-596]-A UBL invoice should not include the InvoiceLine Item HazardousItem
-
-
-
-
-
-
-
-
-
- UBL-CR-597
- warning
-
-
-
- [UBL-CR-597]-A UBL invoice should not include the InvoiceLine Item ClassifiedTaxCategory Name
-
-
-
-
-
-
-
-
-
- UBL-CR-598
- warning
-
-
-
- [UBL-CR-598]-A UBL invoice should not include the InvoiceLine Item ClassifiedTaxCategory BaseUnitMeasure
-
-
-
-
-
-
-
-
-
- UBL-CR-599
- warning
-
-
-
- [UBL-CR-599]-A UBL invoice should not include the InvoiceLine Item ClassifiedTaxCategory PerUnitAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-600
- warning
-
-
-
- [UBL-CR-600]-A UBL invoice should not include the InvoiceLine Item ClassifiedTaxCategory TaxExemptionReasonCode
-
-
-
-
-
-
-
-
-
- UBL-CR-601
- warning
-
-
-
- [UBL-CR-601]-A UBL invoice should not include the InvoiceLine Item ClassifiedTaxCategory TaxExemptionReason
-
-
-
-
-
-
-
-
-
- UBL-CR-602
- warning
-
-
-
- [UBL-CR-602]-A UBL invoice should not include the InvoiceLine Item ClassifiedTaxCategory TierRange
-
-
-
-
-
-
-
-
-
- UBL-CR-603
- warning
-
-
-
- [UBL-CR-603]-A UBL invoice should not include the InvoiceLine Item ClassifiedTaxCategory TierRatePercent
-
-
-
-
-
-
-
-
-
- UBL-CR-604
- warning
-
-
-
- [UBL-CR-604]-A UBL invoice should not include the InvoiceLine Item ClassifiedTaxCategory TaxScheme Name
-
-
-
-
-
-
-
-
-
- UBL-CR-605
- warning
-
-
-
- [UBL-CR-605]-A UBL invoice should not include the InvoiceLine Item ClassifiedTaxCategory TaxScheme TaxTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-606
- warning
-
-
-
- [UBL-CR-606]-A UBL invoice should not include the InvoiceLine Item ClassifiedTaxCategory TaxScheme CurrencyCode
-
-
-
-
-
-
-
-
-
- UBL-CR-607
- warning
-
-
-
- [UBL-CR-607]-A UBL invoice should not include the InvoiceLine Item ClassifiedTaxCategory TaxScheme JurisdictionRegionAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-608
- warning
-
-
-
- [UBL-CR-608]-A UBL invoice should not include the InvoiceLine Item AdditionalItemProperty ID
-
-
-
-
-
-
-
-
-
- UBL-CR-609
- warning
-
-
-
- [UBL-CR-609]-A UBL invoice should not include the InvoiceLine Item AdditionalItemProperty NameCode
-
-
-
-
-
-
-
-
-
- UBL-CR-610
- warning
-
-
-
- [UBL-CR-610]-A UBL invoice should not include the InvoiceLine Item AdditionalItemProperty TestMethod
-
-
-
-
-
-
-
-
-
- UBL-CR-611
- warning
-
-
-
- [UBL-CR-611]-A UBL invoice should not include the InvoiceLine Item AdditionalItemProperty ValueQuantity
-
-
-
-
-
-
-
-
-
- UBL-CR-612
- warning
-
-
-
- [UBL-CR-612]-A UBL invoice should not include the InvoiceLine Item AdditionalItemProperty ValueQualifier
-
-
-
-
-
-
-
-
-
- UBL-CR-613
- warning
-
-
-
- [UBL-CR-613]-A UBL invoice should not include the InvoiceLine Item AdditionalItemProperty ImportanceCode
-
-
-
-
-
-
-
-
-
- UBL-CR-614
- warning
-
-
-
- [UBL-CR-614]-A UBL invoice should not include the InvoiceLine Item AdditionalItemProperty ListValue
-
-
-
-
-
-
-
-
-
- UBL-CR-615
- warning
-
-
-
- [UBL-CR-615]-A UBL invoice should not include the InvoiceLine Item AdditionalItemProperty UsabilityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-616
- warning
-
-
-
- [UBL-CR-616]-A UBL invoice should not include the InvoiceLine Item AdditionalItemProperty ItemPropertyGroup
-
-
-
-
-
-
-
-
-
- UBL-CR-617
- warning
-
-
-
- [UBL-CR-617]-A UBL invoice should not include the InvoiceLine Item AdditionalItemProperty RangeDimension
-
-
-
-
-
-
-
-
-
- UBL-CR-618
- warning
-
-
-
- [UBL-CR-618]-A UBL invoice should not include the InvoiceLine Item AdditionalItemProperty ItemPropertyRange
-
-
-
-
-
-
-
-
-
- UBL-CR-619
- warning
-
-
-
- [UBL-CR-619]-A UBL invoice should not include the InvoiceLine Item ManufacturerParty
-
-
-
-
-
-
-
-
-
- UBL-CR-620
- warning
-
-
-
- [UBL-CR-620]-A UBL invoice should not include the InvoiceLine Item InformationContentProviderParty
-
-
-
-
-
-
-
-
-
- UBL-CR-621
- warning
-
-
-
- [UBL-CR-621]-A UBL invoice should not include the InvoiceLine Item OriginAddress
-
-
-
-
-
-
-
-
-
- UBL-CR-622
- warning
-
-
-
- [UBL-CR-622]-A UBL invoice should not include the InvoiceLine Item ItemInstance
-
-
-
-
-
-
-
-
-
- UBL-CR-623
- warning
-
-
-
- [UBL-CR-623]-A UBL invoice should not include the InvoiceLine Item Certificate
-
-
-
-
-
-
-
-
-
- UBL-CR-624
- warning
-
-
-
- [UBL-CR-624]-A UBL invoice should not include the InvoiceLine Item Dimension
-
-
-
-
-
-
-
-
-
- UBL-CR-625
- warning
-
-
-
- [UBL-CR-625]-A UBL invoice should not include the InvoiceLine Item Price PriceChangeReason
-
-
-
-
-
-
-
-
-
- UBL-CR-626
- warning
-
-
-
- [UBL-CR-626]-A UBL invoice should not include the InvoiceLine Item Price PriceTypeCode
-
-
-
-
-
-
-
-
-
- UBL-CR-627
- warning
-
-
-
- [UBL-CR-627]-A UBL invoice should not include the InvoiceLine Item Price PriceType
-
-
-
-
-
-
-
-
-
- UBL-CR-628
- warning
-
-
-
- [UBL-CR-628]-A UBL invoice should not include the InvoiceLine Item Price OrderableUnitFactorRate
-
-
-
-
-
-
-
-
-
- UBL-CR-629
- warning
-
-
-
- [UBL-CR-629]-A UBL invoice should not include the InvoiceLine Item Price ValidityPeriod
-
-
-
-
-
-
-
-
-
- UBL-CR-630
- warning
-
-
-
- [UBL-CR-630]-A UBL invoice should not include the InvoiceLine Item Price PriceList
-
-
-
-
-
-
-
-
-
- UBL-CR-631
- warning
-
-
-
- [UBL-CR-631]-A UBL invoice should not include the InvoiceLine Item Price OrderableUnitFactorRate
-
-
-
-
-
-
-
-
-
- UBL-CR-632
- warning
-
-
-
- [UBL-CR-632]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge ID
-
-
-
-
-
-
-
-
-
- UBL-CR-633
- warning
-
-
-
- [UBL-CR-633]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge AllowanceChargeReasonCode
-
-
-
-
-
-
-
-
-
- UBL-CR-634
- warning
-
-
-
- [UBL-CR-634]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge AllowanceChargeReason
-
-
-
-
-
-
-
-
-
- UBL-CR-635
- warning
-
-
-
- [UBL-CR-635]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge MultiplierFactorNumeric
-
-
-
-
-
-
-
-
-
- UBL-CR-636
- warning
-
-
-
- [UBL-CR-636]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge PrepaidIndicator
-
-
-
-
-
-
-
-
-
- UBL-CR-637
- warning
-
-
-
- [UBL-CR-637]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge SequenceNumeric
-
-
-
-
-
-
-
-
-
- UBL-CR-638
- warning
-
-
-
- [UBL-CR-638]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge AccountingCostCode
-
-
-
-
-
-
-
-
-
- UBL-CR-639
- warning
-
-
-
- [UBL-CR-639]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge AccountingCost
-
-
-
-
-
-
-
-
-
- UBL-CR-640
- warning
-
-
-
- [UBL-CR-640]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge PerUnitAmount
-
-
-
-
-
-
-
-
-
- UBL-CR-641
- warning
-
-
-
- [UBL-CR-641]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge TaxCategory
-
-
-
-
-
-
-
-
-
- UBL-CR-642
- warning
-
-
-
- [UBL-CR-642]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge TaxTotal
-
-
-
-
-
-
-
-
-
- UBL-CR-643
- warning
-
-
-
- [UBL-CR-643]-A UBL invoice should not include the InvoiceLine Item Price AllowanceCharge PaymentMeans
-
-
-
-
-
-
-
-
-
- UBL-CR-644
- warning
-
-
-
- [UBL-CR-644]-A UBL invoice should not include the InvoiceLine Item Price PricingExchangeRate
-
-
-
-
-
-
-
-
-
- UBL-CR-645
- warning
-
-
-
- [UBL-CR-645]-A UBL invoice should not include the InvoiceLine DeliveryTerms
-
-
-
-
-
-
-
-
-
- UBL-CR-646
- warning
-
-
-
- [UBL-CR-646]-A UBL invoice should not include the InvoiceLine SubInvoiceLine
-
-
-
-
-
-
-
-
-
- UBL-CR-647
- warning
-
-
-
- [UBL-CR-647]-A UBL invoice should not include the InvoiceLine ItemPriceExtension
-
-
-
-
-
-
-
-
-
- UBL-CR-648
- warning
-
-
-
- [UBL-CR-648]-A UBL invoice should not include the CustomizationID scheme identifier
-
-
-
-
-
-
-
-
-
- UBL-CR-649
- warning
-
-
-
- [UBL-CR-649]-A UBL invoice should not include the ProfileID scheme identifier
-
-
-
-
-
-
-
-
-
- UBL-CR-650
- warning
-
-
-
- [UBL-CR-650]-A UBL invoice shall not include the Invoice ID scheme identifier
-
-
-
-
-
-
-
-
-
- UBL-CR-651
- warning
-
-
-
- [UBL-CR-651]-A UBL invoice should not include the SalesOrderID scheme identifier
-
-
-
-
-
-
-
-
-
- UBL-CR-652
- warning
-
-
-
- [UBL-CR-652]-A UBL invoice should not include the PartyTaxScheme CompanyID scheme identifier
-
-
-
-
-
-
-
-
-
- UBL-CR-653
- warning
-
-
-
- [UBL-CR-653]-A UBL invoice should not include the PaymentID scheme identifier
-
-
-
-
-
-
-
-
-
- UBL-CR-654
- warning
-
-
-
- [UBL-CR-654]-A UBL invoice should not include the PayeeFinancialAccount scheme identifier
-
-
-
-
-
-
-
-
-
- UBL-CR-655
- warning
-
-
-
- [UBL-CR-655]-A UBL invoice shall not include the FinancialInstitutionBranch ID scheme identifier
-
-
-
-
-
-
-
-
-
- UBL-CR-656
- warning
-
-
-
- [UBL-CR-656]-A UBL invoice should not include the InvoiceTypeCode listID
-
-
-
-
-
-
-
-
-
- UBL-CR-657
- warning
-
-
-
- [UBL-CR-657]-A UBL invoice should not include the DocumentCurrencyCode listID
-
-
-
-
-
-
-
-
-
- UBL-CR-658
- warning
-
-
-
- [UBL-CR-658]-A UBL invoice should not include the TaxCurrencyCode listID
-
-
-
-
-
-
-
-
-
- UBL-CR-659
- warning
-
-
-
- [UBL-CR-659]-A UBL invoice shall not include the AdditionalDocumentReference DocumentTypeCode listID
-
-
-
-
-
-
-
-
-
- UBL-CR-660
- warning
-
-
-
- [UBL-CR-660]-A UBL invoice should not include the Country Identification code listID
-
-
-
-
-
-
-
-
-
- UBL-CR-661
- warning
-
-
-
- [UBL-CR-661]-A UBL invoice should not include the PaymentMeansCode listID
-
-
-
-
-
-
-
-
-
- UBL-CR-662
- warning
-
-
-
- [UBL-CR-662]-A UBL invoice should not include the AllowanceChargeReasonCode listID
-
-
-
-
-
-
-
-
-
- UBL-CR-663
- warning
-
-
-
- [UBL-CR-663]-A UBL invoice should not include the unitCodeListID
-
-
-
-
-
-
-
-
-
- UBL-CR-664
- warning
-
-
-
- [UBL-CR-664]-A UBL invoice should not include the FinancialInstitutionBranch FinancialInstitution
-
-
-
-
-
-
-
-
-
- UBL-CR-665
- warning
-
-
-
- [UBL-CR-665]-A UBL invoice should not include the AdditionalDocumentReference ID schemeID unless the DocumentTypeCode equals '130'
-
-
-
-
-
-
-
-
-
- UBL-CR-666
- fatal
-
-
-
- [UBL-CR-666]-A UBL invoice shall not include an AdditionalDocumentReference simultaneously referring an Invoice Object Identifier and an Attachment
-
-
-
-
-
-
-
-
-
- UBL-CR-667
- warning
-
-
-
- [UBL-CR-667]-A UBL invoice should not include a Buyer Item Identification schemeID
-
-
-
-
-
-
-
-
-
- UBL-CR-668
- warning
-
-
-
- [UBL-CR-668]-A UBL invoice should not include a Sellers Item Identification schemeID
-
-
-
-
-
-
-
-
-
- UBL-CR-669
- warning
-
-
-
- [UBL-CR-669]-A UBL invoice should not include a Price Allowance Reason Code
-
-
-
-
-
-
-
-
-
- UBL-CR-670
- warning
-
-
-
- [UBL-CR-670]-A UBL invoice should not include a Price Allowance Reason
-
-
-
-
-
-
-
-
-
- UBL-CR-671
- warning
-
-
-
- [UBL-CR-671]-A UBL invoice should not include a Price Allowance Multiplier Factor
-
-
-
-
-
-
-
-
-
- UBL-CR-672
- warning
-
-
-
- [UBL-CR-672]-A UBL credit note should not include the CreditNoteTypeCode listID
-
-
-
-
-
-
-
-
-
- UBL-CR-673
- fatal
-
-
-
- [UBL-CR-673]-A UBL invoice shall not include an AdditionalDocumentReference simultaneously referring an Invoice Object Identifier and an Document Description
-
-
-
-
-
-
-
-
-
- UBL-CR-674
- warning
-
-
-
- [UBL-CR-674]-A UBL invoice should not include the PrimaryAccountNumber schemeID
-
-
-
-
-
-
-
-
-
- UBL-CR-675
- warning
-
-
-
- [UBL-CR-675]-A UBL invoice should not include the NetworkID schemeID
-
-
-
-
-
-
-
-
-
- UBL-CR-676
- warning
-
-
-
- [UBL-CR-676]-A UBL invoice should not include the PaymentMandate/ID schemeID
-
-
-
-
-
-
-
-
-
- UBL-CR-677
- warning
-
-
-
- [UBL-CR-677]-A UBL invoice should not include the PayerFinancialAccount/ID schemeID
-
-
-
-
-
-
-
-
-
- UBL-CR-678
- warning
-
-
-
- [UBL-CR-678]-A UBL invoice should not include the TaxCategory/ID schemeID
-
-
-
-
-
-
-
-
-
- UBL-CR-679
- warning
-
-
-
- [UBL-CR-679]-A UBL invoice should not include the ClassifiedTaxCategory/ID schemeID
-
-
-
-
-
-
-
-
-
- UBL-CR-680
- warning
-
-
-
- [UBL-CR-680]-A UBL invoice should not include the PaymentMeans/PayerFinancialAccount
-
-
-
-
-
-
-
-
-
- UBL-CR-681
- warning
-
-
-
- [UBL-CR-681]-A UBL invoice should not include the PaymentMeans InstructionNote
-
-
-
-
-
-
-
-
-
- UBL-CR-682
- warning
-
-
-
- [UBL-CR-682]-A UBL invoice should not include the Delivery DeliveryAddress
-
-
-
-
-
-
-
-
-
- UBL-DT-08
- warning
-
-
-
- [UBL-DT-08]-Scheme name attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-09
- warning
-
-
-
- [UBL-DT-09]-Scheme agency name attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-10
- warning
-
-
-
- [UBL-DT-10]-Scheme data uri attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-11
- warning
-
-
-
- [UBL-DT-11]-Scheme uri attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-12
- warning
-
-
-
- [UBL-DT-12]-Format attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-13
- warning
-
-
-
- [UBL-DT-13]-Unit code list identifier attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-14
- warning
-
-
-
- [UBL-DT-14]-Unit code list agency identifier attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-15
- warning
-
-
-
- [UBL-DT-15]-Unit code list agency name attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-16
- warning
-
-
-
- [UBL-DT-16]-List agency name attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-17
- warning
-
-
-
- [UBL-DT-17]-List name attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-18
- warning
-
-
-
- [UBL-DT-18]-Name attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-19
- warning
-
-
-
- [UBL-DT-19]-Language identifier attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-20
- warning
-
-
-
- [UBL-DT-20]-List uri attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-21
- warning
-
-
-
- [UBL-DT-21]-List scheme uri attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-22
- warning
-
-
-
- [UBL-DT-22]-Language local identifier attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-23
- warning
-
-
-
- [UBL-DT-23]-Uri attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-24
- warning
-
-
-
- [UBL-DT-24]-Currency code list version id should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-25
- warning
-
-
-
- [UBL-DT-25]-CharacterSetCode attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-26
- warning
-
-
-
- [UBL-DT-26]-EncodingCode attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-27
- warning
-
-
-
- [UBL-DT-27]-Scheme Agency ID attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-DT-28
- warning
-
-
-
- [UBL-DT-28]-List Agency ID attribute should not be present
-
-
-
-
-
-
-
-
-
- UBL-SR-01
- fatal
-
-
-
- [UBL-SR-01]-Contract identifier shall occur maximum once.
-
-
-
-
-
-
-
-
-
- UBL-SR-02
- fatal
-
-
-
- [UBL-SR-02]-Receive advice identifier shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-03
- fatal
-
-
-
- [UBL-SR-03]-Despatch advice identifier shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-04
- fatal
-
-
-
- [UBL-SR-04]-Invoice object identifier shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-05
- fatal
-
-
-
- [UBL-SR-05]-Payment terms shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-08
- fatal
-
-
-
- [UBL-SR-08]-Invoice period shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-09
- fatal
-
-
-
- [UBL-SR-09]-Seller name shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-10
- fatal
-
-
-
- [UBL-SR-10]-Seller trader name shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-11
- fatal
-
-
-
- [UBL-SR-11]-Seller legal registration identifier shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-12
- fatal
-
-
-
- [UBL-SR-12]-Seller VAT identifier shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-13
- fatal
-
-
-
- [UBL-SR-13]-Seller tax registration shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-14
- fatal
-
-
-
- [UBL-SR-14]-Seller additional legal information shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-15
- fatal
-
-
-
- [UBL-SR-15]-Buyer name shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-16
- fatal
-
-
-
- [UBL-SR-16]-Buyer identifier shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-17
- fatal
-
-
-
- [UBL-SR-17]-Buyer legal registration identifier shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-18
- fatal
-
-
-
- [UBL-SR-18]-Buyer VAT identifier shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-24
- fatal
-
-
-
- [UBL-SR-24]-Deliver to information shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-29
- fatal
-
-
-
- [UBL-SR-29]-Bank creditor reference shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-39
- fatal
-
-
-
- [UBL-SR-39]-Project reference shall occur maximum once.
-
-
-
-
-
-
-
-
-
- UBL-SR-40
- fatal
-
-
-
- [UBL-SR-40]-Buyer trade name shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-44
- fatal
-
-
-
- [UBL-SR-44]-An Invoice may only have one unique PaymentID, but the PaymentID may be used for multiple PaymentMeans
-
-
-
-
-
-
-
-
-
- UBL-SR-45
- fatal
-
-
-
- [UBL-SR-45]-Due Date shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-46
- fatal
-
-
-
- [UBL-SR-46]-Payment means text shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-47
- fatal
-
-
-
- [UBL-SR-47]-When there are more than one payment means code, they shall be equal
-
-
-
-
-
-
-
-
-
- UBL-SR-49
- fatal
-
-
-
- [UBL-SR-49]-Value tax point date shall occur maximum once
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-34
- fatal
-
-
-
- [UBL-SR-34]-Invoice line note shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-35
- fatal
-
-
-
- [UBL-SR-35]-Referenced purchase order line identifier shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-36
- fatal
-
-
-
- [UBL-SR-36]-Invoice line period shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-37
- fatal
-
-
-
- [UBL-SR-37]-Item price discount shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-48
- fatal
-
-
-
- [UBL-SR-48]-Invoice lines shall have one and only one classified tax category.
-
-
-
-
-
-
-
-
-
- UBL-SR-50
- fatal
-
-
-
- [UBL-SR-50]-Item description shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-52
- fatal
-
-
-
- [UBL-SR-52]-Document reference shall occur maximum once
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-19
- fatal
-
-
-
- [UBL-SR-19]-Payee name shall occur maximum once, if the Payee is different from the Seller
-
-
-
-
-
-
-
-
-
- UBL-SR-20
- fatal
-
-
-
- [UBL-SR-20]-Payee identifier shall occur maximum once, if the Payee is different from the Seller
-
-
-
-
-
-
-
-
-
- UBL-SR-21
- fatal
-
-
-
- [UBL-SR-21]-Payee legal registration identifier shall occur maximum once, if the Payee is different from the Seller
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-26
- fatal
-
-
-
- [UBL-SR-26]-Payment reference shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-27
- fatal
-
-
-
- [UBL-SR-27]-Payment means text shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-28
- fatal
-
-
-
- [UBL-SR-28]-Mandate reference identifier shall occur maximum once
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-06
- fatal
-
-
-
- [UBL-SR-06]-Preceding invoice reference shall occur maximum once
-
-
-
-
-
-
-
-
-
- UBL-SR-07
- fatal
-
-
-
- [UBL-SR-07]-If there is a preceding invoice reference, the preceding invoice number shall be present
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-22
- fatal
-
-
-
- [UBL-SR-22]-Seller tax representative name shall occur maximum once, if the Seller has a tax representative
-
-
-
-
-
-
-
-
-
- UBL-SR-23
- fatal
-
-
-
- [UBL-SR-23]-Seller tax representative VAT identifier shall occur maximum once, if the Seller has a tax representative
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UBL-SR-32
- fatal
-
-
-
- [UBL-SR-32]-VAT exemption reason text shall occur maximum once
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-01
- fatal
-
-
-
- [BR-CL-01]-The document type code MUST be coded by the invoice and credit note related code lists of UNTDID 1001.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-03
- fatal
-
-
-
- [BR-CL-03]-currencyID MUST be coded using ISO code list 4217 alpha-3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-04
- fatal
-
-
-
- [BR-CL-04]-Invoice currency code MUST be coded using ISO code list 4217 alpha-3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-05
- fatal
-
-
-
- [BR-CL-05]-Tax currency code MUST be coded using ISO code list 4217 alpha-3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-06
- fatal
-
-
-
- [BR-CL-06]-Value added tax point date code MUST be coded using a restriction of UNTDID 2005.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-07
- fatal
-
-
-
- [BR-CL-07]-Object identifier identification scheme identifier MUST be coded using a restriction of UNTDID 1153.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-10
- fatal
-
-
-
- [BR-CL-10]-Any identifier identification scheme identifier MUST be coded using one of the ISO 6523 ICD list.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-11
- fatal
-
-
-
- [BR-CL-11]-Any registration identifier identification scheme identifier MUST be coded using one of the ISO 6523 ICD list.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-13
- fatal
-
-
-
- [BR-CL-13]-Item classification identifier identification scheme identifier MUST be
- coded using one of the UNTDID 7143 list.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-14
- fatal
-
-
-
- [BR-CL-14]-Country codes in an invoice MUST be coded using ISO code list 3166-1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-15
- fatal
-
-
-
- [BR-CL-15]-Country codes in an invoice MUST be coded using ISO code list 3166-1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-16
- fatal
-
-
-
- [BR-CL-16]-Payment means in an invoice MUST be coded using UNCL4461 code list
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-17
- fatal
-
-
-
- [BR-CL-17]-Invoice tax categories MUST be coded using UNCL5305 code list
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-18
- fatal
-
-
-
- [BR-CL-18]-Invoice tax categories MUST be coded using UNCL5305 code list
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-19
- fatal
-
-
-
- [BR-CL-19]-Coded allowance reasons MUST belong to the UNCL 5189 code list
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-20
- fatal
-
-
-
- [BR-CL-20]-Coded charge reasons MUST belong to the UNCL 7161 code list
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-21
- fatal
-
-
-
- [BR-CL-21]-Item standard identifier scheme identifier MUST belong to the ISO 6523 ICD code list
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
-
- [BR-CL-23]-Unit code MUST be coded according to the UN/ECE Recommendation 20 with
- Rec 21 extension
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BR-CL-24
- fatal
-
-
-
- [BR-CL-24]-For Mime code in attribute use MIMEMediaType.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
-
-
-
-
-
-
-
-
diff --git a/validator/src/main/resources/xslt/cii16931schematron/EN16931-CII-validation.xslt b/validator/src/main/resources/xslt/en16931schematron/EN16931-CII-validation.xslt
similarity index 100%
rename from validator/src/main/resources/xslt/cii16931schematron/EN16931-CII-validation.xslt
rename to validator/src/main/resources/xslt/en16931schematron/EN16931-CII-validation.xslt
diff --git a/validator/src/main/resources/xslt/cii16931schematron/EN16931-UBL-validation.xslt b/validator/src/main/resources/xslt/en16931schematron/EN16931-UBL-validation.xslt
similarity index 100%
rename from validator/src/main/resources/xslt/cii16931schematron/EN16931-UBL-validation.xslt
rename to validator/src/main/resources/xslt/en16931schematron/EN16931-UBL-validation.xslt
diff --git a/validator/src/test/java/org/mustangproject/validator/PDFValidatorTest.java b/validator/src/test/java/org/mustangproject/validator/PDFValidatorTest.java
index c094a366..7fe508b7 100644
--- a/validator/src/test/java/org/mustangproject/validator/PDFValidatorTest.java
+++ b/validator/src/test/java/org/mustangproject/validator/PDFValidatorTest.java
@@ -106,7 +106,7 @@ public class PDFValidatorTest extends ResourceCase {
public void testPDFXMLValidation() {
final ValidationContext vc = new ValidationContext(null);
- try {
+/*@todo try {
final PDFValidator pv = new PDFValidator(vc);
// need a more
// invalid file here
@@ -141,7 +141,7 @@ public class PDFValidatorTest extends ResourceCase {
assertEquals(true, xmlvres.contains("valid") && !xmlvres.contains("invalid"));
} catch (final IrrecoverableValidationError e) {
// ignore, will be in XML output anyway
- }
+ }*/
}
diff --git a/validator/src/test/java/org/mustangproject/validator/XMLValidatorTest.java b/validator/src/test/java/org/mustangproject/validator/XMLValidatorTest.java
index 8b6022f5..5477b25c 100644
--- a/validator/src/test/java/org/mustangproject/validator/XMLValidatorTest.java
+++ b/validator/src/test/java/org/mustangproject/validator/XMLValidatorTest.java
@@ -298,6 +298,22 @@ public class XMLValidatorTest extends ResourceCase {
noExceptions = false;
}
assertTrue(noExceptions);
+ tempFile = getResourceAsFile("ubl-tc434-creditnote1.xml");
+ try {
+ xv.setFilename(tempFile.getAbsolutePath());
+ xv.validate();
+
+ Source source = Input.fromString("" + xv.getXMLResult() + "").build();
+ String content = xpath.evaluate("/validation/summary/@status", source);
+ assertEquals("valid", content);
+
+
+ } catch (IrrecoverableValidationError e) {
+
+ noExceptions = false;
+ }
+ assertTrue(noExceptions);
+
}
diff --git a/validator/src/test/java/org/mustangproject/validator/ZUGFeRDValidatorTest.java b/validator/src/test/java/org/mustangproject/validator/ZUGFeRDValidatorTest.java
index 4a4638b6..695e51da 100644
--- a/validator/src/test/java/org/mustangproject/validator/ZUGFeRDValidatorTest.java
+++ b/validator/src/test/java/org/mustangproject/validator/ZUGFeRDValidatorTest.java
@@ -2,6 +2,15 @@ package org.mustangproject.validator;
import java.io.ByteArrayInputStream;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.xmlunit.builder.Input;
+import org.xmlunit.xpath.JAXPXPathEngine;
+import org.xmlunit.xpath.XPathEngine;
import static org.xmlunit.assertj.XmlAssert.assertThat;
@@ -132,6 +141,17 @@ public class ZUGFeRDValidatorTest extends ResourceCase {
}
+ public void testPDFA3AValidation() {
+ File tempFile = getResourceAsFile("zugferd_2p1_EXTENDED_PDFA-3A.pdf");
+
+ ZUGFeRDValidator zfv = new ZUGFeRDValidator();
+
+ String res = zfv.validate(tempFile.getAbsolutePath());
+
+ assertThat(res).valueByXPath("/validation/pdf/summary/@status")
+ .isEqualTo("valid");
+ }
+
/***
* the XMLValidatorTests only cover the part, this one includes the root element and
* the global part as well
@@ -205,6 +225,9 @@ public class ZUGFeRDValidatorTest extends ResourceCase {
assertThat(res).valueByXPath("count(//error)")
.asInt()
.isEqualTo(3);
+ assertThat(res).valueByXPath("count(//warning)")
+ .asInt()
+ .isEqualTo(1);
assertThat(res).valueByXPath("count(//notice)")
.asInt()
diff --git a/validator/src/test/resources/invalidXRV30.xml b/validator/src/test/resources/invalidXRV30.xml
index 6b62123d..0aa3b42c 100644
--- a/validator/src/test/resources/invalidXRV30.xml
+++ b/validator/src/test/resources/invalidXRV30.xml
@@ -115,9 +115,6 @@
[Seller city]
DE
-
- seller@email.de
-
DE 123456789
diff --git a/validator/src/test/resources/ubl-tc434-creditnote1.xml b/validator/src/test/resources/ubl-tc434-creditnote1.xml
new file mode 100644
index 00000000..b9380fb3
--- /dev/null
+++ b/validator/src/test/resources/ubl-tc434-creditnote1.xml
@@ -0,0 +1,136 @@
+
+
+
+ urn:cen.eu:en16931:2017
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ 018304 / 28865
+ 2019-09-23
+ 381
+ EUR
+ 018304 / 28865
+
+ 2019-02-01
+ 2019-02-28
+
+
+
+ 0000000196
+
+ My Supplier Company N.V.
+
+
+ De Grote Meir 22
+ ANTWERPEN
+ 2000
+
+ BE
+
+
+
+ BE0000000196
+
+ VAT
+
+
+
+ My Supplier Company
+ 0000000196
+
+
+ john.doole@mysuppliercompany.be
+
+
+
+
+
+ 0000000295
+
+ My Customer Company S.A.
+
+
+ Boulevard Sint Michel 53
+ BRUXELLES
+ 1000
+
+ BE
+
+
+
+ BE0000000295
+
+ VAT
+
+
+
+ My Customer Company
+ 0000000295
+
+
+ pete.smith@mycustomercompany.be
+
+
+
+
+ 1
+ 010676609538
+
+ BE91000000143476
+
+ BPOTBEB1
+
+
+
+
+ 0.00
+
+ 100.11
+ 0.00
+
+ E
+ 0.00
+ Taxes are not applicable
+
+ VAT
+
+
+
+
+
+ 100.11
+ 100.11
+ 100.11
+ 100.11
+
+
+ 1
+ 1.00
+ 100.11
+
+ Exonération du versement du PP
+ Exonération du versement du PP
+
+ V55
+
+
+ E
+ 0.00
+
+ VAT
+
+
+
+ 2
+ Contributions - précompte professionnel
+
+
+
+ 100.11
+
+
+
diff --git a/validator/src/test/resources/zugferd_2p1_EXTENDED_PDFA-3A.pdf b/validator/src/test/resources/zugferd_2p1_EXTENDED_PDFA-3A.pdf
new file mode 100644
index 00000000..a4610175
Binary files /dev/null and b/validator/src/test/resources/zugferd_2p1_EXTENDED_PDFA-3A.pdf differ