Таблица 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,
которая содержит основные данные о товарах