Таблица oc_order_history
Таблица oc_order_history является журналом изменений статусов заказов. Каждый раз, когда статус заказа изменяется (вручную администратором или автоматически системой), в эту таблицу добавляется новая запись. Это позволяет отслеживать полный жизненный цикл заказа от момента создания до завершения.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
order_history_id |
int |
Уникальный идентификатор записи в истории заказа. Первичный ключ с автоинкрементом. |
order_id |
int |
Внешний ключ, связывающий запись с конкретным заказом. Ссылается на oc_order.
|
order_status_id |
int |
ID статуса заказа, который был установлен в этой записи истории. Внешний ключ для таблицы oc_order_status.
|
notify |
tinyint(1)
|
Флаг, указывающий, было ли отправлено уведомление клиенту о смене статуса (1 - да, 0 - нет).
|
comment |
text |
Комментарий к изменению статуса. Может содержать служебную информацию для клиента или для сотрудников магазина. |
date_added |
datetime |
Дата и время добавления записи в историю (смены статуса). |
Как это работает
При создании нового заказа система автоматически добавляет первую запись в историю, устанавливая начальный статус заказа (например, "Ожидание").
Когда администратор в панели управления изменяет статус заказа, он может добавить комментарий и выбрать опцию "Уведомить покупателя". При сохранении форма создает новую запись в oc_order_history с указанием order_id, нового order_status_id, комментария и флага notify. Одновременно с этим обновляется поле order_status_id в самой таблице заказов oc_order, которое всегда отражает текущий (последний) статус.
Некоторые модули оплаты или доставки также могут автоматически менять статусы заказа (например, при подтверждении оплаты), добавляя записи в историю.
История заказа крайне важна для отслеживания выполнения заказа и разрешения возможных споров с клиентами, так как она предоставляет полный и неизменяемый лог всех действий.
Пример SQL-запроса
Получить полную историю статусов для конкретного заказа с названиями статусов на русском языке можно следующим запросом:
SELECT
oh.date_added,
os.name as status_name,
oh.notify,
oh.comment
FROM oc_order_history oh
LEFT JOIN oc_order_status os ON (oh.order_status_id = os.order_status_id)
WHERE oh.order_id = 42
AND os.language_id = 1
ORDER BY oh.date_added ASC;
Смотрите также
-
таблицу
oc_order,
в которой хранятся основные данные заказа -
таблицу
oc_order_status,
которая содержит справочник статусов заказов