Ir para conteúdo
Fórum Script Brasil
  • 0

Validar Cgc/cpf


Fábio Spies

Pergunta

2 respostass a esta questão

Posts Recomendados

  • 0

Boa idéia, fiz isso, aparentemente deu certo, testei numa relação de 100 clientes.

Vou colocar aqui os códigos que fiz, para cpf e cnpj.

Não sou expert em crystal / fórmulas, mas deu pra quebrar o galho,

alguém depois pode otimizar, etc...

============================================

Fórmula Valida_CPF

==============

Shared numbervar soma;

Shared numbervar Resto;

Shared numbervar i ;

Shared stringvar cpf;

Shared booleanvar valida;

Valida := true;

CPF := Replace(seu_numero_de_cpf_aqui, ".", "");

CPF := Replace(CPF, "-", "");

CPF := Replace(CPF, "/", "");

If Len(CPF) <> 11 Then Valida := False;

soma := 0;

For i := 1 To 9 do

soma := soma + Val(Mid(CPF, i, 1)) * (11 - i);

Resto := 11 - (soma - (Int(soma / 11) * 11));

If Resto = 10 Or Resto = 11 Then Resto := 0;

If Resto <> Val(Mid(CPF, 10, 1)) Then Valida := False;

soma := 0;

For i := 1 To 10 do

soma := soma + Val(Mid(CPF, i, 1)) * (12 - i);

Resto := 11 - (soma - (Int(soma / 11) * 11));

If Resto = 10 Or Resto = 11 Then Resto := 0;

If Resto <> Val(Mid(CPF, 11, 1)) Then Valida := False;

Valida;

============================================

Fórmula Valida_CNPJ

==============

Shared stringvar xCNPJ;

Shared stringvar xTEXTO;

Shared numbervar nPos;

Shared BooleanVar Valida;

Shared numbervar nX1;

Shared numbervar nX2;

Shared numbervar nX3;

Shared numbervar nX4;

Shared numbervar nX5;

Shared numbervar nX6;

Shared numbervar nX7;

Shared numbervar nX8;

Shared numbervar nX9;

Shared numbervar nX10;

Shared numbervar nX11;

Shared numbervar nX12;

Shared numbervar nX13;

Shared numbervar nTX;

Shared numbervar nInt;

Shared numbervar nResto;

Shared numbervar xDigito;

Shared numbervar yDigito;

xCNPJ := '';

Valida := true;

xCNPJ := Replace(seu_cgc_aqui, ".", "");

xCNPJ := Replace(xCNPJ, "-", "");

xCNPJ := Replace(xCNPJ, "/", "");

// Calculo para o primeiro digito

// Extrair os numeros de 1 a 12 e multiplica-los por 5,4,3,2,9,8,7,6,5,4,3,2

nX1 := Val(Mid(xCNPJ, 1, 1)) * (5);

nX2 := Val(Mid(xCNPJ, 2, 1)) * (4);

nX3 := Val(Mid(xCNPJ, 3, 1)) * (3);

nX4 := Val(Mid(xCNPJ, 4, 1)) * (2);

nX5 := Val(Mid(xCNPJ, 5, 1)) * (9);

nX6 := Val(Mid(xCNPJ, 6, 1)) * (8);

nX7 := Val(Mid(xCNPJ, 7, 1)) * (7);

nX8 := Val(Mid(xCNPJ, 8, 1)) * (6);

nX9 := Val(Mid(xCNPJ, 9, 1)) * (5);

nX10 := Val(Mid(xCNPJ, 10, 1)) * (4);

nX11 := Val(Mid(xCNPJ, 11, 1)) * (3);

nX12 := Val(Mid(xCNPJ, 12, 1)) * (2);

// Soma o Resultado

nTX := ((nX1) + (nX2) + (nX3) + (nX4) + (nX5) + (nX6) + (nX7) + (nX8) + (nX9) + (nX10) + (nX11) + (nX12));

// Divide-se o resultado por 11 e pega-se a parte inteira

nInt := (Int((nTX) / (11)));

// Acha-se o resto

nResto := ((nTX) - ((nInt) * (11)));

//Acha-se o Digito

xDigito := Val(Mid(xCNPJ, 13, 1));

yDigito := ((11) - (nResto));

If yDigito >= 10 Then yDigito := 0;

// Calculo para o segundo digito

If xDigito = yDigito Then

//Extrair os numeros de 1 a 11 e multiplica-los por 6,5,4,3,2,9,8,7,6,5,4,3,2

nX1 := Val(Mid(xCNPJ, 1, 1)) * (6);

nX2 := Val(Mid(xCNPJ, 2, 1)) * (5);

nX3 := Val(Mid(xCNPJ, 3, 1)) * (4);

nX4 := Val(Mid(xCNPJ, 4, 1)) * (3);

nX5 := Val(Mid(xCNPJ, 5, 1)) * (2);

nX6 := Val(Mid(xCNPJ, 6, 1)) * (9);

nX7 := Val(Mid(xCNPJ, 7, 1)) * (8);

nX8 := Val(Mid(xCNPJ, 8, 1)) * (7);

nX9 := Val(Mid(xCNPJ, 9, 1)) * (6);

nX10 := Val(Mid(xCNPJ, 10, 1)) * (5);

nX11 := Val(Mid(xCNPJ, 11, 1)) * (4);

nX12 := Val(Mid(xCNPJ, 12, 1)) * (3);

nX13 := Val(Mid(xCNPJ, 13, 1)) * (2);

//Soma o Resultado

nTX := ((nX1) + (nX2) + (nX3) + (nX4) + (nX5) + (nX6) + (nX7) + (nX8) + (nX9) + (nX10) + (nX11) + (nX12) + (nX13));

//Divide-se o resultado por 11 e pega-se a parte inteira

nInt := (Int((nTX) / (11)));

//Acha-se o resto

nResto := ((nTX) - ((nInt) * (11)));

//Acha-se o Digito

xDigito := Val(Mid(xCNPJ, 14, 1));

yDigito := ((11) - (nResto));

If yDigito >= 10 Then yDigito := 0;

//Retorno da funcao

If xDigito = yDigito Then

Valida := True

Else

Valida := False;

if nResto = 10 then Valida := true; //(não sei porque mas tive q colocar essa linha pra dar certo.)

valida;

===================================

Editado por Fábio Spies
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...