Carrito de la compra


Historia

Tenemos que modelar un carrito de la compra para una tienda de barrio. El carrito debe llevar un registro de la lista de artículos que se añaden y calcular correctamente el precio.

Los artículos se añaden a la cesta mediante códigos SKU (unidad de mantenimiento de existencias). Los artículos de la tienda son:

Nombre Precio SKU
Potatoes 10.00 STAPOT
Rice 30.00 STARIC
Coffee 14.99 STACOF
Newspaper 2.99 MEDNEW

Tareas

El carrito de la compra debe permitir realizar estas operaciones:

  • Añadir artículos al carrito: lee un SKU y lo añade al carrito.
  • Comprobar el importe total: el valor total de los artículos del carrito como un número con dos decimales (p. ej. 3.99).
  • Comprobar los artículos que contiene el carrito: una lista con los nombres de los artículos del carrito, ordenados alfabéticamente, sin duplicados, separados por una coma y un espacio.

Terminología

  • Artículo: producto que se puede añadir al carrito de la compra.
  • SKU: el SKU es un identificador formado por las tres primeras letras mayúsculas del tipo de producto + las tres primeras letras mayúsculas del nombre del producto.
  • Precio: el valor del artículo como un número con dos decimales.

Implementaciones

Versión alternativa

Una versión alternativa o una ampliación de la historia usa cupones de descuento que se pueden añadir al carrito de la compra.

Historia

Para mantener contentos a los clientes, la tienda de barrio ha añadido cupones de descuento. Esto significa que, para admitir estos descuentos, nuestro carrito de la compra tiene que ser capaz de leer y aplicar cupones de descuento a los artículos actuales. Los cupones admitidos son:

Tipo SKU Regla
Descuento de precio fijo FIX_TEN Aplica un descuento de 10.00 al importe total del carrito
Descuento de producto HALF_STAPOT Reduce a la mitad el precio de todos los artículos STAPOT

Tareas

El carrito de la compra debe tener una nueva operación scan coupon, que recibe un SKU y lo añade al carrito. Ten en cuenta que el total_amount no puede ser un número negativo; el valor mínimo del total_amount es 0.

Terminología

  • Cupón: descuento que se puede aplicar al carrito. Los cupones son únicos y solo se pueden aplicar una vez. Si el tipo de cupón es un descuento de precio fijo, la segunda parte del SKU es el importe descontado en letras mayúsculas.

Implementaciones