mariosam / AutoCompletarEndereco

Modulo basico para auto-completar endereços no formulario de checkout do Magento
5 stars 11 forks source link

Testado Magento Versão 1.9.X #2

Open rafaelstz opened 9 years ago

brunowd commented 8 years ago

@rafaelstz Então não sei como e onde fazer a alteração como o seu código acima e segui a risca até fiz uma instalação local nova, somente com este módulo do Mario SAM.

No console aparece a msg: http://s2.postimg.org/s88mr50s9/erro_checkout.jpg

rafaelstz commented 8 years ago

Quando for instalar uma loja Magento, coloca sempre uma alias para o endereço 127.0.0.1 , evita muitos erros, eu por exemplo utilizo dev.local.com, é sempre interesante não utilizar apenas um nome como localhost, e sim simular com "." também.

brunowd commented 8 years ago

Onde e como faço esta alteração?

brunowd commented 8 years ago

Estou usando o xampp segui o caminho C:\WINDOWS\system32\drivers\etc\ abri o arquivo hosts.txt segue imagem: http://s11.postimg.org/bls9c4u5f/hostoss.jpg

rafaelstz commented 8 years ago

Esse tutorial no Windows vai te ajudar! http://www.pliniopavin.com.br/wp/2010/09/configurando-virtualhosts-no-xampp/

brunowd commented 8 years ago

blz mas iso interfere no problema com o módulo? pq o mesmo ta acontecendo no ambinente de produção rockmezz.com.br

rafaelstz commented 8 years ago

Achei que iria, mas se está acontecendo em produção não é esse o problema. Verifica se em Sistema > Configuração > Avançado se o módulo está ativo.

brunowd commented 8 years ago

Sim está ativo ;)

rafaelstz commented 8 years ago

Que versão está sua loja? com ou sem patch de segurança?

brunowd commented 8 years ago

1.9.2.1 em produção com patch - rockmezz.com.br - http://magento.com/security-patchSAFE: This site appears to be safe. 1.9.2.2 em local sem patch

brunowd commented 8 years ago

Em nenhuma das duas instalações aparece a msg de atualizar patch de segurança, então acho que está tudo ok :+1:

rafaelstz commented 8 years ago

tenta rodar local na versão 1.9.0.0, tem algumas restrições de caminho do path que podem estar causando isso, se for basta dar permissão para o caminho em Sistema > Permissões de ~ (acho).

brunowd commented 8 years ago

Tenho mesmo que dar um downgrade ou fazer uma instalação nova para o 1.9.0.0 ? Sério mesmo? E não entendi a parte das permissões nele aparece Permissões>Usuários>Variables>Blocks está tudo ativo

rafaelstz commented 8 years ago

Se funcionar em uma versão anterior o erro foi causado por causa dos PATCH's, quando instala eles aparece um novo menu para colocar permissões de funcionamento de módulos antigos.

brunowd commented 8 years ago

OK Irei baixar e instalar local o magento 1.9.0.0 e testar o módulo

brunowd commented 8 years ago

Psé não funcionou instalei na versão 1.7 e não aparece erro algum. Não sei o que fazer meu site já está em produção. :/

rafaelstz commented 8 years ago

Não precisa dar um downgrade, tem uma nova opção no menu sistema que deixa o módulo executar.

brunowd commented 8 years ago

Eu não fiz downgrade, eu fiz uma nova instalação local com o 1.7 E qual é a opção no menu sistema que deixa o módulo executar? Lembrando que estou em local com o 1.7 e 1.9 e em produção é 1.9.2.1

brunowd commented 8 years ago

Opa, no 1.7 funcionou agora! Agora temos que ver o que é no meu tema mesmo do 1.9 .2.1

rafaelstz commented 8 years ago

Instalei um Magento 1.9.2.2 aqui pra te mostrar: image

brunowd commented 8 years ago

Consegui fazer funcionar! Só copiei pro default e funcionou, muito estrano pq no debug não aparece o default do magento

rafaelstz commented 8 years ago

Blz então :+1: :smile:

brunowd commented 8 years ago

Sim muito, mas ainda assim achei estranho kk

brunowd commented 8 years ago

Uma coisa que percebi é que ele não carrega o ESTADO, que acha?

rafaelstz commented 8 years ago

ID do campo não deve ser o mesmo que ele tenta colocar, já aconteceu isso comigo.

brunowd commented 8 years ago

Bom dia @rafaelstz Então como troco o id? Somente no billing.phtml ou em algum outro arquivo? Estou usando 1 linha no endereço.

brunowd commented 8 years ago

@rafaelstz dê uma olhada no meu billing.phtml

https://www.dropbox.com/s/7s2ug5sy7i9smb6/billing.phtml?dl=0

