Таблица oc_weight_class
Таблица oc_weight_class служит системным справочником, который хранит все доступные в магазине единицы измерения веса (например, килограммы, граммы, фунты, унции). Каждая единица измерения имеет свой коэффициент пересчета относительно базового веса, установленного в системе.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
weight_class_id |
int |
Уникальный идентификатор класса веса. Это первичный ключ таблицы. |
value |
decimal(15,8) |
Коэффициент пересчета данной единицы измерения относительно базового класса веса, установленного в настройках магазина (config_weight_class_id в таблице oc_setting). Например, если базовый класс - килограммы (кг), то для граммов (г) значение будет 1000.00000000 (в 1 кг = 1000 г), а для фунтов (lb) - примерно 0.45359237 (в 1 фунт ≈ 0.4536 кг).
|
Как это работает
Администратор магазина настраивает в админ-панели (Раздел: Система → Настройки → Редактировать магазин → Вкладка "Локаль") базовый класс веса (Weight Class). Этот класс является эталонным, и все коэффициенты в таблице oc_weight_class рассчитываются относительно него.
При создании или редактировании товара (вкладка Data) администратор выбирает единицу измерения веса для этого товара из списка, который формируется на основе записей в oc_weight_class.
Когда покупатель просматривает товар, система автоматически конвертирует его вес из единицы измерения товара в единицу измерения, выбранную покупателем в валюте магазина. Расчет происходит по формуле: [Вес в базовой единице] = [Вес товара] * [Значение value из oc_weight_class].
Эта же система конвертации критически важна для модулей доставки (например, weight), которые рассчитывают стоимость в зависимости от общего веса заказа. Все веса товаров в корзине приводятся к базовой единице, суммируются, и затем стоимость доставки рассчитывается на основе полученной суммы.
Многоязычные названия единиц измерения (например, "Kilogram", "Килограмм") хранятся в связанной таблице oc_weight_class_description, которая связывается с данной таблицей по полю weight_class_id.
Пример SQL-запроса
Посмотреть все классы веса с их переводом на русский язык можно следующим запросом:
SELECT wc.weight_class_id, wc.value, wcd.title, wcd.unit
FROM oc_weight_class wc
LEFT JOIN oc_weight_class_description wcd ON (wc.weight_class_id = wcd.weight_class_id)
WHERE wcd.language_id = 1;
Смотрите также
-
таблицу
oc_weight_class_description,
которая хранит переводы названий единиц веса -
таблицу
oc_length_class,
которая является справочником единиц измерения длины -
таблицу
oc_product,
которая используетweight_class_idдля товаров -
таблицу
oc_setting,
в которой хранится ID базового класса веса магазина