Таблица oc_order_total
Таблица oc_order_total является одной из ключевых таблиц, связанных с заказами в OpenCart. Она не содержит единой итоговой суммы, а разбивает её на логические составляющие, такие как стоимость товаров, скидки, налоги, стоимость доставки и другие модульные начисления. Каждая строка в этой таблице представляет собой одну из этих составляющих для конкретного заказа.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
order_total_id |
int |
Уникальный идентификатор записи в таблице итогов. Автоинкрементное поле. |
order_id |
int |
Внешний ключ, который связывает запись итога с конкретным заказом. Ссылается на oc_order.
|
code |
varchar(32) |
Системный код модуля, который добавил эту запись. Например: sub_total, shipping, tax, coupon, total.
|
title |
varchar(255) |
Название итоговой строки, которое видит пользователь (например, "Доставка", "Налог", "Промокод"). Может быть мультиязычным. |
value |
decimal(15,4) |
Числовое значение данной итоговой строки. Может быть как положительным (начисление), так и отрицательным (скидка). Для финального итога code='total' это поле содержит общую сумму к оплате.
|
sort_order |
int |
Порядок сортировки для отображения итоговых строк на странице оформления заказа и в административной панели. Чем меньше число, тем выше отображается строка. |
Как это работает
В процессе оформления заказа различные модули (корзины, доставки, скидки, налоги) рассчитывают свои значения и добавляют их в коллекцию итогов. После всех расчетов эта коллекция сохраняется в таблицу oc_order_total, где каждая строка соответствует одному модулю.
Обязательными записями для каждого заказа являются:
- sub_total - общая стоимость всех товаров в заказе без учета скидок и налогов.
- total - финальная сумма к оплате. Это всегда последняя строка с самым высоким
sort_order.
Остальные записи (shipping, tax, coupon, voucher и т.д.) добавляются по мере необходимости, если соответствующие модули были использованы при оформлении.
Данные в этой таблице являются историческими и фиксируют состояние заказа на момент его оформления. Если позже изменится налоговая ставка или способ доставки, данные в существующих заказах останутся прежними.
Пример SQL-запроса
Получить полную разбивку итогов для заказа с ID 123:
SELECT *
FROM oc_order_total
WHERE order_id = 123
ORDER BY sort_order;
Смотрите также
-
таблицу
oc_order,
которая хранит основную информацию о заказе -
таблицу
oc_order_product,
которая содержит товарные позиции заказа -
таблицу
oc_order_history,
которая хранит историю изменения статусов заказа