Jump to content

Módulo que valida o cep com auto preenchimento do endereço


Recommended Posts

Prezados amigos, gostaria de saber se existe algum módulo que valida o cep com auto preenchimento do endereço. Estou usando o módulo grátis FKcorreios 2014 Lite ele é para o cálculo dos correio antes mensmo da finalização da compra porém ele não valida o cep, Desde já agradeço a atenção e ajuda.

Link to comment
Share on other sites

  • 3 months later...

Prezados amigos, gostaria de saber se existe algum módulo que valida o cep com auto preenchimento do endereço. Estou usando o módulo grátis FKcorreios 2014 Lite ele é para o cálculo dos correio antes mensmo da finalização da compra porém ele não valida o cep, Desde já agradeço a atenção e ajuda.

Olha depois de procurar muito um módulo dessa natureza, eu encontrei uma saída, esse deu certo para o prestashop 1.6. A solução foi acrescentar o código que se refere ao cadastramento ou alteração de endereço. Vamos lá.

Primeiro você procura  o arquivo address.tpl, localizado em \themes\default-bootstrap.

Abra o arquivo e logo no inicio cole esse código.

 

  <script>
    function consultacep(postcode){
      postcode = postcode.replace(/\D/g,"")
      url="http://cep.correiocontrol.com.br/"+postcode+".js"
      s=document.createElement('script')
      s.setAttribute('charset','utf-8')
      s.src=url
      document.querySelector('head').appendChild(s)
    }
 
    function correiocontrolcep(valor){
      if (valor.erro) {
        alert('Cep não encontrado');        
        return;
      };
      document.getElementById('address1').value=valor.logradouro
      document.getElementById('address2').value=valor.bairro
      document.getElementById('city').value=valor.localidade
      document.getElementById('State').value=valor.uf
    }
    </script>
 
Depois procure a linha
{if $field_name eq 'postcode'}
 
Logo abaixo você vai encontrar essa linha
<input class="is_required validate form-control" data-validate="{$address_validation.$field_name.validate}" type="text" id="postcode" name="postcode" value="{if isset($smarty.post.postcode)}{$smarty.post.postcode}{else}{if isset($address->postcode)}{$address->postcode|escape:'html':'UTF-8'}{/if}{/if}" maxlength=9 onblur="consultacep(this.value)"/>
 
Acrescente a seguinte informação em vermelho.
 
O maxlength irá limitar a quantidade de caracteres em 9, podendo o usuário digitar no formato 99111000 ou 99111-000, os dois serão aceitos e validados sem problemas.
 
O consultacep é só para chamar a função colocada no inicio desse arquivo.
 
Esse código consulta e busca um banco de dados em http://cep.correiocontrol.com.br/
Esse site  API de integração para essa natureza, esse código encontrei lá e fiz todas as modificações para que funcionasse no prestashop 1.6
 
Isso irá resolver o seu problema.
 
Ah outra informação, o CEP geralmente fica logo abaixo do endereço, e para corrigir você deve acessar o Seu BO, e modificar a ordem, no qual você pretende que a apareça os campos.
 
Acesse Localização --> Países
Procure pelo seu País (BRAZIL)
Depois clique em editar
Coloque na ordem conforme imagem.
 
 
 
Bem para mim resolveu.
 
ILSON
Link to comment
Share on other sites

  • 2 weeks later...

Qual a versão do seu prestashop?


Olá Ilson!

 

Fiz o que você recomendou e não consegui fazer funcionar na minha loja. Uso a ultima versão do presta.

Consegui mover o campo CEP para cima do campo endereços, mas validar e auto-completar não deu certo.

 

Alguma dica? Obrigado!

 

Qual a versão do seu Prestashop?

Link to comment
Share on other sites

Baixa o arquivo

 


 

Depois suba para sua pasta, e substitua o seu por esse. Mas primeiro faça um backup do seu arquivo caso de errado a alteração, para poder restaurar.

 

Talvez isso de certo!

 

Qualquer dúvida me manda um e-mail

 


 

 

Att

Ilson

  • Like 1
Link to comment
Share on other sites

Qual é o seu servidor estou tentando criar uma conta, e demora muito.


Olha o erro que deu. Erro do Servidor Interno

O servidor encontrou um erro interno ou errada e não pôde concluir o seu pedido.

Entre em contato com o administrador do servidor, [email protected] e informá-los sobre o tempo que o erro ocorreu, e qualquer coisa que você poderia ter feito que pode ter causado o erro.

Mais informações sobre este erro pode estar disponível no log de erro do servidor.

Além disso, um erro 404 não encontrado foi encontrado ao tentar usar um ErrorDocument para manipular a solicitação.

