Você esta aqui: Home Tutoriais Adicionando validação de CPF/CNPJ no Magento

Módulo da Cielo para Magento

Adicionando validação de CPF/CNPJ no Magento

E-mail Imprimir PDF

 

Como hoje precisei acertar um problema que estava tendo com a Validação de CPF/CNPJ de um cliente, resolvi postar aqui meu primeiro tutorial.

Então vamos lá!

Para não precisar adicionar um novo campo, vamos utilizar o campo TAXVAT que já vem no cadastro de Cliente.

Então no arquivo: app/design/frontend/<<<default>>>/<<<default>>>/layout/page.xml

Adicione a linha abaixo:

 <action method="addJs"><script><<<suaempresa>>>/validacao.js</script></action>

No final do arquivo: app/design/frontend/<<<default>>>/<<<default>>>/template/customer/widget/taxvat.phtml
 
Adicione:

<script type="text/javascript">

	//<![CDATA[

	

	// Adicionar classe de validação de cpf e cnpj ao Taxvat

	$('<?php echo $this->getFieldId('taxvat'); ?>').addClassName('validar_cpf');

	Validation.add('validar_cpf', 'O CPF ou CNPJ informado \xE9 invalido', function(v){return validaCPF(v,0);});

	

	//]]>

	</script> 

Crie um arquivo em: magento/js/<<<suaempresa>>>/validacao.js

Com o seguinte conteúdo:

function validaCPF(cpf,pType){

	

	var cpf_filtrado = "", valor_1 = " ", valor_2 = " ", ch = "";

	var valido = false;

	

	for (i = 0; i < cpf.length; i++){

	ch = cpf.substring(i, i + 1);

	if (ch >= "0" && ch <= "9"){

	cpf_filtrado = cpf_filtrado.toString() + ch.toString()

	valor_1 = valor_2;

	valor_2 = ch;

	}

	if ((valor_1 != " ") && (!valido)) valido = !(valor_1 == valor_2);

	}

	

	if (!valido) cpf_filtrado = "12345678912";

	

	if (cpf_filtrado.length < 11){

	for (i = 1; i <= (11 - cpf_filtrado.length); i++){cpf_filtrado = "0" + cpf_filtrado;}

	}

	

	if(pType <= 1){

	if ( ( cpf_filtrado.substring(9,11) == checkCPF( cpf_filtrado.substring(0,9) ) ) && ( cpf_filtrado.substring(11,12)=="") ){return true;}

	}

	

	if((pType == 2) || (pType == 0)){

	if (cpf_filtrado.length >= 14){

	if ( cpf_filtrado.substring(12,14) == checkCNPJ( cpf_filtrado.substring(0,12) ) ){ return true;}

	}

	}

	

	return false;

	}

	

	function checkCNPJ(vCNPJ){

	var mControle = "";

	var aTabCNPJ = new Array(5,4,3,2,9,8,7,6,5,4,3,2);

	for (i = 1 ; i <= 2 ; i++){

	mSoma = 0;

	for (j = 0 ; j < vCNPJ.length ; j++)

	mSoma = mSoma + (vCNPJ.substring(j,j+1) * aTabCNPJ[j]);

	if (i == 2 ) mSoma = mSoma + ( 2 * mDigito );

	mDigito = ( mSoma * 10 ) % 11;

	if (mDigito == 10 ) mDigito = 0;

	mControle1 = mControle ;

	mControle = mDigito;

	aTabCNPJ = new Array(6,5,4,3,2,9,8,7,6,5,4,3);

	}

	return( (mControle1 * 10) + mControle );

	}

	

	function checkCPF(vCPF){

	var mControle = ""

	var mContIni = 2, mContFim = 10, mDigito = 0;

	for (j = 1 ; j <= 2 ; j++){

	mSoma = 0;

	for (i = mContIni ; i <= mContFim ; i++)

	mSoma = mSoma + (vCPF.substring((i-j-1),(i-j)) * (mContFim + 1 + j - i));

	if (j == 2 ) mSoma = mSoma + ( 2 * mDigito );

	mDigito = ( mSoma * 10 ) % 11;

	if (mDigito == 10) mDigito = 0;

	mControle1 = mControle;

	mControle = mDigito;

	mContIni = 3;

	mContFim = 11;

	}

	return( (mControle1 * 10) + mControle );

	}

Qualquer dúvida é só avisar.

abraço
 
Pablo Tischer
Última atualização ( Qui, 15 de Abril de 2010 11:01 )  

Comentários  

 
-1 # Flavio 2010-03-26 12:03
Pablo

Fiz tudo como mostra acima estou usando a versão Magento: 1.3.2.4, mas não valida o campo caso tenha digitado CPF invalido.
Não dá nenhum erro simplesmente envia o form

Obrigado
Reply | Responder com citação | Citar
 
 
0 # CajuCLC 2010-03-29 01:23
Vc fez TUDO como diz ai?
Ja fiz e refiz isso ai milhares de vezes e nunca tive problema.
Qualquer dúvida, poste no forum.
Reply | Responder com citação | Citar
 
 
0 # criacao de sites 2010-04-13 13:38
muito obrigado,

Eu fiz e funcionou direitinho. Obrigado Mestre!
Reply | Responder com citação | Citar
 
 
0 # pablo 2010-04-15 13:20
A função tinha um pequeno erro, mas já foi alterada.

Qualquer dúvida é só avisar.
Reply | Responder com citação | Citar
 
 
0 # Jonny 2010-05-20 10:19
Olá, uma ajuda se possível,

