РАЗРАБОТКА НА БИТРИКС

Расчет собственной службы доставки в Битрикс

Подписывайтесь на канал для bitrix-разработчиков в Telegram!
В кейсе описывается функционал расчета собственной службы доставки по Москве и Московской области.

Описание задачи

Необходимо сделать расчет собственной службы доставки по следующим условиям. В административной части сайта задается фиксированная стоимость доставки по Москве в зависимости от веса, а также стоимость доставки 1-го километра за пределы МКАД. Заказчик самостоятельно может менять стоимость. В оформлении заказа при выбранном регионе Москва и Московская Область, в установленном адресе доставки рассчитывается расстояние за пределы МКАД, в стоимость доставки устанавливается расчетная цена.
В пределах МКАД Стоимость доставки = Фиксированная стоимость (* зависит от веса груза)
За пределами МКАД Стоимость доставки = Фиксированная стоимость (* зависит от веса груза) + X руб. * N км

Решение

Создание обработчика кастомной службы доставки
Написан класс обработчика собственной службы доставки доступный по пути local/php_interface/include/sale_delivery/custom/handler.php
Метод getConfigStructure описывает настройки стоимости доставки за километр за пределами МКАД и стоимость доставки в зависимости от веса.
В методе calculateConcrete идет расчет стоимости доставки.
Расчет расстояния от МКАД
Так как расчет расстояния от МКАД в сервисе DaData доступен только в платном тарифе, было решено использовать API Яндекс-карт.
После расчета расстояния, значение подставляется в скрытое поле name="mkad_dist", и при работе метода sendRequest передается на сервер для расчета стоимости:

if(data.order.DELIVERY_ID == 6 ) {
   data.order.mkad_dist = $('[name="mkad_dist"]').val()
}
Подписывайтесь на канал для bitrix-разработчиков в Telegram!

Рекомендованные статьи