Расчет стоимости доставки относительно МКАД (г. Москва) и КАД (г. Санкт-Петербург)
Технические данные
- Опубликовано:
- 07.12.2021
- Обновлено:
- 22.12.2023
- Версия:
- 1.1.7
- Установлено:
- 100 - 499 раз
- Подходящие редакции:
- «Малый бизнес», «Бизнес»
- Адаптивность:
- Нет
- Поддержка Композита:
- Нет
- Совместимо с Сайты24
- Нет
- Совместимо с PHP 8.1
- Да
Пользовательское соглашение
Описание
Модуль добавляет в систему две службы доставки, позволяющих рассчитывать стоимость доставки относительно МКАД для г. Москва и КАД для г. Санкт-Петербург. Для этого модуль использует информацию от сервиса Dadata. С тарифами сервиса можно ознакомиться на сайте.
Отличительной особенностью данного модуля является наличие возможности использования двух вариантов тарификации:
расчет стоимости доставки по цене за километр
расчет стоимости доставки по таблице дистанций. Например, разная стоимость для дистанций — от 0 до 20 км, от 21 до 40 км.
Также в модуле предусмотрена возможность влиять на алгоритм расчета, когда бизнес-логикой магазина предусмотрен нестандартный расчет стоимости доставки. Например, в пределах МКАД стоимость доставки составляет 300 р., но при сумме заказа больше 3500 р. - бесплатно.
Модуль полностью совместим со стандартным шаблоном компонента sale.order.ajax. Если у Вас на сайте используется кастомизированный шаблон, то может потребоваться доработка.
Обязательным условием для работоспособности модуля является наличие установленного расширения curl для php!
1.1.7 (22.12.2023) |
|
1.1.6 (20.06.2023) |
|
1.1.5 (03.02.2023) |
|
1.1.4 (14.03.2022) |
|
1.1.3 (29.12.2021) |
|
1.1.2 (21.12.2021) |
|
1.1.1 (21.12.2021) |
|
1.1.0 (16.12.2021) |
|
1.0.3 (15.12.2021) |
|
1.0.2 (15.12.2021) |
|
1.0.1 (15.12.2021) |
|
- Установите модуль из Маркетплейс.
- Зарегистрируйтесь в сервисе Dadata.
- В настройках модуля Настройки->Настройки продукта->Настройки модулей->Расчет стоимости доставки относительно МКАД (г. Москва) и КАД (г. Санкт-Петербург) на вкладке «Интеграция с Dadata» укажите ключ API и секретный ключ, которые Вы можете взять в личном кабинете сервиса Dadata.
- В меню Магазин->Настройки->Службы доставки нажмите кнопку «Добавить» и выберите необходимую службу доставки для МКАД или КАД.
- В открывшемся окне на вкладке «Общие настройки» при необходимости измените название и описание службы доставки. На вкладке «Настройка обработчика» укажите цену доставки внутри МКАД (КАД). Если планируется простой расчет с ценой за километр, то укажите цену за километр. Если планируется тарификация по дистанциям, то отметьте соответствующий чекбокс.
- Если на предыдущем шаге при добавлении службы доставки был отмечен чекбокс «Рассчитывать стоимость доставки на основе таблицы дистанций от МКАД (КАД)», то перейдите в настройки дистанций доставки Магазин->Настройки->МКАД (КАД) — стоимость доставки и добавьте цены для дистанций от МКАД (КАД)
- Готово! Модуль настроен.
Модулем предусмотрены события, позволяющие влиять на расчет стоимости доставки:
OnDeliveryInMkadCalculated – сработает, когда стоимость доставки внутри МКАД рассчитана
OnDeliveryOutMkadDistanceCalculated — сработает, когда стоимость доставки за МКАД на основе таблицы дистанций рассчитана
OnDeliveryOutMkadForKmCalculated — сработает, когда стоимость доставки за МКАД на основе цены за километр рассчитана
OnDeliveryInKadCalculated – сработает, когда стоимость доставки внутри КАД рассчитана
OnDeliveryOutKadDistanceCalculated — сработает, когда стоимость доставки за КАД на основе таблицы дистанций рассчитана
OnDeliveryOutKadForKmCalculated – сработает, когда стоимость доставки внутри КАД рассчитана
Все события принимают на вход 3 параметра:
$order – экземпляр класса Bitrix\Sale\Order для текущего заказа
$arAddress – массив с параметрами адреса, полученными от сервиса dadata.ru. Подробнее https://dadata.ru/api/clean/address/#response
&$price – рассчитанная стоимость
Приведем пример, как повлиять на рассчитанную стоимость доставки. Допустим, при стоимости заказа более 3500 руб. доставка внутри МКАД должна быть бесплатной. Для решения задачи в файле /bitrix(local)/php_interface/init.php напишем следующий код:
Bitrix\Main\EventManager::getInstance()->addEventHandler("tmg.kaddelivery", "OnDeliveryInMkadCalculated", "OnDeliveryInMkadCalculatedHandler"); function OnDeliveryInMkadCalculatedHandler ($order, $arAddress, &$price) { if ($order->getPrice() > 3500) { $price = 0; } } |