A validação deu certo no template default, mas como mudei para o modern, não consegue validar. Fiz todo o processo para a pasta modern conforme o tutorial acima.

Outra dica, é possível ele checar também no banco se o cnpf ou cnpj já existe?

Obrigado
Reply | Responder com citação | Citar
 
 
+1 # ProGammer 2010-05-31 11:57
Amigos no meu template não tem a pasta customer, meu template eh o f001.

o que fazer agora?
Reply | Responder com citação | Citar
 
 
0 # Brayan1988 2010-06-01 10:01
Mas ele tem a parte de cadsatro de usuario na tela nao tem? de algum lugar ta vindo, tem q descobrir de onde q ta vindo.
Reply | Responder com citação | Citar
 
 
0 # Helhao 2010-07-03 22:04
funciona na versão 1.4,
dúvida a versão que estou usando é a mais recente.. ela é melhor?

obrigado
Reply | Responder com citação | Citar
 
 
0 # mcanova 2010-07-06 00:47
Olá,

Para quem não quer o CNPJ obrigatório como eu, insira acima deste trecho:

if (cpf_filtrado.length >= 14){ ...

...o seguinte código:

if (cpf_filtrado.substring(0,12) == "12345678912") { return true; }

...pois o código como está aqui neste tutorial, acusa o CNPJ vazio como inválido., impossibilitand o dar continuidade no cadastro sem que você o preencha com um CNPJ válido.

PS.: Parabéns!

Abs
Reply | Responder com citação | Citar
 
 
0 # Alardan 2010-07-09 14:49
É, eu apanhei, tentei de tudo que é forma, essa também não tava dando :( mas acabou que deu certo.. Então, agradeço desde ja ;D
Reply | Responder com citação | Citar
 
 
0 # thiiix7 2010-07-22 13:13
Estou usando o tema modern do 1.4.1.0

Porem nao funciona, a tela fica inteira branca.
Reply | Responder com citação | Citar
 
 
0 # CajuCLC 2010-07-29 23:56
Duvidas no forum somente.
Reply | Responder com citação | Citar
 
 
0 # Ar Condicionado 2010-12-21 15:25
Deu certo!!!! ficou perfeito !!!! CPF ou CNPJ....
Reply | Responder com citação | Citar
 
 
0 # edgard 2011-01-31 08:51
e para a versão 1.4.2.0 , não tem a pasta customer conforme mencionado app/design/frontend///template/customer/widget/taxvat.phtml

Então como eu faria?
Reply | Responder com citação | Citar
 
 
0 # CajuCLC 2011-01-31 10:10
Na versao 1.4.2.0 ainda tem sim o arquivo. Verifica seu template. Caso ele nao tenha, utilize o da basta base.
Abs
Reply | Responder com citação | Citar
 
 
0 # pablo 2011-01-31 09:35
Você precisa verificar em qual página é adicionado o campo taxvat.
Reply | Responder com citação | Citar
 
 
0 # DANIELXX7889 2011-02-07 16:34
magentocommerce.com/.../P15

Vi uma dica no forum acima mas nao conseguir entender
Reply | Responder com citação | Citar
 
 
0 # Daniel Miguel 2011-02-28 15:07
Funcionou que é uma lindeza! Vocês são os caras, muito obrigado por este script lindamente maravilhoso!

Eu só fiz diferente no arquivo: taxvat.phtml onde ao invés de colocar a classe com javascript eu coloquei no código mesmo....

Mas eu entendi o porque você fez isso por javascript, porque fica mais fácil de entender mesmo!

Parabéns!
Reply | Responder com citação | Citar
 
 
0 # Erick Paulino 2011-03-03 11:13
Funcionou perfeitamente! Solução eficaz e elegante! :)
Reply | Responder com citação | Citar
 
 
0 # msantana 2011-03-28 03:50
perfeita a solução para o problema.
obg!
Reply | Responder com citação | Citar
 
 
0 # duspra 2011-04-15 15:56
possuo o tema f001 instalado e versão 1.4.1.1
fiz tdas as mudanças de código na pasta "base" pois nao possuo os mesmos arquivos em "default".

Contudo ao clicar no link "Cadastrar" nada acontece!
Alguem passou por esse problema?

Abraço
Reply | Responder com citação | Citar
 
 
0 # pablo 2011-04-15 16:47
Dúvidas precisam ser feitas no forum.
Reply | Responder com citação | Citar
 
 
0 # DANIEL2011-04-15 2011-04-15 17:34
DEEM UMA OLHADA EM MEU BLOG QUE TEM A SOLUÇÃO:
alvesbarbosa.wordpress.com/
Reply | Responder com citação | Citar
 
 
0 # Bromios Designer 2011-07-27 18:12
Valeu

Funcionou perfeito...
Abs e sucesso à todos
Reply | Responder com citação | Citar
 
 
0 # gabrielcasanova 2011-09-15 15:20
Funcionou muito bem!
Reply | Responder com citação | Citar
 
 
0 # rogereza 2011-12-16 23:24
Aqui nao não deu!
já tentei de tudo quanto é jeito.
Já até desinstalei e instalei o magento.
Ele nao valida nada...passa direto qualquer CPF

Por favor, ajude-me!
Obrigado
Reply | Responder com citação | Citar
 
 
0 # alexandremf 2012-03-21 22:34
Boa galera, funcionou certinho.Obrigado
Reply | Responder com citação | Citar
 
 
0 # Fabio3545 2012-03-30 15:01
Como fazer com que o Magento verifique se no cadastro existe alguém com o mesmo CPF já cadastrado?
Reply | Responder com citação | Citar
 

Adicionar comentário


Código de segurança
Refresh