Open leonambernini opened 9 years ago
Já fiz à algum tempo um PR https://github.com/deivisonarthur/OSC-Magento-Brasil-6-Pro/pull/155
@rafaelstz, estou com o mesmo erro do @leonambernini. Corrigi os erros no validation.js, mas o botão continua bloqueado. Console limpo aqui também ..
Aplica essa correção que fiz para executar https://github.com/deivisonarthur/OSC-Magento-Brasil-6-Pro/pull/155
@brunogemelli Olha a seleção no JS provavelmente está dando erro por utilizar :
@rafaelstz @brunogemelli Estou com o mesmo problema. Corrigi ja o erro #155 do ", o ajax agora está funcionando normal, porém após o cliente digitar o cep e se auto preencher o endereço e habilitar os meios de entrega, o botão finalizar passa a ficar cinza.
@FilipeSilvaCtba o botão fica cinza até selecionar meio de entrega e de pagamento.
Olá @rafaelstz, na minha loja só tenho uma forma de pagamento, o pagseguro, então ele já vem selecionado por padrão, nem tem o radio button do lado dele pra selecionar, e quando clico no radio da forma de entrega que quero não habilita novamente o botão. Pelo que entendi era pra habilitar novamente o botão de entrega após eu clicar em uma das opções de entrega, mas não ta ocorrendo. Vou tentar investigar o porque! Grato pela atenção.
O problema esta na linha:
var urlBase = window.location.href.slice(0, -6);
No meu caso utilizo de url rewrites para colocar a url do carrinho em português impossibilitando o funcionamento adequado da função busca cep. A função slice remove os últimos 6 caracteres da url:
Original: http://exemplo.com/finalizar-compra/pagina-rapida/
Resultado da Variavel: http://exemplo.com/finalizar-compra/pagina-r/
Como citado acima, o problema nao foi apenas para o meu caso, a solução adequada foi trocar por uma função mais elaborada, que creio que sirva para todos os casos:
var regexURL = /(http:\/\/.*?\/.*?\/)/;
var urlBase = regexURL.exec(window.location.href).last();
@hansbonini @rafaelstz O que eu percebi é que em minha instalação o ajax não funcona quando eu seleciono um método de entrega, posso clicar em PAC ou SEDEX ou qualquer outro que o valor não atualiza do review ao lado. O que será que pode ser?
@FilipeSilvaCtba depois que resolvi o problema da URL do CEP. Me deparei com o mesmo problema. Ele nao executa o xhr que chama o SaveAddress para atualizar o carrinho. To tentando localizar o problema!
Uma versao mais antiga que tenho do OSC de 6 meses atras funciona perfeitamente no site. Entao creio que seja alguma modificacao nesse meio tempo.
Encontrei o problema que não permitia atualizar o review e liberar o botão de finalizar compra quando trocava de opção de método de envio.
@FilipeSilvaCtba, @rafaelstz, @leonambernini isso vai resolver nosso problema provisoriamente ate que eu elabore um fix melhor. Comentem as seguintes linhas no onestepcheckout.js.
startRequest: function(url, options) {
var action = this._getActionFromUrl(url);
this.addActionBlocksToQueue(action);
//if (this.currentRequest === null) {
this.runRequest(url, options);
//} else {
// this.requestQueue.push([url, options]);
//}
},
Sobre o problema: por algum motivo a fila de requisições esta travada, impossibilitando que elas sejam acionadas devidamente. @deivisonarthur, @isaaclopes pelo que entendi existe um timer que processa as requisições colocadas em fila. Saberiam me informar se houve alguma revisão recente no mesmo?
Avancei mais um pouco no debug e descobri que as filas de requisicoes (this.requestQueue) nao sao processadas devido a fila que remove os action blocks travar no reviewCart. Eu imaginava que o sistema possuia um timer para tratar a fila, mas depois entendi o processo.
O que acontece eh o seguinte:
onRequestCompleteFn: function(transport) {
try {
var response = JSON.parse(transport.responseText.replace(/\n/g,""));
console.log(response);
} catch(e) {
//error
var response = {
blocks: {}
};
}
var action = this._getActionFromUrl(transport.request.url);
console.log(action);
this.removeActionBlocksFromQueue(action, response); // trava nessa função deixando de limpar a fila de requisições
this.currentRequest = null;
if (this.requestQueue.length > 0) {
this._clearQueue();
var args = this.requestQueue.shift();
this.runRequest(args[0], args[1]);
}
// payment form reload fix
OSCPayment.initObservers();
},
Dentro da função removeActionBlocksFromQueue(), ao processar os quatro blocos {shipping_method, payment_method, review_cart, review_coupon), a função trava no bloco review_cart não retornando para a função onRequestCompleteFn para a limpeza da fila de requisições.
Mais especificamente nessa chamada da funcao removeActionBlocksFromQueue trava tudo, o bloco review_coupon fica por ser processado e nao tem o retorno pra limpeza da fila de requisições:
if ("removeActionBlocksFromQueueAfterFn" in me.blocks[blockName]) {
me.blocks[blockName].removeActionBlocksFromQueueAfterFn(response);
}
Coloquei o layout original e funcionou adequadamente, continuo procurando esse erro que parece afetar apenas layouts modificados do checkout.
Boa tarde pessoal, estou me deparando com o mesmo problema.
O botão "Finalizar Pedido" ficar com o atributo disable
, removendo esse atributo ele passa a fazer a validação mas ainda retorna um erro via alert
, com a seguinte informação "Informe uma forma de entrega", e o console totalmente limpo. ja tentei todas as soluções acima, mas nada, eu uso o tema rwd
, sem alteração nenhuma na tela de checkout.
Na versão que eu fiz o download do OSC6 já tinha sido corrigido a issue #155
Alguma ideia de como resolver o problema?
@juanmonstra primeiro apague a pasta toda em app/design/frontend/rwd/default/template/onestepcheckout/
depois re-instale
Outra coisa, continuo recomendando um commit por parte do time do módulo pra trocar o slice por regex na variavel baseUrl
https://github.com/deivisonarthur/OSC-Magento-Brasil-6-Pro/issues/159#issuecomment-152609118
Prezados, alguma solução definitiva para esse problema? Estou tendo ele, está impossibilitando o uso :( Magento 1.9.2.2 (instalação nova, só foi traduzida e instalado o OSC 6, tema RWD). Corrigi o problema de validação de e-mail, CPF e CEP como instruído pelo pessoal aqui no GitHub. validation.js alterei a linha 166 para "jQuery.getScript("/magento/index.php/onestepcheckout/ajax/busca_cep?cep="+ cep + "", function() {"
Obrigado!
Há uma semana atrás fiz uma instalação limpa 1.9.2.2 com o tema RWD padrão, e utilizei o módulo disponível aqui do Github (Latest commit 3c4dc09 on 7 Dec 2015). Encontrei o mesmo problema do Botão finalizar compra bloqueado.
Específico para o tema RWD. Comparei os arquivos com uma versão mais antiga do OSC 6, que está em funcionamento, e percebi que faltava a pasta /js/onestepcheckout na raiz do magento, então simplesmente transferi (recortei) a pasta /skin/frontend/base/default/onestepcheckout/js para /js/onestepcheckout/js.
Atualizei o cache do navegador, voltaram todas as verificações js, CEP, CPF/CNPJ, as máscaras nos campos telefone, que inicialmente não funcionaram.
Tema modificado com base no RWD. Fiz uma nova instalação da mesma forma com os mesmos arquivos, mas modifiquei o tema RWD, criei uma nova pasta com nome /temanovo (skin e app). Então, novamente encontrei o problema do botão finalizar compra.
Tentei fazer da mesma forma que o exemplo acima, mas não funcionou. Então, excluí a pasta /js/onestepcheckout/js, da raiz do magento.
Fiz uma cópia da pasta /app/design/frontend/RWD/default/template/onestepcheckout, para meu novo tema : /app/design/frontend/TEMANOVO/default/template/onestepcheckout
E também de: /app/design/frontend/RWD/default/template/onestepcheckout para: l/app/design/frontend/TEMANOVO/default/template/onestepcheckout
E todas as validações voltaram, e o botão finalizar compra está disponível.
Nas duas situações não fiz qualquer alteração em qualquer arquivo, e o tema novo é uma cópia do tema padrão RWD.
Alguém conseguiu resolver o problema? Consegui resolver o bug no calcular frete que ficava travado, seguindo o que foi informado pelo @hansbonini Também resolveu o problema que não atualizava os valores quando era alterado o método de entrega, mas o botão do checkout continua disabled.
@hansbonini e @Wnicolak, eu testei as suas sugestões, reinstalar não mudou nada, copiar os arquivos também não funcionou, pelo menos não jogando para {BASE}/js/onestepcheckout, mas quando eu coloquei nas 3 pastas {BASE}/js, tema base e tema rwd, funcionou o botão, porem agora o ajax do CEP não funciona mais, e o layout virou uma bagunça, isso é o de menos e é fácil de arrumar, mas vcs teriam alguma ideia do que pode estar "bugando" a busca pelo CEP?
Caro Juan! Inicialmente a solução funcionou para os clientes cadastrados. Mas outros problemas surgiram com a "solução". Atualizei o Magento para última versão, e estou usando o checkout padrão, sem validações e sem máscaras. Está ruim, mas voltou a converter. Desculpe não poder ajudar neste momento. (http://goo.gl/ukLK5o)
O problema com o botão “Finalizar” no RWD está associado à ausência de um elemento no arquivo de template onestep.phtml. O form.js tenta atualizá-lo, mas não encontra. A PR #222 corrige isso.
Boa @wyllyan
Obrigado feito o merge
Excelente @wyllyan, obrigado!
Aí você falou hein @wyllyan .. valeu demais
Instalei o OSC no magento 1.9.2 limpo no tema rwd, quando fui testar ele funciona normalmente, deu um erro de JS na função de buscar o cep (jQuery.getScript(urlBase + "ajax/busca_cep?cep="+ cep + "", function() {) estava com as " erradas e o (var urlBase = window.location.href.slice(0, -6);) não estava setado no else, ai parou os erros, so que não habilita o botão FINALIZAR e não gera erro no console, apenas fica "Campos obrigatório" mesmo todos os campos estarem preenchidos.