Aller au contenu principal
EN 16931 · listes de codes

Erreur BR-CL-23 : l'unité de mesure de la ligne n'est pas un code UN/ECE

Chaque ligne d'une facture électronique porte sa quantité avec une unité, écrite sous forme de code de la Recommandation 20 de l'UN/ECE : C62 pour l'unité, par exemple. BR-CL-23 vérifie que le code figure dans la liste, BR-23 qu'il existe et PEPPOL-EN16931-R130 que l'unité du prix soit la même que celle de la quantité.

FlexigoTech · Responsable : Víctor Gómez · Mis à jour le 4 novembre 2026

L'essentiel

Versions
Odoo 17, 18, 19 et 20
Vérifié
dans le code du module, version 17.0 et 20.0 · dans les sources citées à la fin
Lecture
3 min
  1. BR-23, fatal « An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130). » La ligne doit porter une unité.
  2. BR-CL-23, fatal « Unit code MUST be coded according to the UN/ECE Recommendation 20 with Rec 21 extension » L'unité doit être un code de la liste.
  3. PEPPOL-EN16931-R130, fatal « Unit code of price base quantity MUST be same as invoiced quantity. » Si le prix s'applique à une quantité de base, son unité est la même que celle de la ligne.

Les deux premières proviennent d'EN 16931 (Schematron validation-1.3.17). La troisième vient de Peppol BIS (3.0.22), et XRechnung l'applique aussi.

Fiche des règles d'unité de mesure
BR-CL-23, BR-23 et PEPPOL-EN16931-R130 sur BT-130 et l'attribut unitCode.

D'où Odoo tire le code

Le code qu'Odoo écrit dans le fichier provient d'un endroit différent selon la version :

  • Odoo 17, 18 et 19 : une table fait correspondre les unités d'Odoo (par leur identifiant externe) à des codes UN/ECE. Une unité que vous avez créée vous-même n'est pas dans la table et sort en C62, unité.
  • Odoo 20 : chaque unité de mesure possède son propre champ de code UN/ECE, et c'est ce code qui va dans le fichier. Odoo le met en majuscules, mais ne le compare pas à la liste.

BR-CL-23 se déclenche lorsque le code du fichier ne figure pas dans la liste. Sur Odoo 20, un code mal saisi sur l'unité de mesure suffit. Sur Odoo 17 à 19, la table donne toujours un code de la liste, donc la règle ne se déclenche que si le code arrive par un autre chemin, comme un module qui le modifie.

Il existe aussi un problème qu'aucune règle ne voit : une unité personnalisée (« palette », « carton de douze ») que Odoo 17 à 19 convertit en C62 sans avertissement. Le fichier passe BR-CL-23, puisque C62 figure dans la liste, mais votre client reçoit « unités » là où vous aviez vendu des cartons.

Pour celui qui reçoit la facture, le code compte : son logiciel le lit pour rapprocher la ligne de sa commande et de sa réception de marchandises. S'il a commandé des cartons et que la facture indique des unités, la quantité ne correspond pas à ce qu'il a reçu, même si le montant est identique, et la facture reste bloquée lors de son contrôle.

Avec notre module XRechnung et ZUGFeRD

Le module embarque sa propre table modifiable d'unités Odoo vers des codes UN/ECE, afin que chacune de vos unités ait son code en BT-130. Une unité absente de cette table sort en C62, comme sur Odoo 17 à 19, et le seul avertissement se trouve dans le journal du serveur, que vous ne voyez pas depuis la facture. Une ligne sans unité sort également en C62.

Table du module XRechnung faisant correspondre les unités d'Odoo aux codes UN/ECE sur Odoo 20
Minutes, unités, heures, mètres carrés, kilowattheures et autres, avec leur code pour BT-130. Capture d'Odoo 20 avec des données de démonstration.

Sur Odoo 18, 19 et 20, avec l'abonnement FlexigoTech Cloud, chaque XRechnung et chaque ZUGFeRD EN 16931 est validé selon les règles de KoSIT, et un code hors liste apparaît comme BR-CL-23 dans Validation Errors. Sur Odoo 17, la version publiée ne valide pas.

Ce qu'il faut vérifier

  1. Regardez quelle unité la ligne porte dans le XML (attribut unitCode).
  2. Sur Odoo 20, ouvrez l'unité de mesure et renseignez son code UN/ECE.
  3. Sur Odoo 17, 18 et 19, si vous utilisez des unités personnalisées, gardez à l'esprit qu'elles sortent en C62. Avec notre module, sur n'importe quelle version, ajoutez chacune à sa table : celles qui manquent sortent aussi en C62.
  4. Si le prix s'applique à une quantité de base (par exemple, par cent unités), son unité doit être la même que celle de la ligne.
  5. Générez à nouveau le fichier et vérifiez l'attribut unitCode de chaque ligne avant de l'envoyer.

À lire aussi

Erreur UBL-SR-48 : une ligne de facture avec deux taxes ou aucuneUBL-SR-48 et BR-CO-04 exigent une catégorie de TVA, et une seule, sur chaque ligne de la facture électronique. Le message d'Odoo 17, 18, 19 et 20, avec BR-25 et BR-16.Erreur BR-CO-15 sur la facture électronique : le total TTC n'est pas HT plus TVABR-CO-15, BR-CO-14, BR-CO-16 et BR-CO-17 vérifient que les totaux de la facture électronique concordent. Ce que chacune additionne et lesquelles échouent pour un centime.Erreurs BR-09 et BR-11 : adresse du vendeur ou de l'acheteur sans code paysBR-09 et BR-11 exigent le code pays dans les adresses du vendeur et de l'acheteur ; BR-08 et BR-10, l'adresse elle-même. Message d'Odoo et quoi renseigner.
Vérifié dans le code du module (version 17.0 et 20.0) et dans les sources citées

Sources