В настоящее время я ищу наилучшую практику «применения скидок» к корзине / заказу.
Итак, я планирую ввести такие скидки, как ...
фиксированная скидка пользователя (например, я бы хотел дать скидку 10% своему любимому клиенту)
скидка на количество предметов (например, вы покупаете 10 разноцветных ручек и получите скидку 1,5%)
скидка на купон (например, во время промо-акции мы произвели 100 купонов со скидкой 10% каждая. Купоны действуют только для одного заказа и имеют срок действия yyyy-mm-dd)
подарок для покупки предмета или группы предметов (например, вы покупаете ручку, лист бумаги и магазин представляет вам точилку)
скидка на общую стоимость заказа (например, вы покупаете 10 ручек и не получаете скидку, затем добавляете еще 5 ручек и получаете скидку 5%)
Только одна скидка может быть применена к конкретному товару. Мы всегда применяем самую большую скидку. Самая выгодная скидка для пользователя.
Кроме того, администратор должен иметь возможность изменять цену товаров в определенном порядке и отменять скидки в этом заказе.
Честно говоря, это мое первое приложение для электронной коммерции, и мне кажется довольно сложной задачей реализовать все эти виды скидок.
Хорошо, теперь позвольте мне рассказать вам, как я собираюсь реализовать ...
фиксированная скидка пользователя Это просто поле в таблице пользователей, которое содержит информацию о скидке. Он настраивается вручную через панель управления или автоматически cron для использования с общей суммой заказа выше этой N.
скидка на количество товаров Я собираюсь создать дополнительную таблицу для хранения групп товаров с такими скидками. Также мне понадобится еще одна таблица, чтобы связать эти группы с товарами в магазине.
скидка на купон Просто таблица с купонами, содержащая поле с днем истечения, статус купона, скидка купона и, возможно, user_id (владелец купона). Вероятно, я также буду реализовывать купоны для категорий товаров.
подарок для покупки предмета или группы предметов Это настоящая боль в заднице, и я совершенно не знаю, как реализовать. Пожалуйста, помогите!
скидка на общую стоимость заказа Довольно просто, имхо.
Хорошо, теперь я ищу лучших практик хранения таких скидок в БД. Также я ищу ООП практики для применения этих скидок в корзину. Любая помощь приветствуется!
PS: простите за такой длинный пост, но думаю, что это будет интересно не только мне.
Спасибо.