deivisonarthur / OSC-Magento-Brasil

O projeto OCS-MAgento-Brasil é uma iniciativa para traduzir e adaptar o módulo free OSC(One Step Checkout) para Magento chamado IWD OnePageCheckout. O módulo irá traduzir, adicionar estados, formatar, validar campos e adicionar novos campos. Irei tratar principalmente os campos: Rua, Bairro, Cidade, Estado, Cep com busca por Ajax com busca nos Correios, CPF/CNPJ, IE(Inscrição Estadual), tipo pessoa, Telefone, Celular,...
43 stars 53 forks source link

Erro ao usar desconto a vista!! #29

Open dantef opened 11 years ago

dantef commented 11 years ago

Olá, estou com problemas ao usar desconto a vista.

Na minha loja tenho duas formas de pagamento:

para o PS eu configurei a regra para dar 10%. o no cartão fica o preço normal.

Acontece que quando o cliente está no OSC ele dá o desconto para os dois meios de pagamento ou não dá para nenhum. Se o cliente quiser se aproveitar e passar a compra dele no cartão com desconto, o OSC responde avisando que o número do cartão de crédito é inválido.

Desabilitando o OSC não tenho esse problema, pq há uma ultima confirmação de pedido onde se o preço estava a vista (mesmo se poder) no ultimo passo ele conserta e tira o desconto. O que não acontece no OSC porque ele não tem uma ultima página para confirmar a compra, de lá a venda já é finalizada.

Alguém mais usa desconto a vista com o OSC?? teve o mesmo problema??

a minha Versão do Magento: 1.7.0.2

Abraços, Dante Fortes

dantef commented 11 years ago

Descobri que esse erro acontece por causa do One Step checkout mesmo a minha versão sendo 4.0.2

Na realidade quando se muda de um pagamento para o outro o OSC não atualiza o valor do desconto, ele só faz a atualização se você mexer no passo anterior, no caso, mexer no frete, ai ele atualiza o desconto, retirando ou adicionando.

Se mesmo assim alguém tiver uma luz de como resolver isso, tipo fazendo com que o OSC atualize quando se muda o pagamento da mesmo forma como atualiza quando se muda o frete.....

Se alguém souber como fazer isso... eu agradeço, porque realmente tive que desabilitar esse módulo que eu acho fantástico, porque ele deu esse erro e os clientes estavam reclamando.

Abraços, Dante Fortes

Vampre commented 11 years ago

Então amigo, deixa ver se consigo te ajudar.

Eu estou temporariamente utilizando o checkout padrão do magento (com algumas modificações), então parei de mexer um pouco com o OSC.

Mas creio que o que vou te passar possa resolver.

Abra o arquivo onepagecheckout.js (fica na pasta skin/frontend/base/default/js/)

Procure pelo seguinte código:

addObservers: function () {
    $$('input[name="shipping_method"]').each(function (el) {
        el.observe('click', function () {
            checkout.update({
                'review': 1
            })
        })
    })
},

onde está 'review': 1

adicione na linha de baixo o seguinte: , 'payment-method': 1

Não esqueça da vírgula na frente! vai ficar assim:

addObservers: function () {
    $$('input[name="shipping_method"]').each(function (el) {
        el.observe('click', function () {
            checkout.update({
                'review': 1
                 , 'payment-method': 1
            })
        })
    })
},

Caso não funcione com o código ai, procure esse trecho de código:

    if (response.reload_totals) {
        checkout.update({
            'review': 1
        })
    }

e faça a mesma coisa, ficando assim:

    if (response.reload_totals) {
        checkout.update({
            'review': 1
            , 'payment-method': 1
        })
    }

Talvez dê certo!

A função checkout.update() faz o reload com ajax. Então você tem as três opções de reload:
'payment-method': 1 // para os pagamentos 'shipping-method': 1 // para o frete 'review': 1 // para a revisão do pedido

utilizando mais de um reload, é necessário separar com vírgulas.

