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

Таблица oc_product_recurring

Таблица oc_product_recurring является связующей таблицей между товарами (oc_product) и профилями повторяющихся платежей (oc_recurring). Она определяет, какие варианты подписки или оплаты в рассрочку доступны для каждого конкретного товара.

Поля

Поле Тип данных Описание
product_id int Идентификатор товара. Внешний ключ, ссылается на oc_product.
recurring_id int Идентификатор профиля повторяющихся платежей. Внешний ключ, ссылается на oc_recurring.
customer_group_id int Идентификатор группы покупателей, для которой действителен данный профиль платежей для этого товара. Ссылается на oc_customer_group. Позволяет назначать разные условия подписки для разных групп пользователей.

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

Функционал повторяющихся платежей (Recurring Payments) позволяет магазину продавать товары по подписке или в рассрочку. В админ-панели в разделе "Каталог" → "Профили периодичности" создаются сами профили (oc_recurring), где настраивается частота платежей (раз в месяц, раз в год и т.д.), длительность, стоимость trial-периода.

Далее, при редактировании товара, на вкладке "Связи" (или "Recurring") администратор может выбрать, какие из созданных профилей будут доступны для покупки этого товара. При выборе профиля в этой форме создается запись в таблице oc_product_recurring, связывающая product_id, recurring_id и, опционально, customer_group_id.

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

При оформлении заказа с выбранным профилем создается запись не только в oc_order, но и в oc_order_recurring, которая отслеживает статус, историю платежей и следующую дату списания для этой конкретной подписки.

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

Получить все профили recurring-платежей, доступные для товара с ID 42, вместе с их названиями и описанием:

SELECT pr.*, r.frequency, r.duration, r.cycle, r.trial_status, r.trial_price FROM oc_product_recurring pr LEFT JOIN oc_recurring r ON (pr.recurring_id = r.recurring_id) LEFT JOIN oc_recurring_description rd ON (r.recurring_id = rd.recurring_id) WHERE pr.product_id = 42 AND rd.language_id = 1;

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

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