Bem-vindo ao Portal NCM

Bem-vindo ao Portal NCM

Sistema de Validação de Tributação

Este portal foi desenvolvido para facilitar a validação e gerenciamento de NCM (Nomenclatura Comum do Mercosul) com conformidade tributária completa.

Validação NCM

Verifique a conformidade tributária de seus NCMs

Referências

Gerencie referências de tributação no Oracle

NCM Emp Categ ICMS D% ICMS F% Fora ST Fora Difal PIS% COFINS% IPI% BC PIS/COF ICMS Reduz MVA% UF Emis UF Dest ICMS Inter%
✓ Corretos

0

✗ Erros

0

Conformidade

0%

📊 Referências Oracle
⚠️ Nenhuma referência criada
Resultado da Busca 0
ℹ️ Nenhum resultado encontrado
Resultado IPI 0
NCM existente no Oracle: 0
Existem no MySQL: 0
Discrepâncias IPI: 0

Comparação PEC_CLASS_FISCAL → MySQL (registros existentes no MySQL)
Consultando MySQL + Oracle...
NCMs — Produtos Linx (Oracle) 0
NCM Produtos
Linx
Com Ref. Pendentes Regra MySQL Status
Comparando referências da matriz com o Portal Fiscal...
0 referência(s) 0 conforme(s) 0 divergente(s) 0 sem regra
NCM Rev. Cat. Tipo UF Origem Mono PIS/COF (Linx) Divergências (Linx → Portal) Status Ação
Comparando referências das filiais com a matriz...
0 ref. na matriz 0 OK 0 divergente(s) 0 faltante(s)
Revalidando referências pelo motor tributário...
0 referência(s) 0 OK 0 divergente(s)
Conferindo referências...
0 referência(s) 0 OK 0 divergente(s)
Validando monofásico no Linx e no Portal Scardua...
0 NCMs 0 Divergentes 0 OK
NCM Descrição Monofásico no Linx Monofásico no Portal Scardua Situação Ações

Documentação do Sistema NCM

Guia completo dos processos e fluxos de trabalho

📌 Visão Geral do Sistema
Objetivo

O Portal NCM é um sistema integrado para gerenciar, validar e manter a conformidade tributária de Nomenclaturas Comuns do Mercosul (NCM) em dois bancos de dados:

  • 🗄️ MySQL: Banco de Dados Base com padrões de tributação
  • 🗄️ Oracle: Sistema de Referências com regras por revenda/empresa
Arquitetura
Fluxo Geral:
SQL BASE (MySQL) ↔ VALIDAÇÃO ↔ REFERÊNCIAS (Oracle) ↔ CORREÇÕES
Funcionalidades Principais
🔍 Busca Localiza NCM em ambos os bancos (MySQL + Oracle)
✅ Validação Compara padrões base com referências criadas
🔧 Correção Atualiza referências no Oracle para conformidade
📊 Relatórios Gera resumos de conformidade tributária
🔍 Processo de Busca NCM
Novo Endpoint Unificado

O novo endpoint /api/buscar-ncm-completo/:ncm realiza busca integrada em ambos os bancos:

Fluxo de Busca
  1. Verificação de Entrada: Valida NCM com 8 dígitos
  2. Busca MySQL: Procura na tabela ncm
    • Critério: codigo_ncm = ?
    • Retorna: Dados de tributação base (ICMS, PIS, COFINS, IPI, etc.)
    • Se não encontrar: Marca como não encontrado mas continua
  3. Busca Oracle: Procura na tabela FAT_REF_NCM_COD_TRIB
    • Critério: NCM BETWEEN NCM_INICIAL AND NCM_FINAL
    • Retorna: Todas as referências que cobrem este NCM
    • Dados incluem: Empresa, Revenda, Categoria, UF, Tributação Específica
  4. Consolidação: Retorna objeto com dados de ambos os bancos
