Magento Forum

Page 1 of 5
How to: Adicionar validação de CPF no checkout One Page
 
Julio Vedovatto
Member
 
Total Posts:  33
Joined:  2008-06-18
 

Olá pessoal,

procurando incentivar mais contribuições aqui no fórum brasileiro, escrevi no meu blog um artigo ensinando como implementar validação de CPF no magneto, sem aquele alert() chato que a Farma Delivery utiliza eheheheh.

Link para o artigo: http://juliovedovatto.wordpress.com/2008/11/21/programacao-adicionando-validacao-de-cpf-no-magento/

Caso tenham dúvidas, postem aqui ou comentem lá mesmo no artigo. :)

Pretendo sempre quando puder colocar mais ‘How to’ aqui no fórum, não é só gringo que pode não! rasberry

Abraços a todos e bom proveito.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Eric Cavalcanti
Guru
 
Avatar
Total Posts:  710
Joined:  2008-09-28
San Antonio
 

Aqui depois de adicionar o codigo ele some com o botao pra fechar a compra.

 
Magento Community Magento Community
Magento Community
Magento Community
 
APEofGOD
Sr. Member
 
Avatar
Total Posts:  100
Joined:  2008-05-28
 

Testei aqui colando o seu código abaixo do existente, logo antes da tag </script> e ao testar ele funciona, mas não passa para a próxima etapa, fica travado no formulário de cadastro.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Julio Vedovatto
Member
 
Total Posts:  33
Joined:  2008-06-18
 

Tente ver se não está ocorrendo erro no javascript primeiramente. Pois o código funciona perfeitamente aqui.

Qualquer dúvida posta como você implementou o código.

[]’s

 
Magento Community Magento Community
Magento Community
Magento Community
 
APEofGOD
Sr. Member
 
Avatar
Total Posts:  100
Joined:  2008-05-28
 

Implementei basicamente acrescentando logo antes da tag </script>. Copia e cola básico, sem alterar o que já estava lá. Uso o modern theme, com o Magento 1.2.0.1.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Jonathan Moratelli
Member
 
Total Posts:  35
Joined:  2008-10-30
 

O Problema ocorre quando se erra o CPF pelo menos uma vez, se digitar o número certo de primeira funciona.

Alguém conseguiu resolver esse problema???

 
Magento Community Magento Community
Magento Community
Magento Community
 
Jonathan Moratelli
Member
 
Total Posts:  35
Joined:  2008-10-30
 

Fiz a validação e está funcionando corretamente.

Funciona em todos os locais onde o campo TAXVAT, não é necessário ficar adicionando em várias páginas.

Segue abaixo o que eu fiz:

Arquivo: magento/app/design/frontend/<<<default>>>/<<<default>>>/layout/page.xml

Adicione as linhas abaixo

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

Arquivo: magento/app/design/frontend/<<<default>>>/<<<default>>>/template/customer/widget/taxvat.phtml

No final do arquivo adicione:

<script type="text/javascript">
//<![CDATA[
    
//   Adicionar classe de validação de cpf ao Taxvat
    
$('<? echo $this->getFieldId('taxvat'); ?>').addClassName('validar_cpf');
    
Validation.add('validar_cpf''O CPF informado \xE9 invalido', function(v){return validaCPF(v);});
    
//]]>
</script>

Crie o arquivo: magento/js/<<<suaempresa>>>/validacao.js

/*
*
*    Funções de validação customizadas
*    Data da Criação: 30/01/2009
*    Jonathan Moratelli de Carvalho
*    Versão: 0.1
*
*/


function validaCPF(cpf)
{
    
if (cpf.length 11)
        return 
false;
        
    var 
nonNumbers = /\D/;
    
    if (
nonNumbers.test(cpf))
        return 
false;
        
    if (
cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999")
        return 
false;
    
    var 
[];
    var 
= new Number;
    var 
11;
    
    for (
i=0i<11i++)
    
{
        a[i] 
cpf.charAt(i);
        if (
9)
            
+= (a[i] * --c);
    
}
    
    
if ((11) < 2)
        
a[9] 0;
    else
        
a[9] 11-x;
    
    
0;
    
11;
    
    for (
y=0y<10y++)
        
+= (a[y] c--);
        
    if ((
11) < 2)
        
a[10] 0;
    else
        
a[10] 11-x;
        
    if ((
cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]))
        return 
false;

    return 
true;
}

Se não esqueci de nada é isso aew!!!

 
Magento Community Magento Community
Magento Community
Magento Community
 
