From dadf0de4b0c160bad2d1ad6de87cf989ed0bcefb Mon Sep 17 00:00:00 2001 From: jstaerk Date: Mon, 1 Sep 2025 10:38:54 +0200 Subject: [PATCH] closes #926 --- History.md | 5 ++++- .../org/mustangproject/validator/ValidationContext.java | 9 +++++++++ .../java/org/mustangproject/validator/XMLValidator.java | 8 ++++++++ .../org/mustangproject/validator/ZUGFeRDValidator.java | 1 + 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index 49adceb6..d676ce27 100644 --- a/History.md +++ b/History.md @@ -1,6 +1,9 @@ - added JSONIgnore for Products intra community supply, reverse charge and invoice's isValid (which rather means isComplete, by the way) - #917 - +- #915 +- #921 +- #926 +- 2.19.0 ======= 2025-08-12 diff --git a/validator/src/main/java/org/mustangproject/validator/ValidationContext.java b/validator/src/main/java/org/mustangproject/validator/ValidationContext.java index 4c5edb88..ba939eaa 100644 --- a/validator/src/main/java/org/mustangproject/validator/ValidationContext.java +++ b/validator/src/main/java/org/mustangproject/validator/ValidationContext.java @@ -14,6 +14,7 @@ public class ValidationContext { private String profile = null; private String signature = null; private boolean isValid = true; + private boolean hasPDF = false; protected Logger logger; private String filename; @@ -22,6 +23,14 @@ public class ValidationContext { results = new Vector<>(); } + public void setHasPDF() { + hasPDF=true; + } + + public boolean hasPDF() { + return hasPDF; + } + public void addResultItem(ValidationResultItem vr) throws IrrecoverableValidationError { results.add(vr); diff --git a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java index e7615f33..8d827418 100644 --- a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java @@ -374,6 +374,14 @@ public class XMLValidator extends Validator { addUnsupportedProfileResultItem(); } } + } else { + // no CII -> has to be UBL + if (context.hasPDF()) { + final ValidationResultItem vri = new ValidationResultItem(ESeverity.error, "Factur-X/ZUGFeRD and Order-X are always strictly CII only, no UBL allowed.").setSection(17) + .setPart(EPart.fx); + context.addResultItem(vri); + + } } if (xsltFilename != null) { diff --git a/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java b/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java index bb5e9576..e162edd9 100644 --- a/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/ZUGFeRDValidator.java @@ -121,6 +121,7 @@ public class ZUGFeRDValidator { // Avoid reading again from file pdfv.setFilenameAndContents(contextFilename, content); + context.setHasPDF(); optionsRecognized = true; finalStringResult.append(""); try {