# CNPJ Alfanumérico

# PROC001 - Núcleo de validação e formatação de CNPJ

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
<span style="color: #000000;">[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)</span>

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">GERENCIEAQUI - MIGRAÇÃO CNPJ ALFANUMERICO (NT 2026.004)</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
<span style="color: #000000;">PROC001 - Núcleo de validação e formatação de CNPJ</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">Luís Leite</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">05/01/2026</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

<span style="color: #000000;">Este processo descreve a adaptação dos utilitários centrais de CNPJ do projeto GerencieAqui para suportar o CNPJ Alfanumérico previsto pela NT 2026.004 (Instrução Normativa RFB nº 2.229/2024), com entrada em produção em 01/07/2026.</span>  
<span style="color: #000000;">O CNPJ Alfanumérico mantém 14 caracteres, sendo as 12 primeiras posições alfanuméricas (letras maiúsculas A–Z e dígitos 0–9) e os 2 últimos dígitos verificadores numéricos. A máscara de exibição XX.XXX.XXX/XXXX-XX permanece inalterada. O cálculo dos DV usa o valor de cada caractere por ASCII menos 48 (módulo 11), o que já é implementado pelo ModValidador atual.</span>  
<span style="color: #000000;">Esta especificação é a FUNDAÇÃO de toda a migração todas as demais frentes (NF-e, NFC-e, CT-e, MDF-e, NFS-e, DCE, integrações, banco e front-end) reutilizam estes utilitários. A correção do núcleo deve ser a primeira entrega da iniciativa.</span>

##### <span style="color: #000000;">**2. Processo**</span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="border-style: solid; border-color: black;" width="27%"><span style="color: #000000;">PROC001 - Núcleo de validação e formatação de CNPJ</span>

</td><td style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">-</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">-</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">-</span>

</td></tr></tbody></table>

#### <span style="color: #000000;">**Processos Relacionados** </span>

- - - - - -

#### <span style="color: #000000;">**Especificação Funcional**</span>

- - - - - -

#### <span style="color: #000000;">**PROC001 - Núcleo de validação e formatação de CNPJ:**</span>

##### <span style="color: #000000;">***Descrição dos Campos:***</span>

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o" style="width: 843px;"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;" width="135"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">CNPJ (entrada)</span></span></span>

</td><td style="width: 102px; border-style: solid; border-color: black;" width="78"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Texto</span></span></span>

</td><td style="width: 88px; border-style: solid; border-color: black;" width="65"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">14 ou 18</span></span></span>

</td><td style="width: 165px; border-style: solid; border-color: black;" width="78"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">-</span></span></span>

</td><td style="width: 119px; border-style: solid; border-color: black;" width="117"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">99.999.999/9999-99 (legado) ou \*9.\*\*\*.\*\*\*/\*\*\*\*-99 (alfanumérico)</span></span></span>

</td><td style="width: 201px; border-style: solid; border-color: black;" width="193"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">As 12 primeiras posições alfanuméricas A–Z e 0–9; as 2 últimas posições numéricas (DV).</span></span></span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;" width="135"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">CNPJ (armazenado)</span></span></span>

</td><td style="width: 102px; border-style: solid; border-color: black;" width="78"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Texto</span></span></span>

</td><td style="width: 88px; border-style: solid; border-color: black;" width="65"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">14</span></span></span>

</td><td style="width: 165px; border-style: solid; border-color: black;" width="78"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Sim</span></span></span>

</td><td style="width: 119px; border-style: solid; border-color: black;" width="117"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">-</span></span></span>

</td><td style="width: 201px; border-style: solid; border-color: black;" width="193"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Sempre em maiúsculas, sem pontuação. Coluna varchar(14) a varchar(20) já existente.</span></span></span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;" width="135"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">CNPJ (exibido)</span></span></span>

</td><td style="width: 102px; border-style: solid; border-color: black;" width="78"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Texto</span></span></span>

</td><td style="width: 88px; border-style: solid; border-color: black;" width="65"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">18</span></span></span>

</td><td style="width: 165px; border-style: solid; border-color: black;" width="78"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">N/A</span></span></span>

</td><td style="width: 119px; border-style: solid; border-color: black;" width="117"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">XX.XXX.XXX/XXXX-XX</span></span></span>

</td><td style="width: 201px; border-style: solid; border-color: black;" width="193"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">-</span></span></span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;" width="135"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Dígitos Verificadores</span></span></span>

</td><td style="width: 102px; border-style: solid; border-color: black;" width="78"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Numérico</span></span></span>

</td><td style="width: 88px; border-style: solid; border-color: black;" width="65"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">2</span></span></span>

</td><td style="width: 165px; border-style: solid; border-color: black;" width="78"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Sim</span></span></span>

</td><td style="width: 119px; border-style: solid; border-color: black;" width="117"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">99</span></span></span>

</td><td style="width: 201px; border-style: solid; border-color: black;" width="193"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Calculado por módulo 11 com pesos 5,4,3,2,9,8,7,6,5,4,3,2 sobre (char-48).</span></span></span>

</td></tr></tbody></table>

##### <span style="color: #000000;">***Regras de Negócio:***</span>

<span style="color: #000000;">**1. Algoritmo de validação dos DV (mantido):** O cálculo permanece módulo 11 sobre os 12 primeiros caracteres, utilizando o valor (char-48) de cada posição: '0'→0 … '9'→9, 'A'→17 … 'Z'→42. ModValidador.java já realiza esta operação corretamente (linhas 179, 192).</span>  
<span style="color: #000000;">**2. Limpeza preservando letras**: CnpjUtil.clean (linha ~35) deve substituir replaceAll("\\D", "") por replaceAll("\[^A-Za-z0-9\]", "") e em seguida toUpperCase(). Isto preserva as letras do CNPJ alfanumérico e elimina a corrupção silenciosa do dado.</span>  
<span style="color: #000000;">**3. Padrão de validação simples:** CnpjUtil.isValidSimple (linha 31) deve trocar matches("\\d{14}") por matches("\[A-Z0-9\]{12}\[0-9\]{2}") sobre o valor limpo, e contemplar variação com máscara: matches("\[A-Z0-9\]{2}\\.\[A-Z0-9\]{3}\\.\[A-Z0-9\]{3}/\[A-Z0-9\]{4}-\[0-9\]{2}").</span>  
<span style="color: #000000;">**4. Formatação:** CnpjUtil.format (linhas ~38–47) deve usar replaceFirst("(.{2})(.{3})(.{3})(.{4})(.{2})", "$1.$2.$3/$4-$5") em vez de grupos \\d, suportando qualquer caractere.</span>  
<span style="color: #000000;">**5. Consolidação do util legado @Deprecated:** O CnpjUtil legado em util/CnpjUtil.java (com isCNPJValido / isCNPJ / imprimeCNPJ via charAt-48 e substring) é tecnicamente compatível com alfanumérico mas mantém duplicidade. </span>  
<span style="color: #000000;">**6. Caracteres repetidos:** A verificação matches("^(\\d)\\1\*$") em CnpjUtil.java (linha 16) já não casa com alfanumérico sem quebra. Avaliar estender para detectar também sequências repetidas de letras (ex.: AAAAAAAAAAAA00).</span>  
<span style="color: #000000;">**7. Desambiguação CPF × CNPJ em CpfOrCnpjUtil:** A distinção continua por comprimento (11 vs 14) sobre o valor limpo. Toda lógica que dependa de "ser numérico" para classificar precisa ser revista, um valor de 14 caracteres com letras é necessariamente CNPJ.</span>

##### <span style="color: #000000;">***Questões Técnicas:***</span>

<span style="color: #000000;">***1. Alterações:***</span>

<table cellpadding="7" cellspacing="0" id="bkmrk-arquivo-%3A-linha-risc" style="height: 393px;" width="818"><thead><tr style="height: 36px;"><td bgcolor="#acb9ca" style="width: 340.5px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">**Arquivo : linha**</span></span>

</td><td bgcolor="#acb9ca" style="width: 100.137px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">**Risco**</span></span>

</td><td bgcolor="#acb9ca" style="width: 368.562px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">**Descrição / Ação**</span></span>

</td></tr></thead><tbody><tr style="height: 59px;"><td style="width: 340.5px; border-style: solid; border-color: black; height: 59px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">util/datatypes/CnpjUtil.java : ~31</span></span>

</td><td style="width: 100.137px; border-style: solid; border-color: black; height: 59px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Crítico</span></span>

</td><td style="width: 368.562px; border-style: solid; border-color: black; height: 59px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">isValidSimple — trocar matches("\\d{14}") por padrão alfanumérico.</span></span>

</td></tr><tr style="height: 59px;"><td style="width: 340.5px; border-style: solid; border-color: black; height: 59px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">util/datatypes/CnpjUtil.java : ~35</span></span>

</td><td style="width: 100.137px; border-style: solid; border-color: black; height: 59px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Crítico</span></span>

</td><td style="width: 368.562px; border-style: solid; border-color: black; height: 59px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">clean — substituir replaceAll("\\D","") por replaceAll("\[^A-Za-z0-9\]","") + toUpperCase().</span></span>

</td></tr><tr style="height: 36px;"><td style="width: 340.5px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">util/datatypes/CnpjUtil.java : ~38–47</span></span>

</td><td style="width: 100.137px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Alto</span></span>

</td><td style="width: 368.562px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">format — usar regex genérica (.{2})(.{3})(.{3})(.{4})(.{2}).</span></span>