Alexandre Queiróz
Member
 
Avatar
Total Posts:  43
Joined:  2008-02-27
Brazil
 
Jonathan Moratelli - 30 January 2009 08:17 AM

Fiz a validação e está funcionando corretamente.

Funciona em todos os locais onde o campo TAXVAT, não é necessário ficar adicionando em várias páginas.

Segue abaixo o que eu fiz:

Arquivo: magento/app/design/frontend/<<<default>>>/<<<default>>>/layout/page.xml

Adicione as linhas abaixo

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



Arquivo: magento/app/design/frontend/<<<default>>>/<<<default>>>/template/customer/widget/taxvat.phtml

No final do arquivo adicione:
<script type="text/javascript">
//<![CDATA[
    
//   Adicionar classe de validação de cpf ao Taxvat
    
$('<? echo $this->getFieldId('taxvat'); ?>').addClassName('validar_cpf');
    
Validation.add('validar_cpf''O CPF informado \xE9 invalido', function(v){return validaCPF(v);});
    
//]]>
</script>

Crie o arquivo: magento/js/<<<suaempresa>>>/validacao.js

/*
*
*    Funções de validação customizadas
*    Data da Criação: 30/01/2009
*    Jonathan Moratelli de Carvalho
*    Versão: 0.1
*
*/


function validaCPF(cpf)
{
    
if (cpf.length 11)
        return 
false;
        
    var 
nonNumbers = /\D/;
    
    if (
nonNumbers.test(cpf))
        return 
false;
        
    if (
cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999")
        return 
false;
    
    var 
[];
    var 
= new Number;
    var 
11;
    
    for (
i=0i<11i++)
    
{
        a[i] 
cpf.charAt(i);
        if (
9)
            
+= (a[i] * --c);
    
}
    
    
if ((11) < 2)
        
a[9] 0;
    else
        
a[9] 11-x;
    
    
0;
    
11;
    
    for (
y=0y<10y++)
        
+= (a[y] c--);
        
    if ((
11) < 2)
        
a[10] 0;
    else
        
a[10] 11-x;
        
    if ((
cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]))
        return 
false;

    return 
true;
}


Se não esqueci de nada é isso aew!!!

Jonathan,

Testei a validação de acordo com a sua proposta e não funcionou, qualquer valor digitado passa.

Alexandre.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Jonathan Moratelli
Member
 
Total Posts:  35
Joined:  2008-10-30
 
Alexandre Queiróz - 05 February 2009 05:10 PM

Jonathan Moratelli - 30 January 2009 08:17 AM
Fiz a validação e está funcionando corretamente.

Funciona em todos os locais onde o campo TAXVAT, não é necessário ficar adicionando em várias páginas.

Segue abaixo o que eu fiz:

Arquivo: magento/app/design/frontend/<<<default>>>/<<<default>>>/layout/page.xml

Adicione as linhas abaixo
<action method="addJs"><script><<<suaempresa>>>/validacao.js</script></action>



Arquivo: magento/app/design/frontend/<<<default>>>/<<<default>>>/template/customer/widget/taxvat.phtml

No final do arquivo adicione:
<script type="text/javascript">
//<![CDATA[
    
//   Adicionar classe de validação de cpf ao Taxvat
    
$('<? echo $this->getFieldId('taxvat'); ?>').addClassName('validar_cpf');
    
Validation.add('validar_cpf''O CPF informado \xE9 invalido', function(v){return validaCPF(v);});
    
//]]>
</script>

Crie o arquivo: magento/js/<<<suaempresa>>>/validacao.js

/*
*
*    Funções de validação customizadas
*    Data da Criação: 30/01/2009
*    Jonathan Moratelli de Carvalho
*    Versão: 0.1
*
*/


function validaCPF(cpf)
{
    
if (cpf.length 11)
        return 
false;
        
    var 
nonNumbers = /\D/;
    
    if (
nonNumbers.test(cpf))
        return 
false;
        
    if (
cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999")
        return 
false;
    
    var 
[];
    var 
= new Number;
    var 
11;
    
    for (
i=0i<11i++)
    
{
        a[i] 
cpf.charAt(i);
        if (
9)
            
+= (a[i] * --c);
    
}
    
    
if ((11) < 2)
        
a[9] 0;
    else
        
a[9] 11-x;
    
    
0;
    
11;
    
    for (
y=0y<10y++)
        
+= (a[y] c--);
        
    if ((
11) < 2)
        
a[10] 0;
    else
        
a[10] 11-x;
        
    if ((
cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]))
        return 
false;

    return 
true;
}


