VEM AÍ: CNPJ VAI MUDAR DE FORMATO

KERPLUNK 02/07/2025 16:57:42
#504983
É isso. Formato de CNPJ vai mudar para alfa-numérico no ano que vem. Pra muita gente isso é uma mudança monstruosa, por isso sugiro já se agilizar pra não ser pego com as calças na mão.
FABRICIOWEB 03/07/2025 06:28:44
#504984
Alterado em 03/07/2025 06:32:26 public static class CNPJHelper
{
public static bool IsCnpjValido(string cnpj)
{
if (string.IsNullOrWhiteSpace(cnpj))
return false;

cnpj = cnpj.Trim().Replace(".", "").Replace("-", "").Replace("/", "");

// Verifica se é só numérico e 14 dígitos ? formato antigo
if (Regex.IsMatch(cnpj, @"^\d{14}$"))
{
return ValidarCnpjAntigo(cnpj);
}

// Novo formato alfanumérico — Exemplo: BR12-AB34-56CD
if (Regex.IsMatch(cnpj, @"^[A-Za-z0-9\-]{8,24}$"))
{
return true; // Aqui você pode futuramente aplicar a regra oficial
}

return false;
}

private static bool ValidarCnpjAntigo(string cnpj)
{
int[] multiplicador1 = new int[12] { 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 };
int[] multiplicador2 = new int[13] { 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 };
string tempCnpj, digito;
int soma, resto;

tempCnpj = cnpj.Substring(0, 12);
soma = 0;

for (int i = 0; i < 12; i++)
soma += int.Parse(tempCnpj[i].ToString()) * multiplicador1[i];

resto = (soma % 11);
if (resto < 2)
resto = 0;
else
resto = 11 - resto;

digito = resto.ToString();
tempCnpj += digito;
soma = 0;

for (int i = 0; i < 13; i++)
soma += int.Parse(tempCnpj[i].ToString()) * multiplicador2[i];

resto = (soma % 11);
if (resto < 2)
resto = 0;
else
resto = 11 - resto;

digito += resto.ToString();
return cnpj.EndsWith(digito);
}
}



Exemplo de uso:

string cnpj1 = "12345678000195"; // antigo
string cnpj2 = "BR12-AB34-56CD"; // novo (exemplo fictício)

Console.WriteLine(CNPJHelper.IsCnpjValido(cnpj1)); // true ou false
Console.WriteLine(CNPJHelper.IsCnpjValido(cnpj2)); // true (válido sintaticamente)





FABRICIOWEB 03/07/2025 06:30:10
#504985
Alterado em 03/07/2025 06:34:19 Exemplo: CNPJ antigo ou novo (C#)

using System;
using System.Text.RegularExpressions;
using System.Windows.Forms;

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void txtCNPJ_TextChanged(object sender, EventArgs e)
{
string cnpj = txtCNPJ.Text.Trim();

if (string.IsNullOrWhiteSpace(cnpj))
{
lblTipo.Text = "CNPJ inválido";
return;
}

// Remove espaços e símbolos opcionais
cnpj = cnpj.Replace(".", "").Replace("-", "").Replace("/", "");

if (Regex.IsMatch(cnpj, @"^\d{14}$"))
{
lblTipo.Text = "CNPJ Antigo (Numérico)";
}
else if (Regex.IsMatch(cnpj, @"^[A-Za-z0-9\-]{8,24}$"))
{
lblTipo.Text = "CNPJ Novo (Alfanumérico)";
}
else
{
lblTipo.Text = "Formato inválido";
}
}
}
NILSONTRES 03/07/2025 12:02:10
#504986
Alterado em 03/07/2025 12:04:29 Que saco, já não basta as mudanças na NFe, o que tem de coisa vincula ao CNPJ no nosso sistema é uma festa.
Não afeta os existe tentes, mas toda nossa estrutura de tabelas e validações.
KERPLUNK 03/07/2025 12:26:23
#504987
Não só isso NILSONTRES, não li à fundo ainda. Não creio que os CNPJ's atuais vão mudar(acho que não), mas o novos, vão conter letras, o que muda até mesmo chave pix e todas as bases de dados.
Aqui o link de QA para o novo formato.

Segundo o documento o CNPJ 12.ABC.345/01DE-35 é válido. Imagina a confusão que isso vai dar pra fazer pix para quem usar esse CNPJ como chave...
Faça seu login para responder