sexta-feira, 8 de março de 2013

Dica: Guardar cep digitado no carrinho e recuperá-lo no checkout


Olá Pessoal!
Nessa postagem irei ensinar como guardar o cep digitado no carrinho e recuperá-lo no campo cep do checkout. Nessa dica irei mostrar duas formas, uma utilizando o checkout padrão do Magento e outra utilizando One Step Checkout-Brasil.


Utilizando o checkout padrão 

 

1º Passo - Guardando o cep digitado no carrinho:

Abra o arquivo shipping.phtml (app-> design-> frontend-> default-> SeuTema-> template-> checkout->cart) e procure o trecho:

<button type="button" title="<?php echo $this->__('Get a Quote') ?>" onclick="coShippingMethodForm.submit()" class="button"><span><span><?php echo $this->__('Get a Quote') ?></span></span></button>

Logo após ele, insira o seguinte:

<?php $_SESSION['guardaCep'] = $this->htmlEscape($this->getEstimatePostcode()); ?>

2º Passo - Recuperando o cep no checkout:

Abra o arquivo billing.phtml (app-> design-> frontend-> default-> SeuTema-> template-> persistent-> checkout-> onepage) e procure por:

<?php echo $this->htmlEscape($this->getBillAddress()->getPostcode()) ?>

Substitua esse código pelo seguinte:

<?php echo $_SESSION['guardaCep']; ?>

3º Passo - Preencher endereço ao entrar no checkout:

Caso você utilize a função Auto-Completar Endereço com Ajax no seu checkout e deseja que o endereço seja preenchido logo que o cliente entre na página, terá que inserir o seguinte código:

<?php if($_SESSION['guardaCep']): ?>
<body onLoad="buscar_end('billing');">
<?php endif; ?>


Logo no início do arquivo billing.phtml (app-> design-> frontend-> default-> SeuTema-> template-> persistent-> checkout-> onepage).



Utilizando o One Step Checkout

 

1º Passo - Guardando o cep digitado no carrinho:

O primeiro passo é igual ao do checkout padrão.
Abra o arquivo shipping.phtml (app-> design-> frontend-> default-> SeuTema-> template-> checkout->cart) e procure o trecho:

<button type="button" title="<?php echo $this->__('Get a Quote') ?>" onclick="coShippingMethodForm.submit()" class="button"><span><span><?php echo $this->__('Get a Quote') ?></span></span></button>

Logo após ele, insira o seguinte:

<?php $_SESSION['guardaCep'] = $this->htmlEscape($this->getEstimatePostcode()); ?>

2º Passo - Recuperando o cep no checkout:

Abra o arquivo billing.phtml (app-> design-> frontend-> base-> default-> template-> onepagecheckout-> onepage) e procure por:

<?php echo $this->htmlEscape($this->getBillAddress()->getPostcode()) ?>

Substitua esse código pelo seguinte:

<?php echo $_SESSION['guardaCep']; ?>

Como o OSC já atualiza os dados ao ser "carregado" (não sei se é o termo correto), seguindo os passos anteriores corretamente, o preenchimento do endereço ocorre logo quando o cliente vai finalizar a compra.

Obs: Os caminhos dos arquivos podem ser diferentes na sua loja. Não é recomendado alterar arquivos do template base, então faça sempre uma cópia do arquivo em questão para o seu tema.

Então é isso! Espero que essa dica ajude alguém! Qualquer dúvida, sugestão, correção ou crítica, deixe um comentário!


Fonte utilizada: http://forum.escolamagento.com/index.php?/topic/931-guardar-e-recuperar-o-cep-digitado-em-uma-sessao/
Responsável pelo meu interesse sobre essa questão: Jonatan Machado

=) 

