O texto da regra, tal como aparece no relatório do validador (a KoSIT escreve-o em alemão), é este: «Das Element "Buyer reference" (BT-10) muss übermittelt werden.» Quer dizer que o elemento Buyer reference tem de constar na fatura. No Schematron da XRechnung 3.0.2 (versão v2.6.0 da KoSIT) a sua gravidade é fatal: não é um aviso, a fatura não passa.
O que verifica e o que não verifica
A regra só olha para se o campo existe e não está vazio. Não verifica se o valor faz sentido: qualquer texto a cumpre. Em UBL é o elemento cbc:BuyerReference, no cabeçalho do documento.
O Peppol BIS, o formato usado na Bélgica ou nos Países Baixos, é mais flexível: basta a referência do comprador ou a referência da encomenda, como diz a sua regra PEPPOL-EN16931-R003: «A buyer reference or purchase order reference MUST be provided.» Por isso, uma fatura que circula sem problemas pelo Peppol pode cair na BR-DE-15 quando a converte em XRechnung para um cliente alemão.

De onde tira o Odoo o BT-10
A exportação XRechnung que traz o Odoo (sem módulos de terceiros) preenche o campo assim:
| Versão | Valor do BT-10 | Se não houver nenhum |
|---|---|---|
| Odoo 17 | O campo Referência da empresa cliente. Se o seu endereço eletrónico Peppol (EAS) for 0204, o seu Peppol Endpoint. | Escreve «N/A». |
| Odoo 18 e 19 | O campo Referência do contacto ou, se estiver vazio, o da sua empresa. Com EAS 0204, o Peppol Endpoint. | Escreve «N/A». |
| Odoo 20 | Igual, mas o esquema e o identificador chamam-se Routing ID e Routing Endpoint. Com Routing ID 0204, o Routing Endpoint. | Escreve «N/A». |
Com a XRechnung do Odoo, a BR-DE-15 não chega a disparar, porque o campo nunca fica vazio. Mas «N/A» só cumpre a letra da regra. Não é a referência que espera o seu cliente e, se fatura a uma entidade pública, não é o seu Leitweg-ID. Antes de enviar, abra o XML ou a pré-visualização e veja o que leva o BT-10.
Quando o cliente é uma entidade pública
O 0204 é o esquema do Leitweg-ID na lista de endereços eletrónicos. Se na ficha da entidade puser esse esquema e o seu Leitweg-ID como identificador, o Odoo copia-o para o BT-10 sem que tenha de o escrever em cada fatura. Para uma empresa privada, o normal é a referência que lhe pedirem, muitas vezes o número da encomenda ou de fornecedor: vai no campo Referência da sua ficha.
Com o nosso módulo XRechnung e ZUGFeRD
O módulo tem um separador próprio E-Invoicing na ficha do cliente, com dois campos para este dado: Leitweg-ID (BT-10), que usa se marcar o cliente como entidade pública (B2G Partner), e Buyer Reference (BT-10) para os restantes. Se marcar o cliente como entidade pública e lhe faltar o Leitweg-ID, o módulo não gera a fatura: para com «B2G partner requires a Leitweg-ID (BT-10).». Se não for entidade pública e a Buyer Reference estiver vazia, o XML sai sem BuyerReference, sem preenchimentos como «N/A», e aí aparece a BR-DE-15.

No Odoo 18, 19 e 20 vê-o antes de enviar seja o que for: com a subscrição ao FlexigoTech Cloud, cada XRechnung que gera é validada com as regras da KoSIT e as falhas ficam na fatura, em Validation Errors, uma linha por regra. Uma fatura com BR-DE-15 não fica marcada como Ready to send. A versão publicada para o Odoo 17 gera a XRechnung mas não a valida.
Como resolver
- Se o cliente for uma entidade pública alemã, peça o seu Leitweg-ID e ponha-o na ficha do contacto: no campo Leitweg-ID do separador E-Invoicing com o nosso módulo, ou como endereço eletrónico com esquema 0204 no Odoo.
- Se for uma empresa, pergunte que referência quer ver e guarde-a na ficha do contacto (Buyer Reference com o módulo, Referência no Odoo).
- Gere de novo a XRechnung: a que já enviou não muda e, se foi rejeitada, tem de enviar a corrigida.
- Verifique o BT-10 no resultado antes de a enviar.
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): 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_
- Código do módulo: flexigo_germany_xrechnung 20.0 (446f2f68): lib/generators/ubl_generator.py
- Código do módulo: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Código do módulo: 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/
