XSDHub

BR-CO-10 : Total net des lignes incorrect

Recalculez BT-106 à partir des valeurs BT-131, avec un arrondi à deux décimales. L’unique ligne vaut 100,00 EUR ; 100,01 EUR est incorrect.

Champs : BT-106, BT-131.

Conditions sources et champs

UBL en16931 : le contexte cac:LegalMonetaryTotal sélectionne les nœuds contrôlés ; la condition porte sur LineExtensionAmount, InvoiceLine, CreditNoteLine.

context: cac:LegalMonetaryTotal
test: (xs:decimal(cbc:LineExtensionAmount) = xs:decimal(round(sum(//(cac:InvoiceLine|cac:CreditNoteLine)/xs:decimal(cbc:LineExtensionAmount)) * 10 * 10) div 100))

CII en16931 : le contexte //ram:SpecifiedTradeSettlementHeaderMonetarySummation sélectionne les nœuds contrôlés ; la condition porte sur LineTotalAmount, IncludedSupplyChainTradeLineItem, SpecifiedLineTradeSettlement, SpecifiedTradeSettlementLineMonetarySummation.

context: //ram:SpecifiedTradeSettlementHeaderMonetarySummation
test: xs:decimal(ram:LineTotalAmount) = round(xs:decimal(sum(../../ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)) * xs:decimal(100)) div xs:decimal(100)

Les champs sont localisés par contexte source → sélecteur ; les alternatives et conditions de syntaxe restent explicites.

BT/BGUBLCIISource
BT-106cac:LegalMonetaryTotal → exists(cbc:LineExtensionAmount)//ram:SpecifiedTradeSettlementHeaderMonetarySummation → (ram:LineTotalAmount)BR-12
BT-131cac:InvoiceLine | cac:CreditNoteLine → exists(cbc:LineExtensionAmount)//ram:IncludedSupplyChainTradeLineItem → (ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)BR-24

Cette condition vient des artefacts européens EN 16931 ; XRechnung ajoute des contraintes nationales et Factur-X dispose de ses propres règles CII par profil.

Exemple contrôlé

La modification value porte directement sur /*/cac:LegalMonetaryTotal/cbc:LineExtensionAmount : valeur erronée '100.01', valeur restaurée '100.00'. Le document UBL erroné passe XSD et produit BR-CO-10 ; sa correction passe EN 16931 rules 1.3.16. Autres codes déclenchés : 1.

Line net total shown: 100.01 EUR. Expected: Σ line net amounts = 100.00 EUR (one line). Difference: 0.01 EUR. Round the sum to two decimal places.

Fragment erroné

<cac:LegalMonetaryTotal xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
        <cbc:LineExtensionAmount currencyID="EUR">100.01</cbc:LineExtensionAmount>
        <cbc:TaxExclusiveAmount currencyID="EUR">100.00</cbc:TaxExclusiveAmount>
        <cbc:TaxInclusiveAmount currencyID="EUR">121.00</cbc:TaxInclusiveAmount>
        <cbc:PayableAmount currencyID="EUR">121.00</cbc:PayableAmount>
    </cac:LegalMonetaryTotal>
    

Fragment corrigé

<cac:LegalMonetaryTotal xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
        <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
        <cbc:TaxExclusiveAmount currencyID="EUR">100.00</cbc:TaxExclusiveAmount>
        <cbc:TaxInclusiveAmount currencyID="EUR">121.00</cbc:TaxInclusiveAmount>
        <cbc:PayableAmount currencyID="EUR">121.00</cbc:PayableAmount>
    </cac:LegalMonetaryTotal>
    

XML erroné complet · XML corrigé complet

Messages communs dans nos mutations

Dans les 1 338 mutations synthétiques enregistrées, BR-CO-10 apparaît dans 108 essais (ubl/en16931 54, ubl/xrechnung 8, cii/en16931 35, cii/xrechnung 11). Les mêmes essais produisent aussi : BR-S-08: 80; BR-24: 15; BR-CO-13: 9; PEPPOL-EN16931-R120: 7; BR-12: 3; PEPPOL-EN16931-R008: 2.

Protocole synthétique, groupes et comptage

Champs et règles associés

Diagnostic et emplacement dans le rapport

[BR-CO-10]-Sum of Invoice line net amount (BT-106) = Σ Invoice line net amount (BT-131).

/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]/*:LegalMonetaryTotal[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2'][1]

Le rapport JSON expose ce message dans errors[] ou warnings[] avec ce code et ce chemin ; l’interface l’affiche dans le rapport des règles métier.

Sources primaires fixes · EUPL / Apache sources