Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

#24490
Aqui ele deu um pequeno problema, quando fui até o link que ele puxava (no meu caso: http://cep.republicavirtual.com.br/web_ ... p=19300000) eu percebi q o valor do 'resultado' : '2', (igual a 2) e o código está autocomplentando somente valores iguais a 1.

Eu coloquei onde é "== 1" ">=1" ... que tipo de problema isso pode me trazer? obrigado, achei legal o módulo, muitas lojas grandes usam desse recurso!
#24690
lexmooze escreveu:Ai galera, esse é meu primeiro post.
Tentei usar o autocompletar cep deste site:
http://www.surgimento.com.br/blog/auto- ... lo-gratis/

Mas ele estava dando problemas na hora de atualizar o estado.
O problema estava na hora de inserir uma função no account/register.php

Segue a correção.
autocompletar_endereco.zip
Parabéns pela iniciativa, para mim não funcionou e aparece sequer uma mensagem de erro. Você poderia me ajudar?
#24967
Muito bom , parabéns pela iniciativa porem quando se esta usando o ssl ele avisa um erro e o padlock vai pro espaço prq a mod usa fonte externa para buscar a informação.... se tivesse como fazer essa consulta através de uma sql seria muito legal, porem ae vem o fator atualização teria que criar uma pagina na administração para atualizar essa sql atraves de uma fonte externa ou usuarios avançados fazendo uso do phpmyadmin atualizarem o banco de dados usando outro padrao como o dos correios... claro numa versão free prq 2.500 por um banco de dados nao tá valendo rsrsrs :lol:
#31079
Com essa alteração acima funcionou perfeito na minha versão 1.5.4.1, mas tem o problema do link externo HTTP qdo temos certificado SSL instalado.

Vi essa dica abaixo de como resolver mas não sei fazer isso:

"Esse problema ocorre porque o script tenta abrir urls com o endereço http://. para autocompletar. Então tente abrir o arquivo XML do módulo e poderia pegar toda parte de javascript e colocar em um arquivo externo com final .js e carrega-lo de seu servidor. Na parte que retirou o código javascript do XML você chama o arquivo .js passando endereço geral como por exemplo catalog/pasta/teste.js e não http://www.meudominio.com/catalog/pasta/teste.js. Com isso talvez funcione porque como a chamada ao arquivo .js é no mesmo servidor e o endereço de chamada não tem http pode vir a dar certo."


Alguém sabe?

Outra opção (acho) seria fazer o upload a base de dados do Republica Virtual http://www.republicavirtual.com.br/cep/ ... ep.sql.bz2 e usá-la localmente no servidor (outra coisa que não faço ideia de como fazer)

Abs
Por leandromello
#32585
esta dando problemas com o meu certificado também.
Quando roda o HTTPS... dai nao completa o CEP.

A Republica Virtual disponibiliza a base de dados de CEP, mas não sei como devo fazer para ter ela localmente no meu servidor.
alguém ajuda?
Por IFW
#51292
Respondendo ao Felipe e a todos interessados:

Tentei fazer a chamada de um arquivo .js do meu servidor, porém ocorre o erro com o SSL.

Para solucionar esse problema, segue o 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>
Créditos ao autor do mod
Testado na versão 1.5.5.1

Esse mod precisa de alguns ajustes, conforme relatei neste tópico: https://forum.opencartbrasil.com.br/ ... 0&start=70

Espero ter ajudado :D

Gente preciso de ajuda urgente. Na migraç&a[…]

Caro @reds , muito obrigado pela resposta.

PHP 8+ incompatibilidade

Toda tradução para a versão 3[…]

Ola @alex3257 Se você precisa apenas ver […]