Как узнать вес заказа в хуке backend_order
В документации в шопскрипт написано что хуку передаётся массив заказа. Посмотрел его содержимое - там нет ни одного параметра ассоциируемого со словом weight. Отсюда вопрос - есть ли в передаваемом массиве информация о весе заказа или если нет, то как её узнать? В плагине доставки вес можно получить хотя бы методом getTotalWeight - значит вес где-то спрятан, но где? Полазил по таблицам SQL с префиксом shop_order - не нашёл там упоминаний о весе тоже явно. Правда таблицы уж очень большие и глазами всё не охватить.
Поскольку документация мягко говоря скудна и на тему заказа тоже - помогите чем можете
Эта тема в архиве. Добавление комментариев к ней отключено.
8 ответов
Получите все товары и сложите вес всех товаров.
Если установлен плагин то можете обращаться к его методу расчета.
Как? Можно пояснить? Сложить вес - это значит делать ручной запрос по каждому товару в отдельности? Т.е. в самом заказе веса вообще нет?
А как обратиться к установленному плагину и убедить его использовать метод расчёта применительно к конкретному заказу?
сделать запрос по каждому товару. получить значения характеристики для указанных товаров :). узнать нет-ли у товара артикулов, у которых вес переопределен. Выбрать вес либо товара, либо артикула. Сконвертировать в нужные единицы измерения (у товаров вес может быть в разных единицах). Перемножить и сложить.Тут вот у меня скопированное из недр Магазина и, кажется, немного доработанное есть:
Понял, спасибо, прелестно. Цифирка, которая была уже вычислена на момент формирования заказа и использовалась для расчёта стоимости доставки (методом calculate) далее была благополучно профукана :) И если вдруг в промежутке между формированием заказа и его отправкой из бакэнда менеджером какая-то позиция изменила вес, то итоговая цифра будет не та, что использовалась при оформлении.
Спасибо ещё раз за чёткое разъяснение. Стало ещё хуже :)
Оно каждой позиции заказа вес добавляет. Так что складывать вам самому придется :)
это понятно. Это не getTotalWeight а функция определения веса конкретной позиции заказа. Её ещё на квонтити домножать бы пришлось
waShipping::getTotalWeight() так и делает. Перебирает все позиции, умножает и складывает.
Ключевое На момент формирования заказа. А не момент, когда менеджер глянул в старый заказ и увидел там совершенно другой вес :)