Link to comment
Share on other sites

Encontrei uma solução, que pode lhe ajudar, retire as seguintes linhas de comando abaixo, do arquivo address.tpl:

 

    <script>
    function consultacep(postcode){
      postcode = postcode.replace(/\D/g,"")
      url="http://cep.correiocontrol.com.br/"+postcode+".js"
      s=document.createElement('script')
      s.setAttribute('charset','utf-8')
      s.src=url
      document.querySelector('head').appendChild(s)
    }
 
    function correiocontrolcep(valor){
      if (valor.erro) {
        alert('Cep n達o encontrado');        
        return;
      };
      document.getElementById('address1').value=valor.logradouro
      document.getElementById('address2').value=valor.bairro
      document.getElementById('city').value=valor.localidade
      document.getElementById('State').value=valor.uf
    }
    </script>
 
Cole essas linhas no seguinte arquivo.
abra o arquivo javascript.tpl localizado na pasta /themes/
 
Logo no inicio cole essas linhas de comando, pelo que percebi ele carrega mais rapidamente os arquivos.
 
Depois me dá um Ok se deu certo.
Edited by ilsonfuzinatto (see edit history)
Link to comment
Share on other sites

Faz isso, e usa o Database Cleaner, do prestashop para fazer uma limpeza e correção de banco de dados e depois, limpa o seu navegador, mas cuidado existe uma opção de limpar pedidos e cadastro de clientes, seja cuidadoso esta em inglês e são as duas primeiras opções, pelo menos no meu, nessa duas primeiras eu nunca mexo.

Link to comment
Share on other sites

Instalei o modulo de CPF que me enviou e funcionou muito bem. Obrigado!

Dai, testei várias vezes o CEP e ainda não funcionou.

 

Desabilitei o seu módulo de CPF e instalei o módulo CPFModule, conhece?

O CPFModule funcionou muito bem, inclusive o CEP auto-complete, só que

o layout e avisos dos campos é bem caído (fora do padrão do presta) e o RG é um campo obrigatório.

 

segue o CPFModule para baixar:

http://www.prestashop.com/forums/index.php?app=core&module=attach&section=attach&attach_id=104539

 

Deixei o CPFmodule habilitado na loja para vc ver funcionando.

 

O ideal seria habilitar o módulo de CPF que me enviou. Está funcionando aqui.

E conseguir fazer funcionar a sua dica do CEP auto-complete.

 

Contigo funcionou, mas não sei pq aqui ainda não rolou.

