PROC005 - Ajustes Chave de Acesso Alfanumérica NF-e e NFC-e Projeto/Sistema:GERENCIAMENTO DE PROJETOS Versão do Template:1.2 Processo:Descrição Processo Versão do Documento:1.0 Responsável(eis): - Data: 05/01/2026 1. Introdução Este processo visa exemplificar a documentação padrão 2. Processo (adicionar fluxograma exemplo) I - Fluxograma Exemplo Processo Envolvidos Dados de Entrada Dados de Saída Processo N/A N/A N/A Processos Relacionados Documentação Exemplo 1 Documentação Exemplo 2 Especificação Funcional PROC005 - Ajustes Chave de Acesso Alfanumérica NF-e e NFC-e: Regras de Negócio: 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. 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). 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. 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. 2.1 Calculo: Serão utilizados, no cálculo do módulo 11, os valores relativos a letras maiúsculas da tabela código ASCII, como solução para unificar a representação de caracteres alfanuméricos. 2.2 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. Caractere ASCII Valor no cálculo '0' a '9' 48–57 0 a 9 'A' 65 17 'B' 66 18 'C' 67 19 'D' 68 20 'E' 69 21 'F' 70 22 'G' 71 23 'H' 72 24 'I' 73 25 'J' 74 26 'K' 75 27 'L' 76 28 'M' 77 29 'N' 78 30 'O' 79 31 'P' 80 32 'Q' 81 33 'R' 82 34 'S' 83 35 'T' 84 36 'U' 85 37 'V' 86 38 'W' 87 39 'X' 88 40 'Y' 89 41 'Z' 90 42 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: CHAVE ALFANUMÉRICA: 35260712ABC34501DE3555001000000123112345678 Bloco Tam Valor Significado cUF 2 35 São Paulo AAMM 4 2607 Julho/2026 CNPJ emitente 14 12ABC34501DE35 CNPJ alfanumérico (sem pontuação, em maiúsculas) mod 2 55 NF-e série 3 001 Série 1 (preenchida com zeros à esquerda) nNF 9 000000123 Nota nº 123 (zeros à esquerda) tpEmis 1 1 Emissão normal cNF 8 12345678 Código numérico aleatório da nota 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. 1.3.2 Soma dos produtos (por blocos para conferência): Posições 1–8 (cUF + AAMM + parte do CNPJ): 12+15+4+54+0+49+6+10 = 150 Posições 9–16 (CNPJ — bloco com A B C): 68+54+38+27+32+35+0+5 = 259 Posições 17–24 (CNPJ D E + mod + série + início nNF): 80+63+6+45+40+35+0+0 = 269 Posições 25–32 (nNF): 4+0+0+0+0+0+0+5 = 9 Posições 33–40 (tpEmis + parte do cNF): 8+9+2+9+16+21+24+25 = 114 Posições 41–43 (final do cNF): 24+21+16 = 61 Total = 862 Aplicado módulo 11 = 862 / 11 = 78  (resto 4,  porque 78 x 11  = 858 e 862 - 858 = 4). Resto = 4 Como o resto foi acima de 1, DV = 11-4=7. 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. Questões Técnicas: 1. A coluna 'nfe'.'chaveAcesso' esta como VARCHAR(255), não sendo necessário ajuste em banco. 2. Arquivos a alterar da composição da chave - Pontos críticos da montagem da chave: Arquivo : linha Risco Descrição / Ação adapters/xml/nfe/EnvioNfeAdapter.java : 29 Crítico CpfOrCnpjUtil.clean(empresa.getCnpj()) — herda correção de PROC001 (clean preserva letras). adapters/xml/nfe/EnvioNfeAdapter.java : 46 Sem ação ModValidador.of(11, value, value.length(), 4).calc() — algoritmo já compatível. adapters/xml/nfce/EnvioNfceAdapter.java : 36, 53 Crítico/Sem ação Mesma estrutura do NFe — herda PROC001. util/NFCeUtil.java : 145, 151 Crítico lpadTo(cnpjCpf.replaceAll("\D",""), 14, '0') — substituir limpeza por uma que preserve letras. adapters/xml/nfe/NfeAdapter.java : 67 Sem ação Apenas extrai o DV via chaveAcesso.substring(chaveAcesso.length() - 1) — agnóstico. validadores/ModValidador.java : 179, 192 Sem ação char - '0' é o algoritmo oficial alfanumérico. ©SOFTEN SISTEMAS 2026