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%
Buscar Referências
Resultado da Busca 0
Consulta IPI
Lista todos os NCMs únicos registrados no Linx e indica se o NCM existe na tabela NCM do Mysql
Resultado IPI 0
Comparação PEC_CLASS_FISCAL → MySQL (registros existentes no MySQL)
Criação de Referência
| NCM | Produtos Linx |
Com Ref. | Pendentes | Regra MySQL | Status |
|---|
Análise de Referência da Matriz
Valida se as referências criadas nas empresas matrizes (3.1 e 1.1) estão em conformidade com o Portal Fiscal. Divergências podem ser corrigidas diretamente.
| NCM | Rev. | Cat. | Tipo | UF | Origem | Mono | PIS/COF (Linx) | Divergências (Linx → Portal) | Status | Ação |
|---|
Análise de Referências entre Filiais
Auditoria PIS/COFINS
Validar Monofásico
Compara o regime Monofásico de cada NCM entre o Linx (PEC_CLASS_FISCAL) e o Portal Scardua. Selecione a empresa para iniciar.
| 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
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
- Verificação de Entrada: Valida NCM com 8 dígitos
- 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 encontradomas continua
- Critério:
- 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
- Critério:
- 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
✅ 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
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
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
- Busca todas as referências Oracle para o NCM
- 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
- 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 grupoGER_REVENDA: Revendas/filiais com UFGER_CATEGORIA_CLIENTE: Categorias de clientesGER_UF: Estados brasileirosGER_CODIGO_TRIBUTACAO: Códigos de tributaçãoFAT_TIPO_TRANSACAO: Tipos de movimentoFAT_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
- Selecionar Empresa (obrigatório): Escolha entre Comercial Scardua, Tração Fort ou Porto Livre
- Revenda (opcional): Filtrar por uma revenda específica
- Categoria do Cliente (opcional): Selecione uma categoria se quiser refinar a busca
- Operação (opcional): Filtrar por tipo de transação (P21, V21, etc)
- 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