Pular para conteúdo

Parceiros (Clientes e Fornecedores)

Objetivo

Documentar os campos e regras de negócio aplicados ao cadastro de parceiros brasileiros (res.partner), incluindo validações de documentos (CNPJ/CPF), endereçamento com município IBGE, integrações com APIs externas, e configurações fiscais específicas por parceiro.


Implementação Técnica

  • Model principal: res.partner (herança)
  • Arquivo: l10n_br_ciel_it_account/models/res_partner.py (linha 133)
  • Models auxiliares: ResAgencia, ResPartnerReferenciaComercial, ResPartnerBank, ResPartnerCNAE, ResPartnerQSA, PartnerDadosPagamento, PartnerFiscalTag

Campos Cadastrais

Documentos

Campo Tipo Descrição Validação
l10n_br_cnpj Char (indexed, tracked) CNPJ da empresa pycpfcnpj.cnpj.validate()
l10n_br_cpf Char (indexed, tracked) CPF da pessoa física pycpfcnpj.cpf.validate()
l10n_br_id_estrangeiro Char Identificação de estrangeiro
l10n_br_ie Char Inscrição Estadual
l10n_br_im Char Inscrição Municipal
l10n_br_is Char Inscrição Suframa
l10n_br_nire Char NIRE
l10n_br_crc Char CRC (Conselho Regional de Contabilidade)
l10n_br_razao_social Char (indexed, tracked) Razão social Auto-preenchido pelo nome
l10n_br_data_nascimento Date Data de nascimento (PF)

Indicadores Fiscais

Campo Tipo Descrição
l10n_br_indicador_ie Selection Contribuinte / Isento / Não Contribuinte / Estrangeiro
l10n_br_regime_tributario Selection Simples Nacional / Lucro Presumido / Lucro Real
l10n_br_situacao_cadastral Selection Situação cadastral na RFB
l10n_br_orgao_publico Selection Se é órgão público
l10n_br_compra_indcom Selection Destinação de uso: uso (padrão), industrialização, comercialização
l10n_br_inss_cprb Selection Contribuinte INSS Receita Bruta (CPRB)
l10n_br_icms_credito_aliquota Float Alíquota de crédito ICMS (Simples Nacional)

Endereço Brasileiro

Campo Tipo Descrição
l10n_br_endereco_numero Char Número do endereço
l10n_br_endereco_bairro Char Bairro
l10n_br_municipio_id Many2one Município IBGE (com filtro por UF)
l10n_br_consultar_cep Boolean Trigger para consulta automática de CEP

Mensagens Fiscais

Campo Tipo Descrição
l10n_br_mensagem_fiscal_01_id a _05_id Many2one Até 5 observações fiscais padrão por parceiro

Financeiro

Campo Tipo Descrição
l10n_br_receber_nfe Boolean Parceiro recebe NF-e por email
l10n_br_receber_boleto Boolean Parceiro recebe boleto (endereço pode diferir da NF)
payment_provider_id Many2one Forma de pagamento padrão
property_account_advance_payable_id Many2one Conta a pagar (Adiantamento)
property_account_advance_receivable_id Many2one Conta a receber (Adiantamento)
dados_pagamento_ids One2many Dados detalhados para pagamento (PIX, conta, etc.)

Valores Mínimos de Retenção

Campo Padrão Descrição
l10n_br_irpj_ret_valor R$ 10,00 Valor mínimo para reter IRPJ
l10n_br_csll_ret_valor R$ 1,00 Valor mínimo para reter CSLL
l10n_br_pis_ret_valor R$ 0,65 Valor mínimo para reter PIS
l10n_br_cofins_ret_valor R$ 3,00 Valor mínimo para reter COFINS

Marcadores Fiscais

Campo Tipo Descrição
fiscal_tag_ids Many2many Tags fiscais utilizadas em regras de operação

Imóvel Rural

Campo Tipo Descrição
l10n_br_inscricao_fiscal_imovel Char Inscrição fiscal do imóvel
l10n_br_codigo_cib Char Código CIB

Regras de Negócio

1. Validação de CNPJ/CPF

  • Controlada pelo parâmetro l10n_br_ciel_it_account.validar_cnpj_cpf
  • Quando ativo, os constrains _check_l10n_br_cnpj() e _check_l10n_br_cpf() impedem salvar documentos inválidos
  • A formatação é aplicada automaticamente nos métodos create() e write():
  • CNPJ: XX.XXX.XXX/XXXX-XX
  • CPF: XXX.XXX.XXX-XX

