El text de la regla, tal com surt a l'informe del validador (KoSIT l'escriu en alemany), és aquest: «Das Element "Buyer reference" (BT-10) muss übermittelt werden.» Vol dir que l'element Buyer reference ha d'anar a la factura. Al Schematron de XRechnung 3.0.2 (versió v2.6.0 de KoSIT) la seva gravetat és fatal: no és un avís, la factura no passa.
Què comprova i què no
La regla només mira que el camp existeixi i no estigui buit. No comprova que el valor tingui sentit: qualsevol text la compleix. En UBL és l'element cbc:BuyerReference, a la capçalera del document.
Peppol BIS, el format que s'usa a Bèlgica o als Països Baixos, és més flexible: li basta amb la referència del comprador o amb la del comanda, tal com diu la seva regla PEPPOL-EN16931-R003: «A buyer reference or purchase order reference MUST be provided.» Per això una factura que viatja sense problemes per Peppol pot caure a BR-DE-15 quan la converteixes en XRechnung per a un client alemany.

D'on treu Odoo el BT-10
L'exportació XRechnung que porta Odoo (sense mòduls de tercers) omple el camp així:
| Versió | Valor de BT-10 | Si no n'hi ha cap |
|---|---|---|
| Odoo 17 | El camp Referència de l'empresa client. Si la seva Peppol e-address (EAS) és 0204, el seu Peppol Endpoint. | Escriu «N/A». |
| Odoo 18 i 19 | El camp Referència del contacte o, si és buit, el de la seva empresa. Amb EAS 0204, el Peppol Endpoint. | Escriu «N/A». |
| Odoo 20 | Igual, però l'esquema i l'identificador es diuen Routing ID i Routing Endpoint. Amb Routing ID 0204, el Routing Endpoint. | Escriu «N/A». |
Amb la XRechnung d'Odoo, BR-DE-15 no arriba a saltar, perquè el camp mai va buit. Però «N/A» només compleix la lletra de la regla. No és la referència que espera el teu client, i si factures a una administració no és el seu Leitweg-ID. Abans d'enviar, obre el XML o la vista prèvia i mira què porta BT-10.
Quan el client és una administració
El 0204 és l'esquema del Leitweg-ID a la llista d'adreces electròniques. Si a la fitxa de l'organisme poses aquest esquema i el seu Leitweg-ID com a identificador, Odoo el copia a BT-10 sense que l'hagis d'escriure a cada factura. Per a una empresa privada, el normal és la referència que et demani, sovint el seu número de comanda o de proveïdor: va al camp Referència de la seva fitxa.
Amb el nostre mòdul XRechnung i ZUGFeRD
El mòdul té la seva pròpia pestanya E-Invoicing a la fitxa del client, amb dos camps per a aquesta dada: Leitweg-ID (BT-10), que fa servir si marques el client com a administració (B2G Partner), i Buyer Reference (BT-10) per a la resta. Si marques el client com a administració i li falta el Leitweg-ID, el mòdul no genera la factura: s'atura amb «B2G partner requires a Leitweg-ID (BT-10).». Si no ho és i la Buyer Reference està buida, el XML surt sense BuyerReference, sense farciments com «N/A», i aquí és on apareix el BR-DE-15.

A Odoo 18, 19 i 20 ho veus abans d'enviar res: amb la subscripció a FlexigoTech Cloud, cada XRechnung que generes es valida amb les regles de KoSIT i les errades queden a la factura, a Validation Errors, una línia per regla. Una factura amb BR-DE-15 no es marca com a Ready to send. La versió publicada per a Odoo 17 genera la XRechnung però no la valida.
Com deixar-ho bé
- Si el client és una administració alemanya, demana el seu Leitweg-ID i posa'l a la seva fitxa: al camp Leitweg-ID de la pestanya E-Invoicing amb el nostre mòdul, o com a adreça electrònica amb esquema 0204 a Odoo.
- Si és una empresa, pregunta quina referència vol veure i guarda-la a la seva fitxa (Buyer Reference amb el mòdul, Referència a Odoo).
- Genera la XRechnung de nou: la que ja vas enviar no canvia, i si la van rebutjar toca enviar la corregida.
- Comprova BT-10 al resultat abans d'enviar-la.
Continua llegint
Comprovat al codi del mòdul (versió 17.0 i 20.0) i a les fonts enllaçades
Fonts
- Codi del mòdul: flexigo_germany_xrechnung 20.0 (446f2f68): models/account_move.py
- 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_
- 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_
- 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_
- github.com/odoo/odoo/blob/6f00fdadb875342de2d14a179f25431f93cd63c9/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/account_edi_ubl_
- Codi del mòdul: flexigo_germany_xrechnung 20.0 (446f2f68): lib/generators/ubl_generator.py
- Codi del mòdul: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Codi del mòdul: flexigo_germany_xrechnung 17.0 (ad05de8f): __manifest__.py
- github.com/itplr-kosit/xrechnung-schematron/releases/tag/v2.6.0
- docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/PEPPOL-EN16931-R003/
