Página 1 de 2

Cupom de desconto não funciona no OC 1.5.1.3

Enviado: 18 Nov 2011, 08:17
por rgtobr
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?

Re: Cupom de desconto não funciona no OC 1.5.1.3

Enviado: 18 Nov 2011, 16:04
por Ibraim
Olá amigo

Altere na administração o item: Data do fim:. Coloque uma data posterior para vencimento. Acredito que vai resolver.

Re: Cupom de desconto não funciona no OC 1.5.1.3

Enviado: 18 Nov 2011, 16:45
por rgtobr
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?

Re: Cupom de desconto não funciona no OC 1.5.1.3

Enviado: 18 Nov 2011, 17:09
por Ibraim
No meu não está como Valor monetário, e sim, como valor fixo, e está funcionando perfeitamente. Não sei se esse bug tem a ver com a tradução, a minha eu peguei aqui da comunidade: https://forum.opencartbrasil.com.br/ ... =38&t=1975.

Re: Cupom de desconto não funciona no OC 1.5.1.3

Enviado: 18 Nov 2011, 19:20
por rgtobr
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.

Re: Cupom de desconto não funciona no OC 1.5.1.3

Enviado: 18 Nov 2011, 22:19
por Ibraim
Muito estranho, pois comigo está sendo calculado normalmente. Mesmo como valor fixo, o valor você está preenchendo no campo desconto?

Re: Cupom de desconto não funciona no OC 1.5.1.3

Enviado: 19 Nov 2011, 10:21
por rgtobr
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

Re: Cupom de desconto não funciona no OC 1.5.1.3

Enviado: 19 Nov 2011, 10:51
por rgtobr
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.

Re: Cupom de desconto não funciona no OC 1.5.1.3

Enviado: 19 Nov 2011, 16:21
por Manoel Vidal
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.

Re: Cupom de desconto não funciona no OC 1.5.1.3

Enviado: 19 Nov 2011, 17:29
por rgtobr
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?