Source: https://xsdhub.com/fr/regles-facture-electronique/br-27

English · Deutsch · FrançaisBR-27 : Prix net unitaire négatif

Corrigez le prix dans les données sources. Pour un avoir, vérifiez le type de document et le signe des quantités ; ne retirez pas arbitrairement le signe moins.

Champs : BT-146.

Le prix est le seul opérande modifié dans cette paire : PriceAmount devient -1.00 alors que la quantité et les autres données restent fixes. En CII, le champ correspondant est ChargeAmount dans NetPriceProductTradePrice. Il se distingue du prix brut avant remise. Une modification arbitraire du total documentaire ne corrige pas le signe du prix unitaire. Examinez le type de document, la convention de quantité et le prix source ensemble. La valeur positive de l’exemple réussi démontre uniquement cette position synthétique.

Conditions sources et champs

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

context: cac:InvoiceLine | cac:CreditNoteLine
test: (cac:Price/cbc:PriceAmount) >= 0

CII en16931 : le contexte //ram:IncludedSupplyChainTradeLineItem sélectionne les nœuds contrôlés ; la condition porte sur SpecifiedLineTradeAgreement, NetPriceProductTradePrice, ChargeAmount. 

context: //ram:IncludedSupplyChainTradeLineItem
test: (ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount) >= 0

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

BT/BGUBLCIISource

BT-146cac:InvoiceLine | cac:CreditNoteLine → exists(cac:Price/cbc:PriceAmount)//ram:IncludedSupplyChainTradeLineItem → (ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)BR-26

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:InvoiceLine[1]/cac:Price/cbc:PriceAmount : valeur erronée '-1.00', valeur restaurée '100.00'. Le document UBL erroné passe XSD et produit BR-27 ; sa correction passe EN 16931 rules 1.3.16. Autres codes déclenchés : 0.

Fragment erroné

<cac:Price 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:PriceAmount currencyID="EUR">-1.00</cbc:PriceAmount>
        </cac:Price>
    


Fragment corrigé

<cac:Price 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:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
        </cac:Price>
    


XML erroné complet · XML corrigé complet



Messages communs dans nos mutations

Dans les 1 338 mutations synthétiques enregistrées, BR-27 apparaît dans 51 essais (ubl/en16931 32, ubl/xrechnung 3, cii/en16931 12, cii/xrechnung 4). Les mêmes essais produisent aussi : BR-26: 21; PEPPOL-EN16931-R120: 7; CII-SR-439: 2.

Protocole synthétique, groupes et comptage



Champs et règles associés

Index des règles



Diagnostic et emplacement dans le rapport

[BR-27]-The Item net price (BT-146) shall NOT be negative.

/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]/*:InvoiceLine[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


