Como modelar o calculo de desconto por produto?

Estou com uma dúvida de como melhor modelar a classe desconto.

Tenho a Classe Pedido - Item Pedido - Produto.

Exista a possibilidade de um determinado produto receber determinado desconto. No caso não seria todos os produtos, mas apenas alguns. Ou seja, determinado produto receberia desconto no momento do pagamento, já outros produtos, não.

Nesse caso, seria bom criar uma classe distinta pra calcular o valor de desconto por produto? Existe algum exemplo de como realizar esse procedimento?

Agradeço a quem ajudar.

você poderia colocar na própria classe Produto

Ex:

Double desconto;
Public void setDesconto(Double desconto){this.desconto=desconto};
Public Double getDesconto(){return desconto};
//    para descontos em casas decimais, sendo 10% = 0,1
Public Double valorFinal(){
           return (valordoProduto*desconto);
};
1 curtida

Obrigado. Vou fazer um teste.

1 curtida

O certo é você colocar esse campo de desconto no ItemPedido, uma vez que o desconto é determinado no momento do pagamento. Se você coloca o valor no Produto, você vai ter o mesmo desconto para todos os pedidos. Por exemplo, você tem o produto 1 - IPHONE. No pedido 10 você dá um desconto de 5% e grava no produto. Se no pedido 20 você acrescentar o mesmo produto, mas com um desconto de 10%, se você tentar imprimir o pedido 10 vai sair o desconto de 10%, e não o desconto original.

1 curtida

@rmendes08 ele não mencionou se o mesmo produto teriam diversos descontos, mas se isso for verdade vocês está correto, senão fica indiferente.

Mas nesse caso a pessoa teria que informar o valor do desconto no momento da venda correto? Nesse caso eu queria já um valor já pre-determinado para determinado produto, não havendo necessidade do usuário informar o valor do desconto no momento da venda.

Nesse caso, é interessante que você mantenha o campo nas duas classes. Ao faturar a nota, você copia o desconto do cadastro do produto para o item do pedido. Assim alterações no cadastro não afetam pedidos antigos.

Ótimo! Compreendido.

Pintou outra dúvida agora. E no caso que o cliente tenha o desejo que o sistema calcule o valor de desconto acima de uma quantidade determinada de produtos?

Por exemplo:

Acima de 10 Escovas -> 10%
Acima de 10 Pacotes de Fraldas -> 20%

Mas em outra data pode ser que ele mude o valor de desconto em % conforme ele achar melhor. Ou seja, num outro mês ele realizar uma promoção dos mesmos produtos, só que agora com menor desconto.

Por exemplo:

Acima de 10 Escovas -> 5%
Acima de 10 Pacotes de Fraldas -> 10%

coloca alguma logica no metodo de calculo do valor que lhe mostrei

Eis a questão!

Pois os valores de desconto em % mudariam conforme o desejo do cliente. Daí no caso não teria como deixar uma classe já com um determinado método estático com valor já pre-determinados de desconto.

mas o metodo não é estatico, mas sim modelo MVC.

e este simbulo (%) significa dividido por 100, logo
10% = 0,1
portanto
10% de desconto resulta em 90% do valor original que seria, por exemplo: um produto que custa $100, fazendo o calculo (100*0,9) resultaria no valor final do produto de $90

Nesse caso não seria mais sobre um único produto, mas acima de uma determinada quantidade. A lógica que se segue é a mesma?

a quantidade não estaria presente no produto?

Eu conseguiria calcular a quantidade sim. Já a lógica de dizer se é 10% ou 20% acima de tantos produtos seria meio que dinâmica, o cliente mudaria conforme a vontade dele. Minha dúvida fica quanto a esse calculo, já que não tem uma tabela determinada de quantos porcentos acima de tantos produtos…

Porque o cliente escolheria ter menos desconto?

Transforma isso em algo sistêmico…

Como seria isso? Transformar em algo sistêmico?

você criar um lugar para que o desconto seja padronizado e após isso não deixar o usuário escolher o desconto mas deixar ele por padrão.

Entendi. Muito obrigado!

1 curtida