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

Таблица oc_order

Таблица oc_order является основной таблицей для хранения всех заказов в системе OpenCart. Каждая запись в этой таблице представляет собой отдельный заказ, содержащий всю необходимую информацию о покупателе, оплате, доставке, итогах и статусе.

Поля

Поле Тип данных Описание
order_id int Уникальный идентификатор заказа. Автоинкрементное поле.
invoice_no int Номер счета/инвойса. Генерируется автоматически при создании счета.
invoice_prefix varchar(26) Префикс для номера счета (например, INV-). Настраивается в админ-панели.
store_id int ID магазина, в котором был сделан заказ. Ссылается на oc_store.
store_name varchar(64) Название магазина на момент оформления заказа.
store_url varchar(255) URL магазина на момент оформления заказа.
customer_id int ID покупателя. Ссылается на oc_customer. Если заказ от гостя, значение = 0.
customer_group_id int ID группы покупателя на момент оформления заказа. Ссылается на oc_customer_group.
firstname varchar(32) Имя покупателя.
lastname varchar(32) Фамилия покупателя.
email varchar(96) Email покупателя.
telephone varchar(32) Телефон покупателя.
fax varchar(32) Факс покупателя.
custom_field text Пользовательские поля покупателя в формате JSON.
payment_firstname varchar(32) Имя для оплаты.
payment_lastname varchar(32) Фамилия для оплаты.
payment_company varchar(60) Компания для оплаты.
payment_address_1 varchar(128) Адрес для оплаты (строка 1).
payment_address_2 varchar(128) Адрес для оплаты (строка 2).
payment_city varchar(128) Город для оплаты.
payment_postcode varchar(10) Почтовый индекс для оплаты.
payment_country_id int ID страны для оплаты.
payment_country varchar(128) Название страны для оплаты.
payment_zone_id int ID региона для оплаты.
payment_zone varchar(128) Название региона для оплаты.
payment_address_format text Формат адреса для оплаты.
payment_custom_field text Пользовательские поля адреса оплаты в формате JSON.
payment_method varchar(128) Название способа оплаты.
payment_code varchar(128) Код способа оплаты (системное имя).
shipping_firstname varchar(32) Имя для доставки.
shipping_lastname varchar(32) Фамилия для доставки.
shipping_company varchar(60) Компания для доставки.
shipping_address_1 varchar(128) Адрес для доставки (строка 1).
shipping_address_2 varchar(128) Адрес для доставки (строка 2).
shipping_city varchar(128) Город для доставки.
shipping_postcode varchar(10) Почтовый индекс для доставки.
shipping_country_id int ID страны для доставки.
shipping_country varchar(128) Название страны для доставки.
shipping_zone_id int ID региона для доставки.
shipping_zone varchar(128) Название региона для доставки.
shipping_address_format text Формат адреса для доставки.
shipping_custom_field text Пользовательские поля адреса доставки в формате JSON.
shipping_method varchar(128) Название способа доставки.
shipping_code varchar(128) Код способа доставки (системное имя).
comment text Комментарий покупателя к заказу.
total decimal(15,4) Общая сумма заказа.
order_status_id int ID статуса заказа. Ссылается на oc_order_status.
affiliate_id int ID партнера/аффилиата, если заказ пришел по партнерской ссылке.
commission decimal(15,4) Комиссия партнера за заказ.
marketing_id int ID маркетинговой акции, если заказ пришел по рекламной кампании.
tracking varchar(64) Трек-код маркетинговой кампании.
language_id int ID языка, на котором был оформлен заказ.
currency_id int ID валюты, в которой был оформлен заказ.
currency_code varchar(3) Код валюты (например, USD, EUR, RUB).
currency_value decimal(15,8) Курс валюты относительно валюты по умолчанию на момент оформления заказа.
ip varchar(40) IP-адрес покупателя.
forwarded_ip varchar(40) Переадресованный IP-адрес (если используется прокси).
user_agent varchar(255) User Agent браузера покупателя.
accept_language varchar(255) Предпочитаемые языки браузера покупателя.
date_added datetime Дата и время создания заказа.
date_modified datetime Дата и время последнего изменения заказа.

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

Когда покупатель завершает оформление заказа, система создает новую запись в таблице oc_order. В эту запись копируются ВСЕ данные, связанные с заказом: информация о покупателе, выбранные адреса доставки и оплаты, методы доставки и оплаты, комментарии, итоговая сумма и т.д.

Важной особенностью является то, что данные копируются, а не ссылаются на оригинальные записи. Это гарантирует историческую сохранность: даже если покупатель изменит свой профиль, адрес или если администратор изменит настройки доставки/оплаты, информация в уже созданном заказе останется неизменной.

Статус заказа (order_status_id) может изменяться в процессе обработки заказа. История смены статусов хранится в таблице oc_order_history.

Toвары, входящие в заказ, хранятся в связанной таблице oc_order_product, а дополнительные данные по товарам (опции) - в oc_order_option.

Финансовая информация о заказе (налоги, итоги) хранится в таблице oc_order_total.

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

Выбрать информацию о заказах с деталями статуса:

SELECT o.order_id, o.invoice_no, CONCAT(o.firstname, ' ', o.lastname) AS customer_name, o.total, os.name as status_name, o.date_added FROM oc_order o LEFT JOIN oc_order_status os ON (o.order_status_id = os.order_status_id) WHERE os.language_id = 1 ORDER BY o.date_added DESC LIMIT 10;

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

  • таблицу oc_order_product,
    которая содержит товары в заказах
  • таблицу oc_order_total,
    которая хранит финансовые итоги заказов
  • таблицу oc_order_history,
    которая хранит историю статусов заказов
  • таблицу oc_customer,
    которая содержит данные покупателей