<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mobile &#8211; Manual do Programador</title>
	<atom:link href="https://www.manualdoprogramador.com/category/programacao/mobile/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.manualdoprogramador.com</link>
	<description>Explore o Manual do Programador e encontre artigos detalhados e atualizados sobre linguagens de programação, frameworks, desenvolvimento web, mobile, inteligência artificial e muito mais. Nosso objetivo é fornecer um conteúdo de qualidade e prático para desenvolvedores de todos os níveis - desde iniciantes até profissionais experientes. Descubra dicas para melhorar a eficiência do seu código, tutoriais passo a passo para projetos práticos, novidades do mundo da programação e resenhas de ferramentas úteis</description>
	<lastBuildDate>Thu, 24 Jul 2025 12:02:03 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/06/Logo-redonda-1-1.png?fit=32%2C32&#038;ssl=1</url>
	<title>Mobile &#8211; Manual do Programador</title>
	<link>https://www.manualdoprogramador.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">220693552</site>	<item>
		<title>CNPJ Alfanumérico Desafios e Impactos nos Sistemas Atuais</title>
		<link>https://www.manualdoprogramador.com/cnpj-alfanumerico-desafios-e-impactos-nos-sistemas-atuais/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cnpj-alfanumerico-desafios-e-impactos-nos-sistemas-atuais</link>
					<comments>https://www.manualdoprogramador.com/cnpj-alfanumerico-desafios-e-impactos-nos-sistemas-atuais/#respond</comments>
		
		<dc:creator><![CDATA[Silvio Cesar Junior]]></dc:creator>
		<pubDate>Sun, 13 Jul 2025 20:58:31 +0000</pubDate>
				<category><![CDATA[Back-end]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">https://www.manualdoprogramador.com/?p=1213</guid>

					<description><![CDATA[Em julho de 2026, a Receita Federal passa a emitir CNPJs com 12 caracteres alfanuméricos seguidos de dois dígitos verificadores [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="1024" height="1024" src="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2025/07/ChatGPT-Image-13-de-jul.-de-2025-18_13_51.png?resize=1024%2C1024&#038;ssl=1" alt="" class="wp-image-1216"/></figure>



<p>Em julho de 2026, a Receita Federal passa a emitir CNPJs com 12 caracteres alfanuméricos seguidos de dois dígitos verificadores numéricos. A mudança visa acomodar o contínuo crescimento do número de empresas no Brasil e evitar o esgotamento da numeração disponível. Porém, essa novidade trará uma série de desafios técnicos e exigirá adaptações em diversos pontos dos sistemas corporativos. Neste artigo, vamos explorar os principais impactos e sugerir estratégias para uma transição suave.</p>



<h3 class="wp-block-heading">1. Nova Regra de Cálculo dos Dígitos Verificadores</h3>



<p>Até então, os doze primeiros dígitos do CNPJ eram exclusivamente numéricos, e os dois últimos resultavam de um cálculo baseado em módulo 11 e pesos de 2 a 9. Com a inclusão de letras, será necessário atribuir valores numéricos a cada caractere alfabético (A=17, B=18, …, Z=42) antes de aplicar o algoritmo tradicional de dígitos verificadores.</p>



<p><strong>Fluxo de cálculo resumido</strong>:</p>



<ol class="wp-block-list">
<li><strong>Mapeamento</strong>: converta cada caractere alfanumérico no seu valor segundo tabela (por exemplo, A→17, B→18, …) .</li>



<li><strong>Aplicação de pesos</strong>: aplique pesos de 2 a 9 da direita para a esquerda, reiniciando após o peso</li>



<li><strong>Somatório e módulo</strong>: calcule o somatório dos produtos valor×peso e obtenha o resto da divisão por 11.</li>



<li><strong>Definição do dígito</strong>: se o resto for 0 ou 1, o dígito é 0; caso contrário, é 11 menos o resto.</li>



<li><strong>Repetição</strong>: para o segundo dígito, inclua o primeiro DV ao final e repita o processo.</li>
</ol>



<h3 class="wp-block-heading">1.1 Primeiro Dígito Verificador</h3>



<p>Para validar o CNPJ alfanumérico <strong><code>Y6.K55.XEN/0001-99</code></strong>, extraímos primeiro os 12 caracteres e depois calculamos os dois dígitos verificadores.</p>



<h4 class="wp-block-heading">1.1.1 Primeiro Dígito Verificador</h4>



<ul class="wp-block-list">
<li><strong>Base (12 chars):</strong> <code>Y 6 K 5 5 X E N 0 0 0 1</code></li>



<li><strong>Valor (ASCII–48):</strong>
<ul class="wp-block-list">
<li>Y → 41</li>



<li>6 → 6</li>



<li>K → 27</li>



<li>5 → 5</li>



<li>5 → 5</li>



<li>X → 40</li>



<li>E → 21</li>



<li>N → 30</li>



<li>0 → 0</li>



<li>0 → 0</li>



<li>0 → 0</li>



<li>1 → 1</li>
</ul>
</li>



<li><strong>Pesos:</strong> 5,&nbsp;4,&nbsp;3,&nbsp;2,&nbsp;9,&nbsp;8,&nbsp;7,&nbsp;6,&nbsp;5,&nbsp;4,&nbsp;3,&nbsp;2</li>
</ul>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Posição</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th><th>12</th></tr></thead><tbody><tr><td>Caract.</td><td>Y</td><td>6</td><td>K</td><td>5</td><td>5</td><td>X</td><td>E</td><td>N</td><td>0</td><td>0</td><td>0</td><td>1</td></tr><tr><td>Valor</td><td>41</td><td>6</td><td>27</td><td>5</td><td>5</td><td>40</td><td>21</td><td>30</td><td>0</td><td>0</td><td>0</td><td>1</td></tr><tr><td>Peso</td><td>5</td><td>4</td><td>3</td><td>2</td><td>9</td><td>8</td><td>7</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td></tr></tbody></table></figure>



<ol class="wp-block-list">
<li>Soma dos produtos</li>
</ol>



<pre class="wp-block-code"><code>41×5 + 6×4 + 27×3 + 5×2 + 5×9 + 40×8 + 21×7 + 30×6 + 0 + 0 + 0 + 1×2 = 1 014</code></pre>



<ol start="2" class="wp-block-list">
<li>Resto da divisão por 11</li>
</ol>



<pre class="wp-block-code"><code>1 014 mod 11 = 2</code></pre>



<ol start="3" class="wp-block-list">
<li>Cálculo do primeiro dígito (DV₁)
<ul class="wp-block-list">
<li>Resto ≥ 2 → 11&nbsp;–&nbsp;2 = <strong>9</strong></li>
</ul>
</li>
</ol>



<h4 class="wp-block-heading">1.1.2 Segundo Dígito Verificador</h4>



<pre class="wp-block-code"><code>Y 6 K 5 5 X E N 0 0 0 1 9</code></pre>



<ul class="wp-block-list">
<li><strong>Valores:</strong> mesmos 12 anteriores + 9</li>



<li><strong>Pesos:</strong> 6,&nbsp;5,&nbsp;4,&nbsp;3,&nbsp;2,&nbsp;9,&nbsp;8,&nbsp;7,&nbsp;6,&nbsp;5,&nbsp;4,&nbsp;3,&nbsp;2</li>
</ul>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Posição</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th><th>12</th><th>13</th></tr></thead><tbody><tr><td>Caract.</td><td>Y</td><td>6</td><td>K</td><td>5</td><td>5</td><td>X</td><td>E</td><td>N</td><td>0</td><td>0</td><td>0</td><td>1</td><td>9</td></tr><tr><td>Valor</td><td>41</td><td>6</td><td>27</td><td>5</td><td>5</td><td>40</td><td>21</td><td>30</td><td>0</td><td>0</td><td>0</td><td>1</td><td>9</td></tr><tr><td>Peso</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td><td>9</td><td>8</td><td>7</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td></tr></tbody></table></figure>



<p><strong>Soma dos produtos</strong></p>



<pre class="wp-block-code"><code>41×6 + 6×5 + 27×4 + 5×3 + 5×2 + 40×9 + 21×8 + 30×7 + 0 + 0 + 0 + 1×3 + 9×2 = 1 168</code></pre>



<p>Resto da divisão por 11</p>



<pre class="wp-block-code"><code>1 168 mod 11 = 2</code></pre>



<p>Cálculo do segundo dígito (DV₂)</p>



<p>Resto ≥ 2 → 11&nbsp;–&nbsp;2 = <strong>9</strong></p>



<p>Portanto, os dígitos verificadores são <strong>9</strong> e <strong>9</strong>, conferindo com o CNPJ completo:</p>



<pre class="wp-block-code"><code>Y6.K55.XEN/0001-99</code></pre>



<h3 class="wp-block-heading">1.2 Algoritmo JS para validar se um CNPJ é valido</h3>



<p>Será necessário alterar no front-end do sistema, lugares onde tem validação de CNPJ valído, para isso, segue um algoritmo atualizado para fazer essa validação nos inputs informados do sistema:</p>



<pre class="wp-block-code"><code>/**
 * Valida CNPJ alfanumérico (12 caracteres + 2 dígitos)
 * @param {string} input CNPJ formatado ou não (aceita letras e números)
 * @returns {boolean} true se válido, false caso contrário
 */
function validaCnpjAlpha(input) {
  // Remove tudo que não for letra ou dígito
  const cnpj = input.replace(/&#091;^0-9A-Za-z]/g, &#039;&#039;).toUpperCase();
  if (!/^&#091;0-9A-Z]{14}$/.test(cnpj)) return false;

  // Converte caractere para valor: código ASCII - 48
  const toValue = ch =&gt; ch.charCodeAt(0) - 48;

  // Função que calcula um DV (1 ou 2)
  function calcDv(len) {
    let peso = len + 1; // para len=12, peso inicial é 5; para len=13, peso=6
    const soma = cnpj
      .slice(0, len)
      .split(&#039;&#039;)
      .map(toValue)
      .reduce((acc, val) =&gt; {
        acc += val * peso;
        peso = peso &gt; 2 ? peso - 1 : 9;
        return acc;
      }, 0);
    const resto = soma % 11;
    return resto &lt; 2 ? 0 : 11 - resto;
  }

  // Calcula os dois dígitos verificadores
  const dv1 = calcDv(12);
  const dv2 = calcDv(13);

  // Compara com os dois últimos dígitos do input
  return dv1 === toValue(cnpj&#091;12]) &amp;&amp; dv2 === toValue(cnpj&#091;13]);
}

// Exemplo de uso:
console.log(validaCnpjAlpha(&#039;12.ABC.345/01DE-35&#039;)); // true ou false</code></pre>



<h3 class="wp-block-heading">2. Mudança nas mascaras de input</h3>



<p>Com a entrada de letras, as máscaras de campos de CNPJ em formulários e aplicativos precisam ser revisadas:</p>



<ul class="wp-block-list">
<li><strong>Bibliotecas JavaScript/Vue/Angular</strong>: atualize plugins como <em>mask.js</em> para aceitar <code>[0-9A-Za-z]</code> em todas as posições – não apenas dígitos.</li>



<li><strong>React (IMask)</strong>: configure o <em>pattern</em> para alfanumérico e garanta a conversão automática para maiúsculas, evitando inconsistências de case.</li>



<li><strong>UX/UI</strong>: ofereça feedback claro ao usuário sobre o formato (ex.: <code>XX.XXX.XXX/YYYY-00</code>). Considere usar placeholders dinâmicos que exibam letras e números.</li>
</ul>



<p>Essas mudanças exigem testes end‑to‑end (Selenium, Cypress) para garantir que fluxos de cadastro e edição continuem funcionando sem erros.</p>



<h3 class="wp-block-heading">3. Banco de Dados com VARCHAR</h3>



<p>Sistemas que atualmente definem o campo de CNPJ como <code>INT</code> ou <code>BIGINT</code> devem migrar para tipos de texto:</p>



<ul class="wp-block-list">
<li><strong>VARCHAR(14)</strong> ou <strong>CHAR(14)</strong> (12 alfanuméricos + 2 numéricos): garante espaço exato e evita desperdício.</li>



<li><strong>Índices</strong>: recrie índices baseados em strings e avalie o desempenho em consultas que utilizam <code>LIKE</code>, <code>=</code>, ou ordenação. Em bancos muito volumosos, pode ser necessário particionamento ou índices parciais.</li>
</ul>



<p>Planeje a migração de dados com scripts SQL que convertam registros antigos para o novo padrão, incluindo rotinas de validação de integridade.</p>



<h3 class="wp-block-heading">4. Regex e Validações em Código</h3>



<p>Muitos sistemas usam expressões regulares para extrair ou validar CNPJ em strings (logs, relatórios, integrações). Atualize-as para algo que vai validar se oque foi digitado é um CNPJ valído com:</p>



<pre class="wp-block-code"><code>/^&#091;A-Za-z0-9]{2}\.&#091;A-Za-z0-9]{3}\.&#091;A-Za-z0-9]{3}\/&#091;A-Za-z0-9]{4}-\d{2}$/</code></pre>



<p>Localize todos os artefatos de regex (busca em repositórios, IDEs) e adeque-os para evitar falhas silenciosas em processos automáticos.</p>



<h2 class="wp-block-heading">Conclusão e Boas Práticas</h2>



<p>A adoção do CNPJ alfanumérico é inevitável diante do crescimento das empresas no país. Para mitigar riscos:</p>



<ol class="wp-block-list">
<li><strong>Planeje versões</strong>: use feature flags para alternar validações.</li>



<li><strong>Crie ambientes de homologação</strong>: inclua casos de teste com letras em processos críticos.</li>



<li><strong>Documente mudanças</strong>: atualize guias de estilo e manuais de API.</li>



<li><strong>Automatize migrações</strong>: scripts SQL e pipelines de dados devem rodar sem intervenção manual.</li>



<li><strong>Comunique stakeholders</strong>: informe times de desenvolvimento, QA, operação e parceiros externos.</li>
</ol>



<p>Com esses cuidados, seu sistema estará preparado para lidar com o novo padrão de CNPJ, garantindo integridade, performance e compatibilidade.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.manualdoprogramador.com/cnpj-alfanumerico-desafios-e-impactos-nos-sistemas-atuais/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1213</post-id>	</item>
	</channel>
</rss>
