Fórum OpenCart Brasil

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

Suporte geral sobre problemas técnicos para OpenCart v1.x.
#11950
Prezados,

Estou fazendo um teste com os cupons na versão 1.5.1.3. O que fiz? Criei um cupom de nome "abacaxi" e código "abacaxi" oferecendo 10 reais de desconto na compra de qualquer produto da loja. Preenchi todas as informações como se deve (também pedi para que alguém daqui verificasse se eu também não estava deixando passar nenhum campo em branco ou com informação errada, e está tudo certo preenchido corretamente na hora da criação do cupom pelo admin).

Quando adiciono um produto ao carrinho, ao tentar aplicar o cupom, não funciona! A mensagem padrão "Atenção: O cupom é inválido, expirou, ou atingiu seu limite de uso!" aparece.

Alguém pode sugerir como resolver o problema?
#11974
Resolveu! Obrigado.

Entretanto, surgiu outro problema, não sei se já identificado por vocês: se adicionarmos desconto em %, funciona! Se adicionarmos descontos em valor monetário, não funciona.

Exemplo: em um cupom coloquei 5 de desconto no campo porcentagem e escolhi o método de desconto porcentagem. Funcionou. Em outro cupom coloquei o número 5 no campo do valor monetário e escolhi o método de desconto em reais. Não funcionou.

O código tem bug mesmo ou eu não fiz direito?
#11981
Então, escrevi valor monetário pois não estava na frente do OC agora pra ver o que estava escrito exatamente. Mas foi assim: basta escolher que o desconto é com base no valor fixo e digitar o valor fixo e o total não é calculado com esse desconto. No log não exibe erro algum, então acho que não seria problema de tradução, tanto que se escolher o desconto por porcentagem e digitar a porcentagem o total é calculado corretamente.
#11998
Também acho muito estranho, não fiz modificação alguma.

Minhas escolhas foram:
Tipo de Aplicação = Valor Fixo
Valor Total = 10

E nada.

Realmente não entendo o que está acontecendo mesmo porque já tomei duas atitudes, veja os resultados:

1ª tentativa: restaurei os arquivos originais /catalog/model/total/coupon.php, /catalog/controller/total/coupon.php, /catalog/controller/checkout/cart.php
Resultado: sem êxito.

2ª tentativa: no admin, ao criar o cupom, escolhi "Tipo de Aplicação" = "Porcentagem" e preenchi os campos "Porcentagem=6" e "Valor Total=10".
Resultado: o cálculo foi feito corretamente em cima da Porcentagem 6.

3ª tentativa: no admin, ao criar o cupom, escolhi "Tipo de Aplicação" = "Valor Fixo" e preenchi os campos "Porcentagem=6" e o "Valor Total=10".
Resultado: a subtração foi feita em cima do valor 6 ao invés do valor 10. (ao menos agora deu pra notar algum problema real!)

Verifiquei na tabela coupon se os campos coupon.discount, coupon.total e coupon.type estão preenchidos corretamente e estão, tanto para a 1ª tentativa (coupon.discount=6, coupon.total=10, coupon.type=F) quanto para a 2ª tentativa (coupon.discount=6, coupon.total=10, coupon.type=F).

Alguma outra sugestão? Vou continuar vasculhando os arquivos.


* tenho quase certeza que o problema está no código deste arquivo: http://www.google.com/codesearch#JYRvUL ... coupon.php
#12000
Eu sabia que tinha coisa errada! Resolvido!

Segue a solução:
1. edite o arquivo /catalog/model/total/coupon.php
2. procure pela linha 45, deverá estar escrito:
Código: Selecionar todos
$discount = $coupon_info['discount'] * ($product['total'] / $sub_total);
3. substitua por:
Código: Selecionar todos
$discount = $coupon_info['total'] * ($product['total'] / $sub_total);
Motivo: na verificação, ele questiona se for tipo "F" ou seja, se for valor fixo, então calcular com base no "discount" (Porcentagem)? Não, o correto é calcular com base no "total" (Valor Fixo). Tanto que segue a informação com o else seguinte que diz: caso contrário, calcule a porcentagem (aí sim usa-se o "discount").

Problema resolvido!

: bug coupon OC 1.5.1.3, fixed-value calculation in the cart, solved.
#12008
Desculpem entrar meio que de paraquedas na conversa, mas li o tópico hoje e fiquei curioso sobre o problema apontado, fiz um teste aqui tanto com o desconto por Valor Fixo, quanto pelo em Porcentagem, e em ambos funcionou como o esperado sem que eu tenha feito nenhuma correção, a minha versão é a 1.5.1.3.1.

Achei importante citar, pois avaliei o código da página citada e não vi nenhum erro, uma vez que a variável $coupon_info['discount'] tem seu valor alterado na linha 27 quando o cupom é do tipo Valor Fixo conforme o código abaixo:
Código: Selecionar todos
                                if ($coupon_info['type'] == 'F') {
                                        $coupon_info['discount'] = min($coupon_info['discount'], $sub_total);
                                }


Espero ter ajudado :D
rgtobr escreveu:Eu sabia que tinha coisa errada! Resolvido!

Segue a solução:
1. edite o arquivo /catalog/model/total/coupon.php
2. procure pela linha 45, deverá estar escrito:
Código: Selecionar todos
$discount = $coupon_info['discount'] * ($product['total'] / $sub_total);
3. substitua por:
Código: Selecionar todos
$discount = $coupon_info['total'] * ($product['total'] / $sub_total);
Motivo: na verificação, ele questiona se for tipo "F" ou seja, se for valor fixo, então calcular com base no "discount" (Porcentagem)? Não, o correto é calcular com base no "total" (Valor Fixo). Tanto que segue a informação com o else seguinte que diz: caso contrário, calcule a porcentagem (aí sim usa-se o "discount").

Problema resolvido!

: bug coupon OC 1.5.1.3, fixed-value calculation in the cart, solved.
#12010
Obrigado pelo comentário Vidal. Só não consigo entender por qual motivo, no meu caso por exemplo, essa variável não é preenchida na linha 27 como mencionado. Por isso fiz a mudança e funcionou, então sugeri a solução. Acho que a mudança sugerida não traria nenhum problema em alguma ocasião, ou me engano?