shopping-cart

Specifications:

  • A customer can have many carts at a time but only one active.
  • A customer can switch his active cart so new products are added to the current active one.
  • A customer can select the cart where he wants a product to be added to in case he selects the option to choose from his list of carts.
  • A customer can add a product to a non existing cart. A new cart is created at that point.
  • A customer can name his carts to make them easy to catalogue.
  • A customer can remove carts, removing all the products associated to that cart only when the cart hasn't been checked out.
  • A customer can add, remove and view products in his carts.
  • A customer can add the same product to different carts.
  • A customer can delete a product from one cart or from all the carts that contain that product.
  • A customer can look for the cart/s that contain/s a particular product.
  • A customer can have many addresses but only one active.
  • A customer can remove an address only if is not active.
  • A customer can have many phone numbers but only one active.
  • A customer can remove a phone number only if is not active.
  • A customer can have many email addresses but only one active.
  • A customer can remove an email address only if is not active.
  • A customer can select payment type: voucher, credit card, paypal.
  • A customer can look for products in previous orders.
  • A phone number can start with + , 00 or just the number
  • A customer can check-out a cart and be added a discount.
  • A product has current/previous prices.
  • A product can belong to many categories.
  • A product can have discounts based on a fixed value or a percentage.