# PROC001 - Núcleo de validação e formatação de CNPJ
| **Projeto/Sistema:** GERENCIEAQUI - MIGRAÇÃO CNPJ ALFANUMERICO (NT 2026.004) | **Versão do *Template:*** 1.2 |
| **Processo:** PROC001 - Núcleo de validação e formatação de CNPJ | **Versão do Documento:** 1.0 |
| **Responsável(eis):** Luís Leite | **Data:** 05/01/2026 |
| **Processo** | **Envolvidos** | **Dados de Entrada** | **Dados de Saída** |
| PROC001 - Núcleo de validação e formatação de CNPJ | - | - | - |
| **Campo** | **Tipo** | **Tamanho** | **Obrig. ?** | **Máscara** | **Observações** |
| CNPJ (entrada) | Texto | 14 ou 18 | - | 99.999.999/9999-99 (legado) ou \*9.\*\*\*.\*\*\*/\*\*\*\*-99 (alfanumérico) | As 12 primeiras posições alfanuméricas A–Z e 0–9; as 2 últimas posições numéricas (DV). |
| CNPJ (armazenado) | Texto | 14 | Sim | - | Sempre em maiúsculas, sem pontuação. Coluna varchar(14) a varchar(20) já existente. |
| CNPJ (exibido) | Texto | 18 | N/A | XX.XXX.XXX/XXXX-XX | - |
| Dígitos Verificadores | Numérico | 2 | Sim | 99 | Calculado por módulo 11 com pesos 5,4,3,2,9,8,7,6,5,4,3,2 sobre (char-48). |
| **Arquivo : linha** | **Risco** | **Descrição / Ação** |
| util/datatypes/CnpjUtil.java : ~31 | Crítico | isValidSimple — trocar matches("\\d{14}") por padrão alfanumérico. |
| util/datatypes/CnpjUtil.java : ~35 | Crítico | clean — substituir replaceAll("\\D","") por replaceAll("\[^A-Za-z0-9\]","") + toUpperCase(). |
| util/datatypes/CnpjUtil.java : ~38–47 | Alto | format — usar regex genérica (.{2})(.{3})(.{3})(.{4})(.{2}). |
| validadores/ModValidador.java : ~179, 192 | Sem ação | charAt(i) - '0' já é o algoritmo oficial alfanumérico. |
| util/datatypes/CpfOrCnpjUtil.java : ~8–42 | Alto | Delega a CnpjUtil — herda correções. |
| util/CnpjUtil.java (legado @Deprecated) | Baixo | Tolerante a alfanumérico. Consolidar no util moderno. |
| util/ValidaCNPJ.java | Alto | Reescrever detecção CPF×CNPJ; aceitar alfanumérico 14 sem máscara e 18 com máscara. |
| test/.../CnpjUtilTest.java | Alto | Adicionar casos alfanuméricos válidos e inválidos. |