Abraço! Espero ter ajudado.

dantef commented 11 years ago

Opa, amigo Vampre, muito obrigado pela resposta. A modificação desse arquivo vai ajustar o checkout padrão do magento ou o OSC?? Bom, de toda forma o OSC continuou com o mesmo problema, mas deixa eu te dizer o que eu já entendi aqui.

O desconto está vigente apenas para o pagseguro, Quando o cliente, já cadastrado, vai para o checkout pelo OSC ele coloca o endereço e o OSC atualiza o frete e os demais passos a frente, passando do endereço ele vai escolher o frete, nesse momento o OSC atualiza o metodo de pagamento e o resumo da compra > quando o cliente escolhe o método de pagamento o OSC atualiza só o Resumo da Compra, mas não atualiza o próprio Método de Pagamento, não corrigindo preços.

Dessa forma se o cliente já estiver escolhido, por exemplo, o método pagseguro e o Magento fez o cálculo com os 10% e no meio do checkout o cliente resolver mudar para o método Cartão de Crédito o OSC só atualiza o Resumo da Compra e deixa o preço ainda com o desconto de 10%... se o cliente tentar passar via Cartão com com o desconto dá um erro. Mas se o cliente quiser que o OSC conserte o cálculo ele tem que ir no passo anterior selecionar novamente o frete (mesmo já selecionado) para o OSC atualizar os passos seguintes e consertar o valor.

então acho que eu preciso configurar para quando o cliente mudar o método de pagamento o OSC fizesse a atualização dos passos método de pagamento e resumo da compra exatamente como ele faz quando a pessoa seleciona um frete.

Tomara que eu tenha me feito entender... sou meio enrolado para explicar as coisas mesmo.

Obrigado novamente pela resposta rápida.

Abraços, Dante Fortes

Vampre commented 11 years ago

As modificações que te passei irá modificar o OSC. Você tentou colocar os códigos? Se você tiver com o cache ligado, deve limpar o cache javascript para fazer efeito....

Como te falei, a função checkout.update() neste arquivo que faz a atualização das partes do OSC. Eu entendi sim sua explicação.

Como te falei, estou sem mexer o OSC, então dei uma olhada por cima para tentar te ajudar. Se não funcionar, pelo que vi toda vez que você muda a forma de pagamento a função switchMethod() é chamada.

Caso a solução acima não funcione, tente o seguite: Procura por:

        if (methods[i].checked) {
            return true
        }