</td></tr><tr style="height: 36px;"><td style="width: 340.5px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">validadores/ModValidador.java : ~179, 192</span></span>

</td><td style="width: 100.137px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Sem ação</span></span>

</td><td style="width: 368.562px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">charAt(i) - '0' já é o algoritmo oficial alfanumérico.</span></span>

</td></tr><tr style="height: 36px;"><td style="width: 340.5px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">util/datatypes/CpfOrCnpjUtil.java : ~8–42</span></span>

</td><td style="width: 100.137px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Alto</span></span>

</td><td style="width: 368.562px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Delega a CnpjUtil — herda correções.</span></span>

</td></tr><tr style="height: 36px;"><td style="width: 340.5px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">util/CnpjUtil.java (legado @Deprecated)</span></span>

</td><td style="width: 100.137px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Baixo</span></span>

</td><td style="width: 368.562px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Tolerante a alfanumérico. Consolidar no util moderno.</span></span>

</td></tr><tr style="height: 59px;"><td style="width: 340.5px; border-style: solid; border-color: black; height: 59px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">util/ValidaCNPJ.java</span></span>

</td><td style="width: 100.137px; border-style: solid; border-color: black; height: 59px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Alto</span></span>

</td><td style="width: 368.562px; border-style: solid; border-color: black; height: 59px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Reescrever detecção CPF×CNPJ; aceitar alfanumérico 14 sem máscara e 18 com máscara.</span></span>

</td></tr><tr style="height: 36px;"><td style="width: 340.5px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">test/.../CnpjUtilTest.java</span></span>

</td><td style="width: 100.137px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Alto</span></span>

</td><td style="width: 368.562px; border-style: solid; border-color: black; height: 36px;"><span style="font-family: Arial, serif; color: #000000;"><span style="font-size: small;">Adicionar casos alfanuméricos válidos e inválidos.</span></span>

</td></tr></tbody></table>

<span style="color: #000000;">**2.** Mudança na base de dados: Nenhuma alteração de schema. Todas as colunas de CNPJ já comportam 14 caracteres alfanuméricos (varchar(14)–varchar(20)). </span>

<span style="color: #000000;">©SOFTEN SISTEMAS 2026</span># 1. Cadastros



# PROC002 - Cadastro de Nova Empresa

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
<span style="color: #000000;">[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)</span>

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">GERENCIEAQUI - MIGRAÇÃO CNPJ ALFANUMÉRICO (NT 2026.004)</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
PROC002 - Cadastro de Nova Empresa</td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">Luís Leite</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">25/05/2026</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

<span style="color: #000000;">Este processo descreve a adaptação do fluxo de cadastro inicial e do cadastro adicional de empresa pelo usuário logado ao CNPJ Alfanumérico (NT 2026.004).</span>

##### <span style="color: #000000;">**2. Processo** </span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" style="height: 93px; width: 100%;" width="100%"><tbody><tr style="height: 35px;" valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; height: 35px;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; height: 35px;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; height: 35px;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; height: 35px;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr style="height: 58px;" valign="top"><td style="border-style: solid; border-color: black; height: 58px;" width="27%">PROC002 - Cadastro de Nova Empresa

</td><td style="border-style: solid; border-color: black; height: 58px;" width="19%"><span style="font-size: small; color: #000000;">Usuário</span>

</td><td style="border-style: solid; border-color: black; height: 58px;" width="27%"><span style="color: #000000; font-size: small;">CNPJ Alfanumérico</span>

</td><td style="border-style: solid; border-color: black; height: 58px;" width="27%"><span style="color: #000000; font-size: small;">CNPJ Alfanumérico validado e cadastrado em banco.</span>

</td></tr></tbody></table>

#### <span style="color: #000000;">**Processos Relacionados** </span>

- - - - - -

<span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">PROC001 — Núcleo de validação e formatação de CNP  
</span></span></span>

#### <span style="color: #000000;">**Especificação Funcional**</span>

- - - - - -

#### <span style="color: #000000;">**PROC002 - Cadastro de Nova Empresa:**</span>

##### <span style="color: #000000;">***Protótipo de Tela:***</span>

