Validação de CNPJ e CPF usando C#

É muito comum a necessidade de validar um código CPF ou CNPJ informado pelo usuário no Formulário Dinâmico. Neste tutorial, vamos realizar essa validação usando código C#.


Estrutura do Formulário

Campos

Abaixo os campos que vamos utilizar no Formulário:

  • txtCpfCnpj: Campo do tipo TextBox, onde o usuário poderá digita um CPF ou um CNPJ
  • btnValidar: Campo do tipo Button. A validação do campo txtCpfCnpj ocorrerá no evento Click deste botão.

Variáveis

Abaixo a variável que vamos utilizar no Formulário:

  • isValid: Variável do tipo Number que será usada para receber o resultado da validação do CPF ou CNPJ. O valor 1 vai significar “Valido” e o valor 0 “Inválido”.

Procedimentos

Abaixo o procedimento que vamos utilizar no Formulário.

  • btnValidar_Click: Procedimento vinculado ao evento Click do botão btnValidar. É neste procedimento que será realizada a validação do CPF ou CNPJ.

Código C#

O código C# abaixo deve ser adicionado no Procedimento btnValidar_Click, através da instrução “Executar Código C#”.

// Função que valida CPF
Func<string, bool> IsCpf = cpf => 
{
   int[] multiplicador1 = new int[9] { 10, 9, 8, 7, 6, 5, 4, 3, 2 };
   int[] multiplicador2 = new int[10] { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 };

   cpf = cpf.Trim().Replace(".", "").Replace("-", "");
   if (cpf.Length != 11)
       return false;

   for (int j = 0; j < 10; j++)
       if (j.ToString().PadLeft(11, char.Parse(j.ToString())) == cpf)
           return false;

   string tempCpf = cpf.Substring(0, 9);
   int soma = 0;

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

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

   string digito = resto.ToString();
   tempCpf = tempCpf + digito;
   soma = 0;
   for (int i = 0; i < 10; i++)
       soma += int.Parse(tempCpf[i].ToString()) * multiplicador2[i];

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

   digito = digito + resto.ToString();

   return cpf.EndsWith(digito);
};

// Função que Valida CNPJ
Func<string, bool> IsCnpj = 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 };

   cnpj = cnpj.Trim().Replace(".", "").Replace("-", "").Replace("/", "");
   if (cnpj.Length != 14)
       return false;

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

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

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

   string digito = resto.ToString();
   tempCnpj = 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 = digito + resto.ToString();

   return cnpj.EndsWith(digito);
};

// Obtém CPF ou CNPJ da tela
var cpfCnpj = Fields["txtCpfCnpj"].Value?.ToString();

if (IsCpf(cpfCnpj) || IsCnpj(cpfCnpj))
{
   Variables["IsValid"].Value = 1;
}
else
{
	Variables["IsValid"].Value = 0;
}

Logo abaixo, adicione uma instrução IF no procedimento testando o valor da variável isValid. Se o valor for igual a 0, mostre uma mensagem informando ao usuário que o CPF ou CNPJ é inválido:

image

Pronto. Você já pode testar o Formulário no navegador:

image

4 curtidas

Bom dia @daniel.giacomelli , ótimo validados com certeza vou utilizar nos meus formulários.

Muito legal :love_you_gesture:t5:

1 curtida