Acho que a modificação deve ser na linha $('billing:region').value = res.uf;

não tive resultado alterando para: $('billing:region_id').value = res.uf; $('billing:region').value = res.estado; $('billing:region').value = res.state/province;

rafaelstz commented 8 years ago

O resultado que está voltando como res.uf desse código é a sigla do estado, até ai tudo bem, mas para colocar o valor lá no select você tem que setar o value. Pode utilizar um switch como esse:

switch(res.uf) {
                case "AC": estado.setValue(485); break;
                case "AL": estado.setValue(486); break;
                case "AP": estado.setValue(487); break;
                case "AM": estado.setValue(488); break;
                case "BA": estado.setValue(489); break;
                case "CE": estado.setValue(490); break;
                case "DF": estado.setValue(511); break;
                case "ES": estado.setValue(491); break;
                case "GO": estado.setValue(492); break;
                case "MA": estado.setValue(493); break;
                case "MT": estado.setValue(494); break;
                case "MS": estado.setValue(495); break;
                case "MG": estado.setValue(496); break;
                case "PA": estado.setValue(497); break;
                case "PB": estado.setValue(498); break;
                case "PR": estado.setValue(499); break;
                case "PE": estado.setValue(500); break;
                case "PI": estado.setValue(501); break;
                case "RJ": estado.setValue(502); break;
                case "RN": estado.setValue(503); break;
                case "RS": estado.setValue(504); break;
                case "RO": estado.setValue(505); break;
                case "RR": estado.setValue(506); break;
                case "SC": estado.setValue(507); break;
                case "SP": estado.setValue(508); break;
                case "SE": estado.setValue(509); break;
                case "TO": estado.setValue(510); break;
            }

No seu está com valores diferentes, tem que ajustar como na sua loja, segue o print:

image

brunowd commented 8 years ago

@rafaelstz alterei o código para

Coloquei logo abaixo da linha do ajax no final do billing.phtml $('billing:region').value = res.uf; switch(res.uf) { case "Acre": estado.setValue(485); break; case "Alagoas": estado.setValue(486); break; case "Amapá": estado.setValue(487); break; case "Amazonas": estado.setValue(488); break; case "Bahia": estado.setValue(489); break; case "Ceará": estado.setValue(490); break; case "Distrito Federal": estado.setValue(491); break; case "Espírito Santo": estado.setValue(492); break; case "Goiás": estado.setValue(493); break; case "Maranhão": estado.setValue(494); break; case "Mato Grosso do Sul": estado.setValue(496); break; case "Mato Grosso": estado.setValue(495); break; case "Minas Gerais": estado.setValue(497); break; case "Paraná": estado.setValue(500); break; case "Paraíba": estado.setValue(499); break; case "Pará": estado.setValue(498); break; case "Pernambuco": estado.setValue(501); break; case "Piauí": estado.setValue(502); break; case "Rio Grande do Norte": estado.setValue(504); break; case "Rio Grande do Sul": estado.setValue(505); break; case "Rio de Janeiro": estado.setValue(503); break; case "Rondônia": estado.setValue(506); break; case "Roraima": estado.setValue(507); break; case "Santa Catarina": estado.setValue(508); break; case "Sergipe": estado.setValue(510); break; case "São Paulo": estado.setValue(509); break; case "Tocantins": estado.setValue(511); break; }

E copiei o select dentro do select

Onde estou errando?

brunowd commented 8 years ago

@rafaelstz veja o billing.phtml

https://www.dropbox.com/s/ifr0ypu15054lsv/billing%20%281%29.phtml?dl=0

rafaelstz commented 8 years ago

Pode deixar o arquivo como estava antes, mas muda a função buscar_end() no fim do arquivo para:

