Precisamos de modelar um carrinho de compras para uma loja de bairro. O carrinho deve manter o registo da lista de artigos adicionados e calcular corretamente o preço.
Os artigos são adicionados ao carrinho através de códigos SKU (unidade de manutenção de stock). Os artigos da loja são:
| Nome | Preço | SKU |
|---|---|---|
| Potatoes | 10.00 | STAPOT |
| Rice | 30.00 | STARIC |
| Coffee | 14.99 | STACOF |
| Newspaper | 2.99 | MEDNEW |
O carrinho de compras deve permitir realizar estas operações:
Uma versão alternativa, ou extensão, da história usa cupões de desconto que podem ser adicionados ao carrinho de compras.
Para manter os clientes satisfeitos, a loja de bairro acrescentou cupões de desconto. Isto significa que, para suportar estes descontos, o nosso carrinho de compras tem de conseguir ler e aplicar cupões de desconto aos artigos que já lá estão. Os cupões suportados são:
| Tipo | SKU | Regra |
|---|---|---|
| Desconto de preço fixo | FIX_TEN | Desconta 10.00 ao valor total do carrinho |
| Desconto de produto | HALF_STAPOT | Reduz todos os artigos STAPOT para metade do preço |
O carrinho de compras deve ter uma nova operação scan coupon, que recebe um SKU e o adiciona ao carrinho. Tem em atenção que o total_amount não pode ser um número negativo; o valor mínimo do total_amount é 0.