<span style="color: #000000;">[![image-1779734202008.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779734202008.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779734202008.png)</span>

##### <span style="color: #000000;">***Descrição dos Campos:***</span>

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o" style="width: 843px;"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">CNPJ\*</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">14</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">Sim</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">***Regras de Interface:***</span>

<span style="color: #000000;">***1.Ajuste de validação:*** Conferir validação do campo para aceitar alfanumérico. Reaproveitar validações do PROC001 - Núcleo de validação de formatação de CNPJ </span>  
<span style="color: #000000;">***2. Normalização:*** Deve ser tratado para deixar todas as letras em caixa maior (maiúsculo) visando a padronização da informação.</span>

##### <span style="color: #000000;">***Regras de Negócio:***</span>

<span style="color: #000000;">**1. Validação tripla mantida:** O fluxo atual valida o CNPJ em três pontos (ajax onChange, novaEmpresa, EmpresaService.salvarNovaEmpresa) via CnpjUtil.isCnpjValidoSalvar. Como o util legado já usa charAt-48 e substring (tolerantes a alfanumérico), a validação funciona após a correção do PROC001.</span>

<span style="color: #000000;">**2. Unicidade global do CNPJ:** isDBContainCnpj (CnpjUtil:400) verifica via EmpresaDao.existsByCnpj se já há empresa cadastrada com o mesmo CNPJ. Bloqueia o cadastro com mensagem "Já existe uma empresa com esse CNPJ!". A collation default do MariaDB é case-insensitive — a normalização para maiúsculas elimina ambiguidades em comparações externas.</span>

<span style="color: #000000;">**3. Token A3 sensível à caixa:** Empresa.gerarTokenA3 (Empresa.java:736) faz gerarHash(cnpj + email, "SHA-256"). Como SHA-256 é sensível a caixa, o CNPJ DEVE ser gravado em maiúsculas — caso contrário, "ABC..." e "abc..." gerariam tokens diferentes e quebrariam a integração com certificado A3.</span>

##### <span style="color: #000000;">***Regras de Interface:***</span>

<span style="color: #000000;">**1. Mudança na base de dados:** Sem alteração. Coluna 'empresa'.'cnpj' é varchar(20).</span>

<span style="color: #000000;">©SOFTEN SISTEMAS 2026</span>

# PROC003 - Cadastro de Cliente e Fornecedor

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">GERENCIAMENTO DE PROJETOS</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
<span style="color: #000000;">Descrição Processo</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">-</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">05/01/2026</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

Este processo descreve a adaptação dos cadastros de Cliente e Fornecedor ao CNPJ Alfanumérico (NT 2026.004). Inclui o cadastro principal (tela de edição com aba de informações), o diálogo de cadastro rápido (dialogNovoCliente) e a listagem com filtro de busca. O fornecedor é representado pela mesma entidade Cliente.

##### <span style="color: #000000;">**2. Processo** </span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="border-style: solid; border-color: black;" width="27%">PROC003 - Cadastro de Cliente e Fornecedor

</td><td style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">Usuario</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-family: Arial, serif;"><span style="font-size: small;">CPF (11 dígitos) ou CNPJ alfanumérico (14 caracteres) — com ou sem máscara</span></span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-family: Arial, serif;"><span style="font-size: small;">Cliente/Fornecedor persistido com CPF/CNPJ normalizado em maiúsculas; listagem com filtro alfanumérico</span></span>

</td></tr><tr><td style="border-style: solid; border-color: black;">PROC003.1 - Listagem de Clientes e Fornecedores

</td><td style="border-style: solid; border-color: black;"><span style="font-size: small; color: #000000;"> </span>

</td><td style="border-style: solid; border-color: black;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Query de Consulta</span></span>

</td><td style="border-style: solid; border-color: black;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Retorno em Listagem em Tela</span></span>

</td></tr></tbody></table>

#### **Processos Relacionados** 

- - - - - -

<span style="font-family: Arial, serif;"><span style="font-size: small;">PROC001 — Núcleo de validação e formatação de CNPJ</span></span>

#### **Especificação Funcional**

- - - - - -

#### **PROC003 - Cadastro de Cliente e Fornecedor:**

##### ***Protótipo de Tela:***

[![image-1779736677797.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779736677797.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779736677797.png)

##### ***Descrição dos Campos:***

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o" style="width: 843px; height: 70px;"><tbody><tr style="height: 35px;" valign="top"><td bgcolor="#acb9ca" style="width: 167.997px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 101.989px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 87.9972px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 118.991px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 200.994px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr style="height: 35px;"><td style="width: 167.997px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">CPF/CNPJ</span>

</td><td style="width: 101.989px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">Texto</span>

</td><td style="width: 87.9972px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">11-14</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">Sim</span>

</td><td style="width: 118.991px; border-style: solid; border-color: black; height: 35px;">-

</td><td style="width: 200.994px; border-style: solid; border-color: black; height: 35px;"><span style="font-family: Arial, serif;"><span style="font-size: small;">11 dígitos = CPF (numérico); 14 caracteres = CNPJ (alfanumérico).</span></span>

</td></tr></tbody></table>

##### <span style="color: #000000;">***Regras de Interface:***</span>

<span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**1. Ajuste de validação:**</span></span><span style="font-family: Arial, serif;"><span style="font-size: small;"> Deve ser alterada a validação de campo para permitir informar alfanumérico. Reaproveita util/ValidaCNPJ.java (corrigido em PROC001).</span></span></span>

<span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**2. Caracteres especiais bloqueados:**</span></span><span style="font-family: Arial, serif;"><span style="font-size: small;"> Deve ser mantida validação para caracteres especiais como acentos, til e outras pontuações não esperadas. Apenas A–Z, 0–9 e os separadores . / - (estes apenas na máscara, removidos na gravação).</span></span></span>

<span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**3. Normalização para maiúsculas:**</span></span><span style="font-family: Arial, serif;"><span style="font-size: small;"> Tratar para que as letras sejam salvas em caixa maior (maiúsculo), normalizando a informação no banco e garantindo coerência em comparações case-sensitive.</span></span></span>

##### <span style="color: #000000;">***Regras de Negócio:***</span>

<span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**1. Consulta API:**</span></span><span style="font-family: Arial, serif;"><span style="font-size: small;"> A requisição à API de consulta de CNPJ deve ser feita enviando o CNPJ como campo alfanumérico, preservando letras na URL/payload.</span></span></span>

<span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**2. Detecção CPF × CNPJ por comprimento:**</span></span><span style="font-family: Arial, serif;"><span style="font-size: small;"> Continua por length() sobre o valor limpo: 11 = CPF (numérico); 14 = CNPJ (alfanumérico ou numérico).</span></span></span>

<span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**3. Verificação de duplicidade:**</span></span><span style="font-family: Arial, serif;"><span style="font-size: small;"> A normalização para maiúsculas garante que CNPJ alfanumérico digitado em caixa diferente não seja considerado duplicado.</span></span></span>

#### **PROC003.1 - Listagem de Clientes e Fornecedores:**

[![image-1779736989013.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779736989013.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779736989013.png)

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o-0"><tbody><tr style="height: 35px;" valign="top"><td bgcolor="#acb9ca" style="width: 167.997px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 101.989px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 87.9972px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 118.991px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 200.994px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr style="height: 35px;"><td style="width: 167.997px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">Busca</span>

</td><td style="width: 101.989px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">Texto</span>

</td><td style="width: 87.9972px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">-</span>

</td><td style="width: 165px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">-</span>

</td><td style="width: 118.991px; border-style: solid; border-color: black; height: 35px;">-

</td><td style="width: 200.994px; border-style: solid; border-color: black; height: 35px;">-

</td></tr></tbody></table>

##### <span style="color: #000000;">***Regras de Interface:***</span>

<span style="color: #000000;">***1.*** O campo de Busca deve ser alterado para realizar a consulta de CNPJ alfanumérico. Validar 3 caracteres ou mais para a busca.</span>

##### ***Questões Técnicas:***

<span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**1. Banco de dados:**</span></span><span style="font-family: Arial, serif;"><span style="font-size: small;"> O campo 'empresa'.'cnpj' no banco de dados já é definido como VARCHAR(20), não necessitando mudanças.</span></span></span>

<span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**2. Query de busca:** O campo</span></span><span style="font-family: Arial, serif;"><span style="font-size: small;"> usa LIKE compatível com texto alfanumérico. Normalizar o termo de busca para maiúsculas antes de aplicar.</span></span></span>

©SOFTEN SISTEMAS 2026

# PROC004 - Cadastro de Vendedor

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
<span style="color: #000000;">[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)</span>

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
GERENCIEAQUI - MIGRAÇÃO CNPJ ALFANUMÉRICO (NT 2026.004)</td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
<span style="color: #000000;">PROC004 - Cadastro de Vendedor</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">Luís Leite</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">26/05/2026</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

Este processo descreve a adaptação do cadastro de Vendedor ao CNPJ Alfanumérico (NT 2026.004). Cobre o cadastro principal, o cadastro rápido e a listagem com filtro de busca.

##### <span style="color: #000000;">**2. Processo** </span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" style="width: 100%;" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 27%;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 19%;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 27%;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 27%;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="border-style: solid; border-color: black; width: 27%;" width="27%"><span style="color: #000000;">PROC004 - Cadastro de Vendedor</span>

</td><td style="border-style: solid; border-color: black; width: 19%;" width="19%">Usuário

</td><td style="border-style: solid; border-color: black; width: 27%;" width="27%">CPF (11 dígitos) ou CNPJ alfanumérico (14 caracteres), com ou sem máscara.

</td><td style="border-style: solid; border-color: black; width: 27%;" width="27%">Vendedor cadastrado em banco com CPF/CNPJ normalizado em maiúsculas.

</td></tr><tr><td style="border-style: solid; border-color: black; width: 27%;"><span style="color: #000000;">PROC004.1 - Listagem de Vendedor</span>

</td><td style="width: 19%; border-style: solid; border-color: black;"></td><td style="width: 27%; border-style: solid; border-color: black;">Query de Consulta

</td><td style="width: 27%; border-style: solid; border-color: black;">Retorno em Listagem em Tela

</td></tr></tbody></table>

#### <span style="color: #000000;">**Processos Relacionados** </span>

- - - - - -

<span style="font-family: Arial, serif;"><span style="font-size: small;">PROC001 — Núcleo de validação e formatação de CNPJ</span></span>

#### <span style="color: #000000;">**Especificação Funcional**</span>

- - - - - -

#### <span style="color: #000000;">**PROC004 - Cadastro de Vendedor**</span>

##### <span style="color: #000000;">***Protótipo de Tela:***</span>

<span style="color: #000000;">[![image-1779800202227.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779800202227.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779800202227.png)</span>

##### <span style="color: #000000;">***Descrição dos Campos:***</span>

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o" style="width: 843px;"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">CPF / CNPJ \*</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">20</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">Sim</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">***Regras de Interface:***</span>

<span style="color: #000000;">**1. Ajuste de validação**: Deve ser alterada a validação de campo para permitir informar alfanumérico. Reaproveita util/ValidaCNPJ.java (corrigido em PROC001). </span>  
<span style="color: #000000;">**2. Caracteres especiais bloqueados:** Deve ser mantida validação para caracteres especiais como acentos, til e outras pontuações não esperadas. </span>  
<span style="color: #000000;">**3. Normalização para maiúsculas:** Tratar para que as letras sejam salvas em caixa maior (maiúsculo), normalizando a informação no banco.</span>

#### <span style="color: #000000;">**PROC004.1 - Listagem de Vendedor**</span>

##### <span style="color: #000000;">***Protótipo de Tela:***</span>

<span style="color: #000000;">[![image-1779800352801.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779800352801.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779800352801.png)</span>

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o-0" style="width: 843px;"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Busca</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">***Regras de Interface:***</span>

<span style="color: #000000;">***1.*** O campo de Busca deve ser alterado para realizar a consulta de CNPJ alfanumérico. Validar 3 caracteres ou mais para a busca.</span>

##### <span style="color: #000000;">***Questões Técnicas:***</span>

<span style="color: #000000;">***1.*** O campo 'vendedor'.'cnpj' no banco de dados já é definido como VARCHAR(20), não necessitando mudanças.</span>

<span style="color: #000000;">**2. Query de Busca:** Usa LIKE compatível com alfanumérico. Normalizar para maiúsculas para a consulta.</span>

<span style="color: #000000;">©SOFTEN SISTEMAS 2026</span>

# 2. Fiscal - NFe



# PROC005 - Ajustes Chave de Acesso Alfanumérica NF-e e NFC-e

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
<span style="color: #000000;">[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)</span>

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">GERENCIAMENTO DE PROJETOS</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
<span style="color: #000000;">Descrição Processo</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">-</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">05/01/2026</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

<span style="color: #000000;">**Este processo visa exemplificar a documentação padrão**</span>

##### <span style="color: #000000;">**2. Processo (adicionar fluxograma exemplo)**</span>

<span style="color: #000000;">[![image-1724162109370.png](https://docs.softensistemas.com.br/uploads/images/gallery/2024-08/scaled-1680-/image-1724162109370.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2024-08/image-1724162109370.png)</span>

<span style="color: #000000;">I - Fluxograma Exemplo</span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">Processo</span>

</td><td style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">N/A</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">N/A</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">N/A</span>

</td></tr></tbody></table>

#### <span style="color: #000000;">**Processos Relacionados** </span>

- - - - - -

<span style="color: #000000;">Documentação Exemplo 1 </span>  
  
<span style="color: #000000;">Documentação Exemplo 2</span>

#### <span style="color: #000000;">**Especificação Funcional**</span>

- - - - - -

#### <span style="color: #000000;">**PROC005 - Ajustes Chave de Acesso Alfanumérica NF-e e NFC-e:**</span>

##### <span style="color: #000000;">***Regras de Negócio:***</span>

<span style="color: #000000;">**1. Estrutura da chave de acesso (44 caracteres):** A chave é composta por 9 blocos concatenados: UF(2) + AAMM(4) + CNPJ emitente(14) + modelo(2) + série(3) + número da nota(9) + tipo de emissão(1) + código numérico aleatório(8) + DV(1). Apenas o bloco do CNPJ pode conter letra, os demais blocos permanecem numéricos.</span>

<span style="color: #000000;">**1.1 Exemplo de chave NUMÉRICA legada (referência):** Para CNPJ numérico 12.345.678/0001-95 emitindo NF-e em SP (UF=35) em julho/2026, modelo 55, série 1, nota 123, tipo emissão normal (1), código 12345678 — a chave fica: 35 2607 12345678000195 55 001 000000123 1 12345678 + DV. Resultado: 35260712345678000195550010000001231123456786 (DV=6 calculado).</span>

<span style="color: #000000;">**1.2. Exemplo de chave ALFANUMÉRICA nova:** Para o mesmo cenário mas com CNPJ alfanumérico oficial 12.ABC.345/01DE-35 (publicado pela RFB como exemplo), a chave fica: 35 2607 12ABC34501DE35 55 001 000000123 1 12345678 + DV. Resultado: 35260712ABC34501DE3555001000000123112345678 + DV. O DV é calculado pelo mesmo algoritmo, agora considerando os valores ASCII das letras.</span>

<span style="color: #000000;">**2. DV da chave gerado localmente (não pela lib):** O dígito verificador da chave de acesso (44º caractere) é calculado pelo próprio projeto antes de enviar para a SEFAZ. A biblioteca de comunicação fiscal apenas recebe a chave já pronta. O algoritmo de cálculo (módulo 11 sobre os 43 caracteres anteriores, usando ASCII menos 48 para cada caractere) já é compatível com o formato alfanumérico.</span>

<span style="color: #000000;">**2.1 Calculo:** <span lang="PT-BR">Serão utilizados, no cálculo do módulo 11, os </span><span lang="PT-BR">valores relativos a letras maiúsculas da tabela código ASCII, como solução para unificar a representação de caracteres alfanuméricos.</span></span>

<span style="color: #000000;"><span lang="PT-BR">**2.2** </span><span lang="PT-BR">Na rotina de cálculo do Dígito Verificador (DV) no CNPJ, serão substituídos os valores numéricos e alfanuméricos pelo valor decimal correspondente ao código constante na tabela ASCII e dele subtraído o valor 48. Desta forma os caracteres numéricos continuarão com os mesmos montantes, e os caracteres alfanuméricos terão os seguintes valores: A=17, B=18, C=19… e assim sucessivamente. </span></span>

<table border="1" class="align-center" id="bkmrk-caractere-ascii-valo" style="border-collapse: collapse; width: 75.0617%; height: 854px;"><tbody><tr><th style="width: 33.3333%;"><span style="color: #000000;">Caractere</span></th><th style="width: 33.3333%;"><span style="color: #000000;">ASCII</span></th><th style="width: 33.3333%;"><span style="color: #000000;">Valor no cálculo</span></th></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'0'` a `'9'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">48–57</span></td><td style="width: 33.3333%;"><span style="color: #000000;">0 a 9</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'A'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">65</span></td><td style="width: 33.3333%;"><span style="color: #000000;">**17**</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'B'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">66</span></td><td style="width: 33.3333%;"><span style="color: #000000;">18</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'C'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">67</span></td><td style="width: 33.3333%;"><span style="color: #000000;">19</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'D'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">68</span></td><td style="width: 33.3333%;"><span style="color: #000000;">20</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'E'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">69</span></td><td style="width: 33.3333%;"><span style="color: #000000;">21</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'F'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">70</span></td><td style="width: 33.3333%;"><span style="color: #000000;">22</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'G'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">71</span></td><td style="width: 33.3333%;"><span style="color: #000000;">23</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'H'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">72</span></td><td style="width: 33.3333%;"><span style="color: #000000;">24</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'I'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">73</span></td><td style="width: 33.3333%;"><span style="color: #000000;">25</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'J'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">74</span></td><td style="width: 33.3333%;"><span style="color: #000000;">26</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'K'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">75</span></td><td style="width: 33.3333%;"><span style="color: #000000;">27</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'L'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">76</span></td><td style="width: 33.3333%;"><span style="color: #000000;">28</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'M'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">77</span></td><td style="width: 33.3333%;"><span style="color: #000000;">29</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'N'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">78</span></td><td style="width: 33.3333%;"><span style="color: #000000;">30</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'O'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">79</span></td><td style="width: 33.3333%;"><span style="color: #000000;">31</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'P'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">80</span></td><td style="width: 33.3333%;"><span style="color: #000000;">32</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'Q'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">81</span></td><td style="width: 33.3333%;"><span style="color: #000000;">33</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'R'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">82</span></td><td style="width: 33.3333%;"><span style="color: #000000;">34</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'S'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">83</span></td><td style="width: 33.3333%;"><span style="color: #000000;">35</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'T'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">84</span></td><td style="width: 33.3333%;"><span style="color: #000000;">36</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'U'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">85</span></td><td style="width: 33.3333%;"><span style="color: #000000;">37</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'V'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">86</span></td><td style="width: 33.3333%;"><span style="color: #000000;">38</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'W'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">87</span></td><td style="width: 33.3333%;"><span style="color: #000000;">39</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'X'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">88</span></td><td style="width: 33.3333%;"><span style="color: #000000;">40</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'Y'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">89</span></td><td style="width: 33.3333%;"><span style="color: #000000;">41</span></td></tr><tr><td style="width: 33.3333%;"><span style="color: #000000;">`'Z'`</span></td><td style="width: 33.3333%;"><span style="color: #000000;">90</span></td><td style="width: 33.3333%;"><span style="color: #000000;">**42**</span></td></tr></tbody></table>

<span style="color: #000000;">**1.3** O calculo do DV chave de acesso deverá ser feito considerando o valor ASCII das letras do CNPJ contidos na chave, **ATUALMENTE O SISTEMA JÁ APLICARIA ESSE ALGORITMO.**   
Exemplo de chave:</span>

<table border="1" class="align-center" id="bkmrk-chave-alfanum%C3%89rica%3A-" style="border-collapse: collapse; width: 86.4197%; height: 379px;"><tbody><tr style="height: 29px;"><th colspan="4" style="width: 100%; height: 29px;"><span style="color: #000000;">**CHAVE ALFANUMÉRICA: 35260712ABC34501DE3555001000000123112345678**</span></th></tr><tr style="height: 29px;"><th style="width: 25%; height: 29px;"><span style="color: #000000;">Bloco</span></th><th style="width: 25%; height: 29px;"><span style="color: #000000;">Tam</span></th><th style="width: 25%; height: 29px;"><span style="color: #000000;">Valor</span></th><th style="width: 25%; height: 29px;"><span style="color: #000000;">Significado</span></th></tr><tr style="height: 30px;"><td style="width: 25%; height: 30px;"><span style="color: #000000;">cUF</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">2</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">`35`</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">São Paulo</span></td></tr><tr style="height: 30px;"><td style="width: 25%; height: 30px;"><span style="color: #000000;">AAMM</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">4</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">`2607`</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">Julho/2026</span></td></tr><tr style="height: 63px;"><td style="width: 25%; height: 63px;"><span style="color: #000000;">CNPJ emitente</span></td><td style="width: 25%; height: 63px;"><span style="color: #000000;">14</span></td><td style="width: 25%; height: 63px;"><span style="color: #000000;">`12ABC34501DE35`</span></td><td style="width: 25%; height: 63px;"><span style="color: #000000;">CNPJ alfanumérico (sem pontuação, em maiúsculas)</span></td></tr><tr style="height: 30px;"><td style="width: 25%; height: 30px;"><span style="color: #000000;">mod</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">2</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">`55`</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">NF-e</span></td></tr><tr style="height: 46px;"><td style="width: 25%; height: 46px;"><span style="color: #000000;">série</span></td><td style="width: 25%; height: 46px;"><span style="color: #000000;">3</span></td><td style="width: 25%; height: 46px;"><span style="color: #000000;">`001`</span></td><td style="width: 25%; height: 46px;"><span style="color: #000000;">Série 1 (preenchida com zeros à esquerda)</span></td></tr><tr style="height: 46px;"><td style="width: 25%; height: 46px;"><span style="color: #000000;">nNF</span></td><td style="width: 25%; height: 46px;"><span style="color: #000000;">9</span></td><td style="width: 25%; height: 46px;"><span style="color: #000000;">`000000123`</span></td><td style="width: 25%; height: 46px;"><span style="color: #000000;">Nota nº 123 (zeros à esquerda)</span></td></tr><tr style="height: 30px;"><td style="width: 25%; height: 30px;"><span style="color: #000000;">tpEmis</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">1</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">`1`</span></td><td style="width: 25%; height: 30px;"><span style="color: #000000;">Emissão normal</span></td></tr><tr style="height: 46px;"><td style="width: 25%; height: 46px;"><span style="color: #000000;">cNF</span></td><td style="width: 25%; height: 46px;"><span style="color: #000000;">8</span></td><td style="width: 25%; height: 46px;"><span style="color: #000000;">`12345678`</span></td><td style="width: 25%; height: 46px;"><span style="color: #000000;">Código numérico aleatório da nota</span></td></tr></tbody></table>

<span style="color: #000000;">**1.3.1** Aplicado pesos cíclicos `2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9...` da direita para a esquerda.</span>

<span style="color: #000000;">**1.3.2 Soma dos produtos (por blocos para conferência):**</span>

- - - - - <span style="color: #000000;">Posições 1–8 (cUF + AAMM + parte do CNPJ): `12+15+4+54+0+49+6+10` = **150**</span>
                - <span style="color: #000000;">Posições 9–16 (CNPJ — bloco com `A B C`): `68+54+38+27+32+35+0+5` = **259**</span>
                - <span style="color: #000000;">Posições 17–24 (CNPJ `D E` + mod + série + início nNF): `80+63+6+45+40+35+0+0` = **269**</span>
                - <span style="color: #000000;">Posições 25–32 (nNF): `4+0+0+0+0+0+0+5` = **9**</span>
                - <span style="color: #000000;">Posições 33–40 (tpEmis + parte do cNF): `8+9+2+9+16+21+24+25` = **114**</span>
                - <span style="color: #000000;">Posições 41–43 (final do cNF): `24+21+16` = **61**</span>
                - <span style="color: #000000;">**Total = 862**</span>
                - <span style="color: #000000;">Aplicado módulo 11 = 862 / 11 = 78 (**resto 4, porque 78 x 11 = 858 e 862 - 858 = 4**). </span>
                - <span style="color: #000000;">Resto = **4**</span>
                - <span style="color: #000000;">**Como o resto foi acima de 1, DV = 11-4=7**.</span>

<span style="color: #000000;">**2. Composição da chave preservando letras:** Hoje a composição da chave aplica uma rotina que apaga letras do CNPJ antes de concatená-lo. Essa rotina precisa ser substituída por uma que preserve A-Z e 0-9, removendo apenas pontuação. Após a correção, o CNPJ alfanumérico entra na chave inteira e o DV sai correto automaticamente.</span>

##### <span style="color: #000000;">***Questões Técnicas:***</span>

<span style="color: #000000;">***1.*** A coluna 'nfe'.'chaveAcesso' esta como VARCHAR(255), não sendo necessário ajuste em banco.</span>

<span style="color: #000000;">**2. Arquivos a alterar da composição da chave - Pontos críticos da montagem da chave:**</span>

<table border="1" id="bkmrk-arquivo-%3A-linha-risc" style="border-collapse: collapse; width: 100%;"><tbody><tr><td bgcolor="#acb9ca" style="width: 37.9012%; border-style: solid; border-color: black;" width="318"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Arquivo : linha**</span></span></span>

</td><td bgcolor="#acb9ca" style="width: 14.4445%; border-style: solid; border-color: black;" width="53"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Risco**</span></span></span>

</td><td bgcolor="#acb9ca" style="width: 50.8642%; border-style: solid; border-color: black;" width="337"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">**Descrição / Ação**</span></span></span>

</td></tr><tr><td style="width: 37.9012%; border-style: solid; border-color: black;" width="318"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">adapters/xml/nfe/EnvioNfeAdapter.java : 29</span></span></span>

</td><td style="width: 14.4445%; border-style: solid; border-color: black;" width="53"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Crítico</span></span></span>

</td><td style="width: 50.8642%; border-style: solid; border-color: black;" width="337"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">CpfOrCnpjUtil.clean(empresa.getCnpj()) — herda correção de PROC001 (clean preserva letras).</span></span></span>

</td></tr><tr><td style="width: 37.9012%; border-style: solid; border-color: black;" width="318"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">adapters/xml/nfe/EnvioNfeAdapter.java : 46</span></span></span>

</td><td style="width: 14.4445%; border-style: solid; border-color: black;" width="53"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Sem ação</span></span></span>

</td><td style="width: 50.8642%; border-style: solid; border-color: black;" width="337"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">ModValidador.of(11, value, value.length(), 4).calc() — algoritmo já compatível.</span></span></span>

</td></tr><tr><td style="width: 37.9012%; border-style: solid; border-color: black;" width="318"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">adapters/xml/nfce/EnvioNfceAdapter.java : 36, 53</span></span></span>

</td><td style="width: 14.4445%; border-style: solid; border-color: black;" width="53"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Crítico/Sem ação</span></span></span>

</td><td style="width: 50.8642%; border-style: solid; border-color: black;" width="337"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Mesma estrutura do NFe — herda PROC001.</span></span></span>

</td></tr><tr><td style="width: 37.9012%; border-style: solid; border-color: black;" width="318"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">util/NFCeUtil.java : 145, 151</span></span></span>

</td><td style="width: 14.4445%; border-style: solid; border-color: black;" width="53"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Crítico</span></span></span>

</td><td style="width: 50.8642%; border-style: solid; border-color: black;" width="337"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">lpadTo(cnpjCpf.replaceAll("\\D",""), 14, '0') — substituir limpeza por uma que preserve letras.</span></span></span>

</td></tr><tr><td style="width: 37.9012%; border-style: solid; border-color: black;" width="318"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">adapters/xml/nfe/NfeAdapter.java : 67</span></span></span>

</td><td style="width: 14.4445%; border-style: solid; border-color: black;" width="53"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Sem ação</span></span></span>

</td><td style="width: 50.8642%; border-style: solid; border-color: black;" width="337"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Apenas extrai o DV via chaveAcesso.substring(chaveAcesso.length() - 1) — agnóstico.</span></span></span>

</td></tr><tr><td style="width: 37.9012%; border-style: solid; border-color: black;" width="318"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">validadores/ModValidador.java : 179, 192</span></span></span>

</td><td style="width: 14.4445%; border-style: solid; border-color: black;" width="53"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">Sem ação</span></span></span>

</td><td style="width: 50.8642%; border-style: solid; border-color: black;" width="337"><span style="color: #000000;"><span style="font-family: Arial, serif;"><span style="font-size: small;">char - '0' é o algoritmo oficial alfanumérico.</span></span></span>

</td></tr></tbody></table>

<span style="color: #000000;">©SOFTEN SISTEMAS 2026</span>

# PROC005.1 - Ajustes em Preenchimentos em Tela

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
<span style="color: #000000;">[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)</span>

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">GERENCIAMENTO DE PROJETOS</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
PROC005.1 - Ajustes em Preenchimentos em Tela</td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">Luís Leite</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">27/05/2026</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

<span style="color: #000000;">**Este processo visa exemplificar a documentação padrão**</span>

##### <span style="color: #000000;">**2. Processo**</span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="border-style: solid; border-color: black;" width="27%"><span style="color: #000000;">PROC005.1.1 - NFE - Ajustes em Preenchimentos em Tela - Referenciar Documento</span>

</td><td style="border-style: solid; border-color: black;" width="19%"></td><td style="border-style: solid; border-color: black;" width="27%"></td><td style="border-style: solid; border-color: black;" width="27%"></td></tr><tr><td style="border-style: solid; border-color: black;"><span style="color: #000000;">PROC005.1.2 - NFE - Ajustes em Preenchimentos em Tela - Imposto por Produto</span>

<span style="color: #000000;"> </span>

</td><td style="border-style: solid; border-color: black;"><span style="font-size: small; color: #000000;"> </span>

</td><td style="border-style: solid; border-color: black;"><span style="font-size: small; color: #000000;"> </span>

</td><td style="border-style: solid; border-color: black;"><span style="font-size: small; color: #000000;"> </span>

</td></tr></tbody></table>

#### <span style="color: #000000;">**Processos Relacionados** </span>

- - - - - -

<span style="color: #000000;">Documentação Exemplo 1 </span>  
  
<span style="color: #000000;">Documentação Exemplo 2</span>

#### <span style="color: #000000;">**Especificação Funcional**</span>

- - - - - -

#### <span style="color: #000000;">**PROC005.1.1 - NFE - Ajustes em Preenchimentos em Tela - Referenciar Documento:**</span>

##### <span style="color: #000000;">***Tela:***</span>

<span style="color: #000000;">[![image-1779888970031.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779888970031.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779888970031.png)</span>

Imagem I - Chave NFe Referenciada.

<span style="color: #000000;">[![image-1779889017911.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779889017911.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779889017911.png)</span>

<span style="color: #000000;">Imagem II - Chave NFe Referenciada de antecipação de pagamento.</span>

<span style="color: #000000;">[![image-1779889207759.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779889207759.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779889207759.png)</span>

<span style="color: #000000;">Imagem III - NF-e de Produtor Rural.</span>

##### <span style="color: #000000;">***Descrição dos Campos:***</span>

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o" style="width: 843px;"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Chave Nota (Ref NF-e)</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">44</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">CNPJ/CPF Emitente\*</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">14</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">Sim</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">***Regras de Interface:***</span>

<span style="color: #000000;">***1. Chave Nota (Ref NF-e):*** Deve ser alterado para permitir o uso de alfanumérico. Atualmente existe tratamento para limpar a chave caso existam valores incorretos para a validação atual. Manter normalização para remoção de espaços e caracteres especiais. Normalizar para caixa alta as letras inseridas.  
***2. CNPJ/CPF Emitente\*:*** Conferir validação do campo para aceitar alfanumérico. Reaproveitar validações do PROC001 - Núcleo de validação de formatação de CNPJ</span>

<span style="color: #000000;">***2.1. Normalização:*** Deve ser tratado para deixar todas as letras em caixa alta(maiúsculo) visando a padronização da informação.</span>

##### <span style="color: #000000;">***Regras de Negócio:***</span>

<span style="color: #000000;">***1. Chave Nota (Ref NF-e):*** A chave de acesso passa por validação de DV. Manter a validação de chave vazia e 44 digitos. O tratamento para caixa maior visa manter a validação do DV.</span>

<span style="color: #000000;">**1.1. Mapeamento de valores para o cálculo (ASCII menos 48):** Cada caractere da chave entra no cálculo do DV com seu valor ASCII menos 48: dígitos '0' a '9' valem 0 a 9 (como sempre); letras 'A' a 'Z' valem 17 a 42 ('A'=17, 'B'=18, 'C'=19, 'D'=20, 'E'=21, ..., 'Z'=42). O salto entre '9' (valor 9) e 'A' (valor 17) é por causa dos caracteres ASCII entre eles (':;&lt;=&gt;?@') que não são usados.</span>

<span style="color: #000000;">**1.2. Cálculo do DV (algoritmo mantido):** O DV é calculado por módulo 11 sobre os 43 caracteres anteriores, lendo da direita para a esquerda, multiplicando cada caractere por pesos cíclicos 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4... Soma-se tudo, calcula o resto da divisão por 11. Se o resto for 0 ou 1, DV = 0; senão DV = 11 - resto. O resultado é sempre um dígito de 0 a 9, o DV NUNCA é letra.</span>

<span style="color: #000000;">**1.3** O calculo do DV chave de acesso deverá ser feito considerando o valor ASCII das letras do CNPJ contidos na chave, **ATUALMENTE O SISTEMA JÁ APLICARIA ESSE ALGORITMO.**</span>  
<span style="color: #000000;">Exemplo de chave:</span>

<table border="1" class="align-center" id="bkmrk-chave-alfanum%C3%89rica%3A-"><tbody><tr><th colspan="4"><span style="color: #000000;">**CHAVE ALFANUMÉRICA: 35260712ABC34501DE3555001000000123112345678**</span></th></tr><tr><th><span style="color: #000000;">Bloco</span></th><th><span style="color: #000000;">Tam</span></th><th><span style="color: #000000;">Valor</span></th><th><span style="color: #000000;">Significado</span></th></tr><tr><td><span style="color: #000000;">cUF</span></td><td><span style="color: #000000;">2</span></td><td><span style="color: #000000;">`35`</span></td><td><span style="color: #000000;">São Paulo</span></td></tr><tr><td><span style="color: #000000;">AAMM</span></td><td><span style="color: #000000;">4</span></td><td><span style="color: #000000;">`2607`</span></td><td><span style="color: #000000;">Julho/2026</span></td></tr><tr><td><span style="color: #000000;">CNPJ emitente</span></td><td><span style="color: #000000;">14</span></td><td><span style="color: #000000;">`12ABC34501DE35`</span></td><td><span style="color: #000000;">CNPJ alfanumérico (sem pontuação, em maiúsculas)</span></td></tr><tr><td><span style="color: #000000;">mod</span></td><td><span style="color: #000000;">2</span></td><td><span style="color: #000000;">`55`</span></td><td><span style="color: #000000;">NF-e</span></td></tr><tr><td><span style="color: #000000;">série</span></td><td><span style="color: #000000;">3</span></td><td><span style="color: #000000;">`001`</span></td><td><span style="color: #000000;">Série 1 (preenchida com zeros à esquerda)</span></td></tr><tr><td><span style="color: #000000;">nNF</span></td><td><span style="color: #000000;">9</span></td><td><span style="color: #000000;">`000000123`</span></td><td><span style="color: #000000;">Nota nº 123 (zeros à esquerda)</span></td></tr><tr><td><span style="color: #000000;">tpEmis</span></td><td><span style="color: #000000;">1</span></td><td><span style="color: #000000;">`1`</span></td><td><span style="color: #000000;">Emissão normal</span></td></tr><tr><td><span style="color: #000000;">cNF</span></td><td><span style="color: #000000;">8</span></td><td><span style="color: #000000;">`12345678`</span></td><td><span style="color: #000000;">Código numérico aleatório da nota</span></td></tr></tbody></table>

<span style="color: #000000;">**1.3.1** Aplicado pesos cíclicos `2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9...` da direita para a esquerda.</span>

<span style="color: #000000;">**1.3.2 Soma dos produtos (por blocos para conferência):**</span>

- - - - - - - <span style="color: #000000;">Posições 1–8 (cUF + AAMM + parte do CNPJ): `12+15+4+54+0+49+6+10` = **150**</span>
                        - <span style="color: #000000;">Posições 9–16 (CNPJ — bloco com `A B C`): `68+54+38+27+32+35+0+5` = **259**</span>
                        - <span style="color: #000000;">Posições 17–24 (CNPJ `D E` + mod + série + início nNF): `80+63+6+45+40+35+0+0` = **269**</span>
                        - <span style="color: #000000;">Posições 25–32 (nNF): `4+0+0+0+0+0+0+5` = **9**</span>
                        - <span style="color: #000000;">Posições 33–40 (tpEmis + parte do cNF): `8+9+2+9+16+21+24+25` = **114**</span>
                        - <span style="color: #000000;">Posições 41–43 (final do cNF): `24+21+16` = **61**</span>
                        - <span style="color: #000000;">**Total = 862**</span>
                        - <span style="color: #000000;">Aplicado módulo 11 = 862 / 11 = 78 (**resto 4, porque 78 x 11 = 858 e 862 - 858 = 4**).</span>
                        - <span style="color: #000000;">Resto = **4**</span>
                        - <span style="color: #000000;">**Como o resto foi acima de 1, DV = 11-4=7**.</span>

#### <span style="color: #000000;">**PROC005.1.2 - NFE - Ajustes em Preenchimentos em Tela - Imposto por Produto:**</span>

##### <span style="color: #000000;">***Tela:***</span>

[![image-1779899167122.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779899167122.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779899167122.png)

*Imagem I - CNPJ Encomendante da importação na Tela de Imposto Produto na Nota*

[![image-1779899343311.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779899343311.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779899343311.png)

*<span style="color: #000000;">Imagem II - Chave de Acesso de exportação na Tela de Imposto Produto na Nota</span>*

[![image-1779899510285.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779899510285.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779899510285.png)

<span style="color: #000000;">*Imagem III - CNPJ Fabricante na aba 'Outros' na Nota Fiscal.*</span>

[![image-1779899486599.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779899486599.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779899486599.png)

<span style="color: #000000;">*Imagem IV - CNPJ Fabricante na aba 'Outros' na Nota Fiscal.*</span>

##### <span style="color: #000000;">***Descrição dos Campos:***</span>

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o-0" style="width: 843px;"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr><td class="align-center" colspan="6" style="width: 843px; border-style: solid; border-color: black;">Aba de Importação</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">CNPJ Encomendante</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">14</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr><td class="align-center" colspan="6" style="width: 843px; border-style: solid; border-color: black;">Aba de Exportação</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Chave da NF-e</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">44</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr><td class="align-center" colspan="6" style="width: 843px; border-style: solid; border-color: black;">Aba Outros</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">CNPJ Fabricante</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">14</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">DFe Referenciado</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">44</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">***Regras de Interface***</span><span style="color: #000000;">***:***</span>

<span style="color: #000000;">**1. CNPJ Encomendante:** </span><span style="color: #000000;">O campo aceita alfanumérico. Validar o tamanho máximo e a normalização para caixa alta.  
**2. Chave da NF-e:** Atualmente permite a inserção alfanumérica. Normalizar para remoção de espaços e caracteres especiais e transformar em caixa alta as letras inseridas.  
**3. CNPJ Fabricante:** O campo aceita alfanumérico. Validar o tamanho máximo e a normalização para caixa alta.  
**4.** **DFe Referenciado:** Deve ser alterado para permitir o uso de alfanumérico. Normalizar removendo espaços e caracteres especiais, manter as letras em caixa alta.</span>

##### <span style="color: #000000;">***Regras de Negócio***</span><span style="color: #000000;">***:***</span>

<span style="color: #000000;">**1.** Não são feitas validações de DV.</span>

##### <span style="color: #000000;">***Questões Técnicas:***</span>

<span style="color: #000000;">***1.*** O campo 'nfereferenciada'.'refNfe' esta como VARCHAR(255), não necessitando mudanças.  
</span>**2.** <span style="color: #000000;">O campo 'nfeproduto'.'cnpjEncomendante' esta como VARCHAR(255), não necessitando mudanças.  
</span>**3.**<span style="color: #000000;"> O campo 'nfeproduto'.'chaveNfeExport' esta como VARCHAR(44), não necessitando mudanças.  
</span>**4.**<span style="color: #000000;"> O campo 'nfeprodutosinfo'.'CNPJFab' esta como VARCHAR(14), não necessitando mudanças.  
</span>**5.**<span style="color: #000000;"> O campo 'nfeproduto'.'chaveDfe' esta como VARCHAR(44), não necessitando mudanças.</span>

<span style="color: #000000;">©SOFTEN SISTEMAS 2026</span>

# PROC005.2 - Alterações em XML

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
<span style="color: #000000;">[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)</span>

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">GERENCIAMENTO DE PROJETOS</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
PROC005.2 - Alterações em XML</td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">-</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">05/01/2026</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

<span style="color: #000000;">**Este processo visa exemplificar a documentação padrão**</span>

##### <span style="color: #000000;">**2. Processo**</span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">Processo</span>

</td><td style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">N/A</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">N/A</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">N/A</span>

</td></tr></tbody></table>

#### <span style="color: #000000;">**Processos Relacionados** </span>

- - - - - -

<span style="color: #000000;">Documentação Exemplo 1 </span>

#### <span style="color: #000000;">**Especificação Funcional**</span>

- - - - - -

#### <span style="color: #000000;">**PROC005.2 - Alterações em XML:**</span>

##### <span style="color: #000000;">***Regras de Negócio:***</span>

<span style="color: #000000;">**1.** A geração de XML é realizada pela LIB, basta passar os valores tratados em concordância com o alfanumérico.</span>  
<span style="color: #000000;">**2**. Os retornos do governo de eventos e autorizações também irão retornar CNPJ alfanumérico.</span>  
<span style="color: #000000;">**3.** O Schema XSD deve estar atualizado em conformidade com a ultima versão.</span>

##### <span style="color: #000000;">***Questões Técnicas:***</span>

<span style="color: #000000;">***1. Grupo BA. Documento Fiscal Referenciado:***</span>

<span style="color: #000000;">[![image-1779906279379.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779906279379.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779906279379.png)</span>

<span style="color: #000000;">**2. Grupo C. Identificação do Emitente da Nota Fiscal eletrônica:**</span>

[![image-1779906372493.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779906372493.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779906372493.png)

<span style="color: #000000;">**3. Grupo E. Identificação do Destinatário da Nota Fiscal eletrônica**</span>

[![image-1779906686035.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779906686035.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779906686035.png)

<span style="color: #000000;">**4. Grupo G. Identificação do Local de Retirada**</span>

[![image-1779906702256.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779906702256.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779906702256.png)

<span style="color: #000000;">**5. Grupo G. Identificação do Local de Entrega**</span>

[![image-1779906715656.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779906715656.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779906715656.png)

**<span style="color: #000000;">6. Grupo GA. Autorização para obter XML</span>**

[![image-1779907130519.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779907130519.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779907130519.png)

**<span style="color: #000000;">7. Grupo I. Produtos e Serviços da NF-e</span>**

[![image-1779907264394.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779907264394.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779907264394.png)

**<span style="color: #000000;">8. Grupo I01. Produtos e Serviços / Declaração de Importação</span>**

[![image-1779907739552.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779907739552.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779907739552.png)

**<span style="color: #000000;">9. Grupo I03. Produtos e Serviços / Grupo de Exportação</span>**

[![image-1779907756812.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779907756812.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779907756812.png)

**<span style="color: #000000;">10. Grupo O. Imposto sobre Produtos Industrializados</span>**

[![image-1779907776471.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779907776471.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779907776471.png)

**<span style="color: #000000;">11. Grupo X. Informações do Transporte da NF-e</span>**

[![image-1779907790455.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779907790455.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779907790455.png)

**<span style="color: #000000;">12.Grupo YA. Informações de Pagamento</span>**

[![image-1779907808097.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779907808097.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779907808097.png)

**<span style="color: #000000;">13. Grupo YB. Informações do Intermediador da Transação</span>**

[![image-1779907829460.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779907829460.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779907829460.png)

**<span style="color: #000000;">14. Grupo VC. Referenciamento de item de outro Documento Fiscal Eletrônico - DF-e </span>**

[![image-1779907856978.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779907856978.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779907856978.png)

<span style="color: #000000;">**14. Grupo ZD. Informações do Responsável Técnico**</span>

[![image-1779909106517.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1779909106517.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1779909106517.png)

<span style="color: #000000;">©SOFTEN SISTEMAS 2026</span>

# PROC005.3 - Ajustes Jasper

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
<span style="color: #000000;">[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)</span>

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">GERENCIAMENTO DE PROJETOS</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
<span style="color: #000000;">Descrição Processo</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">-</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">05/01/2026</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

<span style="font-family: 'Segoe UI', sans-serif; color: #000000;"><span style="font-size: small;">Este processo descreve a adaptação dos relatórios Jasper (DANFE NF-e, DANFE NFC-e e Carta de Correção) ao CNPJ Alfanumérico previsto pela NT 2026.004. Com a entrada das letras nas 12 primeiras posições do CNPJ, a chave de acesso de 44 caracteres também pode conter letras (nas posições 7 a 20, faixa do CNPJ do emitente).</span></span>

##### <span style="color: #000000;">**2. Processo** </span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">Processo</span>

</td><td style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">N/A</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">N/A</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">N/A</span>

</td></tr></tbody></table>

#### <span style="color: #000000;">**Processos Relacionados** </span>

- - - - - -

<span style="color: #000000;">Documentação Exemplo 1 </span>  
  
<span style="color: #000000;">Documentação Exemplo 2</span>

#### <span style="color: #000000;">**Especificação Funcional**</span>

- - - - - -

#### <span style="color: #000000;">**PROC005.3 - Ajustes Jasper:**</span>

##### <span style="color: #000000;">***Protótipo de Tela:***</span>

##### <span style="color: #000000;">***Descrição dos Campos:***</span>

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o" style="width: 843px;"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Campo</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">100</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">Sim</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">***Regras de Interface:***</span>

<span style="color: #000000;">***1.Renderização visual mantida:*** O layout do DANFE NF-e, DANFE NFC-e e Carta de Correção permanece inalterado. As mudanças são internas ao template e ao subtipo do código de barras.</span>

##### <span style="color: #000000;">***Regras de Negócio:***</span>

<span style="color: #000000;">**1. Subtipo do código de barras da chave:** O código de barras Code 128 usado para representar a chave de acesso na DANFE NF-e e na Carta de Correção deve aceitar caracteres alfanuméricos. O subtipo atual (Code 128C, otimizado para apenas pares de dígitos) precisa ser substituído por Code 128B (que aceita letras A-Z, dígitos 0-9 e símbolos) ou Code 128 em modo automático (que escolhe o subtipo conforme o conteúdo).</span>  
<span style="color: #000000;">**2. Formatação visual do CNPJ e da chave:** A formatação do CNPJ na máscara XX.XXX.XXX/XXXX-XX e da chave em blocos de 4 caracteres é feita por substring. Funciona corretamente com letras sem nenhum ajuste.</span>  
<span style="color: #000000;">**3. Determinação do rótulo CPF × CNPJ no destinatário (NFC-e):** O rótulo do destinatário ("CPF:" ou "CNPJ:") deve ser determinado pelo número de caracteres do documento APÓS remover pontuação, considerando que letras devem ser preservadas. CPF tem 11 caracteres (numéricos); CNPJ tem 14 caracteres (alfanuméricos ou numéricos). A lógica atual baseada exclusivamente no comprimento do valor formatado (14 = CPF formatado, 18 = CNPJ formatado) falha quando o CNPJ alfanumérico chega sem máscara passa a ter 14 caracteres e seria rotulado erroneamente como CPF.</span>

#### <span style="color: #000000;">**PROC005.3.1 - Ajustes Jasper - DANFe - Código de Barras da Chave de Acesso:**</span>

##### <span style="color: #000000;">***Regras de Negócio:***</span>

<span style="color: #000000;">**1. Troca obrigatória de subtipo Code 128:** O subtipo Code 128C é incompatível com letras. Precisa ser trocado por Code 128B (alfanumérico maiúsculo) ou Code 128 (modo automático). **2. Sem mudança no conteúdo codificado:** O dado codificado no código de barras continua sendo a chave de acesso de 44 caracteres. Apenas o algoritmo de codificação muda.</span>

#### <span style="color: #000000;">**PROC005.3.2 - Ajustes Jasper - DANFCe:**</span>

##### <span style="color: #000000;">***Regras de Negócio:***</span>

<span style="color: #000000;">**1.** **Ajustes Label consumidor:** O rótulo deve ser escolhido pelo número de caracteres do documento APÓS remover pontuação (preservando letras): 11 caracteres = CPF (numérico); 14 caracteres = CNPJ (alfanumérico ou numérico); qualquer outro tamanho = Id. Estrangeiro. A lógica atual decide pelo comprimento do valor formatado (14 = CPF, 18 = CNPJ), o que falha quando o CNPJ alfanumérico chega sem máscara pois tem 14 caracteres e seria rotulado como CPF. </span>  
<span style="color: #000000;">**2.** **Identificador estrangeiro inalterado:** Documentos que não se enquadrem em 11 ou 14 caracteres continuam sendo rotulados como "Id. Estrangeiro:". </span>  
<span style="color: #000000;">**3.** **CPF continua exclusivamente numérico:** Apenas CPF formatado (14 com pontuação) ou puro (11 numérico) recebe rótulo "CPF:". CPF não tem letras.</span>

#### <span style="color: #000000;">**PROC005.3.2 - Ajustes Jasper - DANFCe:**</span>

##### <span style="color: #000000;">***Regras de Negócio:***</span>

<span style="color: #000000;">**1.** **Ajustes Label consumidor:** O rótulo deve ser escolhido pelo número de caracteres do documento APÓS remover pontuação (preservando letras): 11 caracteres = CPF (numérico); 14 caracteres = CNPJ (alfanumérico ou numérico); qualquer outro tamanho = Id. Estrangeiro. A lógica atual decide pelo comprimento do valor formatado (14 = CPF, 18 = CNPJ), o que falha quando o CNPJ alfanumérico chega sem máscara pois tem 14 caracteres e seria rotulado como CPF. </span>  
<span style="color: #000000;">**2.** **Identificador estrangeiro inalterado:** Documentos que não se enquadrem em 11 ou 14 caracteres continuam sendo rotulados como "Id. Estrangeiro:". </span>  
<span style="color: #000000;">**3.** **CPF continua exclusivamente numérico:** Apenas CPF formatado (14 com pontuação) ou puro (11 numérico) recebe rótulo "CPF:". CPF não tem letras.6</span>

#####  

<span style="color: #000000;">©SOFTEN SISTEMAS 2026</span>

# 3. Fiscal - CTe



# PROC006.1 - Ajustes em Preenchimentos em Tela

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
<span style="color: #000000;">[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)</span>

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">GERENCIAMENTO DE PROJETOS</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
<span style="color: #000000;">PROC006.1 - Ajustes em Preenchimentos em Tela</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">-</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">05/01/2026</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

<span style="color: #000000;">**Este processo visa exemplificar a documentação padrão**</span>

##### <span style="color: #000000;">**2. Processo (adicionar fluxograma exemplo)**</span>

<span style="color: #000000;">[![image-1724162109370.png](https://docs.softensistemas.com.br/uploads/images/gallery/2024-08/scaled-1680-/image-1724162109370.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2024-08/image-1724162109370.png)</span>

<span style="color: #000000;">I - Fluxograma Exemplo</span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">Processo</span>

</td><td style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">N/A</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">N/A</span>

</td><td style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">N/A</span>

</td></tr></tbody></table>

#### <span style="color: #000000;">**Processos Relacionados** </span>

- - - - - -

<span style="color: #000000;">Documentação Exemplo 1 </span>  
  
<span style="color: #000000;">Documentação Exemplo 2</span>

#### <span style="color: #000000;">**Especificação Funcional**</span>

- - - - - -

#### <span style="color: #000000;">**PROC001 EXEMPLO:**</span>

##### <span style="color: #000000;">***Protótipo de Tela:***</span>

<span style="color: #000000;">[![image-1780061990109.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1780061990109.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1780061990109.png)</span>

<span style="color: #000000;">Imagem I - Chave Eletrônica Referenciada</span>

<span style="color: #000000;">[![image-1780062356510.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1780062356510.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1780062356510.png)</span>

<span style="color: #000000;">Imagem II - Opções "Documento anterior" e "Referenciar CT-e"</span>

<span style="color: #000000;">[![image-1780062369323.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1780062369323.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1780062369323.png)</span>

<span style="color: #000000;">Imagem III - Documento anterior</span>

<span style="color: #000000;">[![image-1780062391534.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/scaled-1680-/image-1780062391534.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-05/image-1780062391534.png)</span>

<span style="color: #000000;">Imagem IV - Referenciar CT-e</span>

##### <span style="color: #000000;">***Descrição dos Campos:***</span>

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o" style="width: 843px;"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr><td class="align-center" colspan="6" style="width: 843px; border-style: solid; border-color: black;"><span style="color: #000000;">Card "Dados do CT-e"</span></td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Referenciar Documentos</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">44</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr><td class="align-center" colspan="6" style="width: 843px; border-style: solid; border-color: black;"><span style="color: #000000;">Dialog Documento anterior</span></td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">CNPJ/CPF</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">14</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Chave de Acesso</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">44</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr><td class="align-center" colspan="6" style="width: 843px; border-style: solid; border-color: black;"><span style="color: #000000;">Dialog Referenciar CT-e</span></td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Chave do CT-e á ser substituido</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">44</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">***Regras de Interface:***</span>

<span style="color: #000000;">***1. Referenciar Documentos - Chave Nota e CTe:*** Deve ser alterado para permitir o uso de alfanumérico. Atualmente existe tratamento para limpar a chave caso existam valores incorretos para a validação atual. Manter normalização para remoção de espaços e caracteres especiais. Normalizar para caixa alta as letras inseridas.</span>  
<span style="color: #000000;">***2. CNPJ/CPF:*** Conferir validação do campo para aceitar alfanumérico. Reaproveitar validações do PROC001 - Núcleo de validação de formatação de CNPJ</span>

<span style="color: #000000;">***2.1. Normalização:*** Deve ser tratado para deixar todas as letras em caixa alta(maiúsculo) visando a padronização da informação</span>

##### <span style="color: #000000;">***Regras de Negócio:***</span>

<span style="color: #000000;">***1. Chave Nota (Ref NF-e):*** A chave de acesso passa por validação de DV. Manter a validação de chave vazia e 44 digitos. O tratamento para caixa maior visa manter a validação do DV.</span>

<span style="color: #000000;">**1.1. Mapeamento de valores para o cálculo (ASCII menos 48):** Cada caractere da chave entra no cálculo do DV com seu valor ASCII menos 48: dígitos '0' a '9' valem 0 a 9 (como sempre); letras 'A' a 'Z' valem 17 a 42 ('A'=17, 'B'=18, 'C'=19, 'D'=20, 'E'=21, ..., 'Z'=42). O salto entre '9' (valor 9) e 'A' (valor 17) é por causa dos caracteres ASCII entre eles (':;&lt;=&gt;?@') que não são usados.</span>

<span style="color: #000000;">**1.2. Cálculo do DV (algoritmo mantido):** O DV é calculado por módulo 11 sobre os 43 caracteres anteriores, lendo da direita para a esquerda, multiplicando cada caractere por pesos cíclicos 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4... Soma-se tudo, calcula o resto da divisão por 11. Se o resto for 0 ou 1, DV = 0; senão DV = 11 - resto. O resultado é sempre um dígito de 0 a 9, o DV NUNCA é letra.</span>

<span style="color: #000000;">**1.3** O calculo do DV chave de acesso deverá ser feito considerando o valor ASCII das letras do CNPJ contidos na chave, **ATUALMENTE O SISTEMA JÁ APLICARIA ESSE ALGORITMO.**</span>  
<span style="color: #000000;">Exemplo de chave:</span>

<table border="1" class="align-center" id="bkmrk-chave-alfanum%C3%89rica%3A-" style="height: 403px;" width="620"><tbody><tr style="height: 29px;"><th colspan="4" style="height: 29px; width: 619.2px;"><span style="color: #000000;">**CHAVE ALFANUMÉRICA: 35260712ABC34501DE3555001000000123112345678**</span></th></tr><tr style="height: 29px;"><th style="height: 29px; width: 154.788px;"><span style="color: #000000;">Bloco</span></th><th style="height: 29px; width: 154.788px;"><span style="color: #000000;">Tam</span></th><th style="height: 29px; width: 154.788px;"><span style="color: #000000;">Valor</span></th><th style="height: 29px; width: 154.837px;"><span style="color: #000000;">Significado</span></th></tr><tr style="height: 30px;"><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">cUF</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">2</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">`35`</span></td><td style="height: 30px; width: 154.837px;"><span style="color: #000000;">São Paulo</span></td></tr><tr style="height: 30px;"><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">AAMM</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">4</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">`2607`</span></td><td style="height: 30px; width: 154.837px;"><span style="color: #000000;">Julho/2026</span></td></tr><tr style="height: 30px;"><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">CNPJ emitente</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">14</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">`12ABC34501DE35`</span></td><td style="height: 30px; width: 154.837px;"><span style="color: #000000;">CNPJ alfanumérico (sem pontuação, em maiúsculas)</span></td></tr><tr style="height: 30px;"><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">mod</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">2</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">`55`</span></td><td style="height: 30px; width: 154.837px;"><span style="color: #000000;">NF-e</span></td></tr><tr style="height: 30px;"><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">série</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">3</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">`001`</span></td><td style="height: 30px; width: 154.837px;"><span style="color: #000000;">Série 1 (preenchida com zeros à esquerda)</span></td></tr><tr style="height: 30px;"><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">nNF</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">9</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">`000000123`</span></td><td style="height: 30px; width: 154.837px;"><span style="color: #000000;">Nota nº 123 (zeros à esquerda)</span></td></tr><tr style="height: 30px;"><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">tpEmis</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">1</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">`1`</span></td><td style="height: 30px; width: 154.837px;"><span style="color: #000000;">Emissão normal</span></td></tr><tr style="height: 30px;"><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">cNF</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">8</span></td><td style="height: 30px; width: 154.788px;"><span style="color: #000000;">`12345678`</span></td><td style="height: 30px; width: 154.837px;"><span style="color: #000000;">Código numérico aleatório da nota</span></td></tr></tbody></table>

<span style="color: #000000;">**1.3.1** Aplicado pesos cíclicos `2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9...` da direita para a esquerda.</span>

<span style="color: #000000;">**1.3.2 Soma dos produtos (por blocos para conferência):**</span>

- - - - - <span style="color: #000000;">Posições 1–8 (cUF + AAMM + parte do CNPJ): `12+15+4+54+0+49+6+10` = **150**</span>
                - <span style="color: #000000;">Posições 9–16 (CNPJ — bloco com `A B C`): `68+54+38+27+32+35+0+5` = **259**</span>
                - <span style="color: #000000;">Posições 17–24 (CNPJ `D E` + mod + série + início nNF): `80+63+6+45+40+35+0+0` = **269**</span>
                - <span style="color: #000000;">Posições 25–32 (nNF): `4+0+0+0+0+0+0+5` = **9**</span>
                - <span style="color: #000000;">Posições 33–40 (tpEmis + parte do cNF): `8+9+2+9+16+21+24+25` = **114**</span>
                - <span style="color: #000000;">Posições 41–43 (final do cNF): `24+21+16` = **61**</span>
                - <span style="color: #000000;">**Total = 862**</span>
                - <span style="color: #000000;">Aplicado módulo 11 = 862 / 11 = 78 (**resto 4, porque 78 x 11 = 858 e 862 - 858 = 4**).</span>
                - <span style="color: #000000;">Resto = **4**</span>
                - <span style="color: #000000;">**Como o resto foi acima de 1, DV = 11-4=7**.</span>

##### <span style="color: #000000;">***Questões Técnicas:***</span>