function buscar_end() {
    var url = '<?php echo $this->getUrl('autocompletar/ajax/endereco') ?>';
    new Ajax.Request( url, { method: 'post',
        parameters: 'cep='+$('billing:postcode').value,
        onComplete: function(transport) {
            var res = transport.responseText.evalJSON();
            if ( res.resultado == '1' ) {
                $('billing:street1').value = res.tipo_logradouro+' '+res.logradouro;
                if ($('billing:street2')) $('billing:street2').value = res.bairro;
                $('billing:city').value = res.cidade;
                estado = $('billing:region_id');
                switch(res.uf) {
                    case "Acre": estado.setValue(485); break;
                    case "Alagoas": estado.setValue(486); break;
                    case "Amapá": estado.setValue(487); break;
                    case "Amazonas": estado.setValue(488); break;
                    case "Bahia": estado.setValue(489); break;
                    case "Ceará": estado.setValue(490); break;
                    case "Distrito Federal": estado.setValue(491); break;
                    case "Espírito Santo": estado.setValue(492); break;
                    case "Goiás": estado.setValue(493); break;
                    case "Maranhão": estado.setValue(494); break;
                    case "Mato Grosso do Sul": estado.setValue(496); break;
                    case "Mato Grosso": estado.setValue(495); break;
                    case "Minas Gerais": estado.setValue(497); break;
                    case "Paraná": estado.setValue(500); break;
                    case "Paraíba": estado.setValue(499); break;
                    case "Pará": estado.setValue(498); break;
                    case "Pernambuco": estado.setValue(501); break;
                    case "Piauí": estado.setValue(502); break;
                    case "Rio Grande do Norte": estado.setValue(504); break;
                    case "Rio Grande do Sul": estado.setValue(505); break;
                    case "Rio de Janeiro": estado.setValue(503); break;
                    case "Rondônia": estado.setValue(506); break;
                    case "Roraima": estado.setValue(507); break;
                    case "Santa Catarina": estado.setValue(508); break;
                    case "Sergipe": estado.setValue(510); break;
                    case "São Paulo": estado.setValue(509); break;
                    case "Tocantins": estado.setValue(511); break;
                }   

            }
        }
    });
}

Provavelmente vai ter que verificar os códigos gerados no seu select e ajustar com os desse código, isso direto pelo inspecional objeto.

brunowd commented 8 years ago

Fiz as alterações e conferi o select no inspetor, os códigos batem mas ainda assim não seleciona o Estado automaticamente. :(

rafaelstz commented 8 years ago

Dá um console.log(res.uf) e vê o que retorna com seu CEP, quando retornar certo você pode manipular ele com esse switch acima, caso o res.uf retornar "AC" ele seta "Acre", tinha passado o switch com o estado completo, tenta substituir por esse:

switch(res.uf) {
                case "AC": estado.setValue(485); break;
                case "AL": estado.setValue(486); break;
                case "AP": estado.setValue(487); break;
                case "AM": estado.setValue(488); break;
                case "BA": estado.setValue(489); break;
                case "CE": estado.setValue(490); break;
                case "DF": estado.setValue(511); break;
                case "ES": estado.setValue(491); break;
                case "GO": estado.setValue(492); break;
                case "MA": estado.setValue(493); break;
                case "MT": estado.setValue(494); break;
                case "MS": estado.setValue(495); break;
                case "MG": estado.setValue(496); break;
                case "PA": estado.setValue(497); break;
                case "PB": estado.setValue(498); break;
                case "PR": estado.setValue(499); break;
                case "PE": estado.setValue(500); break;
                case "PI": estado.setValue(501); break;
                case "RJ": estado.setValue(502); break;
                case "RN": estado.setValue(503); break;
                case "RS": estado.setValue(504); break;
                case "RO": estado.setValue(505); break;
                case "RR": estado.setValue(506); break;
                case "SC": estado.setValue(507); break;
                case "SP": estado.setValue(508); break;
                case "SE": estado.setValue(509); break;
                case "TO": estado.setValue(510); break;
            }

select

brunowd commented 8 years ago

O estranho é que não funcionou mesmo.

rafaelstz commented 8 years ago

Apareceu algum erro no console?

brunowd commented 8 years ago

Bom dia @rafaelstz vou testar agora. (y)

brunowd commented 8 years ago

me retornou isso

Uncaught ReferenceError: res is not defined at :2:13 at Object.InjectedScript._evaluateOn (:875:140) at Object.InjectedScript._evaluateAndWrap (:808:34) at Object.InjectedScript.evaluate (:664:21) (anonymous function) @ VM571:2 InjectedScript._evaluateOn @ VM563:875 InjectedScript._evaluateAndWrap @ VM563:808 InjectedScript.evaluate @ VM563:664

brunowd commented 8 years ago

Usei o mozila(bem melhor kk) mostro o seguinte...

brunowd commented 8 years ago

Antes do ajax no final do arquivo tem esse script <?php if(!Mage::getStoreConfig('oscheckout/display/state')):?>

<?php endif;?>

brunowd commented 8 years ago

olhe a imagem...

http://s16.postimg.org/b9r6so1o5/scripts_estado.jpg

brunowd commented 8 years ago

Funcionouuuuuuuuu! Só tenho que arrumar os códigos, testei o meu cep RS e Selecionou RN

Muito obrigado @rafaelstz :+1: Abraço!

rafaelstz commented 8 years ago

Disponha, que bom que deu certo :smile: :+1: Abraço!

InsomniumBR commented 7 years ago

@rafaelstz @brunowd Sobre o problema do estado discutido aqui, eu resolvi o mesmo em um PR que acabei de enviar. https://github.com/mariosam/AutoCompletarEndereco/pull/5