- BR-23, fatal «An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).» Die Zeile muss eine Einheit tragen.
- BR-CL-23, fatal «Unit code MUST be coded according to the UN/ECE Recommendation 20 with Rec 21 extension» Die Einheit muss ein Code aus der Liste sein.
- PEPPOL-EN16931-R130, fatal «Unit code of price base quantity MUST be same as invoiced quantity.» Wenn der Preis auf eine Bezugsmenge bezogen ist, ist ihre Einheit dieselbe wie die der Zeile.
Die ersten beiden stammen aus EN 16931 (Schematron validation-1.3.17). Die dritte stammt aus Peppol BIS (3.0.22), und XRechnung wendet sie ebenfalls an.

Woher Odoo den Code nimmt
Der Code, den Odoo in die Datei schreibt, stammt je nach Version aus einer anderen Quelle:
- Odoo 17, 18 und 19: Eine Tabelle ordnet die Odoo-Einheiten (über ihre externe Kennung) UN/ECE-Codes zu. Eine von Ihnen angelegte Einheit steht nicht in der Tabelle und wird als C62, eine Einheit, ausgegeben.
- Odoo 20: Jede Maßeinheit hat ein eigenes Feld für den UN/ECE-Code, und dieser Code geht in die Datei. Odoo wandelt ihn in Großbuchstaben um, prüft ihn aber nicht gegen die Liste.
BR-CL-23 schlägt an, wenn der Code in der Datei nicht in der Liste steht. Bei Odoo 20 genügt ein falsch geschriebener Code an der Maßeinheit. Bei Odoo 17 bis 19 liefert die Tabelle immer einen Code aus der Liste, sodass die Regel nur anschlägt, wenn der Code auf einem anderen Weg hineinkommt, etwa durch ein Modul, das ihn verändert.
Es gibt außerdem ein Problem, das keine Regel erkennt: eine eigene Einheit («Palette», «Karton zu zwölf») wird in Odoo 17 bis 19 ohne Warnung zu C62. Die Datei besteht BR-CL-23, weil C62 in der Liste steht, aber Ihr Kunde erhält «Einheiten», wo Sie Kartons verkauft haben.
Für den Empfänger der Rechnung zählt der Code: Seine Software liest ihn, um die Zeile mit seiner Bestellung und dem Wareneingang abzugleichen. Hat er Kartons bestellt und die Rechnung nennt Einheiten, stimmt die Menge nicht mit dem Erhaltenen überein, obwohl der Betrag gleich ist, und die Rechnung bleibt bei seiner Prüfung hängen.
Mit unserem Modul XRechnung und ZUGFeRD
Das Modul bringt eine eigene, bearbeitbare Tabelle mit, die Odoo-Einheiten UN/ECE-Codes zuordnet, sodass jede Ihrer Einheiten ihren Code in BT-130 erhält. Eine Einheit, die in dieser Tabelle fehlt, wird wie in Odoo 17 bis 19 als C62 ausgegeben, und der einzige Hinweis steht im Serverprotokoll, das Sie von der Rechnung aus nicht sehen. Eine Zeile ohne Einheit wird ebenfalls als C62 ausgegeben.

In Odoo 18, 19 und 20 wird mit dem Abonnement FlexigoTech Cloud jede XRechnung und jede ZUGFeRD EN 16931 gegen die Regeln von KoSIT geprüft, und ein Code außerhalb der Liste erscheint unter Validation Errors als BR-CL-23. In Odoo 17 validiert die veröffentlichte Version nicht.
Was Sie prüfen sollten
- Prüfen Sie, welche Einheit die Zeile im XML trägt (Attribut unitCode).
- Öffnen Sie in Odoo 20 die Maßeinheit und tragen Sie ihren UN/ECE-Code ein.
- Verwenden Sie in Odoo 17, 18 und 19 eigene Einheiten, bedenken Sie, dass sie als C62 ausgegeben werden. Mit unserem Modul fügen Sie in jeder Version jede einzelne in dessen Tabelle ein: Die fehlenden werden ebenfalls als C62 ausgegeben.
- Wenn der Preis auf eine Bezugsmenge bezogen ist (zum Beispiel pro hundert Einheiten), muss ihre Einheit dieselbe sein wie die der Zeile.
- Erzeugen Sie die Datei erneut und prüfen Sie das Attribut unitCode jeder Zeile, bevor Sie sie versenden.
Weiterlesen
Geprüft im Quellcode des Moduls (Version 17.0 und 20.0) und in den verlinkten Quellen
Quellen
- 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_
- Quellcode des Moduls: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_uom_mapping.py
- Quellcode des Moduls: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Quellcode des Moduls: 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/