Resposta da API
{
  "ncm": "12345678",
  "busca": {
    "mysql": {
      "encontrado": true,
      "total": 3,
      "mensagem": "3 dados de tributação base encontrado(s)"
    },
    "oracle": {
      "encontrado": true,
      "total": 5,
      "mensagem": "5 referência(s) de tributação encontrada(s)"
    }
  },
  "mysql": [ /*dados base*/ ],
  "oracle": [ /*referências oracle*/ ],
  "status_geral": "ENCONTRADO"
}
Vantagens
✅ Mesmo que NCM não exista no MySQL, busca no Oracle
✅ Retorna informação clara do que foi encontrado
✅ Permite análise completa de tributação
📊 Referências Oracle
Tabela FAT_REF_NCM_COD_TRIB

Esta é a tabela principal que armazena as referências de tributação por faixa de NCM.

Colunas Principais
Campo Descrição Exemplo
EMPRESA Identificador da empresa (FK GER_EMPRESA) 1 (Scardua)
REVENDA Código da revenda/filial '01', '02'
NCM_INICIAL NCM inicial da faixa coberta 12345600
NCM_FINAL NCM final da faixa coberta 12345699
CATEGORIA Categoria de cliente (FK GER_CATEGORIA_CLIENTE) '01 - Consumidor'
TIPO_TRANSACAO Tipo de movimento (venda, etc) '2'
UF Estado de destino (FK GER_UF) 'MG', 'SP'
PCT_PIS / PCT_COFINS Percentual de impostos 2.30, 10.80
COD_TRIBUTACAO_ORI/DEST Código fiscal origem/destino (FK GER_CODIGO_TRIBUTACAO) 'T001', 'T002'
Hierarquia de Busca
Uma referência é selecionada quando:
1. NCM está dentro da faixa (NCM_INICIAL ≤ NCM ≤ NCM_FINAL)
2. E Empresa/Revenda combinados com Categoria e UF coincidem
✅ Processo de Validação
O que é Validação

A validação compara os padrões base (MySQL) com as referências criadas (Oracle) para verificar conformidade tributária.

Critérios de Validação
Para cada referência Oracle, o sistema valida:

1. Revenda existe? Busca em GER_REVENDA
2. Padrão existe? Busca na tabela MySQL pelo NCM
3. Dados coincidem? Compara tributação (PIS, COFINS, ICMS, etc)
Status de Validação
✓ CORRETO Referência Oracle conforme com padrão MySQL
⚠️ ALERTA Pequenas discrepâncias encontradas
✗ ERRO Referência não encontrada ou dados inconsistentes
Fluxo Detalhado
  1. Busca todas as referências Oracle para o NCM
  2. Para cada referência:
    • Valida se empresa/revenda existe
    • Busca padrão no MySQL com critérios: NCM + Categoria + Empresa + UF Origem + UF Destino
    • Se encontrar: Compara dados tributários
    • Se não encontrar: Registra como erro
  3. Computa resumo: Total ✓, ⚠️, ✗ e percentual de conformidade
🗂️ Banco de Dados
Estrutura MySQL

Tabela Principal: ncm

Armazena padrões base de tributação por NCM, categoria de cliente, empresa e estados.

codigo_ncm (PK)
├─ categoria_cliente
├─ empresa
├─ icms_dentro, icms_fora
├─ pis, cofins, ipi
├─ bc_pis_cof, bc_icms
├─ mva
├─ uf_emissor, uf_destino
├─ aliquota
├─ ativo
└─ data_modificado
Estrutura Oracle

Tabelas Relacionadas:

