Página 5 de 9

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

Enviado: 19 Mar 2012, 16:58
por radicalroller2
Como colocar no check-out no Conta & Endereço para Cobrança, onde a pessoa se cadastra por lá? Open Cart versão - 1.5.1.3

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

Enviado: 19 Mar 2012, 20:11
por Davi
radicalroller2 escreveu:Como colocar no check-out no Conta & Endereço para Cobrança, onde a pessoa se cadastra por lá? Open Cart versão - 1.5.1.3
Não entendi o que vc quiz dizer!

Até hj não consegui fazer funcionar na versão 1.5.1.3 ! =/

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

Enviado: 27 Mar 2012, 10:22
por gwmoura
Por favor, coloca o arquivo para download para versão 1.5.1.3, Aguardo!!!

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

Enviado: 07 Abr 2012, 23:21
por s.hoon83
Boa noite gente.
Fiz umas alterações do xml do caneto e adicionei o cep automatico na hora de adicionar um novo endereço no cadastro do cliente ou editar um endereço ja existente, quando vai se registrar na tela de checkout, quando vai usar um endereco de cobranca diferente no checkout. Mas no passo 3 do checkout quando vai utilizar um novo endereço de entrega ele não faz o cep automatico. sabem oque esta faltando? to usando o 1.5.1.3
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 zone() {]]></search>
             <add><![CDATA[
                 // Inicio - WebService - Cep Automatico
                public function cepautomatico(){
             
                if (isset($this->request->get['cep'])){
                   $output = @file_get_contents('http://republicavirtual.com.br/web_cep.php?cep='.urlencode($this->request->get['cep']).'&formato=json');
                   $endereco=json_decode($output);//IMPORTANTE  o OpenCart trata o array como uma classe!! ( nao sabia disso rsrs)
                   $this->load->model('localisation/zone');//carrega o modelo que trata as zones.           
                   //IMPORTANTE  metodo abaixo eu criei...codigo no bloco abaixo, 30 e o id do pais( CONFIRAM SE 30 E O BRASIL PARA VOCES), e o uf e o que vem nao precisa mexer
                   $results = $this->model_localisation_zone->getZonesByCountryIdAndCode(30,$endereco->uf);

                   $endereco->uf=$results['zone_id'];//troca o uf pelo zone_id
                   $output=json_encode($endereco);//encode pro retorno
                   $this->response->setOutput(utf8_encode($output), $this->config->get('config_compression'));//ja inclui o utf8 pra acentuacao...
                }
                
                }
                // Fim - WebService - Cep automatico
             ]]></add>
          </operation>
       </file>

       <file name="catalog/view/theme/default/template/account/register.tpl">
          <operation>
             <search position="before" ><![CDATA[<?php echo $footer; ?>]]></search>
             <add><![CDATA[
             <script  type="text/javascript">
             $(function(){
                $('input[name="postcode"]').blur(function(){
                        //$('#carregando_cep').show(); essa linha e por que coloquei uma imagem de um gif do lado campo para mostrar quando atualizar...
         
                   var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                   $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                      var obj = $.parseJSON(endereco)// passei para json entao aqui faz o parse e cria o objeto (obj)
                      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){
                         $('input[name="address_1"]').val(endereco);  // preenche o campo endereco 1 com o endereco
                         $('input[name="city"]').val(cidade);  // preenche o campo cidade
                         $('input[name="address_2"]').val(bairro); // preenche o campo emdereco 2 com o bairro
                         $('select[name="zone_id"]').val(uf); //preenche o estado com o ID  zone (estado)
                      }
                   });
                   //$('#carregando_cep').hide(); esconder a imagem de loading
                });
             });
             </script>
             ]]></add>
          </operation>
       </file>

	   <file name="catalog/view/theme/default/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(){
                        //$('#carregando_cep').show(); essa linha e por que coloquei uma imagem de um gif do lado campo para mostrar quando atualizar...
         
                   var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                   $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                      var obj = $.parseJSON(endereco)// passei para json entao aqui faz o parse e cria o objeto (obj)
                      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){
                         $('input[name="address_1"]').val(endereco);  // preenche o campo endereco 1 com o endereco
                         $('input[name="city"]').val(cidade);  // preenche o campo cidade
                         $('input[name="address_2"]').val(bairro); // preenche o campo emdereco 2 com o bairro
                         $('select[name="zone_id"]').val(uf); //preenche o estado com o ID  zone (estado)
                      }
                   });
                   //$('#carregando_cep').hide(); esconder a imagem de loading
                });
             });
             </script>
             ]]></add>
          </operation>
       </file>

	   <file name="catalog/view/theme/default/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(){
                        //$('#carregando_cep').show(); essa linha e por que coloquei uma imagem de um gif do lado campo para mostrar quando atualizar...
         
                   var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                   $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                      var obj = $.parseJSON(endereco)// passei para json entao aqui faz o parse e cria o objeto (obj)
                      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){
                         $('input[name="address_1"]').val(endereco);  // preenche o campo endereco 1 com o endereco
                         $('input[name="city"]').val(cidade);  // preenche o campo cidade
                         $('input[name="address_2"]').val(bairro); // preenche o campo emdereco 2 com o bairro
                         $('select[name="zone_id"]').val(uf); //preenche o estado com o ID  zone (estado)
                      }
                   });
                   //$('#carregando_cep').hide(); esconder a imagem de loading
                });
             });
             </script>
             ]]></add>
          </operation>
       </file>

	   <file name="catalog/view/theme/default/template/checkout/address.tpl">
          <operation>
             <search position="before" ><![CDATA[<script type="text/javascript">]]></search>
             <add><![CDATA[
             <script  type="text/javascript">
             $(function(){
                $('input[name="postcode"]').blur(function(){
                        //$('#carregando_cep').show(); essa linha e por que coloquei uma imagem de um gif do lado campo para mostrar quando atualizar...
         
                   var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
                   $.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
                      var obj = $.parseJSON(endereco)// passei para json entao aqui faz o parse e cria o objeto (obj)
                      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){
                         $('input[name="address_1"]').val(endereco);  // preenche o campo endereco 1 com o endereco
                         $('input[name="city"]').val(cidade);  // preenche o campo cidade
                         $('input[name="address_2"]').val(bairro); // preenche o campo emdereco 2 com o bairro
                         $('select[name="zone_id"]').val(uf); //preenche o estado com o ID  zone (estado)
                      }
                   });
                   //$('#carregando_cep').hide(); esconder a imagem de loading
                });
             });
             </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>


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

