НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
61 of 152 menu

Таблица oc_product_special

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

Поля

Поле Тип данных Описание
product_special_id int Уникальный идентификатор акционной цены.
product_id int Внешний ключ, который связывает акционную цену с конкретным товаром. Ссылается на таблицу oc_product.
customer_group_id int ID группы покупателей, для которой действует акционная цена. Ссылается на таблицу oc_customer_group. Если значение 0 - акция действует для всех групп.
priority int Приоритет акционной цены. Если для товара установлено несколько акционных цен с overlapping датами, будет применена цена с наивысшим приоритетом.
price decimal(15,4) Акционная цена товара. Должна быть меньше обычной цены товара.
date_start date Дата начала действия акционной цены. Формат: YYYY-MM-DD. Если 0000-00-00 - акция начинает действовать сразу.
date_end date Дата окончания действия акционной цены. Формат: YYYY-MM-DD. Если 0000-00-00 - акция действует бессрочно.

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

В админ-панели OpenCart при редактировании товара есть вкладка "Акции", где можно добавить специальные цены. Каждая запись в этой таблице представляет собой одно акционное предложение для конкретного товара.

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

Акционная цена считается активной, если текущая дата находится между date_start и date_end (включительно). Если даты не указаны (0000-00-00), акция считается всегда активной.

Система также учитывает группу покупателя. Можно создать акционные предложения, доступные только определенным группам клиентов (например, "Оптовикам" или "Постоянным клиентам").

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

Получить все активные акционные цены для товара с ID 42:

SELECT ps.*, cg.name as customer_group FROM oc_product_special ps LEFT JOIN oc_customer_group cg ON (ps.customer_group_id = cg.customer_group_id) WHERE ps.product_id = 42 AND (ps.date_start = '0000-00-00' OR ps.date_start <= CURDATE()) AND (ps.date_end = '0000-00-00' OR ps.date_end >= CURDATE()) ORDER BY ps.priority ASC;

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

  • таблицу oc_product,
    которая содержит основную информацию о товарах
  • таблицу oc_customer_group,
    которая хранит группы покупателей
  • таблицу oc_product_discount,
    которая хранит скидки на товары
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить