Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
66 of 152 menu
Бесплатный курс по Верстке. От новичка до продвинутого верстальщика! Начало 11 ноября. Жми для записи!

Таблица oc_coupon_history

Таблица oc_coupon_history предназначена для записи фактов использования купонов в заказах. Каждая запись в этой таблице связывает конкретный купон с конкретным заказом и клиентом, который его применил.

Поля

Поле Тип данных Описание
coupon_history_id int Уникальный идентификатор записи в истории использования купонов. Автоинкремент.
coupon_id int Внешний ключ, связывающий запись с конкретным купоном. Ссылается на таблицу oc_coupon.
order_id int Внешний ключ, идентификатор заказа, в котором был использован купон. Ссылается на таблицу oc_order.
customer_id int Внешний ключ, идентификатор клиента, который применил купон. Ссылается на таблицу oc_customer.
amount decimal(15,4) Сумма скидки, которая была применена к заказу с помощью данного купона.
date_added datetime Дата и время применения купона в заказе.

Как это работает

Администратор создает купон в админ-панели OpenCart (Маркетинг → Купоны), задавая ему код, тип скидки (процент, фиксированная сумма, бесплатная доставка), сумму, ограничения и количество использований.

Когда клиент вводит код купона на странице оформления заказа и нажимает "Применить", система проверяет его валидность (срок действия, количество оставшихся использований, соответствие условиям). Если купон действителен, скидка применяется к заказу.

После успешного применения купона и подтверждения заказа, в таблицу oc_coupon_history добавляется новая запись. Эта запись фиксирует, какой купон (coupon_id), каким клиентом (customer_id), в каком заказе (order_id) и на какую сумму скидки (amount) был использован.

Главная практическая цель этой таблицы - отслеживание и ограничение количества использований купона. При каждой попытке применить купон система проверяет количество уже существующих записей с данным coupon_id в oc_coupon_history и сравнивает его с лимитом, указанным в таблице oc_coupon. Если лимит исчерпан, купон становится недействительным.

Пример SQL-запроса

Посмотреть историю использования конкретного купона с информацией о заказах и клиентах:

SELECT ch.coupon_history_id, ch.date_added, ch.amount, c.code as coupon_code, o.order_id, o.total as order_total, CONCAT(cust.firstname, ' ', cust.lastname) as customer_name FROM oc_coupon_history ch LEFT JOIN oc_coupon c ON (ch.coupon_id = c.coupon_id) LEFT JOIN oc_order o ON (ch.order_id = o.order_id) LEFT JOIN oc_customer cust ON (ch.customer_id = cust.customer_id) WHERE ch.coupon_id = 7 ORDER BY ch.date_added DESC;

Смотрите также

  • таблицу oc_coupon,
    которая хранит основные данные и правила купонов
  • таблицу oc_order,
    которая содержит информацию о заказах
  • таблицу oc_order_total,
    где также фиксируется итоговая сумма скидки по купону в рамках заказа