Протип интернет-магазина на базе SimpleMVC. Начало

Описание задачи ниже.

Товары

Создаем таблицу товаров с тремя полями (помимо технических):

  1. Название товара
  2. Цена за штуку
  3. Количество на складе

-- по сути это склад, тот товар, который ещё не продан.

Корзина

Далее, каждый пользователь может добавлять товары в корзину, причем:

  • В дизайне: Корзина должна быть представлена одним из пунктов меню, рядом с названием которого в скобках должно указывать число товаров.

    При переходе по этому пункту меню пользователь должен видеть список добавленных товаров, количество штук для каждого товара и суммарную ценю по каждой позиции в списке (её лучше вычислять динамически)

  • В СУБД: в СУБД состояние корзин разных пользователей должно храниться в одной таблице, отличать чьи это позиции нужно с помощью внешнего ключа
  • Пользователь может каждую позицию в корзину (используйте "добавить в корзину" в списке товаров и обработчик события клика с ajax-запросом к бэкэнду) в количестве, которое не превышает число на складе. Если число товаров в корзине превышает число на складе - выводите сообщение об ошибке средствами JavaScript.

    До тех пор пока пользователь не совершил покупку, товары со склада не списываются, это значит, что при наличии 8 штук для какой-то позиции, в корзины два пользователя вполне могут добавить по 5 штук - это больше чем всего есть на складе, но мы будем обрабатывать эту ситуацию позже, так как ещё не известно купить ли пользователь что-то.

Покупка

При совершении покупки из число товаров на складе, вычитается число товаров, лежащее в корзине текущего пользователя
Если почему-либо число товаров на складе, меньше чем что, что оказалось в корзине -- выведите сообщение об ошибке с указанием названия товара, с которым проблема и числом шт., которое все ещё доступно для данного товара.

Дайте пользователю возможность уменьшить число товаров (кнопками + и - и ajax-ом), до того, которое реально для покупки и все-таки завершить сделку.