- BR-23, fatal "An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130)." De regel moet een eenheid bevatten.
- BR-CL-23, fatal "Unit code MUST be coded according to the UN/ECE Recommendation 20 with Rec 21 extension" De eenheid moet een code van de lijst zijn.
- PEPPOL-EN16931-R130, fatal "Unit code of price base quantity MUST be same as invoiced quantity." Als de prijs per basishoeveelheid geldt, is de eenheid ervan gelijk aan die van de regel.
De eerste twee komen uit EN 16931 (Schematron validation-1.3.17). De derde komt uit Peppol BIS (3.0.22) en XRechnung past die ook toe.

Waar Odoo de code vandaan haalt
De code die Odoo in het bestand schrijft, komt afhankelijk van de versie van een andere plek:
- Odoo 17, 18 en 19: een tabel koppelt de Odoo-eenheden (via hun externe identificatie) aan UN/ECE-codes. Een eenheid die je zelf hebt aangemaakt staat niet in de tabel en gaat eruit als C62, één stuk.
- Odoo 20: elke maateenheid heeft een eigen veld voor de UN/ECE-code, en die code gaat naar het bestand. Odoo zet hem in hoofdletters, maar vergelijkt hem niet met de lijst.
BR-CL-23 slaat aan wanneer de code in het bestand niet op de lijst staat. In Odoo 20 volstaat een verkeerd ingetikte code op de maateenheid. In Odoo 17 tot 19 geeft de tabel altijd een code van de lijst, dus de regel slaat alleen aan als de code via een andere weg binnenkomt, bijvoorbeeld via een module die hem wijzigt.
Er is ook een probleem dat geen enkele regel ziet: een eigen eenheid ("pallet", "doos van twaalf") die Odoo 17 tot 19 zonder waarschuwing in C62 omzet. Het bestand slaagt voor BR-CL-23, omdat C62 op de lijst staat, maar je klant ontvangt "stuks" waar jij dozen hebt verkocht.
Voor wie de factuur ontvangt, telt de code: zijn software leest hem om de regel te koppelen aan zijn bestelling en aan de ontvangen goederen. Als hij dozen besteld heeft en de factuur zegt stuks, klopt de hoeveelheid niet met wat hij ontvangen heeft, ook al is het bedrag hetzelfde, en blijft de factuur hangen in zijn controle.
Met onze module XRechnung en ZUGFeRD
De module heeft een eigen, bewerkbare tabel van Odoo-eenheden naar UN/ECE-codes, zodat elke eenheid van jou zijn code krijgt in BT-130. Een eenheid die niet in die tabel staat, gaat eruit als C62, net als in Odoo 17 tot 19, en de enige waarschuwing komt in het serverlogboek terecht, dat je vanuit de factuur niet ziet. Een regel zonder eenheid gaat eveneens eruit als C62.

In Odoo 18, 19 en 20, met het abonnement op FlexigoTech Cloud, wordt elke XRechnung en elke ZUGFeRD EN 16931 gevalideerd met de regels van KoSIT, en een code buiten de lijst verschijnt als BR-CL-23 onder Validation Errors. In Odoo 17 valideert de gepubliceerde versie niet.
Wat controleren
- Kijk welke eenheid de regel in de XML draagt (attribuut unitCode).
- Open in Odoo 20 de maateenheid en vul de UN/ECE-code in.
- Gebruik je in Odoo 17, 18 en 19 eigen eenheden, houd er dan rekening mee dat ze als C62 eruit gaan. Met onze module voeg je ze in elke versie toe aan de tabel: de ontbrekende gaan ook als C62 eruit.
- Als de prijs per basishoeveelheid geldt (bijvoorbeeld per honderd stuks), moet de eenheid ervan gelijk zijn aan die van de regel.
- Genereer het bestand opnieuw en controleer het attribuut unitCode van elke regel voordat je het verstuurt.
Lees verder
Gecontroleerd in de broncode van de module (versie 17.0 en 20.0) en in de gelinkte bronnen
Bronnen
- github.com/odoo/odoo/blob/6f00fdadb875342de2d14a179f25431f93cd63c9/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/account_edi_ubl_
- Broncode van de module: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_uom_mapping.py
- Broncode van de module: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Broncode van de module: flexigo_germany_xrechnung 17.0 (ad05de8f): __manifest__.py
- github.com/itplr-kosit/xrechnung-schematron/releases/tag/v2.6.0
- github.com/ConnectingEurope/eInvoicing-EN16931/releases/tag/validation-1.3.17
- docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/PEPPOL-EN16931-R130/
