Таблица oc_coupon
Таблица oc_coupon хранит основные данные о купонах, созданных в админ-панели OpenCart. Купоны используются для предоставления скидок покупателям при вводе специального кода во время оформления заказа.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
coupon_id |
int |
Уникальный идентификатор купона. Первичный ключ таблицы. |
name |
varchar(128) |
Название купона, задаваемое администратором для удобства идентификации. |
code |
varchar(20) |
Уникальный код купона, который вводит покупатель для получения скидки. Регистрозависимый. |
type |
char(1) |
Тип скидки: P - процентная (%), F - фиксированная сумма.
|
discount |
decimal(15,4) |
Величина скидки. Если type = P, то это процент; если type = F, то это фиксированная сумма в валюте магазина.
|
total |
decimal(15,4) |
Минимальная сумма заказа, необходимая для активации купона. Если сумма заказа меньше этого значения, купон не применится. |
logged |
tinyint(1) |
Флаг, указывающий, что купон могут использовать только авторизованные пользователи (1). Если 0, купон доступен всем.
|
shipping |
tinyint(1) |
Флаг, указывающий, что скидка применяется и к стоимости доставки (1). Если 0, скидка рассчитывается только от стоимости товаров.
|
date_start |
date |
Дата начала действия купона. До этой даты купон не активен. |
date_end |
date |
Дата окончания действия купона. После этой даты купон становится недействительным. |
uses_total |
int |
Максимальное общее количество использований купона. При достижении лимита купон деактивируется. |
uses_customer |
int |
Максимальное количество использований купона одним клиентом. |
status |
tinyint(1) |
Статус купона: 1 - включен, 0 - выключен.
|
date_added |
datetime |
Дата и время создания записи о купоне. |
Как это работает
Администратор создает купон в разделе Маркетинг → Купоны, заполняя все необходимые параметры: тип скидки, ее размер, ограничения и срок действия. Данные сохраняются в таблицу oc_coupon.
Покупатель вводит код купона на этапе оформления заказа. Система проверяет его валидность: соответствует ли код существующему купону, действует ли он в текущий период, достигнут ли лимит использований, соответствует ли сумма заказа минимальной и авторизован ли пользователь (если требуется).
При успешной проверке скидка применяется к корзине. Информация об использовании купона фиксируется в связанной таблице oc_coupon_history, где записывается coupon_id, order_id и customer_id.
Связь с товарами и категориями, на которые распространяется или не распространяется действие купона, осуществляется через таблицы oc_coupon_product и oc_coupon_category.
Пример SQL-запроса
Выбрать все активные на текущий момент купоны с процентной скидкой:
SELECT *
FROM oc_coupon
WHERE status = 1
AND type = 'P'
AND date_start <= CURDATE()
AND (date_end >= CURDATE() OR date_end = '0000-00-00')
AND (uses_total = 0 OR uses_total > (
SELECT COUNT(*)
FROM oc_coupon_history
WHERE oc_coupon_history.coupon_id = oc_coupon.coupon_id
));
Смотрите также
-
таблицу
oc_coupon_history,
которая хранит историю использований купонов -
таблицу
oc_coupon_product,
которая связывает купоны с товарами -
таблицу
oc_coupon_category,
которая связывает купоны с категориями -
таблицу
oc_order,
в которую записывается информация о примененном купоне в заказе