Página 8 de 9

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 09 Mar 2014, 22:36
por edemilsongs
Olá hostm,

Andei pesquisando um pouco sobre esse One Page Super Quick Checkout Plugin. Perceba que esse módulo também atua no formulário de cadastro de clientes, o que obviamente é a entrada de todas as informações que depois iram ser processadas no sistema até o final que é o checkout e a passagem das informações para o seu sistema de pagamento.

Por aí, podemos deduzir que pode existir um conflito entre os dois módulos, sendo que, o módulo Auto Completar Endereço, exerci uma única finalidade!

Infelizmente não tenho uma solução para o seu problema, até porque, não tenho acesso ao One Page Super Quick Checkout Plugin, onde poderia tentar fazer algumas modificações e testes.

Porém, posso lhe dar algumas sugestões:
1º - Tente desabilitar o sistema de entrada de informações no One Page Super Quick Checkout Plugin
2º - Caso a sua loja for trabalhar apenas no Brasil, exclua todos os outros países e zonas

Lembrando hostm, que são apenas sugestões que você deve ir precedendo como forma de testes, que na verdade trata-se de um quebra-cabeças.

E não se esqueça de sempre fazer backup do seu sistema antes de qualquer alteração.

E lembrando também, que o sistema que apresentei não se trata de um módulo ou plugin, é apenas uma adaptação que fiz na página de cadastro através de um script que utilizei na criação de vários sites.

Espero que resolva o seu problema e estou à disposição para algumas sugestões ou solução se possível.

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 11 Mar 2014, 22:42
por fabio.fat@gmail.com
Funciona quando o cadastro é feito no https?

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 25 Abr 2014, 01:31
por cristian.luz
edemilsongs escreveu:Olá amigos aqui do fórum, primeiramente quero dizer que sou novo por aqui. Recentemente comecei a utilizar o OpenCart, por esse motivo, venho acessando o fórum constantemente para aprender com os tutoriais e as boas dicas.

Quero parabenizar toda a equipe que administra, mantém e que, de alguma forma, colabora com o excelente conteúdo que nos é disponibilizado aqui no fórum. Portanto, também espero que essa minha primeira colaboração seja útil para alguns usuários.

Procurando uma forma de auto completar o endereço no cadastro de usuários através da digitação do CEP, lembrei de um script que utilizei na criação de alguns sites.

Adaptei esse script à página de cadastro do OpenCart e estou disponibilizando o arquivo pronto para quem quiser utilizar.
Quero esclarecer que a base de dados utilizada nesse script é do site republicavirtual.com.br, que por sinal, já foi muito discutida aqui no fórum, no entanto, percebo que é uma base de dados que é constantemente atualizada e que até o momento não observei falhas.

Então vamos lá que está bem fácil:

1º - A obrigatoriedade de preenchimento do campo CEP deve estar habilitada. Para quem não sabe habilite acessando: Administração > Sistema > Localização > Países > Em Brasil clicar em Editar > Em CEP Obrigatório: marcar Sim e Salvar.

2º - Baixe esse arquivo: http://konosco.com.br/download/register.zip

3º - Descompacte o arquivo. Trata-se do arquivo “register.tpl”

4º - Copie e cole substituindo o arquivo original no diretório padrão que é: catalog/view/theme/default/template/account

Obs. Por segurança faça um backup do arquivo “register.tpl” original.
E esclarecendo que estou usando a versão 1.5.6.1 com o tema padrão.

Veja um exemplo aqui: http://egs.w.pw/cep/index.php?route=account/register

Observem que fiz algumas modificações no layout. Como por exemplo: o campo do CEP coloquei para cima e os campos de textos aumentei a largura. E muitas outras modificações podem ser feitas usando CSS e JavaScript.

É isso aí colegas, espero que seja útil e até mais.

edemilsongs, parabéns pela implementação! Funcionou muito bem aqui comigo. O único detalhe que observei é que não está selecionando automaticamente o estado na tabela (no seu exemplo também não está ok), sabes se há alguma novidade sobre isso?

Abs,

Cristian.

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 25 Abr 2014, 20:39
por edemilsongs
Olá Cristian, observe que esse sistema não busca o resultado no banco de dados da sua loja, e sim, no banco de dados do republicavirtual.com.br. Observe também que no banco de dados do OpenCart os estados são cadastrados com os nomes por extenso, já no republicavirtual são cadastrados apenas as siglas dos estados.

Poderíamos colocar uma requisição no select do estado. Porém, retornaria o resultado apenas com as siglas dos estados, até aí tudo bem, no entanto, ao transferir o resultado para o seu banco de dados, o campo referente ao estado ficaria em branco. Justamente pelo fato do seu banco de dados estar programado para receber os nomes por extenso.

