Таблица oc_subscription_history
Таблица oc_subscription_history хранит полную историю изменения статусов подписок (рекуррентных платежей) в системе OpenCart. Каждая запись в этой таблице соответствует одному изменению статуса подписки и содержит информацию о том, кто и когда его совершил.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
subscription_history_id |
int |
Уникальный идентификатор записи в истории подписки. |
subscription_id |
int |
Внешний ключ, который связывает запись истории с конкретной подпиской. Ссылается на таблицу oc_subscription.
|
subscription_status_id |
int |
ID статуса, на который была изменена подписка. Ссылается на таблицу oc_subscription_status.
|
notify |
tinyint(1) |
Флаг, указывающий, было ли отправлено уведомление клиенту о смене статуса (1 - да, 0 - нет).
|
comment |
text |
Комментарий к изменению статуса. Может содержать дополнительную информацию для клиента или администратора о причине смены статуса. |
date_added |
datetime |
Дата и время добавления записи в историю (смены статуса подписки). |
Как это работает
Когда в системе создается подписка (например, клиент оформляет заказ с товаром, у которого включена опция рекуррентных платежей), в таблице oc_subscription создается основная запись. Изначально подписка получает статус, например, "Ожидание" (Pending).
При каждом изменении статуса подписки (вручную администратором или автоматически платежной системой) в таблицу oc_subscription_history добавляется новая запись. Эта запись фиксирует:
- Какой статус был установлен (
subscription_status_id) - Было ли отправлено уведомление клиенту (
notify) - Комментарий к изменению (
comment) - Toчную дату и время изменения (
date_added)
Это позволяет отслеживать полный жизненный цикл подписки: от создания и активного состояния до приостановки, возобновления или окончательного завершения. История незаменима для аудита и решения спорных ситуаций с клиентами.
Поле notify управляет отправкой email-уведомлений. Если администратор при смене статуса в админ-панели отмечает галочку "Уведомить клиента", в это поле записывается 1, и система отправляет письмо клиенту по шаблону, соответствующему новому статусу подписки.
Пример SQL-запроса
Получить полную историю статусов для конкретной подписки с названиями статусов можно следующим запросом:
SELECT
sh.date_added,
ss.name as status_name,
sh.notify,
sh.comment
FROM oc_subscription_history sh
LEFT JOIN oc_subscription_status ss ON (sh.subscription_status_id = ss.subscription_status_id)
WHERE sh.subscription_id = 123
ORDER BY sh.date_added DESC;
Смотрите также
-
таблицу
oc_subscription,
которая содержит основные данные о подписках -
таблицу
oc_subscription_status,
которая хранит справочник статусов подписок -
таблицу
oc_subscription_plan,
которая описывает планы подписок (частоту и длительность платежей) -
таблицу
oc_order,
так как подписки привязаны к заказам