Necesitamos modelar un carrito de compras para una tienda de barrio. El carrito debe llevar un registro de la lista de artículos agregados y calcular el precio correctamente.
Los artículos se agregan al carrito usando códigos de unidad de mantenimiento de existencias (SKU). Los artículos de la tienda son:
| Nombre | Precio | SKU |
|---|---|---|
| Papas | 10.00 | STAPOT |
| Arroz | 30.00 | STARIC |
| Café | 14.99 | STACOF |
| Periódico | 2.99 | MEDNEW |
El carrito de compras debe permitir realizar estas operaciones:
Una versión alternativa o extensión de la historia usa cupones de descuento que se pueden agregar al carrito de compras.
Para mantener contentos a los clientes, la tienda de barrio agregó cupones de descuento. Esto significa que, para admitir estos descuentos, nuestro carrito de compras debe poder leer y aplicar cupones de descuento a los artículos actuales. Los cupones admitidos son:
| Tipo | SKU | Regla |
|---|---|---|
| Descuento de precio fijo | FIX_TEN | Descuenta 10.00 del monto total del carrito |
| Descuento de producto | HALF_STAPOT | Reduce a la mitad el precio de todos los artículos STAPOT |
El carrito de compras debe tener una nueva operación scan coupon que recibe un SKU y lo agrega al carrito. Ten en cuenta que total_amount no debe ser un número negativo; el valor mínimo de total_amount es 0.