1. FAT_REF_NCM_COD_TRIB (Principal)
EMPRESA (FK GER_EMPRESA)
├─ REVENDA (FK GER_REVENDA)
├─ NCM_INICIAL, NCM_FINAL
├─ TIPO_TRANSACAO (FK FAT_TIPO_TRANSACAO)
├─ CATEGORIA (FK GER_CATEGORIA_CLIENTE)
├─ UF (FK GER_UF)
├─ COD_TRIBUTACAO_ORI (FK GER_CODIGO_TRIBUTACAO)
├─ COD_TRIBUTACAO_DEST (FK GER_CODIGO_TRIBUTACAO)
├─ CODFISCAL_OPERACAO (FK FAT_CODFISCAL_OPERACAO)
├─ PCT_PIS, PCT_COFINS
├─ PCT_MARGEM_LUCRO_NCM
├─ SITUACAO (FK VEI_SITUACAO)
└─ (outros campos de base e benefício fiscal)
2. Tabelas de Suporte
  • GER_EMPRESA: Empresas do grupo
  • GER_REVENDA: Revendas/filiais com UF
  • GER_CATEGORIA_CLIENTE: Categorias de clientes
  • GER_UF: Estados brasileiros
  • GER_CODIGO_TRIBUTACAO: Códigos de tributação
  • FAT_TIPO_TRANSACAO: Tipos de movimento
  • FAT_CODFISCAL_OPERACAO: CFOPs (Código Fiscal Operação)
  • VEI_SITUACAO: Status de validação
Mapeamento Empresa
MySQL Oracle
Comercial Scardua 1
Tração Fort 2
Porto Livre 3
🔎 Busca de Referências - NCM sem Cadastro
Funcionalidade Principal

A aba "Referências" permite buscar faixas de NCM criadas no Oracle que ainda não possuem cadastro na base MySQL.

Como Usar
  1. Selecionar Empresa (obrigatório): Escolha entre Comercial Scardua, Tração Fort ou Porto Livre
  2. Revenda (opcional): Filtrar por uma revenda específica
  3. Categoria do Cliente (opcional): Selecione uma categoria se quiser refinar a busca
  4. Operação (opcional): Filtrar por tipo de transação (P21, V21, etc)
  5. Clique em "Buscar NCM sem Cadastro" para executar a busca
Resultado da Busca

A tabela retorna faixas/ranges de NCM (não NCMs individuais), mostrando:

  • Range NCM: Faixa de NCM inicial até final (ex: 27100001 a 27109900)
  • Inicial/Final: Números que delimitam a faixa
  • Qtd. NCMs: Quantidade total de NCMs nessa faixa
  • Empresa/Revenda/Categoria: Informações do filtro
  • Status:
    • 🟢 Com Cadastro: Pelo menos um NCM da faixa existe no MySQL
    • 🔴 Sem Cadastro: Nenhum NCM da faixa foi encontrado no MySQL
📥 Exportar Resultados

O botão "Exportar Sem Cadastro" aparece quando há faixas sem cadastro encontradas. Clique para baixar um arquivo CSV com:

  • Todas as faixas que NÃO têm cadastro no MySQL
  • Informações completas (empresa, revenda, categoria, operação, UF)
  • Arquivo nomeado com timestamp: ncm-ranges-sem-cadastro-2026-03-16T14-35-20.csv
Fluxo de Dados
1. QUERY ORACLE (FAT_REF_NCM_COD_TRIB)
   ↓ Obtém faixas de NCM com filtros aplicados
   └─ Retorna: range(inicial, final), empresa, revenda, categoria, etc

2. QUERY MYSQL (tabela ncm)
   ↓ Busca todos os códigos registrados para a empresa
   └─ Retorna: lista de NCMs cadastrados

3. COMPARAÇÃO
   ↓ Verifica se pelo menos 1 NCM de cada range existe no MySQL
   ↓ Marca como: COM_CADASTRO (existe) ou SEM_CADASTRO (não existe)
   └─ Retorna: lista completa de ranges com status

4. APRESENTAÇÃO E EXPORTAÇÃO
   ↓ Exibe ranges em tabela interativa
   └─ Permite exportar ranges sem cadastro em CSV
