Alterar um campo de validação de CNPJ para CPF

7 respostas
D

Olá galera, tudo azul por aqui?

Seguinte, preciso fazer uma alteração num sistema, o cadastro dele é baseado em CNPJ, porém, com as novas regras da empresa, preciso substituir o cadastro por CNPJ, por um baseado em CPF.

A codificação de validação e conferencia está todo em java… e tpo… nao entendo Lhufas de java… se alguém puder me dar uma mão?

a seguir estou colocando os códigos q ncontrei nos arquivos do sistema q podem ter ligação com isso:

sistema.js
///////////////////////////////////////////
//    FORMATA CNPJ
///////////////////////////////////////////
function FormataCnpj(fieldName,maxSize,keyPressed) { //v0.1

  var tecla = keyPressed.keyCode;

	vr = document.getElementById(fieldName).value;
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( "-", "" );
	size = vr.length;

	if (size < maxSize && tecla != 8){ size = vr.length + 1 ; }

	if (tecla == 8 ){	size = size - 1 ; }

	if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
		count = 0;

		if ( size < 2 ){
			count=0;
	 		document.getElementById(fieldName).value = vr ;
			}
   if ( (size >= 2) && (size <= 6) ){
			count=1;
	 		document.getElementById(fieldName).value = vr.substr( 0, size - 2 ) + '-' + vr.substr( size - 2, size ) ;
			}
   if ( (size >=6) && (size <= 9) ){
			count=2;
	 		document.getElementById(fieldName).value = vr.substr( 0, size - 6 ) + '/' + vr.substr( size - 6, 4 ) + '-' + vr.substr( size - 2, size ) ;
			}
   if ( (size >= 9) && (size <= 12) ){
			count=3;
	 		document.getElementById(fieldName).value = vr.substr( 0, size - 9 ) + '.' + vr.substr( size - 9, 3 ) + '/' + vr.substr( size - 6, 4 ) + '-' + vr.substr( size - 2, size ) ;
			}
   if ( (size >= 12) && (size <= 15) ){
			count=4;
	 		document.getElementById(fieldName).value = vr.substr( 0, size - 12 ) + '.' + vr.substr( size - 12, 3 ) + '.' + vr.substr( size - 9, 3 ) + '/' + vr.substr( size - 6, 4 ) + '-' + vr.substr( size - 2, size ) ;
			}
   /*if ( (size >= 15) && (size <= 17) ){
			count=5;
	 		document.getElementById(fieldName).value = vr.substr( 0, size - 14 ) + '' + vr.substr( size - 14, 3 ) + '' + vr.substr( size - 11, 3 ) + '' + vr.substr( size - 8, 3 ) + '' + vr.substr( size - 6, 3 ) + '.' + vr.substr( size - 2, size ) ;
			} */
	}
 status = size;
	if (size >= maxSize)
	{
		document.getElementById(fieldName).value = document.getElementById(fieldName).value.substring(0, maxSize+count - 1);
	}
}

function validaCNPJ(n)
{
  CNPJ = document.getElementById(n).value;
  erro = new String;
  if (CNPJ.length < 18)
    erro += "É necessario preencher corretamente o número do CNPJ! \n\n";
  if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-"))
  {
    if (erro.length == 0)
      erro += "É necessário preencher corretamente o número do CNPJ! \n\n";
  }
  //substituir os caracteres que não são números
  if(document.layers && parseInt(navigator.appVersion) == 4)
  {
    x = CNPJ.substring(0,2);
    x += CNPJ. substring (3,6);
    x += CNPJ. substring (7,10);
    x += CNPJ. substring (11,15);
    x += CNPJ. substring (16,18);
    CNPJ = x;
  }
  else
  {
    CNPJ = CNPJ. replace (".","");
    CNPJ = CNPJ. replace (".","");
    CNPJ = CNPJ. replace ("-","");
    CNPJ = CNPJ. replace ("/","");
  }
  var nonNumbers = /\D/;

  if (nonNumbers.test(CNPJ))
    erro += "A verificação de CNPJ suporta apenas números! \n\n";
  var a = [];
  var b = new Number;
  var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];

  for (i=0; i<12; i++)
  {
    a[i] = CNPJ.charAt(i);
    b += a[i] * c[i+1];
  }

  if ((x = b % 11) < 2)
  {
    a[12] = 0
  }
  else
  {
    a[12] = 11-x
  }
  b = 0;
  for (y=0; y<13; y++)
  {
    b += (a[y] * c[y]);
  }

  if ((x = b % 11) < 2)
  {
    a[13] = 0;
  }
  else
  {
    a[13] = 11-x;
  }

  if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13]))
  {
    erro +="Dígito verificador do CNPJ com problema!";
  }

  if (erro.length > 0)
  {
    alert(erro);
    return false;
  }
  else
  {
    return true;
  }

}

Acredito q alterando esse código corretamente eu só precise depois alterar o nome da Label do campo de texto… o resto é consequencia.

Pra quem puder me ajudar, eu agradeço.

7 Respostas

I

Olá, utilize expressões regulares para validar estas entradas. Ficaria algo como:

//...
final String data = textField.getText(); //pega a entrada (cpf, cnpj...)
final String cpfMask = "[0-9]{1-3}\\.[0-9]{3}\\.[0-9]{3}-{1}[0-9]{2}";
final String cnpjMask = "[0-9]{2}\\.[0-9]{3}\\.[0-9]{3}/{1}[0-9]{4}-{1}[0-9]{2}";
final Pattern pattern = Pattern.compile(cpfMask); //ou cnpjMask
final Matcher matcher = pattern.matcher(data);
final boolean isValid = matcher.matches();
//... return isValid

Não testei o código, mas é mais ou menos isto aí. O grande desafio é justamente montar uma expressão regular para validar a entrada. De qualquer modo mais informações tu obtem aqui http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html

T+

D

vlw a dica… mas falou grego comigo rsrsrs

como eu disse, o sistema ta pronto e funcional, a validação e verificação funcionam realmente… pórem, eu preciso trocar este código de CNPJ, por um de CPF…

se alguém souber como me dar um help…

I

Desculpe… agora que vi que é Java Script.

D

hmmm

isso é bom ou ruim?

(como disse, nao sei lhufas de java)

I

Na verdade não se trata de bom ou ruim, é que o código que passei é Java e não Java Script (pois NÃO são a mesma coisa), que é o que estais precisando. T+

D

hmm entendi…

não sabia que haviam “dois” javas rs

mas agora estou me inteirando (o dia todo em foruns de java faz a gante aprender alguns detalhes rs)

I

Beleza. De qualquer modo pesquise no google por “validar CPF em JavaScript” ou “validador CPF JavaScript” que vai aparecer o que tu precisa.

Tenta este http://www.linhadecodigo.com.br/artigos.asp?id_ac=153&sub=0

T+

Criado 31 de julho de 2006
Ultima resposta 31 de jul. de 2006
Respostas 7
Participantes 2