Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

How to: Adicionar validação de CPF no checkout One Page
 
suricate
Sr. Member
 
Avatar
Total Posts:  129
Joined:  2009-06-25
Brazil
 

Pessoal,

Dei uma modificada no código baseado na função achada em : http://www.vivaolinux.com.br/script/isCPFCNPJ afim de validar CPF e CNPJ e também resolvendo o problema quando o cliente digita pontos e traços. Só tem um probleminha, os pontos e traços ficam no cadastro e eu queria que ele limpasse, se alguem puder melhorar agradecemos.

Vamos lá:

No taxvat.phtml :

<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>

no page.xml

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

e finalmente no validacao.js temos:

/*
*
*    Funções de validação CPF e CNPJ
*    Data da Criação: 13/09/2009
*    Fernando Oléa , baseado na função do Jonathan Moratelli de Carvalho e outra do Celso Goya
*    Versão: 0.1
*
*/



function validaCPF(cpf,pType){
   
   
var cpf_filtrado ""valor_1 " "valor_2 " "ch "";
   var 
valido false;
        
   for (
0cpf.lengthi++){
      ch 
cpf.substring(i1);
      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 (!validocpf_filtrado "12345678912";

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

    
if(pType <= 1){
        
if ( ( cpf_filtrado.substring(9,11) == checkCPFcpf_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) == checkCNPJcpf_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++){
      mSoma 
0;
      for (
vCNPJ.length j++)
         
mSoma mSoma + (vCNPJ.substring(j,j+1) * aTabCNPJ[j]);
      if (
== mSoma mSoma + ( 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 2mContFim 10mDigito 0;
   for (
<= j++){
      mSoma 
0;
      for (
mContIni <= mContFim i++)
         
mSoma mSoma + (vCPF.substring((i-j-1),(i-j)) * (mContFim i));
      if (
== mSoma mSoma + ( mDigito );
      
mDigito = ( mSoma 10 ) % 11;
      if (
mDigito == 10mDigito 0;
      
mControle1 mControle;
      
mControle mDigito;
      
mContIni 3;
      
mContFim 11;
   
}
   
return( (mControle1 10) + mControle );
}

Aproveitem! Melhorem!

Abraços

 
Magento Community Magento Community
Magento Community
Magento Community
 
DaKe
Member
 
Avatar
Total Posts:  41
Joined:  2008-04-01
São Paulo - Brazil
 

Pra eu entender…

Esse esquema funciona para cadastros tanto no carrinho como fora?

Alguem já viu algo sobre implementar a busca do CEP para trazer o endereço?

Vlw

 
Magento Community Magento Community
Magento Community
Magento Community
 
suricate
Sr. Member
 
Avatar
Total Posts:  129
Joined:  2009-06-25
Brazil
 

@Dake

Funciona em todos os locais no Frontend onde aparecer o campo Taxvat

 
Magento Community Magento Community
Magento Community
Magento Community
 
DaKe
Member
 
Avatar
Total Posts:  41
Joined:  2008-04-01
São Paulo - Brazil
 

Legal Suricate, vou testar em breve!

Galera!
Olha, tem um webservice para trazer o endereço através do CEP:

http://www.republicavirtual.com.br/cep/index.php

Aqui tem um exemplo de implementação:
http://nodesign.wordpress.com/2006/11/13/buscar-cep-via-webservice-dos-correios/

Se alguem tiver disponibilidade para testar no Magento…

Att.

 
Magento Community Magento Community
Magento Community
Magento Community
 
TranquiloRM
Member
 
Total Posts:  43
Joined:  2009-08-31
 

@ Suricate - fiz a validação com o seu código aqui só que o botão enviar parece não responder, sei lá....se eu deixo os campos em branco ele até faz a validação de campos em branco, mas se eu digito tudo certo parece que não acontece nada. E o registro não vai pro bd. Vc sabe o q pode estar acontecendo?

Abraços!

EDIT -

Erro meu, na hora de chamar a função digitei validarCPF invés de validaCPF....
Mas agora digitei um cpf invalido e passou…

 
Magento Community Magento Community
Magento Community
Magento Community
 
suricate
Sr. Member
 
Avatar
Total Posts:  129
Joined:  2009-06-25
Brazil
 

@tranquilorm

Qual o cpf invalido que passou pra eu testar aqui?

Abraços

Fernando

www.suricate.com.br

 
Magento Community Magento Community
Magento Community
Magento Community
 
TranquiloRM
Member
 
Total Posts:  43
Joined:  2009-08-31
 

qualquer absurdo q eu digito passa...rs...provavelmente eu q fiz algo errado, né?
Mas segui os passos certinho...tudo na base no ctrl+c ctrl+v...só modifiquei mesmo o “sua empresa” e fiquei na dúvida no phtml se era fora ou dentro da Div...coloquei dentro...tem algum porém qdo se faz essa modificação?

 
Magento Community Magento Community
Magento Community
Magento Community
 
suricate
Sr. Member
 
Avatar
Total Posts:  129
Joined:  2009-06-25
Brazil
 

no meu eu coloquei fora da div, no final do arquivo mesmo..

 
Magento Community Magento Community
Magento Community
Magento Community
 
suricate
Sr. Member
 
Avatar
Total Posts:  129
Joined:  2009-06-25
Brazil
 

testa no cadastro via minha conta > cadastrar .. pois eu não uso o cadastro do onepage e nao testei no onepage checkout…

 
Magento Community Magento Community
Magento Community
Magento Community
 
TranquiloRM
Member
 
Total Posts:  43
Joined:  2009-08-31
 

Opa! Obrigado pela atenção Fernando!

Vou fazer uns testes aqui...dar uma olhada melhor no código prá ver se eu num fiz nada de errado mesmo e posto denovo.

Edit - Estou fazendo os testes no firefox, será que pode ser isso ou num tem nada haver?

 
Magento Community Magento Community
Magento Community
Magento Community
 
TranquiloRM
Member
 
Total Posts:  43
Joined:  2009-08-31
 

Cara....realmente aqui não funciona. Coloquei dentro da div....fora da div...fiz e refiz tudo....testei no explorer e no firefox e sempre passa...estou digitando como CPF 111.111.111-11… confused

 
Magento Community Magento Community
Magento Community
Magento Community
 
TranquiloRM
Member
 
Total Posts:  43
Joined:  2009-08-31
 

Affff....eu sou uma anta mesmo...rs

Atualizei o page.xml do default invés do tema q eu tô usando...por isso q num ia!

Desculpa o transtorno aí Suricate! Vlw!!! O codigo funciona blz até mesmo no one page checkout!!!

abraços!

 
Magento Community Magento Community
Magento Community
Magento Community
 
suricate
Sr. Member
 
Avatar
Total Posts:  129
Joined:  2009-06-25
Brazil
 
tranquilorm - 16 September 2009 10:44 AM

Affff....eu sou uma anta mesmo...rs

Atualizei o page.xml do default invés do tema q eu tô usando...por isso q num ia!

Desculpa o transtorno aí Suricate! Vlw!!! O codigo funciona blz até mesmo no one page checkout!!!

abraços!

KKKKK
Que isso, não é transtorno nenhum..ainda bem que deu certo

Abraço

 
Magento Community Magento Community
Magento Community
Magento Community
 
coffenet
Jr. Member
 
Total Posts:  4
Joined:  2009-06-11
 

Consegui realizar a validação mas testando percebi algo que poderá dar problema no futuro. O mesmo número de CPF pode ser inserido mais de uma vez.

Alguém faz ideia de como evitar isso?

 
Magento Community Magento Community
Magento Community
Magento Community
 
FabioJardim
Jr. Member
 
Total Posts:  2
Joined:  2009-10-29
 

Boa tarde a todos.

Eu coloquei a validação e não funcionou, mas como funcionou para a maioria, vou tentar até funcionar.
O que eu gostaria de ter uma luz é de como posso bloquear CPF duplicados mesmo. O Magento já valida o email duplicado.

Alguém sabe??
Obrigado.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top