Què diu cada regla
Les quatre són fatals al Schematron de EN 16931 (validation-1.3.17):
- UBL-SR-48
- «Invoice lines shall have one and only one classified tax category.» És una regla de la sintaxi UBL: una línia, una categoria.
- BR-CO-04
- «Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).» L'altra cara: cap línia sense categoria.
- BR-25
- «Each Invoice line (BG-25) shall contain the Item name (BT-153).» Cada línia amb nom.
- BR-16
- «An Invoice shall have at least one Invoice line (BG-25)» Almenys una línia.

L'avís d'Odoo
Odoo no espera el validador. Abans de generar l'UBL recorre les línies i, si una no té exactament un impost, s'atura amb: «Each invoice line shall have one and only one tax.» Passa en les quatre versions, amb una matisació:
- Odoo 17: compta els impostos de la línia deixant fora els d'import fix, com les ecotaxes; n'ha de quedar un.
- Odoo 18, 19 i 20: compta les categories d'impost que s'escriuran a la línia del fitxer; n'ha d'haver una.
En el mateix pas comprova BR-25: una línia sense producte ni descripció s'atura amb «Each invoice line should have a product or a label.»
Els casos que ho provoquen
| Cas a Odoo | Què fer |
|---|---|
| Línia sense impost, per exemple una despesa refacturada | Posa-li l'impost que correspongui, també si és del 0 % o exempt. |
| Dos impostos d'IVA a la mateixa línia | Deixa'n un: si són dos tipus diferents, parteix la línia en dues. |
| IVA més un recàrrec o retenció a la línia | Revisa si aquest segon impost ha d'anar a la factura electrònica com a impost o d'una altra manera; el correcte depèn del teu país. |
| Línia de text sense producte ni descripció | Escriu la descripció o converteix-la en nota. |
Les seccions i notes d'Odoo no compten com a línies, així que no provoquen l'avís.
Amb el nostre mòdul XRechnung i ZUGFeRD
El mòdul genera el XML amb el seu propi codi i no fa la comprovació d'Odoo: una línia sense impost o amb dos arriba al fitxer tal com és. Ho hem comprovat amb el validador de KoSIT:
- Línia sense impost: surt sense categoria d'IVA. A XRechnung UBL dona UBL-SR-48, BR-CO-04 i BR-Z-08; a XRechnung CII, el format per defecte del mòdul, BR-CO-04, BR-Z-01 i BR-Z-08.
- Línia amb dos impostos: a UBL només s'escriu el primer amb percentatge, però el total amb IVA porta els dos, i salta BR-CO-15. A CII hi van els dos a la línia i l'IVA total no quadra amb el desglossament, i salta BR-CO-14.
- Línia amb un impost del 0 %: a UBL surt com a Z i KoSIT l'accepta. A CII surt com a S, i KoSIT dona BR-S-05, a més de BR-Z-01 i BR-Z-08.
Revisa els impostos de cada línia abans de generar.

A Odoo 18, 19 i 20, amb la subscripció a FlexigoTech Cloud, cada XRechnung i cada ZUGFeRD EN 16931 es valida amb les regles de KoSIT i les regles que fallin queden a Validation Errors. A Odoo 17 la versió publicada no valida: aquests fitxers surten sense avís.
Passos
- Llegeix l'avís: diu si és l'impost o el nom de la línia.
- Obre la factura en esborrany i revisa la columna d'impostos línia a línia.
- Corregeix, publica i genera el fitxer de nou.
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): lib/generators/ubl_generator.py
- Codi del mòdul: flexigo_germany_xrechnung 20.0 (446f2f68): lib/generators/cii_generator.py
- Codi del mòdul: flexigo_germany_xrechnung 20.0 (446f2f68): models/res_company.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_
- 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/ConnectingEurope/eInvoicing-EN16931/releases/tag/validation-1.3.17
