Aller au contenu

Ironfang Finance - Référence des règles

BR-27 : Corriger un prix net d'article négatif en reportant le signe sur la quantité

Le prix net de l'article sur une ligne est inférieur à zéro. Les prix doivent être nuls ou positifs : exprimez une déduction ou une correction par une quantité négative.

EN 16931Erreur : le document n'est pas valideLignes et prix

Sur cette page

La réponse courte

BR-27 échoue lorsque cac:Price/cbc:PriceAmount sur une ligne est inférieur à zéro. Un prix indique ce que coûte une unité, et ce n'est jamais négatif. Lorsqu'une ligne retire de l'argent du document, comme un retour, une correction ou une annulation, gardez le prix positif et rendez la quantité négative.

Le montant net de la ligne ne change pas. Dans l'exemple enregistré, la ligne vaut -2.00 dans les deux cas ; ce que la règle conteste, c'est d'y arriver avec 1 au prix de -2 alors qu'il faudrait -1 au prix de 2.

Ce que la règle vérifie

Pour chaque cac:InvoiceLine ou cac:CreditNoteLine, la règle lit cac:Price/cbc:PriceAmount et exige qu'il soit supérieur ou égal à zéro. Elle ne regarde rien d'autre sur la ligne : ni la quantité, ni le montant net de la ligne.

Un prix de zéro passe. Une facture entièrement cohérente avec un prix de 0 et un montant net de ligne de 0.00 est validée sans constat.

Une quantité négative et un montant net de ligne négatif sont tous deux autorisés par cette règle. L'exemple corrigé a exactement cela.

Écrivez zéro sans signe. Lors d'un essai, un prix de -0.00 a été signalé par cette règle.

Une ligne sans aucun cbc:PriceAmount signale aussi BR-27, en plus de BR-26, la règle qui exige le prix. Fournir le prix fait disparaître les deux.

TermeSignificationÉlément UBL
BT-146Prix net de l'articlecac:InvoiceLine/cac:Price/cbc:PriceAmount
BT-146Prix net de l'article (avoir)cac:CreditNoteLine/cac:Price/cbc:PriceAmount

Comment une intégration en arrive là

Causes possibles, déduites de la forme de la règle et non d'une utilisation mesurée :

  • Le système source enregistre une ligne de déduction ou de correction comme une quantité 1 avec un prix unitaire négatif, et le mapping copie les deux champs tels quels.
  • Le prix est obtenu en divisant le montant de la ligne par une quantité en valeur absolue, si bien que le signe du montant se retrouve sur le prix.
  • Une réduction est modélisée comme une ligne à part avec un prix négatif, alors qu'une remise sur la ligne ou sur le document la décrirait mieux.
  • Une inversion de signe prévue pour les avoirs est appliquée à chaque champ numérique de la ligne, prix compris.

Comment corriger le document

  1. Repérez la ligne grâce à l'emplacement du constat et examinez cac:Price/cbc:PriceAmount.
  2. Rendez le prix positif et reportez le signe sur cbc:InvoicedQuantity (ou cbc:CreditedQuantity) : une quantité 1 à -2 devient une quantité -1 à 2.
  3. Laissez cbc:LineExtensionAmount tel quel. Quantité fois prix donne le même chiffre : le montant net de la ligne et tous les totaux calculés à partir de lui restent inchangés.
  4. Si la ligne est en réalité une réduction sur d'autres biens et non une quantité de quelque chose qu'on annule, envisagez plutôt de l'envoyer comme une remise sur la ligne ou sur le document. C'est une décision sur la modélisation de la transaction, pas une obligation imposée par cette règle.
  5. Ne transformez pas le document en avoir simplement pour éviter la ligne négative. Une facture peut comporter une ligne négative, comme le montre l'exemple corrigé.

Valider votre facture corrigée

Avant et après

Ce sont des extraits, pas des documents complets. Les documents synthétiques complets dont ils proviennent sont liés ci-dessous.

Fragment de la facture en échec : la ligne 3 a une quantité de 1 à un prix net de -2

<cac:InvoiceLine>
  <cbc:ID>3</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">-2.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example correction</cbc:Name>
    <!-- tax category omitted from this fragment -->
  </cac:Item>
  <cac:Price>
    <cbc:PriceAmount currencyID="GBP">-2</cbc:PriceAmount>
    <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  </cac:Price>
</cac:InvoiceLine>

Fragment de la facture corrigée : la même ligne avec une quantité de -1 à un prix net de 2

<cac:InvoiceLine>
  <cbc:ID>3</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">-1</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">-2.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example correction</cbc:Name>
    <!-- tax category omitted from this fragment -->
  </cac:Item>
  <cac:Price>
    <cbc:PriceAmount currencyID="GBP">2</cbc:PriceAmount>
    <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  </cac:Price>
</cac:InvoiceLine>

Deux valeurs diffèrent sur la ligne 3 : cbc:InvoicedQuantity passe de 1 à -1 et cbc:PriceAmount de -2 à 2. Le montant net de la ligne est de -2.00 dans les deux cas. Le document en échec ne signale que BR-27. L'étape Peppol réussit, car son contrôle du calcul de ligne, PEPPOL-EN16931-R120, constate toujours que 1 fois -2 égale -2.00.

Ce que le validateur a signalé

Enregistré avec phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, le moteur du validateur gratuit, sur des données synthétiques. Un résultat enregistré est une preuve de non-régression pour ces documents ; ce n'est pas une certification.

Où la règle s'applique

  • S'applique à cac:InvoiceLine dans une Invoice et à cac:CreditNoteLine dans un CreditNote. Un prix négatif sur une ligne d'avoir a été signalé de la même façon.
  • Un avoir n'a pas besoin de chiffres négatifs pour signifier un crédit. Les exemples d'avoir portent des quantités, des prix et des montants positifs et sont validés sans constat ; une correction à l'intérieur d'un avoir utilise une quantité négative, de la même façon que sur une facture.
  • La règle ne couvre que le prix net. Le prix brut, cac:Price/cac:AllowanceCharge/cbc:BaseAmount, a sa propre règle, BR-28, qui a été signalée lors d'un essai avec un prix brut négatif.
  • Lorsque le prix négatif ne concorde pas non plus avec le montant net de la ligne, le document signale PEPPOL-EN16931-R120 en plus de BR-27. C'est arrivé lorsque seul le prix a été rendu négatif, et lorsque le prix et la quantité étaient tous deux négatifs face à un montant net de ligne négatif.

Portée et source

Rédigé pour Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, tel qu'appliqué aux documents Invoice et CreditNote en UBL 2.1. D'autres profils, syntaxes et versions peuvent définir cet identifiant autrement. Version du catalogue d'aide 2026-09-24.1 : source vérifiée le 2026-09-24, explication mise à jour le 2026-09-20.

La définition officielle de BR-27 (en anglais) contient le texte normatif et le test. Cette page en est notre explication, pas une copie.

Cette aide ne modifie pas le verdict du moteur. Corriger ce constat ne signifie pas que le document passe toutes les étapes de validation, et la validation ne certifie pas la conformité juridique ou fiscale et ne transmet aucun document via Peppol.