Exemplo de Resposta
{
  "erro": false,
  "mensagem": "Encontrados 1 range(s) COM cadastro e 0 SEM cadastro",
  "filtros": {
    "empresa": "1",
    "revenda": "1",
    "categoria": "20",
    "operacao": "P21"
  },
  "total": 1,
  "com_cadastro": 1,
  "sem_cadastro": 0,
  "total_ncms": 9900,
  "resultado_ncm": [
    {
      "ncm_range": "27100001 a 27109900",
      "ncm_inicial": "27100001",
      "ncm_final": "27109900",
      "quantidade_ncm": 9900,
      "empresa": 1,
      "revenda": 1,
      "categoria": "20 - Grupo Scardua",
      "tipo_transacao": "P21",
      "uf": "MG",
      "status": "COM_CADASTRO",
      "amostra_encontrada": "27100001"
    }
  ]
}
⚠️ Observações Importantes
  • Ranges vs NCMs Individuais: O sistema retorna ranges (faixas) para melhor performance, não desempacotando cada NCM individual
  • Validação de Amostra: Para ranges grande, apenas os primeiros 10 NCMs são verificados para confirmar o status
  • Categoria Formatada: Categorias no MySQL incluem descrição (ex: "20 - Grupo Scardua"), então a busca usa LIKE no prefixo
  • Performance: Buscas com muitos filtros podem levar alguns segundos dependendo do volume de dados
💡 Dica: Esta documentação é dinâmica e é atualizada conforme novos processos são implementados.
Natureza de Operação
Código Descrição Calcula ICMS? Transações vinculadas Ações
Carregando...
Categoria de Cliente
Nome Descrição Códigos vinculados Ações
Carregando...
Configuração de CFOP

Define quais CFOPs aparecem na busca da Criação/Edição de Referência para cada combinação de Tipo de Transação + UF Destino + Categoria de Cliente + CST Destino (Trib. Destino já resolvida), listando explicitamente os códigos de CFOP desejados. Deixe "Qualquer" numa dimensão para ela valer para todos os valores (curinga). Sem nenhuma regra cadastrada para uma combinação, o sistema mostra todos os CFOPs sem restringir (a regra de UF Origem ≠ UF Destino → CFOP de fora do estado continua valendo sempre, independente desta configuração). A alíquota de ICMS não é cadastrada aqui — ela vem sempre do NCM do produto.

Tipo de Transação UF Destino Categoria CST Destino CFOP(s) Ativo Ações
Carregando...
CST que Sempre Repete

CST (2 dígitos) cuja família não tem variante "com redução de BC" aplicável (suspensão, diferimento, ICMS já retido por Substituição Tributária, outras). Quando a Trib. Origem escolhida tem um desses CST, a Trib. Destino sempre repete o mesmo código, mesmo que o NCM tenha redução de BC cadastrada no Portal.

CST Descrição Ativo Ações
Carregando...
CFOPs Disponíveis

Quais códigos de CFOP aparecem no seletor "CFOP(s)" da Configuração de CFOP acima — a descrição é buscada em tempo real no Oracle/Linx, não é cadastrada aqui. Cadastre só os códigos que fazem sentido oferecer; nenhum vem pré-configurado.

CFOP Ativo Ações
Carregando...
Tipos de Transação Disponíveis

Quais códigos de Tipo de Transação aparecem no seletor "Tipo de Transação" da Configuração de CFOP acima — a descrição é buscada em tempo real no Oracle/Linx. Cadastre só os códigos que fazem sentido oferecer; nenhum vem pré-configurado.

Tipo de Transação Ativo Ações
Carregando...
CST Origem x Destino

Regra fixa: a origem da mercadoria (dígito ORIGEM do código de tributação) da Trib. Origem precisa ser igual à da Trib. Destino. Esta tela liga ou desliga essa validação por código de origem — desative um código aqui se ele não deve ser validado.

Origem (CST) Descrição Validação Ativa Ações
Carregando...