23 comentários:

  1. Muito Bom Alessandra!
    Comigo funcionou perfeitamente... só gostaria de saber como fazer com o OneStepCheckout para que ele leve do carrinho até a pagina dele o método escolhido de frete ?
    No mais, sem palavras. Parabéns pela dica !!!!

    ResponderExcluir
    Respostas
    1. Olá Paulo! Obrigada pelo comentário! =)
      Quanto a recuperar o método de entrega selecionado no carrinho, eu até tinha feito um tutorial sobre isso, só que testando um pouco mais, descobri que as alterações não funcionavam como o esperado e por isso desativei a postagem... Ele até recupera/seleciona o método de entrega no checkout, só que se o usuário quiser alterar esse método, ele volta para o anteriormente salvo, ou seja, o cliente não conseguirá mudar o frete escolhido no carrinho.
      Vou fazer uns testes para tentar reverter isso e, caso consiga, posto aqui.
      Caso você queira ver a postagem mesmo com esse erro, mande um comentário com o seu e-mail que eu te mando o passo-a-passo.
      =)

      Excluir
  2. Boa Tarde Alessandra!
    Eu gostaria sim ver postagem novamente mesmo com o erro.
    Pode enviar pra mim no e-mail: pauloalves.silva@live.com

    Obrigado!

    ResponderExcluir
    Respostas
    1. Alessandra, pode enviar pra mim tbm?
      Vou tentar duplicar essa variável pra poder trocar...
      flavioea@gmail.com

      Excluir
    2. Desculpa a demora, vou te mandar hoje sem falta!

      Excluir
  3. Boa dica, porém o link para o módulo Ajax não existe mais.

    Estou procurando uma forma de integrar o CEP com o webservices dos Correios para busca automática do endereço.

    Se puder me mostrar o caminho :)

    Excelente blog, vou acompanhar!

    Não encontrei uma forma de me inscrever nele no entanto, e seria legal adicionar o autor em alguma rede social, se disponível.

    Obrigado!

    ResponderExcluir
    Respostas
    1. Olá Eduardo!
      Tenho o módulo salvo aqui, se você quiser, deixe seu e-mail que eu te envio.
      =)

      Excluir
  4. Ola, será que para fazer no checkout simplificado da Akatus seria a mesma coisa? conhece o OSC deles? veja o link eu achei que ele ta mais simples porem mais rapido que o do devidson.

    poderia ajudar a implementar isso ai?

    http://www.magentocommerce.com/magento-connect/akatus-2232.html

    ResponderExcluir
    Respostas
    1. desculpa, mas me sinto na obrigação de recomendar mil vezes para não usar Akatus. É a 'coisa' mais desorganizada da internet...

      para o desenvolvedor é raiva pura.
      para o lojista é prejuizo na certa...

      Excluir
    2. porque você não recomenda oq aconteceu com vc?

      Excluir
  5. Para fazer o mesmo usando o OSC da Akatus, como seria?
    o sistema deles é parecido com esse ai do Devidson, porem eu acho que está mais rapido e funcional com mascaras e tudo mais.

    http://www.magentocommerce.com/magento-connect/akatus-2232.html

    ResponderExcluir
  6. Consegui implementar no OSC da Akatus, foi simplesmente fazer o primeiro passo e o segundo adicionar value=">"

    e pronto agora só habilitar campo do cep como necessário e não tem erro,valeu mesmo

    vc poderia dar a dica de como mostrar produtos parcelados com juros 1.99% , to procurando e não consegui resolver com juros, caso tenha tempo

    Bom fica a dica ai pra todos! vlw

    ResponderExcluir
    Respostas
    1. Que bom que você resolveu seu problema. Já a dúvida do juros, acho que você só precisa saber como fazer o cálculo, o resto deve ser igual aos outros tutoriais.

      Excluir
  7. Muito bom!!
    E tem como colocar um botão no carrinho pra abrir aquele popup dos Correios que calcula prazo??
    Obrigada

    ResponderExcluir
    Respostas
    1. Olá Danielle!
      Poderia passar o link de um exemplo do que você quer fazer?

      Excluir
    2. Existem 3 módulos gratuitos dos correios q eu conheço, q estão no MgConnect e que fazem isso agregando já ao totalizados tanto do carrinho como no checkout...

      Vou recomendar um site onde vc pode encontrar coisas.. é lançamento: www.google.com

      (minha reverência à autora pelo belo trabalho e paciência com leitores que não tem o mínimo de vontade de aprender as coisas e querem tudo mastigadinho!)

      Excluir
    3. rsrs... Gostei do comentário!

      Excluir
  8. Nossa, está funcionalidade é excelente, muito obrigado!!!!

    ResponderExcluir