ZUGFeRD / mustangproject

Open Source Java e-Invoicing library, validator and tool (Factur-X/ZUGFeRD, UNCEFACT/CII XRechnung)
http://www.mustangproject.org
Apache License 2.0
237 stars 132 forks source link

ZUGFeRD Validator fails with ZUGFeRD 2.3 and embbeded XRechnung #513

Closed hendriksander closed 1 month ago

hendriksander commented 1 month ago

Hi,

we use the ZUGFeRD mustangproject to validate incoming ZUGFeRD invoices. We have encountered some issues with the ZUGFeRD 2.3 version in combination with embbeded XRechnung. For functional testing of our implementation we used the ZUGFeRD XRechnung files provided by the FeRD. We tested it with the version from the FeRD website (www.ferd-net.de/ZUGFeRD-Download) and also with the corrected version www.awv-net.de/upload/ferd/ZF23_DE.zip which was later provided by a Newsletter after the initial release of ZUGFeRD 2.3.

In the corrected version this ZUGFeRD with embedded XRechnung was provided. XRECHNUNG_Einfach.pdf

The ZUGFeRD validation report results of this file are the following: zugferd-validierungsreport (33).txt

So it seems that the files provided by FeRD could not be validated correctly by the mustangproject or are corrupted. Can you confirm this?

Because it might be good to know we use the following code to get the ZUGFeRD profile and ZUGFeRD core-2.14.1:

public String getZUGFeRDProfil() { String guideline = this.extractString("//*[local-name() = 'GuidelineSpecifiedDocumentContextParameter']//*[local-name() = 'ID']"); if (guideline.contains("xrechnung")) { return "XRECHNUNG"; } else { switch (guideline) { case "urn:cen.eu:en16931:2017": case "urn:ferd:CrossIndustryDocument:invoice:1p0:comfort": return "COMFORT"; case "urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic": case "urn:ferd:CrossIndustryDocument:invoice:1p0:basic": return "BASIC"; case "urn:factur-x.eu:1p0:basicwl": return "BASIC WL"; case "urn:factur-x.eu:1p0:minimum": return "MINIMUM"; case "urn:ferd:CrossIndustryDocument:invoice:1p0:extended": case "urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended": return "EXTENDED"; default: return ""; } } }

Thanks for your help in advance.

stgViadee commented 1 month ago

Issue stems from the version-entry in FeRDs reference files. In profile XRECHNUNG the field value of "Version" is "3.0" which mustang validates to false: https://github.com/ZUGFeRD/mustangproject/blob/2a00af8768d60f5c18d05b17b56169045f8f7086/validator/src/main/java/org/mustangproject/validator/PDFValidator.java#L242

We face the same issue at the moment. FeRDs document "1. FACTUR-X 1.0.07 DE.pdf" states that 2p1 should be the valid version code for profile XRECHNUNG (chapter 7.7) but the reference data tells a different story. It seems as if the XRechnung version is embedded instead of the ZUGFeRD Versions: "1.2", "2.0", "2.1". Following that logic "3.0" should be a valid value as well since 3.0 of XRechnung is released .

Is there an official version code list somewhere? Can anybody produce official documentation on the versioning of ZUGFeRD/Factur-X?

stmue commented 1 month ago

The official XRechnung specification can be viewed at https://xeinkauf.de/xrechnung/versionen-und-bundles/. Since XRechnung 3.0.0 the version number is 3.0.

The information can be found on page II in the document Specification Standard XRechnung.

Kennung CIUS XRechnung: urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0 Kennung Extension XRechnung: urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0#conformant#urn:xeinkauf.de:kosit:extension:xrechnung_3.0