Sete regras giram em torno do mesmo bloco. As BR-49, BR-61 e BR-50 vêm da norma europeia EN 16931 e valem para qualquer formato; as BR-DE são só da XRechnung (Schematron v2.6.0 da KoSIT):
- BR-DE-1 (fatal): «Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten.» Sem bloco de pagamento, a XRechnung não é válida.
- BR-49 (fatal): «A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).»
- BR-61 (fatal): «If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.»
- BR-50 (fatal): «A Payment account identifier (BT-84) shall be present if Credit transfer (BG-17) information is provided in the Invoice.»
- BR-DE-23-a (fatal): «Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), muss BG-17 "CREDIT TRANSFER" übermittelt werden.»
- BR-DE-23-b (fatal): «Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), dürfen BG-18 und BG-19 nicht übermittelt werden.» Uma transferência não pode levar ao mesmo tempo dados de cartão (BG-18) nem de débito direto (BG-19).
- BR-DE-19 (warning): «"Payment account identifier" (BT-84) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 58 SEPA als Zahlungsmittel gefordert wird.» É um aviso: com o código 58, a conta deve ser um IBAN válido.

Os meios de pagamento que vai ver
- 30
- Transferência (credit transfer). É o que o Odoo põe numa fatura com Recipient Bank.
- 58
- Transferência SEPA. É o que põe o nosso módulo XRechnung e ZUGFeRD.
- ZZZ
- Acordado entre as partes (mutually defined). É o que o Odoo põe numa fatura sem banco.
- 57
- Acordo permanente (standing agreement). É o que o Odoo põe nas notas de crédito.
O que faz o Odoo com uma fatura
No Odoo 17, 18, 19 e 20 a decisão é a mesma e depende do campo Recipient Bank da fatura. Se tem banco, o meio é 30 e a conta vai no BT-84: a BR-61, a BR-50 e a BR-DE-23-a cumprem-se sozinhas. Se não tem, o meio é ZZZ. O bloco BG-16 existe, pelo que a BR-DE-1 não dispara, mas a fatura não diz em que conta se deve pagar.
Além disso, antes de gerar o ficheiro, o Odoo repete a verificação da BR-61: se o meio for 30 ou 58 e a fatura não tiver Recipient Bank, para com o aviso de campo obrigatório. Com a lógica acima é difícil chegar aí, mas um módulo que altere o meio de pagamento pode provocá-lo.
Com o nosso módulo XRechnung e ZUGFeRD
O módulo não olha para o Recipient Bank: as instruções de pagamento saem do IBAN da XRechnung da sua empresa, com o meio 58, o IBAN no BT-84 e o BIC se existir. Se esse IBAN estiver vazio, o módulo não gera nada e para antes com o aviso «Company IBAN (BT-84) is required for XRechnung generation.». Assim, com o módulo, uma fatura sem BG-16 não chega a sair.

No Odoo 18, 19 e 20, com a subscrição do FlexigoTech Cloud, cada XRechnung que se gera passa ainda pelas regras da KoSIT, e só a que as cumpre fica como Ready to send. No Odoo 17, a versão publicada não valida.
Como corrigi-lo
- No Odoo, escolha a conta de cobrança no campo Recipient Bank da fatura antes de gerar a XRechnung.
- Com o nosso módulo, preencha o IBAN da XRechnung da sua empresa (e o BIC, se o seu cliente o pedir).
- Verifique que o IBAN está correto: com o meio 58, a BR-DE-19 avisa se não estiver.
- Volte a gerar a XRechnung; a que já enviou mantém-se como estava.
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_
- 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/ConnectingEurope/eInvoicing-EN16931/releases/tag/validation-1.3.17
- github.com/itplr-kosit/xrechnung-schematron/releases/tag/v2.6.0
