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