Общие габариты отправления по стороне и объёму
Плагин razmerup («Доставка — расчёт размеров и веса упаковки») подключается к событию Shop-Script
shipping_package и выступает выбранным в настройках магазина провайдером расчёта габаритов посылки.
По составу заказа (корзина / заказ) он вычисляет одну усреднённую посылку:
длину, ширину, высоту и вес в базовых единицах измерения магазина (длина и вес задаются в настройках Shop-Script, обычно метры и килограммы).
Сервисы доставки (СДЭК, Boxberry, Почта России, DPD, Яндекс Доставка и др.) в API, как правило, требуют габариты отправления и вес. Система не может «сложить» товары в реальную коробку; плагин даёт согласованные числа для тарификаторов, в том числе с учётом объёмного веса и лимитов по сторонам.
Плагин считает приблизительные габариты. Реальная укладка может отличаться. Прочтите описание режимов и порядка расчёта, чтобы корректно настроить запасы и лимиты.
В бэкенде Shop-Script в настройках доставки / габаритов отправления укажите провайдер расчёта посылки —
этот плагин (razmerup). Пока провайдер не выбран, габариты могут считать плагины доставки или оставаться пустыми.
Вес и три измерения длины товаров подтягиваются из характеристик, заданных в настройках магазина для доставки,
через shopShipping::extendItems до вызова расчёта.
razmerup_package_result для других плагинов.wa-log/shop/razmerup.log.Большинство сервисов требуют указать габариты общего отправления и по ним считают объём и объёмный вес, но не принимают «просто объём». В этом режиме объём заказа преобразуется в габариты.
Если в расчёте габаритов участвует ровно одна единица товара (суммарное количество по строкам = 1), результат совпадает с размерами этой позиции (после подстановки дефолтов).
Если ровно две единицы (два разных товара или один товар в количестве 2): у двух параллелепипедов сортируются три ребра, складываются два наименьших, из средних и больших берутся максимумы. Пример: товары 1×2×3 м и 1,2×1,3×7 м дадут упаковку порядка 2,2×2×7 м (как в классическом описании плагина).
Если три и более единиц: считается суммарный объём всех позиций (Д×Ш×В×количество). Из него получается куб с равными рёбрами (корень третьей степени из объёма). Например, три товара 1×1×1 м (3 м³) дают куб со стороной около 1,44 м — суммарный объём совпадает, но физически три куба в такой коробке не упаковать; это осознанный компромисс для API.
Далее плагин сравнивает сторону куба с самой длинной стороной среди всех товаров. Если длинное ребро товара больше стороны куба, строится параллелепипед: одна сторона равна этому максимальному ребру, две остальные подбираются так, чтобы объём снова совпадал с суммарным объёмом товаров.
Для каждой строки три размера сортируются по возрастанию. По всем строкам: сумма (минимальное ребро × количество); среднее и максимальное рёбра — это максимумы по соответствующим рёбрам среди строк. Удобно для плоских или вытянутых в одну ось товаров.
Каждая единица товара (число коробок = ceil от количества) — отдельный параллелепипед.
Попарное объединение той же логикой, что для двух товаров; пары с меньшим объёмом обрабатываются раньше.
Это эвристика, не оптимальный 3D bin packing.
| Настройка | Назначение |
|---|---|
| Режим расчёта габаритов | Один из трёх алгоритмов выше для нескольких единиц. |
| Размеры одного товара по умолчанию | Подстановка Д×Ш×В, если в карточке неполный набор и нет правила по категории. Все нули — отключено. |
| Таблица по категории | Строки: id_категории;длина;ширина;высота (разделители также |, запятая, таб). # — комментарий. Основная категория товара из shop_product.category_id. |
| Единица в таблице категорий | Единица длины для чисел в таблице (см, м и т.д.). |
| Наследовать от родителя | Подъём по дереву категорий, если для своей категории строки нет. |
| Габариты при отсутствии любых размеров | Если после подстановок нет позиций с габаритами; иначе — полный глобальный дефолт, если задан. |
| Вес единицы по умолчанию (кг) | Для строк без веса; перевод в базовую единицу веса магазина. |
| Учитывать объёмный вес | После габаритов с запасом: max(фактический вес товаров, объёмный). Тара — после. |
| Делитель объёмного веса | См³ на 1 кг (часто 5000). Формула: (Д×Ш×В в см³) / делитель → кг. |
| Добавить к результату | Запас упаковки по каждой оси независимо; 0 по оси не меняет ось. |
| Минимум / максимум по стороне | После округления габаритов. 0 — нет лимита на оси. Если max < min, max поднимается до min. |
| Округление габаритов вверх | Шаг в базовых единицах длины (например 0,01 м ≈ до сантиметра). |
| Упорядочить стороны | length ≥ width ≥ height для единообразия с API доставок. |
| Не учитывать услуги в габаритах | Услуги не входят в Д×Ш×В; их вес в сумме заказа сохраняется. |
| Вес упаковки (тары) | Ввод в кг, перевод в базовую единицу; после объёмного веса. |
| Округление веса вверх | Шаг в кг, затем в базовую единицу; 0 — не округлять. |
| Писать расчёт в лог | wa-log/shop/razmerup.log — вход, список с подставленными размерами, итог (JSON). |
total_*). Несколько мест одним вызовом не поддерживаются.ceil.Плагин «Изображения для блога» с созданием эскизов
7 дней бесплатно
Плагин для отправки уведомлений в MAX
7 дней бесплатно
Покупатели подписываются при отсутствии товара
7 дней бесплатно
Мгновенная авторизация через Яндекс ID
7 дней бесплатно
Маска телефона для корзины и других форм
7 дней бесплатно
Плагин обратного звонка с интеграцией
7 дней бесплатно
Добавляет возможность задавать аннотацию для поста
7 дней бесплатно
Получение товаров аналогов на отдельной странице
7 дней бесплатно
Сохранение всех фото на лету в формате webp
7 дней бесплатно
Генерация описаний и отзывов нейросетью
7 дней бесплатно
Определение VPN/Proxy подключений
7 дней бесплатно
Автоматический редирект посетителей на домен
7 дней бесплатно