2. Verificação de Duplicidade

  • Controlada por l10n_br_ciel_it_account.validar_cnpj_cpf_duplicado:
  • "1" → Bloqueia CNPJ ou CPF duplicado
  • "2" → Bloqueia apenas se CNPJ e IE forem iguais (permite mesma empresa com IEs diferentes para filiais)
  • Aplica-se em create() e write()

3. Tipo de Pessoa

  • Ao marcar is_company = True, o CPF é limpo automaticamente
  • Ao marcar is_company = False, o CNPJ é limpo automaticamente
  • Se o parceiro é estrangeiro (country_id != BR), o indicador IE é setado para 9 (Não contribuinte)

4. Auto-preenchimento

  • O campo l10n_br_razao_social é preenchido automaticamente pelo name se estiver vazio (_onchange_name)
  • Ao trocar o l10n_br_municipio_id, o campo city e state_id são atualizados automaticamente
  • Ao trocar o state_id, se o município não pertence ao novo estado, ele é limpo

Integração: Consulta CNPJ (API CNPJA)

Configuração

  • Habilitar: l10n_br_ciel_it_account.consulta_cnpj_cnpja = "1"
  • Chave de API: l10n_br_ciel_it_account.chave_cnpj_cnpja

Método: _consulta_cnpj(cnpj, cpf, ie, uf, receita)

Arquivo: res_partner.py, linha 335

Fluxo

  1. Formata o CNPJ removendo pontuação
  2. Chama https://api.cnpja.com/rfb?taxId={CNPJ} com o header Authorization
  3. Preenche automaticamente:
  4. Razão social, fantasia
  5. Endereço completo (logradouro, número, bairro, CEP, UF, município)
  6. Situação cadastral
  7. Telefone e e-mail
  8. Natureza jurídica e capital social
  9. Cria registros de CNAE (atividade principal + secundárias) em res.partner.cnae
  10. Cria registros do QSA (quadro societário) em res.partner.qsa
  11. Baixa o Comprovante de Inscrição (PDF) como anexo (ir.attachment)
  12. Consulta se é Simples Nacional ou MEI via https://api.cnpja.com/simples?taxId={CNPJ}

Endpoints utilizados

Endpoint Método Finalidade
/rfb?taxId= GET Dados cadastrais completos
/rfb/certificate?taxId= GET Comprovante PDF do CNPJ
/simples?taxId= GET Opção pelo Simples/MEI

Integração: Consulta CEP

  • Biblioteca: brazilcep
  • Trigger: Campo l10n_br_consultar_cep no formulário
  • Preenche automaticamente: logradouro, bairro, cidade, estado, município IBGE

Models Auxiliares

ResAgencia (l10n_br.res.agencia)

Tabela de agências bancárias brasileiras.

ResPartnerReferenciaComercial

Referências comerciais do parceiro (nome, contato, telefone).

ResPartnerBank (herança res.partner.bank)

Campos adicionais para dados bancários brasileiros (ISPB, tipo de conta, agência).

ResPartnerCNAE

Campo Tipo Descrição
code Char Código CNAE
text Char Descrição da atividade
principal Boolean Se é atividade principal
partner_id Many2one Parceiro relacionado

ResPartnerQSA

Campo Tipo Descrição
qual Char Qualificação do sócio
nome Char Nome do sócio
pais_origem Char País de origem
nome_rep_legal Char Nome do representante legal
qual_rep_legal Char Qualificação do representante legal

PartnerDadosPagamento

Dados para pagamento do parceiro (conta, agência, chave PIX, etc.).

PartnerFiscalTag

Tags fiscais para uso em regras de operação e posições fiscais.


Cenários de Uso / Troubleshooting

1. "CNPJ duplicado, corrija o cadastro primeiro!"

  • Causa: Já existe outro parceiro com o mesmo CNPJ
  • Solução: Buscar o parceiro existente (incluindo arquivados com active_test=False)
  • Configuração: Desabilitar validação se necessário via l10n_br_ciel_it_account.validar_cnpj_cpf_duplicado = "0"

2. Consulta CNPJ não busca dados

  • Verificar: Parâmetro l10n_br_ciel_it_account.consulta_cnpj_cnpja está como "1"?
  • Verificar: Chave de API chave_cnpj_cnpja está configurada?
  • Verificar: O parceiro tem nome preenchido antes de consultar?

3. Indicador IE setado incorretamente

  • Causa: Para parceiros estrangeiros, o _onchange_l10n_br_country_id seta automaticamente para 9
  • Solução: Verificar o country_id do parceiro

Referências Cruzadas