Olha Cristian, fiz um teste com esse módulo:
http://www.opencart.com/index.php?route ... search=CEP
Na versão 1.5.6.1 do OpenCart funcionou muito bem, porém, acontecia o problema que relatei acima, pelo fato do módulo também buscar o resultado no republicavirtual.

Resolvi o problema da seguinte forma: modifiquei o meu banco de dados para receber os resultados apenas com as siglas dos estados e excluí todos os outros países e estados referentes. Desta forma, ficando apenas a opção de trabalhar com cadastros do Brasil.

Eu ainda não procurei se existe algum módulo que faça o auto completar com todos os países, mais faça uma busca para ver se existe, e se encontrar, poste aqui.

Espero que você resolva o seu problema! Um abraço.

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 17 Jun 2014, 10:57
por IFW
Pessoal,

Segue o código para ser utilizado com SSL
Código: Selecionar todos
<modification>
<id>CEP Automatico</id>
<version>1.0.0</version>
<vqmver>2.1.5</vqmver>
<author>Caneto</author>

           <file name="catalog/controller/account/register.php">
              <operation>
                 <search position="before"><![CDATA[public function country() {]]></search>
                 <add><![CDATA[
                     // Inicio - WebService - Cep Automatico
                    public function cepautomatico(){
                 	
                 	//IMPORTANTE: O OpenCart trata o array como uma classe!
                    	if (isset($this->request->get['cep'])){                       
                       
                       //Carrega o servidor da Republica Virtual e decodifica os dados
                       $output = @file_get_contents('http://republicavirtual.com.br/web_cep.php?cep='.urlencode($this->request->get['cep']).'&formato=json');
                       $endereco=json_decode($output);
                       
                       //Carrega o modelo que trata as zones.
                       $this->load->model('localisation/zone');
                       $results = $this->model_localisation_zone->getZonesByCountryIdAndCode(30,$endereco->uf);
                       
                       //Substitui o UF pelo zone_id
                       $endereco->uf=$results['zone_id'];
                       
                       //Encode do retorno
                       $output=json_encode($endereco);
                       
                       //Já inclui o UTF8 para acentuação
                       $this->response->setOutput(utf8_encode($output), $this->config->get('config_compression'));
                    }                   
                    }
                    // Fim - WebService - Cep automatico 
                 ]]></add>
              </operation>
           </file>

           <file name="catalog/view/theme/*/template/account/register.tpl">
              <operation>
                 <search position="before" ><![CDATA[<?php echo $footer; ?>]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){
                    //Esconde os campos
                    $('input[name="address_1"]').parent().parent().hide();
                    $('input[name="address_2"]').parent().parent().hide();
		    $('input[name="city"]').parent().parent().hide();
		    
		    //Carrega a função quando o campo CEP perde o foco		    
                    $('input[name="postcode"]').blur(function(){
                    
                    //Mostra os campos
                    $('input[name="address_1"]').parent().parent().fadeIn('slow');
                    $('input[name="address_2"]').parent().parent().fadeIn('slow');
                    $('input[name="city"]').parent().parent().fadeIn('slow');
                       
                       //Variável do CEP     
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          
                          //Transforma a função em JSON
                          var obj = $.parseJSON(endereco)
                          
                          //Variáveis dos objetos
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                                                                                                       			
                       });                                                                     
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>

          <file name="catalog/view/theme/*/template/account/address_form.tpl">
              <operation>
                 <search position="before" ><![CDATA[<?php echo $footer; ?>]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){                    
                            
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                         			
                       });                       
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>

          <file name="catalog/view/theme/*/template/checkout/register.tpl">
              <operation>
                 <search position="before" ><![CDATA[<script type="text/javascript">]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){                    
                            
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                                                                                                       			
                       });                                                                     
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>          
           
           <file name="catalog/view/theme/*/template/checkout/guest.tpl">
              <operation>
                 <search position="before" ><![CDATA[<script type="text/javascript">]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){                   
                            
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                                                                                                       			
                       });                                                                     
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>
           
           <file name="catalog/view/theme/*/template/checkout/guest_shipping.tpl">
              <operation>
                 <search position="before" ><![CDATA[<script type="text/javascript">]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){                  
                            
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                         			
                       });                       
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>
           
           <file name="catalog/view/theme/*/template/checkout/payment_address.tpl">
              <operation>
                 <search position="before" ><![CDATA[<script type="text/javascript">]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){                    
                            
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                         			
                       });                       
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>           
           
           <file name="catalog/view/theme/*/template/checkout/shipping_address.tpl">
              <operation>
                 <search position="before" ><![CDATA[<script type="text/javascript">]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){
                                                
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                         			
                       });                       
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>

          <file name="catalog/model/localisation/zone.php">
              <operation>
                 <search position="before"><![CDATA[public function getZonesByCountryId($country_id) {]]></search>
                 <add><![CDATA[
                 public function getZonesByCountryIdAndCode($country_id,$code) {   
                 
                     $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone WHERE country_id = '" . (int)$country_id . "' AND  code= '" . $code . "' AND status = '1' ORDER BY name LIMIT 1");
               
                     return $query->row;     
                 }
                 ]]></add>
              </operation>
           </file>
		   
        </modification>
Créditos ao autor do mod.
Testado na versão 1.5.5.1

Eu fiz algumas modificações, mas para o mod ficar completo, é necessário os seguintes ajustes:
1. Mensagem de alerta quando o CEP não é encontrado (tentei de todas as formas, mas não consegui);
2. Uma loading para indicar que o CEP está sendo pesquisado (também não consegui);
3. Acrescentar as funções esconder e mostrar aos outros arquivos .tpl (as funções no account/register.tpl não funcionaram nas páginas de checkout);
4. Quando o CEP não é encontrado, retorna um erro no log do admin, seria bom se esse erro não fosse acusado.

Não sou programador, portanto quem puder contribuir, será uma excelente ajuda para toda a comunidade! :D

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 17 Jun 2014, 11:03
por IFW
Quem quiser utilizar sem o SSL, basta substituir o código javascript por esse:
Código: Selecionar todos
<script  type="text/javascript">
$(document).ready(function() {

            function limpa_formulário_cep() {
                // Limpa valores do formulário de cep.
                $("input[name='address_1']").val("");
                $("input[name='address_2']").val("");
                $("input[name='city']").val("");
                $("select[name='zone_id']").val("");                
            }
            
            //Quando o campo cep perde o foco.
            $("input[name='postcode']").blur(function() {

                //Nova variável com valor do campo "cep".
                var cep = $(this).val();

                //Verifica se campo cep possui valor informado.
                if (cep != "") {

                    //Expressão regular para validar o CEP.
                    var validacep = /^[0-9]{5}-?[0-9]{3}$/;

                    //Valida o formato do CEP.
                    if(validacep.test(cep)) {

                        //Preenche os campos com "..." enquanto consulta webservice.
                        $("input[name='address_1']").val("...")
                        $("input[name='address_2']").val("...")
                        $("input[name='city']").val("...")
                        $("select[name='zone_id']").val("...")                        

                        //Consulta o webservice http://viacep.com.br/
                        $.getJSON("http://viacep.com.br/ws/"+ cep +"/json/?callback=?", function(dados) {

                            if (!("erro" in dados)) {
                                //Atualiza os campos com os valores da consulta.
                                $("input[name='address_1']").val(dados.logradouro);
                                $("input[name='address_2']").val(dados.bairro);
                                $("input[name='city']").val(dados.localidade);
                                $("select[name='zone_id']").val(dados.uf);                                
                            } //end if.
                            else {
                                //CEP pesquisado não foi encontrado.
                                limpa_formulário_cep();
                                alert("CEP não encontrado.");
                            }
                        });
                    } //end if.
                    else {
                        //cep é inválido.
                        limpa_formulário_cep();
                        alert("Formato de CEP inválido.");
                    }
                } //end if.
                else {
                    //cep sem valor, limpa formulário.
                    limpa_formulário_cep();
                }
            });
        });
</script>
Está um pouco mais completo do que o código anterior, mas também necessita de alguns ajustes...

Espero ter ajudado :D

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 29 Jul 2014, 22:20
por VictorAlex
Pra quem Utiliza a versão mais recente do Opencart.

https://forum.opencartbrasil.com.br/ ... 41&t=10611

Segue acima o Post onde eu mostro script que eu adaptei da API do correio control para auto Completar endereço.

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 14 Ago 2014, 14:45
por leandromello
tentei utilizar a versão SSL e não funcionou... alguém já testou?
vi que ele consulta o site da republica virtual que utiliza "http"... com este link acho que não vai funcionar

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 19 Ago 2014, 13:11
por IFW
Olá leandromello,

O código para certificados SSL foi testado na versão 1.5.5.1; não testei em outras versões.

Informe qual a versão que está utilizando e também se utilizou esse código
Código: Selecionar todos
<modification>
<id>CEP Automatico</id>
<version>1.0.0</version>
<vqmver>2.1.5</vqmver>
<author>Caneto</author>

           <file name="catalog/controller/account/register.php">
              <operation>
                 <search position="before"><![CDATA[public function country() {]]></search>
                 <add><![CDATA[
                     // Inicio - WebService - Cep Automatico
                    public function cepautomatico(){
                    
                    //IMPORTANTE: O OpenCart trata o array como uma classe!
                       if (isset($this->request->get['cep'])){                       
                       
                       //Carrega o servidor da Republica Virtual e decodifica os dados
                       $output = @file_get_contents('http://republicavirtual.com.br/web_cep.php?cep='.urlencode($this->request->get['cep']).'&formato=json');
                       $endereco=json_decode($output);
                       
                       //Carrega o modelo que trata as zones.
                       $this->load->model('localisation/zone');
                       $results = $this->model_localisation_zone->getZonesByCountryIdAndCode(30,$endereco->uf);
                       
                       //Substitui o UF pelo zone_id
                       $endereco->uf=$results['zone_id'];
                       
                       //Encode do retorno
                       $output=json_encode($endereco);
                       
                       //Já inclui o UTF8 para acentuação
                       $this->response->setOutput(utf8_encode($output), $this->config->get('config_compression'));
                    }                   
                    }
                    // Fim - WebService - Cep automatico 
                 ]]></add>
              </operation>
           </file>

           <file name="catalog/view/theme/*/template/account/register.tpl">
              <operation>
                 <search position="before" ><![CDATA[<?php echo $footer; ?>]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){
                    //Esconde os campos
                    $('input[name="address_1"]').parent().parent().hide();
                    $('input[name="address_2"]').parent().parent().hide();
          $('input[name="city"]').parent().parent().hide();
          
          //Carrega a função quando o campo CEP perde o foco          
                    $('input[name="postcode"]').blur(function(){
                    
                    //Mostra os campos
                    $('input[name="address_1"]').parent().parent().fadeIn('slow');
                    $('input[name="address_2"]').parent().parent().fadeIn('slow');
                    $('input[name="city"]').parent().parent().fadeIn('slow');
                       
                       //Variável do CEP     
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          
                          //Transforma a função em JSON
                          var obj = $.parseJSON(endereco)
                          
                          //Variáveis dos objetos
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                                                                                                                
                       });                                                                     
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>

          <file name="catalog/view/theme/*/template/account/address_form.tpl">
              <operation>
                 <search position="before" ><![CDATA[<?php echo $footer; ?>]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){                    
                            
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                                  
                       });                       
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>

          <file name="catalog/view/theme/*/template/checkout/register.tpl">
              <operation>
                 <search position="before" ><![CDATA[<script type="text/javascript">]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){                    
                            
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                                                                                                                
                       });                                                                     
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>          
           
           <file name="catalog/view/theme/*/template/checkout/guest.tpl">
              <operation>
                 <search position="before" ><![CDATA[<script type="text/javascript">]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){                   
                            
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                                                                                                                
                       });                                                                     
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>
           
           <file name="catalog/view/theme/*/template/checkout/guest_shipping.tpl">
              <operation>
                 <search position="before" ><![CDATA[<script type="text/javascript">]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){                  
                            
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                                  
                       });                       
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>
           
           <file name="catalog/view/theme/*/template/checkout/payment_address.tpl">
              <operation>
                 <search position="before" ><![CDATA[<script type="text/javascript">]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){                    
                            
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                                  
                       });                       
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>           
           
           <file name="catalog/view/theme/*/template/checkout/shipping_address.tpl">
              <operation>
                 <search position="before" ><![CDATA[<script type="text/javascript">]]></search>
                 <add><![CDATA[
                 <script  type="text/javascript">
                 $(function(){                    
                    $('input[name="postcode"]').blur(function(){
                                                
                       var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                       $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                          var obj = $.parseJSON(endereco)
                          var uf       = obj.uf;
                          var bairro   = obj.bairro;
                          var cidade   = obj.cidade;
                          var endereco = obj.tipo_logradouro+" "+obj.logradouro;
                          var res      = obj.resultado;
                          if(res){
                             //Preenche o campo endereço
                             $('input[name="address_1"]').val(endereco);
                             //Preenche o campo cidade
                             $('input[name="city"]').val(cidade);
                             //Preenche o campo bairro
                             $('input[name="address_2"]').val(bairro);
                             //Informa o estado
                             $('select[name="zone_id"]').val(uf);
                          }                                  
                       });                       
                    });
                 });
                 </script>
                 ]]></add>
              </operation>
           </file>

          <file name="catalog/model/localisation/zone.php">
              <operation>
                 <search position="before"><![CDATA[public function getZonesByCountryId($country_id) {]]></search>
                 <add><![CDATA[
                 public function getZonesByCountryIdAndCode($country_id,$code) {   
                 
                     $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone WHERE country_id = '" . (int)$country_id . "' AND  code= '" . $code . "' AND status = '1' ORDER BY name LIMIT 1");
               
                     return $query->row;     
                 }
                 ]]></add>
              </operation>
           </file>
         
        </modification>
Até mais...

Re: [TUTORIAL] CEP automático - Auto Complete (Cadastro)

Enviado: 19 Ago 2014, 13:37
por leandromello
IFW,
Segui as instruções do tópico abaixo e funcionou.
https://forum.opencartbrasil.com.br/ ... 1&start=10