Pular para conteúdo

Produtos

Objetivo

Documentar os campos fiscais obrigatórios para o cadastro de produtos no contexto da localização brasileira, incluindo classificação fiscal (NCM, CEST), configurações de impostos por produto, integração com o Siscomex DUIMP/CATP, e as tabelas auxiliares de NCM por UF para cálculo de ICMS/ICMS ST.


Implementação Técnica

  • Model principal: product.template (herança) — classe Product
  • Model variante: product.product (herança) — classe ProductProduct
  • Arquivo: l10n_br_ciel_it_account/models/product.py (linha 380)

Campos Fiscais do Produto (product.template)

Classificação Fiscal

Campo Tipo Descrição Obrigatório
l10n_br_tipo_produto Selection Tipo: Revenda, Matéria-prima, Acabado, Serviço, Consumível, Semi-acabado, Ativo Fixo Herda da categoria se vazio
l10n_br_origem Selection Origem da mercadoria (0=Nacional, 1=Estrangeira direta, 2=Estrangeira mercado interno, etc.)
l10n_br_ncm_id Many2one NCM (Nomenclatura Comum do Mercosul) — tabela l10n_br_ciel_it_account.ncm
l10n_br_grupo_id Many2one Grupo de produto brasileiro (l10n_br_ciel_it_account.product.group)
l10n_br_indescala Boolean (padrão: True) Indica se o produto é de escala relevante
l10n_br_cnpj_fabricante Char CNPJ do fabricante (obrigatório se escala não relevante)
l10n_br_fci Char (company_dependent) Código FCI (Ficha de Conteúdo de Importação) Para importados
l10n_br_fator_utrib Float (12,8) Fator de conversão para unidade tributável

Serviços

Campo Tipo Descrição
l10n_br_codigo_servico Char Código do serviço (LC 116)
l10n_br_codigo_tributacao_servico Char Código de tributação do serviço
l10n_br_codigo_nbs Char Código NBS (Nomenclatura Brasileira de Serviços)
l10n_br_exigibilidade_iss Selection Exigibilidade do ISS
l10n_br_natureza_iss Selection Natureza da tributação do serviço
l10n_br_material_aplicado_servico Boolean Material aplicado no serviço com dedução de ISS
l10n_br_infendobraimovel Selection Informar endereço da obra/imóvel: obra, imovel, ambos (obra+imóvel), nao (padrão). Com 'ambos', gera os dois blocos TX2 simultaneamente. Ver NFS-e TX2

Reforma Tributária (IBS/CBS) — Em Produção

Campo Tipo Descrição
l10n_br_codigo_operacao Char Indicador de operação IBS/CBS
l10n_br_classtrib_ibs_cbs Char Classificação Tributária IBS/CBS

ANVISA (Medicamentos)

Campo Tipo Descrição
l10n_br_farmaceutico Boolean Produto farmacêutico/medicamento
l10n_br_registro_anvisa Char Número de registro ANVISA
l10n_br_validade_processo_anvisa Date Validade do registro
l10n_br_preco_maximo_anvisa Float Preço Máximo ao Consumidor (PMC)
l10n_br_processo_anvisa Char Número do processo

ANP (Combustíveis)

Campo Tipo Descrição
l10n_br_registro_anp Boolean Produto com registro ANP
l10n_br_produto_anp Char Código de produto ANP

Energia/Gás

Campo Tipo Descrição
l10n_br_consumo_energia_gas Selection Tipo de consumo (Comercial, Industrial, Rural, etc.)
l10n_br_tipo_ligacao Selection Monofásico, Bifásico, Trifásico
l10n_br_grupo_tensao Selection Grupo de tensão (A1 a B4b)

ICMS ST Retido (Produto)

Campo Tipo Descrição
l10n_br_icmsst_retido_base Float Valor da base do ICMS ST retido
l10n_br_icmsst_retido_aliquota Float Alíquota suportada pelo consumidor final
l10n_br_icmsst_substituto_valor Float Valor do ICMS próprio do substituto
l10n_br_icmsst_retido_valor Float Valor do ICMS ST retido

REINF

Campo Tipo Descrição
l10n_br_reinf_01 Many2one Natureza do rendimento (Tabela REINF 01 — 280+ itens)
l10n_br_reinf_06 Selection Tipo de serviço (Tabela REINF 06 — 31 itens)

PIS/COFINS

Campo Tipo Descrição
l10n_br_nat_bc_cred Selection Natureza da base de crédito PIS/COFINS (18 opções: revenda, insumo, energia, etc.)

Outros

Campo Tipo Descrição
l10n_br_informacao_adicional Text Informações adicionais para inserção na NF
fiscal_tag_ids Many2many Marcadores fiscais do produto
weight Float Peso líquido
gross_weight Float (computed) Peso bruto (sincronizado com variante)
company_ids Many2many Empresas onde o produto é utilizado
invoices_count Float (computed) Quantidade faturada nos últimos 365 dias

Integração DUIMP/CATP (Siscomex)

Campos DUIMP no Produto

