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

Таблица oc_order_status

Таблица oc_order_status является справочной и служит для хранения всех возможных статусов, которые могут быть присвоены заказу в процессе его выполнения (например, "Ожидание", "В обработке", "Отправлен"). Каждый статус имеет переводы на разные языки, установленные в магазине.

Поля

Поле Тип данных Описание
order_status_id int Уникальный идентификатор статуса заказа. Это числовой ключ, который однозначно определяет статус.
language_id int Идентификатор языка. Внешний ключ для таблицы oc_language. Позволяет хранить перевод названия статуса для каждого языка.
name varchar(32) Название статуса заказа на языке, указанном в поле language_id (например, "Pending", "Processing", "Shipped").

Как это работает

Администратор магазина настраивает статусы заказов в админ-панели в разделе "Система" → "Локализация" → "Статусы заказов". Для каждого статуса необходимо указать его название на всех активных языках магазина.

При создании нового статуса в таблицу oc_order_status добавляется несколько записей: по одной для каждого языка. Все эти записи имеют одинаковый order_status_id, но разные language_id и name.

Когда статус заказа изменяется (вручную администратором или автоматически платежной системой), в таблицу oc_order обновляется поле order_status_id, которое ссылается на ID из этой таблицы.

При отображении истории заказа в личном кабинете клиента или в админ-панели система, используя order_status_id из заказа и language_id текущей сессии, находит соответствующее название статуса в этой таблице.

Некоторые статусы, такие как "Отменено" (Canceled) или "Возврат" (Returned), могут иметь особое значение для логики работы магазина и складского учета.

Пример SQL-запроса

Посмотреть все статусы заказов и их переводы на русский язык (предположим, что language_id для русского равен 2) можно следующим запросом:

SELECT os.order_status_id, os.name as status_name, l.name as language FROM oc_order_status os LEFT JOIN oc_language l ON (os.language_id = l.language_id) WHERE os.language_id = 2 ORDER BY os.order_status_id;

Смотрите также

  • таблицу oc_order,
    которая хранит информацию о заказах и ссылается на статусы
  • таблицу oc_order_history,
    которая хранит историю изменения статусов заказов
  • таблицу oc_language,
    которая содержит список языков магазина