Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
50 of 152 menu
Бесплатный курс по Верстке. От новичка до продвинутого верстальщика! Начало 11 ноября. Жми для записи!

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