Campo Tipo Descrição
l10n_br_duimp_denominacao Char (120) Denominação do produto para DUIMP
l10n_br_duimp_descricao Text Detalhamento complementar
l10n_br_duimp_modalidade Selection IMPORTACAO (padrão) ou EXPORTACAO
duimp_attribute_value_ids One2many Atributos NCM para DUIMP
duimp_fabricante_ids One2many Fabricantes estrangeiros
duimp_catp_external_id Char (company_dependent) Código do produto no CATP
duimp_catp_last_sync_at Datetime Data/hora da última sincronização
duimp_catp_last_status Selection ok, failed, pending
duimp_catp_last_error Text Mensagem do último erro

Método: action_sync_catp()

  • Arquivo: product.py, linha 444
  • Ação: Envia/atualiza o produto no Portal Único Siscomex (CATP)
  • Fluxo: Instancia DuimpCatpClient → chama push_product(record)
  • Disponível em product.template e product.product

Método: _update_duimp_attributes()

  • Arquivo: product.py, linha 452
  • Ação: Pré-preenche os atributos DUIMP obrigatórios com base no NCM selecionado
  • Trigger: Automático via @api.onchange('l10n_br_ncm_id')
  • Lógica: Filtra atributos com modalidade == 'IMPORTACAO', cria linhas apenas para atributos que ainda não existem no produto

Models Auxiliares

ProductFiscalTag (l10n_br_ciel_it_account.product.fiscal.tag)

Tags fiscais para produtos. Constraint: nome único.

ProductCategory (herança product.category)

Campo adicional l10n_br_tipo_produto — define o tipo do produto na categoria (fallback quando o produto não define).

L10nBrProductGroup (l10n_br_ciel_it_account.product.group)

Agrupamento de produtos brasileiros. Constraint: nome único.

L10nBrIestUf (l10n_br_ciel_it_account.iest.uf)

Inscrição Estadual do Substituto Tributário por combinação UF Origem → UF Destino.

Campo Descrição
state_de_id UF de origem
state_para_id UF de destino
l10n_br_iest Inscrição Estadual ST

L10nBrNcmUf (l10n_br_ciel_it_account.ncm.uf)

Tabela de exceção de ICMS/ICMS ST por NCM + UF Origem + UF Destino.

Campo Descrição
l10n_br_ncm_id NCM
state_de_id / state_para_id UF origem / destino
l10n_br_fcp_aliquota Alíquota FCP (%)
l10n_br_icms_cst CST do ICMS
l10n_br_icms_modalidade_base Modalidade da BC ICMS
l10n_br_icms_reducao_base Redução da BC (%)
l10n_br_icms_aliquota Alíquota ICMS (%)
l10n_br_icmsst_* Todos os parâmetros de ICMS ST (MVA, alíquota, redução, modalidade, flags)
l10n_br_mensagem_fiscal_id Observação fiscal vinculada

L10nBrNcmOrigemUf (l10n_br_ciel_it_account.ncm.origem.uf)

Variante da tabela NCM/UF que também filtra por Origem da mercadoria (nacional/importada).

L10nBrNcmIeUf (l10n_br_ciel_it_account.ncm.ie.uf)

Variante da tabela NCM/UF que também filtra por Indicador de IE do parceiro + Origem.

L10nBrNcmClienteUf (l10n_br_ciel_it_account.ncm.cliente.uf)

Variante da tabela NCM/UF que filtra por clientes específicos (Many2many com res.partner).


Hierarquia de Determinação de ICMS

O motor de cálculo busca alíquotas de ICMS na seguinte ordem de prioridade:

1. NCM + Cliente + UF (ncm.cliente.uf)
    ↓ (não encontrou)
2. NCM + Indicador IE + Origem + UF (ncm.ie.uf)
    ↓ (não encontrou)
3. NCM + Origem + UF (ncm.origem.uf)
    ↓ (não encontrou)
4. NCM + UF (ncm.uf)
    ↓ (não encontrou)
5. Alíquota padrão da Operação Fiscal / Posição Fiscal

Regras de Negócio

1. Tipo do Produto

  • Se l10n_br_tipo_produto está vazio no produto, o sistema usa o l10n_br_tipo_produto da categoria do produto
  • O tipo determina qual conta contábil de estoque, receita e despesa será utilizada (configurado na empresa)

2. Peso Bruto

  • O campo gross_weight é sincronizado entre product.template e product.product
  • Para templates com uma única variante, o peso bruto da variante é usado

3. Contagem de Faturamento

  • invoices_count calcula o total faturado nos últimos 365 dias
  • Considera apenas faturas de cliente (out_invoice e out_refund) não canceladas/rascunho

Cenários de Uso / Troubleshooting

1. NCM não encontrado

  • Causa: A tabela de NCMs pode não estar atualizada
  • Solução: Importar dados atualizados via arquivos de dados ou sincronizar via CADA/Siscomex

2. ICMS ST incorreto

  • Causa: Faltam registros na tabela ncm.uf para a combinação NCM + UF
  • Solução: Cadastrar as exceções por UF na tela de NCM por UF

3. Sincronização CATP falhou

  • Verificar: Status em duimp_catp_last_status e erro em duimp_catp_last_error
  • Verificar: Configuração de autenticação Siscomex na empresa
  • Verificar: Atributos NCM obrigatórios estão preenchidos

4. FCI ausente em produto importado

  • Sintoma: Rejeição na NF-e para produtos importados
  • Causa: Campo l10n_br_fci não preenchido
  • Solução: Gerar a FCI via módulo SPED (ver SPED)

Referências Cruzadas