Aller au contenu

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

BR-22 : Ajouter la quantité facturée ou créditée à chaque ligne

Chaque ligne a besoin d'un élément de quantité, cbc:InvoicedQuantity ou cbc:CreditedQuantity. Sans lui, le contrôle du code d'unité et le calcul de la ligne échouent aussi.

EN 16931Erreur : le document n'est pas valideLignes et prixChamps de base

Sur cette page

La réponse courte

BR-22 échoue lorsqu'une ligne n'a pas d'élément de quantité : pas de cbc:InvoicedQuantity dans une cac:InvoiceLine, ou pas de cbc:CreditedQuantity dans une cac:CreditNoteLine. Ajoutez le nombre d'unités que la ligne facture ou crédite, avec son unitCode, avant cbc:LineExtensionAmount.

Attendez-vous à deux autres constats sur la même ligne tant que la quantité n'est pas rétablie. Le code d'unité est un attribut de l'élément de quantité : BR-23 échoue donc avec lui, et le calcul de ligne Peppol continue avec une quantité de 1 à la place de celle qui manque.

Ce que la règle vérifie

Pour chaque cac:InvoiceLine ou cac:CreditNoteLine, la règle cherche un enfant direct nommé cbc:InvoicedQuantity ou cbc:CreditedQuantity et passe si l'un des deux existe. Elle ne lit pas le nombre.

Seule l'absence est détectée ici. Un élément de quantité vide est refusé par l'étape XSD, qui attend un nombre, et les règles métier ne s'exécutent donc jamais sur lui. Une quantité de 0 passe cette règle ; sur la ligne enregistrée, elle a été signalée à la place par PEPPOL-EN16931-R120, car 0 x 12.5 ne donne pas 25.00.

La règle elle-même accepte l'un ou l'autre nom d'élément dans les deux types de document, mais le schéma, non. Lors d'un essai, un cbc:InvoicedQuantity dans une cac:CreditNoteLine a échoué à l'étape XSD.

Une quantité manquante entraîne toujours BR-23. Que PEPPOL-EN16931-R120 s'y ajoute dépend du prix, car cette règle compte la quantité manquante comme 1. Lors d'un essai avec le prix porté à 25, de sorte que 1 x 25 corresponde au montant de ligne de 25.00, seuls BR-22 et BR-23 ont été signalés.

TermeSignificationÉlément UBL
BT-129Quantité facturéecac:InvoiceLine/cbc:InvoicedQuantity (cac:CreditNoteLine/cbc:CreditedQuantity in a credit note)
BT-130Code de l'unité de mesure de la quantité facturéecac:InvoiceLine/cbc:InvoicedQuantity/@unitCode (cac:CreditNoteLine/cbc:CreditedQuantity/@unitCode in a credit note)

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 :

  • Les lignes de service ou à prix forfaitaire ont un montant mais pas de quantité dans le système source, et le mapping omet l'élément lorsque le champ est nul.
  • La quantité est portée par une ligne de livraison ou de commande qui n'est pas jointe lors de la construction de la ligne de facture.
  • Les avoirs sont construits à partir du mapping des factures, et l'étape qui devrait renommer cbc:InvoicedQuantity en cbc:CreditedQuantity supprime l'élément à la place.
  • Un modèle n'écrit la quantité que pour les articles stockés, et une ligne manuelle ou en texte libre passe sans quantité.

Comment corriger le document

  1. Trouvez la ligne à partir de l'emplacement du constat.
  2. Prenez la quantité dans la ligne source : le nombre d'unités fournies, ou le nombre crédité. Des frais ou un service facturés une seule fois ont une quantité de 1 dans une unité adaptée comme C62 ; envoyez-la plutôt que d'omettre la quantité.
  3. Écrivez-la sous la forme de cbc:InvoicedQuantity dans une facture ou de cbc:CreditedQuantity dans un avoir, avec le code d'unité UN/ECE dans unitCode, juste avant cbc:LineExtensionAmount.
  4. Recalculez la ligne : quantité x (prix net / quantité de base), plus les frais de ligne et moins les remises de ligne, doit redonner le montant net de la ligne à 0.02 près, ce que contrôle PEPPOL-EN16931-R120. Sinon, l'une de ces valeurs est fausse dans la source.

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 a un montant net et un prix, mais pas de quantité

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <!-- item omitted from this fragment -->
  <cac:Price>
    <cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
    <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  </cac:Price>
</cac:InvoiceLine>

Fragment de la facture corrigée : une quantité de 2 dans l'unité C62, avant le montant net de la ligne

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <!-- item omitted from this fragment -->
  <cac:Price>
    <cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
    <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  </cac:Price>
</cac:InvoiceLine>

La facture corrigée a <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity> sur la ligne 1, et la facture en échec n'y a pas de quantité. Deux autres règles sont signalées sur la même ligne. BR-23 échoue parce que le code d'unité qu'elle recherche est un attribut de l'élément manquant. PEPPOL-EN16931-R120 échoue parce qu'elle compte la quantité manquante comme 1, et 1 x 12.5 donne 12.50, et non les 25.00 indiqués par la ligne. Rétablir la quantité de 2 lève les trois constats.

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

  • Dans un document UBL Invoice, l'élément est cbc:InvoicedQuantity dans cac:InvoiceLine ; dans un document CreditNote, c'est cbc:CreditedQuantity dans cac:CreditNoteLine. Lors d'un essai sur un avoir, retirer la quantité créditée a signalé les trois mêmes règles sur cac:CreditNoteLine[1].
  • La quantité est facultative dans le schéma UBL : c'est pourquoi son absence passe l'étape XSD et est laissée à cette règle.
  • Une quantité présente mais sans unitCode passe cette règle et est signalée par BR-23 à la place.

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-24.

La définition officielle de BR-22 (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.