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?
Doubledesconto;PublicvoidsetDesconto(Doubledesconto){this.desconto=desconto};PublicDoublegetDesconto(){returndesconto};// para descontos em casas decimais, sendo 10% = 0,1PublicDoublevalorFinal(){return(valordoProduto*desconto);};
igson.mendes1 like
Obrigado. Vou fazer um teste.
rmendes081 like
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.
Ofidomundo
@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.
igson.mendes
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.
rmendes08
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.
igson.mendes
Ótimo! Compreendido.
igson.mendes
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%
Ofidomundo
coloca alguma logica no metodo de calculo do valor que lhe mostrei
igson.mendes
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.
Ofidomundo
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
igson.mendes
Nesse caso não seria mais sobre um único produto, mas acima de uma determinada quantidade. A lógica que se segue é a mesma?
Ofidomundo
a quantidade não estaria presente no produto?
igson.mendes
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…
Ofidomundo
Porque o cliente escolheria ter menos desconto?
Transforma isso em algo sistêmico…
igson.mendes
Como seria isso? Transformar em algo sistêmico?
Ofidomundo
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.