Enviado: 22 Abr 2012, 07:14
por dafre
Eu mudei um pouco o código para preencher os campos apenas se a resposta for igual a 1 para evitar que apague dados já digitados caso CEP for digitado errado ou apenas um selecionar e desselecionar do mouse no campo do CEP , também adicionei uma caixa de alerta caso o CEP for digitado errado para informar o cliente que o CEP está errado , porém me deparei com o problema de que são feitos 3 solicitações AJAX e aí aparece 3 caixas de alerta falando que o CEP está errado , eu coloquei stop(); no final depois do código da caixa de alerta e deu certo no Firefox , quando aparece a primeira caixa de alerta e o cliente clica em OK são canceladas as 2 solicitações seguintes porém no Internet Explorer não deu certo , as outras duas solicitações ajax são feitas antes de clicar em OK na primeira caixa de alerta.

Não entendo muito de javascript para solucionar este problema no Internet Explorer , alguém sabe como cancelar as solicitações do ajax antes de clicar em OK na primeira caixa de alerta? Ou alguém também sabe porque são feitas 3 solicitações ajax e não apenas 1 e se é possível fazer apenas 1 solicitação?


@s.hoon83 , na versão 1.5.2.1 você teria que mudar o arquivo shipping_address.tpl , não sei se é o mesmo na versão 1.5.3.1 pois no código que você colocou acima vi que tem alterações no arquivo address.tpl e este arquivo não existe na nova versão , devem ter mudado alguns arquivos.

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

Enviado: 18 Jun 2012, 17:35
por conceptdoor
radicalroller2 escreveu:Como colocar no check-out no Conta & Endereço para Cobrança, onde a pessoa se cadastra por lá? Open Cart versão - 1.5.1.3

tambem estou tentando fazer funcionar no checkout e no campo endereco para cobranca.. vc ja conseguiu ?? se alguem souber me avisa.

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

Enviado: 18 Jun 2012, 17:56
por conceptdoor
Ja consegui galera, e mais facil do que parece..


basta colocar o codigo seguinte, sempre nos ultimos itens dos arquivos

checkout/guest_shipping.tpl

checkout/guest.tpl

acount/address_form.tpl



<script type="text/javascript">
$(function(){

$('input[name="postcode"]').blur(function(){
//$('#carregando_cep').show(); essa linha é por que coloquei uma imagem de um gif do lado campo para mostrar quando atualizar...

var cep = $.trim($('input[name="postcode"]').val().replace('-', ''));
$.get('index.php?route=account/register/cepautomatico',{cep: cep},function(endereco){
var obj = $.parseJSON(endereco)// passei para json então aqui faz o parse e cria o objeto (obj)
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){
$('input[name="address_1"]').val(endereco); // preenche o campo endereço 1 com o endereço
$('input[name="city"]').val(cidade); // preenche o campo cidade
$('input[name="address_2"]').val(bairro); // preenche o campo emdereço 2 com o bairro
$('select[name="zone_id"]').val(uf); //preenche o estado com o ID zone (estado)
}
});
//$('#carregando_cep').hide(); esconder a imagem de loading
});
});
</script>

espero estar contribuindo

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

Enviado: 14 Jul 2012, 15:17
por diosti
E ae galera, estou precisando de um modulo como esse, alguma novidade do desenvolvidomento? foi concluido? alguem tem ele realmente operacional para versao 1.5.x?

Abraco e parabens a todos!

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

Enviado: 17 Jul 2012, 14:07
por brunolee04
Galera, tenho o open cart versão 1.5.1 e os trechos funcionaram perfeitamente no meu servidor local, porém quando subo os arquivos para a internet ele simplesmente não funciona. :oops:
Vocês sabem o que pode ta pegando?

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

Enviado: 15 Ago 2012, 13:35
por leandromello
Eu utilizo o Webservice da República Virtual e está funcionando bem.
Mas como utilizo um certificado SSL, quando ele puxa o endereço externo da República Virtual, indica um objeto não seguro na página.

Como faço pra deixar a base de dados dos CEPS no meu próprio servidor?
A república Virtual disponibiliza o download da base de dados, só não sei como devo fazer para que seja buscado no meu próprio servidor.