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
203 stars 115 forks source link

Invalid invoice because BT-107 and BR-FXEXT-CO-11 #492

Open matteshe opened 1 week ago

matteshe commented 1 week ago

Hi,

we have an invoice with only charge for freight costs.

This invoice is valid with the mustang validator Mustang-CLI-2.5.6.jar.

We just tried the new version Mustang-CLI-2.14.0.jar and the invoice is invalid now.

It complain about BT-107 and the new rule BR-FXEXT-CO-11, but it should only check on BT-108.

btw, in the standard documentation for Zugferd and UBL, BT-107 is not mandatory (0..1).

invoice_charge invoice_charge_total

Output: [main] INFO com.helger.schematron.xslt.SchematronResourceXSLTCache - Compiling XSLT instance [cpPath=/xslt/ZF_230/FACTUR-X_EXTENDED.xslt; urlResolved=true; URL=jar:file:/Z:/Bottomline/nonPRD/DEV/validators/mustangproject/Mustang-CLI-2.14.0.jar!/xslt/ZF_230/FACTUR-X_EXTENDED.xslt] [main] INFO org.mustangproject.validator.XMLValidator - FailedAssert [main] ERROR org.mustangproject.validator.ZUGFeRDValidator - Error 4: [BR-FXEXT-CO-11]-Absolute Value of (Sum of allowances on document level (BT-107) - Σ Document level allowance amounts (BT-92))<= 0,01 * Number of Document level allowance amounts (BT-92). [ID FX-SCH-A-000304] from /xslt/ZF_230/FACTUR-X_EXTENDED.xslt) [main] INFO org.mustangproject.validator.XMLValidator - FailedAssert [main] ERROR org.mustangproject.validator.ZUGFeRDValidator - Error 4: Value of 'ram:ID' is not allowed. [ID FX-SCH-A-000026] from /xslt/ZF_230/FACTUR-X_EXTENDED.xslt) [main] INFO org.mustangproject.validator.ZUGFeRDValidator - Parsed PDF:absent XML:invalid Signature:null Checksum:675EF6C7BB5196CFC7A51C569AA0ABD8AEC0372F Profile:urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended Version:2 Took:4992ms Errors:[4,4]

<?xml version="1.0" encoding="UTF-8"?>
<validation filename="invoice.xml" datetime="2024-09-26 11:02:42">
  <xml>
    <info>
      <version>2</version>
      <profile>urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended</profile>
      <validator version="2.14.0"/>
      <rules>
        <fired>126</fired>
        <failed>2</failed>
      </rules>
      <duration unit="ms">4779</duration>
    </info>
    <messages>
      <error type="4" location="/*:CrossIndustryInvoice[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'][1]/*:SupplyChainTradeTransaction[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'][1]/*:ApplicableHeaderTradeSettlement[namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'][1]/*:SpecifiedTradeSettlementHeaderMonetarySummation[namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'][1]" criterion="for $calculatedAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='false']/ram:ActualAmount)* 10 * 10 ) div 100), $totalAmount in xs:decimal(ram:AllowanceTotalAmount), $nbAllowanceItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='false'])), $tolerance in xs:decimal(0.01), $maxTolerance in $nbAllowanceItems * $tolerance, $diff in xs:decimal($totalAmount - $calculatedAmount), $abs in xs:decimal(abs($diff)) return $abs le $maxTolerance or (not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='false']) and not (ram:AllowanceTotalAmount))">[BR-FXEXT-CO-11]-Absolute Value of (Sum of allowances on document level (BT-107) - Σ Document level allowance amounts (BT-92))&lt;= 0,01 * Number of Document level allowance amounts (BT-92). [ID FX-SCH-A-000304] from /xslt/ZF_230/FACTUR-X_EXTENDED.xslt)</error>
      <error type="4" location="/*:CrossIndustryInvoice[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'][1]/*:ExchangedDocumentContext[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'][1]/*:GuidelineSpecifiedDocumentContextParameter[namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'][1]/*:ID[namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'][1]" criterion="document('FACTUR-X_EXTENDED_codedb.xml')//cl[@id=1]/enumeration[@value=$codeValue1]">Value of 'ram:ID' is not allowed. [ID FX-SCH-A-000026] from /xslt/ZF_230/FACTUR-X_EXTENDED.xslt)</error>
    </messages>
    <summary status="invalid"/>
  </xml>
  <messages></messages>
  <summary status="invalid"/>
</validation>
jstaerk commented 4 days ago

Hello

We just tried the new version Mustang-CLI-2.14.0.jar and the invoice is invalid now.

if that is the case what is left for me to do?