Como Alterar a Geração do TX2¶
Objetivo¶
Guia prático para quem precisa alterar o valor de um campo no TX2 ou no boleto, organizado por nível de intervenção: do mais simples (configuração) ao mais complexo (código).
Checklist Geral: "O campo X está errado, o que faço?"¶
flowchart TD
A["Campo TX2 incorreto"] --> B{"O campo vem de um cadastro?"}
B -->|Sim| C["Alterar Empresa, Parceiro, Produto ou Operação"]
B -->|Não| D{"O campo é controlado por parâmetro de sistema?"}
D -->|Sim| E["Alterar em Configurações → Técnico → Parâmetros"]
D -->|Não| F{"O campo é calculado pelo motor fiscal?"}
F -->|Sim| G["Revisar operação fiscal, CFOP, tabela NCM/UF"]
F -->|Não| H{"O campo tem hook de herança?"}
H -->|Sim| I["Usar _get_l10n_br_invoice_vals() ou similar"]
H -->|Não| J["Alterar código fonte"]
Nível 1 — Configuração no Cadastro¶
Empresa (res.company)¶
| Campo Odoo | Afeta no TX2 | Menu |
|---|---|---|
l10n_br_cnpj |
CNPJ_C02 |
Contabilidade → Config → Empresa |
l10n_br_razao_social |
xNome_C03 |
Contabilidade → Config → Empresa |
l10n_br_ie |
IE_C17 |
Contabilidade → Config → Empresa |
l10n_br_im |
InscricaoMunicipalPrestador NFS-e |
Contabilidade → Config → Empresa |
l10n_br_municipio_id |
cMun_C10, cMunFG_B12, variações NFS-e |
Contabilidade → Config → Empresa |
l10n_br_regime_tributario |
CRT_C21, OptanteSimplesNacional |
Contabilidade → Config → Empresa |
l10n_br_cnae |
CodigoCnae NFS-e |
Contabilidade → Config → Empresa |
Parceiro (res.partner)¶
| Campo Odoo | Afeta no TX2 | Menu |
|---|---|---|
l10n_br_cnpj |
CNPJ_E02, SacadoCPFCNPJ |
Contatos → Parceiro |
l10n_br_razao_social |
xNome_E04, SacadoNome |
Contatos → Parceiro |
l10n_br_indicador_ie |
INDIEDEST_E16A |
Contatos → Parceiro |
l10n_br_ie |
IE_E17 |
Contatos → Parceiro |
l10n_br_endereco_numero |
nro_E07, SacadoEnderecoNumero |
Contatos → Parceiro |
l10n_br_endereco_bairro |
xBairro_E09 (máx 60) |
Contatos → Parceiro |
l10n_br_municipio_id |
cMun_E10 |
Contatos → Parceiro |
Produto (product.template)¶
| Campo Odoo | Afeta no TX2 | Menu |
|---|---|---|
default_code |
cProd_I02 |
Vendas → Produtos |
barcode |
cEAN_I03 |
Vendas → Produtos |
l10n_br_ncm_id |
NCM_I05, CEST_I05c |
Vendas → Produtos |
l10n_br_origem |
orig_N11 |
Vendas → Produtos |
l10n_br_codigo_servico |
CodigoItemListaServico NFS-e |
Vendas → Produtos |
l10n_br_fci |
nFCI_I70 |
Vendas → Produtos |
l10n_br_registro_anvisa |
cProdANVISA_K01a |
Vendas → Produtos |
l10n_br_registro_anp |
cProdANP_LA02 |
Vendas → Produtos |
Operação Fiscal¶
| Campo | Afeta no TX2 | Menu |
|---|---|---|
descricao_nf |
natOp_B04 |
Vendas → Configuração → Fiscal → Operação |
l10n_br_finalidade |
finNFe_B25 |
Idem |
l10n_br_gera_ibpt |
Se calcula IBPT | Idem |
Documento Fiscal¶
| Campo | Afeta no TX2 | Menu |
|---|---|---|
l10n_br_versao |
versao_A02 |
Vendas → Configuração → Fiscal → Tipo Documento |
l10n_br_modelo |
mod_B06 |
Idem |
l10n_br_serie_nfe |
serie_B07 (fallback) |
Idem |
l10n_br_ambiente |
tpAmb_B24 |
Idem |
l10n_br_tipo_emissao |
tpEmis_B22 |
Idem |
l10n_br_formato_impressao |
tpImp_B21 |
Idem |
Condição de Pagamento / Provider¶
| Campo | Afeta no TX2 | Menu |
|---|---|---|
l10n_br_indicador |
indPag_YA01b |
Contabilidade → Config → Condições Pgto |
l10n_br_meio |
tPag_YA02 |
Idem |
l10n_br_cobranca_id |
Vincula cobrança escritural | Idem |
Incoterm¶
| Campo | Afeta no TX2 | Menu |
|---|---|---|
l10n_br_modalidade_frete |
modFrete_X02 |
Contabilidade → Fatura → Incoterm |
Nível 2 — Parâmetros de Sistema¶
Menu: Configurações → Técnico → Parâmetros do Sistema
| Parâmetro | Padrão | O que altera |
|---|---|---|
l10n_br_ciel_it_account.num_decimal_quantidade_nfe |
4 |
Decimais na quantidade |
l10n_br_ciel_it_account.num_decimal_valor_unit_nfe |
10 |
Decimais no valor unitário |
l10n_br_ciel_it_account.show_datasaida_nf |
1 |
Se mostra data de saída |
l10n_br_ciel_it_account.show_email_xml_nf |
1 |
Se inclui e-mail no XML |
l10n_br_ciel_it_account.ean_xml_nfe |
1 |
Se envia EAN/GTIN |
l10n_br_ciel_it_account.ean_xml_nfce |
1 |
Se envia EAN/GTIN NFC-e |
l10n_br_ciel_it_account.split_infoadprod_xprod_xml_nfe |
0 |
Se split xProd > 120 |
l10n_br_ciel_it_account.qty_lot_xml_nfe |
0 |
Se mostra qtd no lote |
l10n_br_ciel_it_account.imprimir_validade_danfe |
1 |
Se mostra validade |
l10n_br_ciel_it_account.imprimir_pedido_compra_item |
1 |
Se mostra pedido de compra |
l10n_br_ciel_it_account.agrupar_parcelas_cartao |
0 |
Se agrupa parcelas cartão |
l10n_br_ciel_it_account.email_nfe_automatico |
0 |
Se envia e-mail automático |
l10n_br_ciel_it_account.unificar_item_nfse |
0 |
Se unifica itens NFS-e |
l10n_br_ciel_it_account.add_infoadicional_nfse |
0 |
Se add info adicional NFS-e |
l10n_br_ciel_it_account.gerar_sequencia_previsualizar_danfe |
0 |
Se gera número ao preview |
Nível 3 — Motor Fiscal¶
Campos que dependem do resultado de simulate_impostos():
- Todos os campos de CST (ICMS, IPI, PIS, COFINS)
- Bases, alíquotas e valores de impostos
- CFOP
- Retenções
Para alterar: Revisar as operações fiscais e tabelas de exceção NCM/UF antes de mexer em código.
Nível 4 — Hooks de Herança¶
O código oferece hooks para customização sem alterar o core:
| Hook | Propósito |
|---|---|
_get_l10n_br_invoice_vals(invoice_vals, invoice) |
Customizar campos do cabeçalho NF-e |
_get_l10n_br_invoice_line_vals(invoice_line_vals, invoice_line) |
Customizar campos do item |
_get_l10n_br_invoice_payments(invoice_payments, invoice) |
Customizar pagamentos |
_get_l10n_br_invoice_duplicates(invoice_duplicates, invoice) |
Customizar duplicatas |
_get_l10n_br_cobranca_id(l10n_br_cobranca_id) |
Customizar registro de cobrança |
_gerar_boleto(invoice_payment) |
Filtrar quais parcelas geram boleto |
_gerar_nfce_bloco_destinatario() |
Customizar destinatário NFC-e |
_gerar_invoice_payment_nfce_tx2() |
Customizar pagamentos NFC-e |
Para equipe técnica: Criar módulo de herança que sobrescreva o hook desejado.
Nível 5 — Alteração de Código¶
Quando o campo desejado está fixo no código (FIXO) ou não existe hook de herança.
Checklist antes de alterar código¶
- ✅ Confirmar que não existe parâmetro de sistema
- ✅ Confirmar que não existe cadastro configurável
- ✅ Confirmar que não existe hook de herança
- ✅ Confirmar com funcional qual o comportamento desejado
- ✅ Verificar impacto em outros cenários (NF-e, NFC-e, NFS-e)
- ✅ Testar em ambiente de homologação
Cenários Comuns¶
"Quero mudar a descrição do produto no TX2"¶
→ Alterar campo name na linha da fatura (não no produto, pois a fatura já copiou o valor)
"O EAN não deveria aparecer no XML"¶
→ Alterar parâmetro l10n_br_ciel_it_account.ean_xml_nfe para 0
"O e-mail do cliente não deve ir no XML"¶
→ Alterar parâmetro l10n_br_ciel_it_account.show_email_xml_nf para 0
"O vencimento do boleto está errado"¶
→ Verificar date_maturity na parcela (account.move.line)
"Juros/multa do boleto estão incorretos"¶
→ Verificar configuração do registro de cobrança (juros, multa, dias)
"O CNPJ do emitente está errado"¶
→ Verificar se a operação fiscal tem corredor de importação configurado
"A data de emissão está errada"¶
→ A data é calculada em tempo real (datetime.now(SP)). Para retroativa, ativar l10n_br_data_retroativa
"A NFS-e está gerando com código de serviço errado"¶
→ Verificar l10n_br_codigo_servico no cadastro do produto
"O município está gerando campos extras/faltantes na NFS-e"¶
→ Verificar código IBGE do município emitente — há tratamentos específicos por município no código