Fórum OpenCart Brasil

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

#18084
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 ! =/
#19391
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>

#20567
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.
#23120
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.
#23125
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
Por leandromello
#26017
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.
  • 1
  • 3
  • 4
  • 5
  • 6
  • 7
  • 9