← Закрыть

Калькулятор доставки — инструкция по параметрам

Как устроен расчёт стоимости доставки и как параметры настроек влияют друг на друга. Все параметры редактируются в портале: «Админ» → «🚚 Калькулятор доставки — тарифы, транспорт, скидки».

1. Общая логика

Расчёт всегда идёт в 5 шагов: маршрут → вес груза → расчётное время → базовая стоимость → скидка (для физлица) или альтернатива «сборный груз». Ни один шаг не считается в изоляции — каждый следующий использует результат предыдущего.

2. Маршрут и базовая точка транспорта

ПараметрГде редактируетсяЧто делает
base_point_enabled
Базовая точка транспорта
Транспорт → Свой транспортВключает/выключает кольцевой маршрут через базу (гараж/склад).
base_point_address
Адрес базовой точки
Транспорт → Свой транспортОткуда/куда идёт транспорт до и после рейса к клиенту.

Если базовая точка выключена — маршрут для расчёта стоимости: точка загрузки → клиент → точка загрузки (то есть километраж считается как «в одну сторону» × 2).

Если базовая точка включена — маршрут кольцевой: база → точка загрузки → клиент → база. В стоимость входят все три участка, а не только рейс к клиенту.

Показатель «км в одну сторону», который видит менеджер в результате расчёта — это всегда только участок «точка загрузки → клиент», независимо от того, включена базовая точка или нет. Это сделано специально, чтобы менеджеру было понятно реальное расстояние до клиента, а не общий пробег машины. Но в саму стоимость при включённой базовой точке всё равно закладываются все три участка — км в одну сторону и км, заложенные в цену, могут отличаться.
Включение базовой точки увеличивает километраж и время в пути на два дополнительных участка (база↔точка загрузки, клиент↔база) — стоимость доставки вырастет для всех расчётов, а не только для тех, что рядом с базой. Проверяйте адрес базовой точки на актуальность.

3. Вес груза и матрица транспорта

ПараметрГде редактируетсяЧто делает
kg_per_m2
Коэффициент кг/м²
Транспорт → Свой транспортВес = Площадь металлочерепицы (м²) × этот коэффициент.
Матрица «вес/длина»Транспорт → Свой транспортСписок допустимых сочетаний максимального веса и максимальной длины листа для каждой единицы собственного транспорта. Манипулятор и наёмная машина сюда не добавляются — у них отдельные тарифы на подвкладке Транспорт → Наёмный транспорт (раздел 9 ниже).
Не добавляйте манипулятор/наёмную машину в эту матрицу — она влияет только на проверку «влезает ли груз» для своих машин и никак не участвует в расчёте цены наёмного транспорта.

Расчётный вес и введённая менеджером максимальная длина листа проверяются по матрице транспорта. Если груз (по весу и длине одновременно) не влезает ни в одно из сочетаний (основное или «облегчённое» — легче, но длиннее) — менеджер видит предупреждение о необходимости отдельно согласовать транспорт. На саму формулу цены это не влияет напрямую, но сигнализирует, что доставку нужно организовывать нестандартно.

4. Расчётное время

Расчётное время = Время в пути по маршруту (шаг 2) + Норматив загрузки + Норматив разгрузки + Резерв времени
ПараметрСмысл
load_time_min — Норматив загрузки, минСколько машина стоит под загрузкой на базе/складе.
unload_time_min — Норматив разгрузки, минСколько уходит на разгрузку у клиента.
reserve_time_min — Резерв времени, минЗапас на пробки, поиск адреса и т.п.

Расчётное время переводится в часы и используется только в формуле стоимости (шаг 5) — на маршрут или вес не влияет.

5. Базовая (индивидуальная) стоимость

Базовая стоимость = round( ( Фиксированная часть + Км маршрута × Ставка за км + Расчётные часы × Ставка часа водителя ) × (1 + Коммерческая наценка / 100), Шаг округления )
ПараметрВлияние
fixed_fee — Фиксированная часть, руб.Прибавляется всегда, независимо от расстояния.
rate_per_km — Ставка за км, руб.Умножается на полный километраж маршрута из шага 2 (не «в одну сторону»).
driver_hour_rate — Ставка часа водителя, руб.Умножается на расчётные часы из шага 4.
margin_percent — Коммерческая наценка, %Применяется к сумме всех трёх составляющих выше — то есть увеличивает и фиксированную часть, и километраж, и время сразу.
rounding_step — Шаг округления, руб.Финальное округление базовой стоимости (и итоговой цены после скидки) до ближайшего кратного этому шагу. При 1 руб. — округление до целых рублей.
Изменение ставки за км или ставки часа водителя сильнее всего сказывается на дальних доставках — короткие рейсы больше зависят от фиксированной части.

6. Скидка для физлица

ПараметрГде редактируетсяЧто делает
Матрица скидокВкладка «Скидки»Процент скидки по паре (Комплектность × Диапазон суммы заказа).

Скидка применяется только если тип клиента — «Физлицо». Для «Строителя» скидка всегда 0% — это жёстко зашитое правило системы (доставка для строителя всегда платная), а не настройка, изменить его через интерфейс нельзя.

Комплектность определяет, что уже входит в заказ клиента (влияет только на выбор строки скидки, не на вес и не на маршрут):

Итоговая цена = round( Базовая стоимость × (1 − Скидка% / 100), Шаг округления )

7. Сборный груз — альтернативное предложение не суммируется со скидкой

ПараметрЧто делает
consolidated_enabledВключает/выключает саму возможность сборного груза.
consolidated_max_weight_kg, consolidated_max_length_mЛимиты, при превышении которых сборный груз недоступен для конкретного заказа.
consolidated_percentПроцент от базовой (ещё без скидки) стоимости.
consolidated_min_priceМинимальная цена сборного груза — если процент даёт меньше, берётся этот минимум.
Цена сборного груза = round( max( Базовая стоимость × Процент / 100, Минимальная цена ), Шаг округления )

Сборный груз показывается менеджеру как отдельная строка рядом с основной ценой — это альтернатива («дешевле, но дата согласовывается с логистом»), а не скидка поверх скидки физлица.

8. Сводная схема зависимостей

Что от чего зависит, по порядку расчёта:

  1. Маршрут зависит от: адресов «откуда/куда» + настройки базовой точки.
  2. Вес зависит от: введённой площади + коэффициента кг/м².
  3. Проверка транспорта зависит от: веса (шаг 2) + длины листа + матрицы «Свой транспорт».
  4. Расчётное время зависит от: времени в пути (шаг 1) + нормативов загрузки/разгрузки/резерва.
  5. Базовая стоимость зависит от: километража (шаг 1) + расчётных часов (шаг 4) + фиксированной части + ставок + наценки + шага округления.
  6. Скидка зависит от: типа клиента + комплектности + суммы заказа + матрицы «Скидки». Применяется к базовой стоимости (шаг 5).
  7. Сборный груз зависит от: базовой стоимости (шаг 5, не итоговой) + веса/длины (лимиты) + процента/минимума сборного груза. Не зависит от скидки.
Живой пример расчёта на текущих (сохранённых прямо сейчас) значениях настроек — на вкладке «Алгоритм расчёта» в окне настроек калькулятора доставки. Там числа автоматически пересчитываются при открытии, если вы поменяли тарифы.