Edited by Sam Oliveira (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

MatFonseca,

 

Dentro da Administração BO, vá em:

Preferências > Produtos > Página do Produto

Marque como SIM a opção: Permitir JqZoom ao invez do Thickbox na página do produto.

 

Dê uma olhada no video abaixo

(não é a versão mais atual do Presta, mas dá pra ter uma noção).

 

Abs!!!

 

Edited by Sam Oliveira (see edit history)
  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...

Acabei de testar no seu cite e deu certo, olha quando você digita o cep, pressiona o tab e espera uns dois segundos que ele completa.

Da uma olha e veja em outro teste.

Consegue me ajuda a melhora o meu site? lehstore.com.br

Link to comment
Share on other sites

  • 1 month later...

Esta solução funciona se seu site não usa HTTPS, se sim, vc terá que mudar a url de request.

Achei um serviço gratis de CEP que tem HTTPS, fiz os ajustes aqui e funcionou, porem o problema esta no Estado ... vou ver se consigo ajustar.

 

function consultacep(postcode){
      postcode = postcode.replace(/\D/g,"")
      
      s=document.createElement('script')
      s.setAttribute('charset','utf-8')
      s.src=url
      document.querySelector('head').appendChild(s)
    }
 
    function define_cep_info(valor){
      if (valor.status==0) {
        alert(valor.message);        
        return;
      };
      document.getElementById('address1').value=valor.address
      document.getElementById('address2').value=valor.district
      document.getElementById('city').value=valor.city
      document.getElementById('State').value=valor.state
    }
Link to comment
Share on other sites

Agora com preenchimento do Estado.

A solução foi rápida e precisa (com certeza) ser refeita, porem quebra o galho temporariamente.

 

Pra pegar a lista de estados do seu banco de dados (trocar o 58 para ID do Brasil): 

select CONCAT('br_state[\'',iso_code,'\']=',id_state,';') from ps_state WHERE `id_country` = 58 

Javascript ajustado


function consultacep(postcode){
      postcode = postcode.replace(/\D/g,"")
      url="https://apps.widenet.com.br/busca-cep/api/cep/"+postcode+".js"
      
      s=document.createElement('script')
      s.setAttribute('charset','utf-8')
      s.src=url
      document.querySelector('head').appendChild(s)
    }

    function define_cep_info(valor){
      if (valor.status==0) {
        alert(valor.message);        
        return;
      };
      
    var br_state = new Array();  
br_state['AC']=313;
br_state['AL']=314;
br_state['AP']=315;
br_state['AM']=316;
br_state['BA']=317;
br_state['CE']=318;
br_state['DF']=319;
br_state['ES']=320;
br_state['GO']=321;
br_state['MA']=322;
br_state['MT']=323;
br_state['MS']=324;
br_state['MG']=325;
br_state['PA']=326;
br_state['PB']=327;
br_state['PR']=328;
br_state['PE']=329;
br_state['PI']=330;
br_state['RJ']=331;
br_state['RN']=332;
br_state['RS']=333;
br_state['RO']=334;
br_state['RR']=335;
br_state['SC']=336;
br_state['SP']=337;
      
      
      document.getElementById('address1').value=valor.address;
      document.getElementById('address2').value=valor.district;
      document.getElementById('city').value=valor.city;
      
      $('#id_state').val(br_state[valor.state]);
      $('#id_state').prev().html($('#id_state :selected').text());
    }
Link to comment
Share on other sites

  • 4 weeks later...
  • 2 months later...

Olá Sam Oliveira,

 

Não sei ainda precisa disso, mas pra resolver creio que vc precisa ir em PARÂMETROS AVANÇADOS -> DESEMPENHO e colocar a Compilação do Template como: "Modelos de recompilar se os arquivos foram atualizados", se não seu template nunca será atualizado e o <script> do ilsonfuzinatto (funcionando corretamente), não irá aparecer.

Link to comment
Share on other sites

  • 5 months later...

 

Olha depois de procurar muito um módulo dessa natureza, eu encontrei uma saída, esse deu certo para o prestashop 1.6. A solução foi acrescentar o código que se refere ao cadastramento ou alteração de endereço. Vamos lá.

Primeiro você procura  o arquivo address.tpl, localizado em \themes\default-bootstrap.

Abra o arquivo e logo no inicio cole esse código.

 

  <script>
    function consultacep(postcode){
      postcode = postcode.replace(/\D/g,"")
      url="http://cep.correiocontrol.com.br/"+postcode+".js"
      s=document.createElement('script')
      s.setAttribute('charset','utf-8')
      s.src=url
      document.querySelector('head').appendChild(s)
    }
 
    function correiocontrolcep(valor){
      if (valor.erro) {
        alert('Cep não encontrado');        
        return;
      };
      document.getElementById('address1').value=valor.logradouro
      document.getElementById('address2').value=valor.bairro
      document.getElementById('city').value=valor.localidade
      document.getElementById('State').value=valor.uf
    }
    </script>
 
Depois procure a linha
{if $field_name eq 'postcode'}
 
Logo abaixo você vai encontrar essa linha
<input class="is_required validate form-control" data-validate="{$address_validation.$field_name.validate}" type="text" id="postcode" name="postcode" value="{if isset($smarty.post.postcode)}{$smarty.post.postcode}{else}{if isset($address->postcode)}{$address->postcode|escape:'html':'UTF-8'}{/if}{/if}" maxlength=9 onblur="consultacep(this.value)"/>
 
Acrescente a seguinte informação em vermelho.
 
O maxlength irá limitar a quantidade de caracteres em 9, podendo o usuário digitar no formato 99111000 ou 99111-000, os dois serão aceitos e validados sem problemas.
 
O consultacep é só para chamar a função colocada no inicio desse arquivo.
 
Esse código consulta e busca um banco de dados em http://cep.correiocontrol.com.br/
Esse site  API de integração para essa natureza, esse código encontrei lá e fiz todas as modificações para que funcionasse no prestashop 1.6
 
Isso irá resolver o seu problema.
 
Ah outra informação, o CEP geralmente fica logo abaixo do endereço, e para corrigir você deve acessar o Seu BO, e modificar a ordem, no qual você pretende que a apareça os campos.
 
Acesse Localização --> Países
Procure pelo seu País (BRAZIL)
Depois clique em editar
Coloque na ordem conforme imagem.
 
 
 
Bem para mim resolveu.
 
ILSON

 

 

 

Funcionou perfeitamente aqui, eu fiz e ainda por cima adicionei o campo de Número na loja para obrigar o usuário a digitá-lo :)

Obrigado!!!

 

Minha versão: 1.6.1.1

Link to comment
Share on other sites

×
×
  • Create New...