Тестовое задание
Реализовать корзину товаров со следующей функциональностью:
- Добавление товара в корзину
- Удаление товара из корзины
- Изменение количества товара в корзине
- Применение купона к товару
- Применение купона к корзине
- Undo (отмена последней операции) неограниченное число раз
- Redo (применение последней отмененной операции) неограниченное число раз
- Печать чека
Купон дает право на скидку, скидка может отличаться в зависимости от купона. Купон может быть применен либо только к товару, либо только к корзине.