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

Таблица oc_product_subscription

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

Поля

Поле Тип данных Описание
product_subscription_id int Уникальный идентификатор связи товара с подпиской.
product_id int Внешний ключ, который связывает подписку с конкретным товаром. Ссылается на таблицу oc_product.
subscription_plan_id int Внешний ключ, который связывает товар с планом подписки. Ссылается на таблицу oc_subscription_plan.
customer_group_id int ID группы покупателей, для которой доступна данная подписка. Ссылается на таблицу oc_customer_group.

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

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

При редактировании товара в админ-панели на вкладке "Подписка" можно связать товар с одним или несколькими планами подписки. Для каждой связи указывается группа покупателей, что позволяет предлагать разные условия подписки разным категориям клиентов.

При оформлении заказа покупатель видит доступные варианты подписки для товара и может выбрать подходящий план. Информация о выбранной подписке сохраняется в таблице oc_order_subscription.

Система регулярных платежей (cron) автоматически обрабатывает активные подписки согласно их расписанию, создавая новые заказы и списывая средства с привязанных платежных методов покупателей.

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

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

SELECT ps.*, sp.name as plan_name, cg.name as group_name FROM oc_product_subscription ps LEFT JOIN oc_subscription_plan sp ON (ps.subscription_plan_id = sp.subscription_plan_id) LEFT JOIN oc_customer_group cg ON (ps.customer_group_id = cg.customer_group_id) WHERE ps.product_id = 42;

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

  • таблицу oc_subscription_plan,
    которая хранит планы подписок
  • таблицу oc_order_subscription,
    которая содержит информацию о подписках в заказах
  • таблицу oc_product,
    которая содержит основные данные о товарах
  • таблицу oc_customer_group,
    которая хранит группы покупателей