Você vai encontrar duas ocorrências. Então modifique na segunda (você vai ver que o código logo acima se refere a payment. mude para:

        if (methods[i].checked) {
             checkout.update({
                   'payment-method': 1
             })
            return true
        }

Não sei se irá funcionar, mas é uma tentativa. Como te disse, meu OSC está um pouco de lado....

dantef commented 11 years ago

Olá,

realmente essa pu**nha está me incomodando... estou mesmo tiririca da vida.

não funcionou nada... neste momento de ira saí procurando tudo que tinha "if method" com payment ou switch method e botei tudo para dar reload no payment method... mas infelizmente o máximo que eu consegui foi ficar dando looping no Método de Pagamento mesmo sem clicar em nada.

Realmente depois desse estres vou desabilitar geral aqui o OSCe quem sabe o deivisonarthur corrige na próxima versão, seria até interessante ele ver esse tópico, pode ser que outras pessoas que usam esse desconto no carrinho tenha o mesmo problema.

Amigo Vampre, agradeço muito sua ajuda... se tiver outra ideia vou testar sim. Mas antes de tudo, valeu!

Abraços, Dante Fortes

deivisonarthur commented 11 years ago

Opa Daniel veja o final do arquivo deivison.js la eu add esses métodos de upload

Enviado via iPhone

Em 06/12/2012, às 13:10, dantef notifications@github.com escreveu:

Olá,

realmente essa pu**nha está me incomodando... estou mesmo tiririca da vida.

não funcionou nada... neste momento de ira saí procurando tudo que tinha "if method" com payment ou switch method e botei tudo para dar reload no payment method... mas infelizmente o máximo que eu consegui foi ficar dando looping no Método de Pagamento mesmo sem clicar em nada.

Realmente depois desse estres vou desabilitar geral aqui o OSCe quem sabe o deivisonarthur corrige na próxima versão, seria até interessante ele ver esse tópico, pode ser que outras pessoas que usam esse desconto no carrinho tenha o mesmo problema.

Amigo Vampre, agradeço muito sua ajuda... se tiver outra ideia vou testar sim. Mas antes de tudo, valeu!

Abraços, Dante Fortes

— Reply to this email directly or view it on GitHub.

Vampre commented 11 years ago

Valeu Deivison!

Então Dante, veja no github do OSC 4.0, pois aqui não tem esta atualização. Está no deivison.js do OSC 4!

Abraço!

dantef commented 11 years ago

Olá, já vi o arquivo deivison.js e lá tem a sequência do código, mas não sei onde devo colar ou se devo substituir algum código. Lá no próprio arquivo não informa.

Podem me ajudar?

dantef commented 11 years ago

Bom, eu simplesmente colei no meio do texto do onepagecheckout.js... passou a funcionar direitinho, mas fiz corretamente?? ou tinha que substituir algo?

deivisonarthur commented 11 years ago

nao nao fez rs, ele tem que ficar no final do deivison.js ai vc descomenta oque quiser usar, pois ai tem upload ao clicar em fretes e upload ao clicar em meio de pagamentos.

Mas é essencial vc ver com alguém que sabe js bem para te dar uma solução e te guiar.

[image: logo] _Deivison Arthur Serpa__, Gerente de Tecnologia e E-commerce do Grupo FFernandes (21) 9203-8986 / (21) 2242-3885 / (21) 4063-8781 https://shop.pisosecarpetes.com.br https://www.pisosecarpetes.com.br/_http://www.deivison.com.br

Contatos Web: Skype : deivisonarthur MSN : deivisonarthur@hotmail.com Facebook: facebook.com/deivisonarthurhttps://www.facebook.com/deivisonarthur

Twitter: @deivisonarthur Outros Contatos em http://meadiciona.com/deivisonarthur [image: WordPress] http://www.deivison.com.br/blog Último post do meu blog:Como remover a licença de módulos do Magentohttp://www.deivison.com.br/blog/2012/12/05/como-remover-a-licenca-de-modulos-do-magento/ Read morehttp://www.deivison.com.br/blog/2012/12/05/como-remover-a-licenca-de-modulos-do-magento/| My bloghttp://www.deivison.com.br/blog [image: Share on Facebook]http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.deivison.com.br%2Fblog%2F2012%2F12%2F05%2Fcomo-remover-a-licenca-de-modulos-do-magento%2F [image: Share on Twitter]https://twitter.com/intent/tweet?text=Como%20remover%20a%20licen%C3%A7a%20de%20m%C3%B3dulos%20do%20Magento%20%20(via%20%40wisestamp) Get this email app! http://www.wisestamp.com/apps/wordpress?utm_source=extension&utm_medium=email&utm_term=wordpress&utm_campaign=apps

http://br.linkedin.com/pub/deivison-arthur/1b/35/468 Free signature tool. http://r1.wisestamp.com/r/landing?promo=32&dest=http%3A%2F%2Fwww.wisestamp.com%2Femail-install%3Futm_source%3Dextension%26utm_medium%3Demail%26utm_campaign%3Dpromo_32 CLICK HERE TO GET IT.http://r1.wisestamp.com/r/landing?promo=32&dest=http%3A%2F%2Fwww.wisestamp.com%2Femail-install%3Futm_source%3Dextension%26utm_medium%3Demail%26utm_campaign%3Dpromo_32

Em 6 de dezembro de 2012 14:12, dantef notifications@github.com escreveu:

Bom, eu simplesmente colei no meio do texto do onepagecheckout.js... passou a funcionar direitinho, mas fiz corretamente?? ou tinha que substituir algo?

— Reply to this email directly or view it on GitHubhttps://github.com/deivisonarthur/OSC-Magento-Brasil/issues/29#issuecomment-11091651.

Atenciosamente

" É melhor esperar que um programador produtivo torne-se disponível do que esperar que o primeiro programador disponível torne-se produtivo! "

dantef commented 11 years ago

Para você vê como os leigos sofrem.... 2 dias sofrendo para esse código e o problema todo estava em apagar duas //

rsrs Valeu Arthur e valeu Vampre. Toda sorte do mundo para vocês que tem paciência de olhar para aquele monte de código e entender alguma coisa....

Abração, Dante Fortes

brunoosilva commented 11 years ago

Eu resolvi da seguinte maneira, colocando o código abaixo:

$$('input[name="payment[method]"]').each(function (el) { el.observe('click', function () { checkout.update({ 'review': 1, 'payment-method': 1 }) }) });

Dentro da classe Payment.prototype = {

No metodo: switchMethod: function (method) {

Qualquer dúvida, dizem ae. Pra mim funfo zero bala. :P

deivisonarthur commented 11 years ago

Po bicho eu nao saco muito de prototype mas da para ver que ficou maneiro da forma que você fez. Vou testar e te falo. Se ficar legal assim vou add na versão 5.0 vlw

Enviado via iPhone

Em 03/02/2013, às 17:04, brusurfing notifications@github.com escreveu:

Eu resolvi da seguinte maneira, colocando o código abaixo:

$$('input[name="payment[method]"]').each(function (el) { el.observe('click', function () { checkout.update({ 'review': 1, 'payment-method': 1 }) }) });

Dentro da classe Payment.prototype = {

No metodo: switchMethod: function (method) {

Qualquer dúvida, dizem ae. Pra mim funfo zero bala. :P

— Reply to this email directly or view it on GitHub.

brunoosilva commented 11 years ago

Opa...

Nao manjo muito também não, mas temos que garantir o pao de cada dia... kkk

Vi que tinha varios com o mesmo problema e eu tambem estava, então resolvi pro meu cliente, eu pensei em ajudar o pessoal..

Caso tenha mais algo interessante a colocar, eu te informo.. a ferramente está fenomenal.. parabens..

Se quiser algumas cosinhas em JS ou Protype, mande ae.. talvez posso ajudar...

Vlw Abraços..

Em 3 de fevereiro de 2013 18:34, Deivison Arthur Lemos Serpa < notifications@github.com> escreveu:

Po bicho eu nao saco muito de prototype mas da para ver que ficou maneiro da forma que você fez. Vou testar e te falo. Se ficar legal assim vou add na versão 5.0 vlw

Enviado via iPhone

Em 03/02/2013, às 17:04, brusurfing notifications@github.com escreveu:

Eu resolvi da seguinte maneira, colocando o código abaixo:

$$('input[name="payment[method]"]').each(function (el) { el.observe('click', function () { checkout.update({ 'review': 1, 'payment-method': 1 }) }) });

Dentro da classe Payment.prototype = {

No metodo: switchMethod: function (method) {

Qualquer dúvida, dizem ae. Pra mim funfo zero bala. :P

— Reply to this email directly or view it on GitHub.

— Reply to this email directly or view it on GitHubhttps://github.com/deivisonarthur/OSC-Magento-Brasil/issues/29#issuecomment-13053683.

Abraços, Bruno Oliveira

mulamula commented 11 years ago

Olá!

Caro brusurfing, poderia explicar melhor aonde exatamente se coloca o código que você forneceu ? Estou usando o checkout original do magento (opcheckout.js)

Um abraço!

fabio-ska commented 10 years ago

Olá brunoosilva,

Em qual arquivo é para inserir esse código?

Obrigado.