Создание сайтов на 1С Битрикс стало еще просто, используйте готовые шаблоны! Подключайте современные модули, делая ваш сайт еще эффективнее!
Например, парсер сайтов

Расчет стоимости доставки относительно МКАД (г. Москва) и КАД (г. Санкт-Петербург)

3 990 i
Заказать
Оформление заказа
х
В наличии

Модуль добавляет в систему две службы доставки, позволяющих рассчитывать стоимость доставки относительно МКАД для г. Москва и КАД для г. Санкт-Петербург. Для этого модуль использует информацию от сервиса Dadata. С тарифами сервиса можно ознакомиться на сайте.

Отличительной особенностью данного модуля является наличие возможности использования двух вариантов тарификации:

  • расчет стоимости доставки по цене за километр

  • расчет стоимости доставки по таблице дистанций. Например, разная стоимость для дистанций — от 0 до 20 км, от 21 до 40 км.

Также в модуле предусмотрена возможность влиять на алгоритм расчета, когда бизнес-логикой магазина предусмотрен нестандартный расчет стоимости доставки. Например, в пределах МКАД стоимость доставки составляет 300 р., но при сумме заказа больше 3500 р. - бесплатно.

Модуль полностью совместим со стандартным шаблоном компонента sale.order.ajax. Если у Вас на сайте используется кастомизированный шаблон, то может потребоваться доработка.

Обязательным условием для работоспособности модуля является наличие установленного расширения curl для php!

  1. Установите модуль из Маркетплейс.

  2. Зарегистрируйтесь в сервисе Dadata.

  3. В настройках модуля Настройки->Настройки продукта->Настройки модулей->Расчет стоимости доставки относительно МКАД (г. Москва) и КАД (г. Санкт-Петербург) на вкладке «Интеграция с Dadata» укажите ключ API и секретный ключ, которые Вы можете взять в личном кабинете сервиса Dadata.

  4. В меню Магазин->Настройки->Службы доставки нажмите кнопку «Добавить» и выберите необходимую службу доставки для МКАД или КАД.

  5. В открывшемся окне на вкладке «Общие настройки» при необходимости измените название и описание службы доставки. На вкладке «Настройка обработчика» укажите цену доставки внутри МКАД (КАД). Если планируется простой расчет с ценой за километр, то укажите цену за километр. Если планируется тарификация по дистанциям, то отметьте соответствующий чекбокс.

  6. Если на предыдущем шаге при добавлении службы доставки был отмечен чекбокс «Рассчитывать стоимость доставки на основе таблицы дистанций от МКАД (КАД)», то перейдите в настройки дистанций доставки Магазин->Настройки->МКАД (КАД) — стоимость доставки и добавьте цены для дистанций от МКАД (КАД)

  7. Готово! Модуль настроен.

РАЗРАБОТЧИКАМ



Модулем предусмотрены события, позволяющие влиять на расчет стоимости доставки:

  • 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;

   }

}





Служба поддержки support@tree-web.ru

x