Página 1 de 1

Regra de desconto em % por grupo de cliente.

Enviado: 10 Jan 2013, 18:56
por tarcisiomota
Editado por mim...

Reescrevi o texto desse quadrado porque, como vcs veem a baixo, já achei a solução.
Segue uma pequena introdução e caso de uso da solução dada.
Leia atentamente todos os comentários! Depois não diga que eu não avisei.

Objetivo:
Mudar a forma que o Opencart trata os descontos.

Forma original: O preço do produto é 100, o desconto é cadastrado como 80. Então o preço passa a ser 80 (De acordo com a regra de quantidade e grupo de usuário e tal..).

Problema: Se o preço do produto for caindo com o passar do tempo (de 100 pra 40) e o adm da loja esquecer-se da antiga regra que: “na compra de 10 o valor é 60” será mais barato comprar por unidade...

O que fiz: Mudei o valor de R$ para %.

Caso: O adm cadastra um valor em % ex: -0.1000 (equivalente a -10%) assim o valor do desconto sempre será 10% em cima do valor do produto. E se o adm cadastrar 0.1000 (equivalente a +10%) o acréscimo sempre será 10% em cima do valor do produto.

Essa regra serve para o meu caso que é o seguinte:
Preciso cadastrar grupos de clientes atacadistas que sempre terão:

Grupo 01 -10%
Grupo 02 -5%
Grupo 03 -3%

E um grupo varejista que sempre terá 40% de acréscimo.

Se minha integração aumentar ou diminuir o preço, nunca correrá o risco do valor do desconto ser maior que o preço do produto. E o valor do acréscimo ser menor que o valor atual do produto. Sem falar da redução do trabalho para administrar esses produtos.

Atenção!

OBS1: Como eu não trabalho com Pagseguro, Paypal e coisas do gênero, não testei até o pagamento. Se for o seu caso Teste! E poste aqui se funciona. Obrigado!
OBS2: Não fiz testes com impostos, entrega, e outros módulos que venham a interferir no preço final do produto.

INFO: O meu fluxo de execução/teste foi:
-Modificar os códigos;
-Escolher um produto cadastrado na loja padrão;
-Cadastrar os descontos;
-Testar com usuários de grupos diferentes e descontos diferentes;
-Verificar os valores no carrinho;
-Finalizar compra;
-Receber o e-mail com o valor correto.

Se for atualizar a loja, conferir se a modificação está funcionando normalmente pois as modificações foram feitas no "core" do Opencart.

Bom, é isso.

Re: Regra de desconto em % para grupo de cliente.

Enviado: 14 Jan 2013, 20:24
por tarcisiomota
Senhores,

Como eu não tive resposta, resolvi mudar a minha pergunta.

Não conheço a arquitetura do Opencart e também não sou um bom desenvolvedor, então peço ajuda pra fazer a seguinte modificação:

Ao invés do Opencart enfiar o valor do campo “Preço de Venda” da aba Desconto em Cadastro de Produtos ele pegar o valor desse campo e calcular o valor de desconto (ou acréscimo) em porcentagem que o grupo de usuários selecionado tem direito.

Ficaria assim: NovoValor = ValorAntigo + (ValorAntigo * ValorCampoPreçoDeVendaAbaDescontos);
Dessa forma, se eu colocar no campo Preço de venda o valor 0.1 será acrescentado o 10% no valor original. E se for escrito no mesmo campo -0.1, será descontado 10% no valor original.

Para isso eu preciso de ajuda para:
Localizar onde o Opencart verifica as condições do preço (Grupo de usuário x Descontos) antes de dá o “print (echo)” do valor no frontend e do registro no carrinho.

Prometo que se eu conseguir fazer isso eu escrevo aqui um tutorial bem legal de como fazer a modificação :)


Porquê isso?
R: Quando o valor de um produto for mudado, eu só preciso mudar esse valor em Dados e os descontos e acréscimo serão aplicados automaticamente porque os calculos são feitos em % e não um valor fixo.
Também corre o risco de um dia o preço real do produto ser menor de que o preço com o desconto. É só o cara que administra a loja "comer mosca" e esquecer de modificar o preço do produto na aba Descoutos.

Obrigado por qualquer ajuda.

Re: Regra de desconto em % para grupo de cliente.

Enviado: 14 Jan 2013, 21:38
por tarcisiomota
Eu novamente..

Bom, depois de pesquisa muito o conteúdo HTML x Códigos consegui isso:

Imagem


Arquivo: \catalog\model\catalog\product.php
Linha 37
Código: Selecionar todos
//'price'            => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']), Código original
'price'            => ($query->row['discount'] ? $query->row['discount'] = $query->row['price'] + ( $query->row['price'] * $query->row['discount'] ) : $query->row['price']),

Para resolver o problema do carrinho, eu gostaria de ajuda pra descobrir onde fica o código do mesmo.

Alguém sabe onde fica?

Re: Regra de desconto em % para grupo de cliente.

Enviado: 15 Jan 2013, 00:27
por tarcisiomota
Bom.. Acho que resolvi.

No arquivo : \system\library\cart.php
Linha: 181
Modificação:
Código: Selecionar todos
if ($product_discount_query->num_rows) {
     //$price = $product_discount_query->row['price']; Carrinho calculo desconto Original *TM
     $price = $price + ($price * $product_discount_query->row['price']);
}

Minha Loja não tem nenhuma operadora de pagamento. Então se você aplicar esse modificação na sua loja, ver que funciona bem com o "paypal", "pagseguro" e ou qualquer coisado tipo, por favor, posta aqui! é só dizer: Funciona na coisa tal!..
Está tarde pra eu ver onde poderia mudar a tradução pra ficar condizente com a nova funcionalidade. Preciso ir dormir. Depois vejo isso..

ATENÇÃO
- Se você atualizar a loja Talvez seja necessário modificar o código novamente.
- Foi testado só com uma moeda (R$).
- Não foi testado com operadoras de pagamento.
- Testei em outro template que não é o padrão.

Té mais!

Re: Regra de desconto em % para grupo de cliente.

Enviado: 15 Jan 2013, 00:33
por tarcisiomota
Última coisa:

Admins e ou mestres em Opencart deste forum, gostaria da opinião de vcs pra esse caso. Como eu sou iniciante no Opencart não sei o impacto que essas modificações podem causar.

Obrigaodo!