Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
63 of 152 menu
Внимание! Репетиторство по Python! Осталось последнее место! Стоимость: 20$ за занятие 1.5 часа. Жми для подробностей!

Таблица 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,
    в которую записывается информация о примененном купоне в заказе