Se não esqueci de nada é isso aew!!!

Jonathan,

Testei a validação de acordo com a sua proposta e não funcionou, qualquer valor digitado passa.

Alexandre.

Deve haver alguma coisa errada no seu código, algum caracter errado. Aqui tá funcionando.

Image Attachments
screenshot.JPG
 
Magento Community Magento Community
Magento Community
Magento Community
 
Henrique Almeida
Jr. Member
 
Total Posts:  3
Joined:  2008-09-13
 

Jonathan,

Tentei fazer a validação do jeito que vc sugeriu mas não funciona, ele só valida se o campo estiver vazio.
Qualquer número que eu digito ele não valida.
Estou rodando o Magento, em localhost (Wamp), versão 1.2.1 e com o tema Modern.
Tentei validar pelo tema default e também não deu certo.

Alexandre,

Vc conseguiu validar?

[]´s

Henrique

 
Magento Community Magento Community
Magento Community
Magento Community
 
Jonathan Moratelli
Member
 
Total Posts:  35
Joined:  2008-10-30
 

Aqui tá funcionando tudo normal!!!

Pelo jeito, no seu caso o problema parece ser que a função validaCPF não está sendo encontrada. A validação de campo vazio funcionou porque o campo tá marcado como required-field no magento.

Verifique no xml o caminho <action method="addJs"><script><<<suaempresa>>>/validacao.js</script></action> .

Para teste faça uma função com um alert(’aaaaaa’) dentro do arquivo validacao.js e a chame pra ver se tá funcionando.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Henrique Almeida
Jr. Member
 
Total Posts:  3
Joined:  2008-09-13
 

Testei aqui e ele não está reconhecendo o arquivo validacao.js, por isso ele não valida.
Estranho pois já chequei tudo e a não ser que eu esteja louco não tem nada errado.

o meu page.xml está assim:

layout version="0.1.0">
<!--
Default 
layoutloads most of the pages
-->

    <default>
        <
block type="page/html" name="root" output="toHtml" template="page/2columns-left.phtml">

            <
block type="page/html_head" name="head" as="head">
                <
action method="addJs"><script>prototype/prototype.js</script></action>
                <
action method="addJs" ifconfig="dev/js/deprecation"><script>prototype/deprecation.js</script></action>
                <
action method="addJs"><script>prototype/validation.js</script></action>
                <
action method="addJs"><script>scriptaculous/builder.js</script></action>
                <
action method="addJs"><script>scriptaculous/effects.js</script></action>
                <
action method="addJs"><script>scriptaculous/dragdrop.js</script></action>
                <
action method="addJs"><script>scriptaculous/controls.js</script></action>
                <
action method="addJs"><script>scriptaculous/slider.js</script></action>
                <
action method="addJs"><script>varien/js.js</script></action>
                <
action method="addJs"><script>varien/form.js</script></action>
                <
action method="addJs"><script>varien/menu.js</script></action>
                <
action method="addJs"><script>mage/translate.js</script></action>
                <
action method="addJs"><script>mage/cookies.js</script></action>
                
        <
action method="addJs"><script>cpf/validacao.js</script></action>

...

o validacao.js está na pasta cpf dentro da pasta js do magento

 
Magento Community Magento Community
Magento Community
Magento Community
 
Jonathan Moratelli
Member
 
Total Posts:  35
Joined:  2008-10-30
 

Também naum encontrei nada de errado.

Verifique as permissões da pasta e dos arquivos. Limpe o cache.

 
Magento Community Magento Community
Magento Community
Magento Community
 
necromancer
Jr. Member
 
Total Posts:  23
Joined:  2008-07-27
 

Fiz exatamente igual e também estou com problemas.
Permissões ok
cache Limpo!

 
Magento Community Magento Community
Magento Community
Magento Community
 
Jonathan Moratelli
Member
 
Total Posts:  35
Joined:  2008-10-30
 

Eu acho que é algum problema com javascript.

Instalem a extensão Firebug do Firefox para verificar se está ocorrendo algum erro.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Alexandre Queiróz
Member
 
Avatar
Total Posts:  43
Joined:  2008-02-27
Brazil
 

Aqui tb não funciona!
Infelizmente não entendo quase nada de JS.
A página carrega o JS mas não valida.

Alexandre.

Image Attachments
img2.jpgimg1.jpg
 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top
Page 1 of 5