O texto de cada regra
Todas são fatais no Schematron de EN 16931 (validation-1.3.17), e Peppol BIS, XRechnung e Factur-X aplicam-nas da mesma forma:
- BR-08: «An Invoice shall contain the Seller postal address.»
- BR-09: «The Seller postal address (BG-5) shall contain a Seller country code (BT-40).»
- BR-10: «An Invoice shall contain the Buyer postal address (BG-8).»
- BR-11: «The Buyer postal address shall contain a Buyer country code (BT-55).»
- BR-CL-14: «Country codes in an invoice MUST be coded using ISO code list 3166-1»
Dentro da morada, as regras de EN 16931 só pedem o país. Mas há formatos que pedem mais: o XRechnung exige também a cidade e o código postal do vendedor (BR-DE-3 e BR-DE-4) e do comprador (BR-DE-8 e BR-DE-9).

O que lhe diz o Odoo
Nas quatro versões, o Odoo verifica BR-09 e BR-11 antes de gerar o ficheiro UBL. Se falta o país na sua empresa ou no cliente, o aviso é este: «The country is required for the %s.», com «supplier» ou «customer» no espaço. No Odoo 17 a verificação está na exportação Peppol BIS (e nas que herdam dela, como a XRechnung); no 18, 19 e 20, na camada comum de EN 16931.
O aviso diz-lhe qual das duas fichas ver: «supplier» é a sua empresa, a da fatura; «customer» é o contacto de faturação do cliente.
Porque falta um país no Odoo
| Situação | Onde ver |
|---|---|
| Empresa criada à pressa, sem morada | Definições da empresa: rua, cidade, código postal e país. |
| Cliente importado de uma folha de cálculo | A coluna do país vazia ou com o nome escrito à mão em vez de escolhido. |
| Fatura a um contacto filho | A morada de faturação do contacto que vai na fatura, não só a da sua empresa. |
| Cliente particular de uma loja online | A encomenda trouxe morada sem país, ou com um país que não está na lista. |
Como o país no Odoo se escolhe de uma lista e não se escreve, o BR-CL-14 quase nunca sai de uma fatura do Odoo: o código de duas letras vem do próprio país. Se lhe aparecer, veja se o ficheiro passou por outro programa antes de chegar ao cliente.
Com o nosso módulo XRechnung e ZUGFeRD

Com o país, o módulo não avisa. Se à sua empresa ou ao cliente lhe faltar, escreve DE, o código da Alemanha, em UBL e em CII, e a sua verificação antes de gerar não olha para esse campo. O ficheiro cumpre BR-09 e BR-11 e o validador da KoSIT aceita-o (verificámo-lo), mas a morada diz Alemanha mesmo que o cliente esteja noutro país. Reveja o país de cada cliente antes de gerar.
No Odoo 18, 19 e 20, com a subscrição do FlexigoTech Cloud, cada XRechnung e cada ZUGFeRD EN 16931 que o módulo gera é validado com as regras da KoSIT. Se ao cliente lhe faltarem a cidade ou o código postal, isso aparece: o BR-DE-8 e o BR-DE-9 ficam em Validation Errors e a fatura não fica marcada como Ready to send. A versão publicada para o Odoo 17 gera os ficheiros mas não os valida.
Passos
- Leia o aviso: «supplier» ou «customer».
- Abra essa ficha e escolha o país da lista; preencha rua, cidade e código postal, mesmo que a EN 16931 não os peça.
- Se fatura a um contacto de uma empresa, reveja a morada desse contacto.
- Gere o ficheiro outra vez.
Continue a ler
Verificado no código do módulo (versão 17.0 e 20.0) e nas fontes indicadas
Fontes
- Código do módulo: flexigo_germany_xrechnung 20.0 (446f2f68): lib/generators/ubl_generator.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_
- Código do módulo: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Código do módulo: flexigo_germany_xrechnung 20.0 (446f2f68): models/account_move.py
- Código do módulo: flexigo_germany_xrechnung 17.0 (ad05de8f): __manifest__.py
- github.com/ConnectingEurope/eInvoicing-EN16931/releases/tag/validation-1.3.17
- github.com/itplr-kosit/xrechnung-schematron/releases/tag/v2.6.0
