Таблица oc_subscription_status
Таблица oc_subscription_status является справочником, который хранит все возможные статусы подписок в системе OpenCart. Каждая запись в этой таблице имеет переводы на разные языки, что позволяет администратору управлять подписками и информировать клиентов об их состоянии на понятном им языке.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
subscription_status_id |
int |
Уникальный идентификатор статуса подписки. Первичный ключ таблицы. |
language_id |
int |
Идентификатор языка, для которого предоставлено название статуса. Внешний ключ для таблицы oc_language.
|
name |
varchar(32) |
Название статуса подписки на конкретном языке (например, "Active", "Suspended", "Cancelled", "Expired", "Pending", "Failed"). |
Как это работает
Система подписок (Recurring Payments) позволяет продавать товары или услуги с периодическими платежами. Каждая созданная подписка в таблице oc_subscription ссылается на один из статусов в этой таблице через поле subscription_status_id.
Поскольку OpenCart является многоязычной системой, каждый статус должен иметь перевод для каждого установленного в системе языка. Поэтому для одного и того же subscription_status_id в таблице будет несколько записей с разными language_id, но одинаковым смысловым значением.
Например, статус с subscription_status_id = 1 будет иметь запись с language_id = 1 (английский) и name = "Active", а также запись с language_id = 2 (русский) и name = "Активна". Это позволяет корректно отображать статус подписки в панели администратора и в личном кабинете клиента в зависимости от выбранного языка.
Статусы подписок являются системными и, как правило, предустановлены. Однако администратор может добавлять собственные статусы через админ-панель (если функционал позволяет) или напрямую в базу данных для реализации специфичной бизнес-логики.
Пример SQL-запроса
Получить все статусы подписок на русском языке можно следующим запросом:
SELECT ss.subscription_status_id, ss.name
FROM oc_subscription_status ss
WHERE ss.language_id = (SELECT language_id FROM oc_language WHERE code = 'ru');
Посмотреть все переводы для конкретного статуса:
SELECT ss.subscription_status_id, l.name as language, ss.name as status_name
FROM oc_subscription_status ss
LEFT JOIN oc_language l ON (ss.language_id = l.language_id)
WHERE ss.subscription_status_id = 1
ORDER BY l.sort_order;
Смотрите также
-
таблицу
oc_subscription,
которая хранит информацию о активных подписках клиентов -
таблицу
oc_subscription_plan,
которая содержит планы подписок (шаблоны периодичности и стоимости платежей) -
таблицу
oc_order_subscription,
которая связывает заказы с подписками -
таблицу
oc_language,
которая является справочником языков системы