Расчёт стоимости доставки

Данный модуль позволяет рассчитывать стоимость доставки, зависящей от зон и километража в автоматическом режиме, реализуется два способа расчёта стоимости доставки. 

Можно в удобной форме, с использованием Яндекс.Карт, выделять на карте области и определять стоимость доставки в них, зону на Яндекс.Карте можно рисовать с помощью удобного инструмента и указать фиксированную стоимость, если в зоне доставки стоимость фиксированная. 

Если стоимость зависит от расстояния, то с помощью модуля очень удобно рассчитывать стоимость по километражу. Благодаря этому компоненту, покупатель, с помощью одного клика по Яндекс.Карте, может указать место доставки и, в зависимости от нахождения в той или иной зоне, пользователю будут предложены доступные способы доставки и автоматически рассчитаны их стоимости. 

После выбора адреса доставки для пользователя на карте наглядно отображается выбранный маршрут доставки (если такое задать в настройках). Выбрав наиболее предпочтительный способ доставки, покупатель может добавить его в корзину (если такое свойство активировать в настройках).

Несколько зон могут быть объединены в карты, при отображении покупателю можно ограничить список карт, которые будут ему доступны. Все настройки компонента легко управляемые, понятны как опытному разработчику, так и начинающему.

Видео-ролики о модуле:

Часть 1. Установка и настройки модуля «Расчёт стоимости доставки на основе зон Яндекс.Карт»  https://youtu.be/KsuDwQXw4E4
Часть 2. Подключаем автоматизированную службу доставки для модуля «Расчёт стоимости доставки»  https://youtu.be/JG-sKFFjVI8
Часть 3. Создаём зоны доставки для модуля «Расчёт стоимости доставки на основе зон Яндекс.Карт»  https://youtu.be/2qk8d6wzd_g
Часть 4. Собираем зоны в карту для модуля «Расчёт стоимости доставки на основе зон Яндекс.Карт»  https://youtu.be/CMxuXMypZ70
Часть 5. Вывод компонента «Расчёт стоимости доставки на основе зон Яндекс.Карт» https://youtu.be/EoSXon5YuEU
Часть 6. Демонстрация работы модуля «Расчёт стоимости доставки» при оформлении заказа  https://youtu.be/Ssd83MP6MWg

По вопросам приобретения модуля и технической поддержки просьба обращаться на marketplace@sebekon.ru
Время ожидания ответа может составить до 3 дней, приносим извинения за возможное неудобство.
Установка и настройка
FAQ
Обновления
Примеры использования

1. Установить решение через каталог решений 1С-Битрикс:Marketplace https://marketplace.1c-bitrix.ru/solutions/sebekon.deliveryprice/. В списке модулей, в системной папке, должна появиться папка sebekon.delivereprice:

установка доставки 1.png

2. После установки, в списке всех решений должно появиться решение с названием «Расчёт стоимости доставки» и кодом “DELIVERY_PRICE”.

установка доставки 2.png

В списке инфоблоков создастся инфоблок «Расчёт стоимости доставки». Этот тип инфоблоков содержит два инфоблока: «Зоны» (Код “ZONES”) — хранит зоны доставки, «Карты» (Код “MAPS”) — хранит карты, которые объединяют набор зон в единый способ доставки.

3. Также после установки должны появиться компоненты /bitrix/components/sebekon/delivery.calc.
ВАЖНО: если тип инфоблока или инфоблок с заданными кодами уже существуют, то новые создаваться не будут; права на папки /bitrix/ и /bitrix/components/ должны быть достаточны для создания нового каталога.

установка доставки 3.png

4. Для того чтобы при оформлении заказа стала доступна автоматизированная служба доставки, необходимо указать индекс и местоположение магазина («Настройки модулей» -> «Интернет-магазин» -> «Адрес магазина») и активировать службу доставки "sebekon_yaroute" на странице «Магазин» -> «Настройки магазина» -> «Службы доставки» -> «Автоматизированные».

Как сделать расчёт стоимости доставки в зависимости от веса заказа?

Пример: На сайте по продаже автозапчастей действует доставка курьером и машиной. Если вес заказа больше 15 кг, то доставка только машиной.

Тут возможно несколько вариантов:

1) Самый простой, создать несколько страниц, на которых разместить нужные карты, и, в зависимости от веса, перенаправлять пользователя на нужную страницу.
2) При выводе карты, в зависимости от веса заказа, определяем идентификатор нужной карты, помещаем его в переменную (например: $MAP_ID) и заменяем код вызова компонента на:

<?$APPLICATION->IncludeComponent(
"sebekon:delivery.calc",
".default",
Array(
"SHOW_ROUTE" => "Y",
"MULTI_POINTS" => "Y",
"ADD2BASKET" => "Y",
"MAP" => array($MAP_ID)
)
);?>

3) Выводим все карты на одной странице, но каждую из них оборачиваем в свой div со стилем, который с одной стороны даст команду браузеру прорисовать карту, но при этом скроет блок (style="height: 1px;overflow: hidden;width: 1px;"), затем вешаем на какое-то событие (выбор в селекте, клик по ссылке или кнопке и т.д.) скрытие остальных карт и показ нужной, причём скрытие будет выглядеть так:
$('.map').css({height: '1px', overflow: 'hidden',width: '1px'});
А отображение:
$('#delivery_map_1').css({width: 'auto', height: 'auto', overflow: 'none'});

Пример всего кода (не забудьте поменять идентификаторы карт в параметре <"MAP" => array(..)>):
<a href="javascript: void(0);" onclick="$('.map').css({height: '1px', overflow: 'hidden',width: '1px'}); $('#delivery_map_1').css({width: 'auto', height: 'auto', overflow: 'none'});">Показать карту 1</a>
<a href="javascript: void(0);" onclick="$('.map').css({height: '1px', overflow: 'hidden',width: '1px'}); $('#delivery_map_2').css({width: 'auto', height: 'auto', overflow: 'none'});">Показать карту 2</a>
<div id="delivery_map_1" class="map" style="height: 1px;overflow: hidden;width: 1px;">
<h2>Карта #1</h2>
<?$APPLICATION->IncludeComponent(
"sebekon:delivery.calc",
".default",
Array(
"SHOW_ROUTE" => "Y",
"MULTI_POINTS" => "Y",
"ADD2BASKET" => "Y",
"MAP" => array(47)
)
);?>
</div>

<div id="delivery_map_2" class="map" style="height: 1px;overflow: hidden;width: 1px;">
<h2>Карта #2</h2>
<?$APPLICATION->IncludeComponent(
"sebekon:delivery.calc",
".default",
Array(
"SHOW_ROUTE" => "Y",
"MULTI_POINTS" => "Y",
"ADD2BASKET" => "Y",
"MAP" => array(48)
)
);?>
</div>

Как реализовать схему расчёта доставки при фиксированной стоимости?

У магазина мебели есть склад с товарами по адресу: Рахмановский переулок 3, с которого производится доставка в пределах г.Москва по фиксированной стоимости 300 руб. Настроим компонент и рассчитаем стоимость доставки в пределах Москвы до адреса Успенский переулок 1.

Решение:

Т.к. магазин мебельный, то данном случае предусматривается только доставка машиной (нет курьерской службы), поэтому достаточно построить одну карту.

1) Установить компонент по расчету стоимости доставки и добавить на нужную страницу:

1.png

2) После добавления компонента на страницу, необходимо указать шаблон компонента:

1.2.png

! Будьте внимательны! Если в зонах задана фиксированная стоимость доставки без учета километража, то маршрут прорисовываться не будет и на карте не обозначается точка, от которой ведется отсчёт.

3) Создаём зону с одной точкой — адрес склада, указав адрес на карте и необходимые дополнительные настройки для отображения выводимых данных:

1.3.png 1.4.png

4) Создаем вторую зону, в которую входит необходимая территория (выделить вручную) г. Москвы с указанием точки отсчета — зона «Склад товаров» и фиксированной стоимостью доставки в пределах зоны г. Москвы — 300 руб.:

1.5.png 1.6.png

! Некоторые пожелания к расстановке границ зоны (на примере г. Москва):

  • точки желательно ставить по периметру зоны в одном направлении, т.к. выделяется зона
  • точки желательно ставить на пересечении МКАД и радиальных шоссе.

Если точек много — расчёт будет производится дольше.

Если мало — будет слишком неточным.

Для компонента light, который выводит название зоны с фиксированной стоимостью доставки «Москва (300 руб.)» это укажем при создании, в анонсном описании зон:

1.7.png

5) Собираем зоны в одну карту:

1.8.png

Теперь на сайте при расчете стоимости доставки указываем адрес для доставки, происходит автоматический расчет стоимости: в компоненте light будет выглядеть так:

1.9.png

В компоненте default будет выглядеть так:

1.10.png

Первая точка на карте в данном случае будет всегда склад. Для двух адресов станет стоимость доставки 600 руб, трёх — 900 руб и т.д.

Стоимость доставки 300 руб + 10 руб./км. Как реализовать такую схему?

У магазина мебели есть склад с товарами по адресу: Рахмановский переулок 3, с которого производится доставка в пределах г. Москва по стоимости 300 руб. за заказ + 10 руб за каждый километр. Настроим компонент и рассчитаем стоимость доставки в пределах Москвы до адреса Успенский переулок 1.

Решение.

1) Компонент должен быть установлен и добавлен на страницу. Обязательно в настройках компонента указать шаблон default и необходимые параметры.

Выберу в отображении: «показывать маршрут» и добавление доставки в корзину»

2.1.png

2) Создаём зону «Склад товара». Это будет одна точка — адрес склада.

3) Создаём зону Москва с точкой отсчета — зона «Склад товаров», указав в поле фиксированной стоимости 300 руб, а в поле «цена за км» ставим 10, выбираем дополнительные настройки: форматы вывода данных (десятичные, округления..., цвет зоны и т.д.). Отделю десятичные запятой и округлю до единиц, после запятой будет 00.

2.2.png

4) Собираем зоны в одну карту

2.3.png

Теперь вводим адрес для доставки и автоматически рассчитывается стоимость:

2.4.png

Как происходит расчёт стоимости доставки по нескольким адресам в пределах одной зоны?

У магазина мебели есть склад с товарами по адресу: Рахмановский переулок 3, с которого производится доставка в пределах г. Москва по стоимости 300 руб. за заказ + 10 руб за каждый километр. Настроим компонент и рассчитаем стоимость доставки в пределах Москвы по адресам: Успенский переулок 1, Романов переулок 4, Померанцев переулок 9

Модуль позволяет делать расчёт стоимости доставки сразу для нескольких адресов.

1. Для зон с фиксированной стоимостью доставки: стоимость доставки *кол-во адресов

2. Для зон с фиксированной стоимостью+цена за километр: фиксированная стоимость+цена за км*кол-во км

3.1.png

Можно добавить доставку в корзину.

Доставка курьером или машиной? (пример реализации расчёта для нескольких зон)

У магазина канцелярии есть несколько возможностей на доставку: курьер, машина

Рассчитать стоимость разных видов доставки для нескольких адресов в одном заказе.

Условия:

1. Компонент установлен на сайт и настроен

2. Компонент добавлен в нужное место на странице

3. Необходимо наличие нескольких зон с обозначенной стоимостью и собранных в одну карту для доставки курьером (точка отсчета: склад/магазин)

4. Необходимо наличие нескольких (других) зон с обозначенной стоимостью и собранных в одну (другую) карту для доставки машиной (точка отсчета: склад/магазин)

Расчёт компонентом стоимости доставки будет выглядеть так (зоны с фиксированной стоимостью доставки):

4.1.png

Или так:

4.2.png

При использовании компонента у покупателя появляется выбор нужной доставки, самостоятельность в расчёте и планировании заказов с доставкой. (Удобно покупателю — легко продавцу!)

Как рассчитать стоимость доставки при оформлении заказа?

На этапе формирования заказа в книжном магазине необходимо рассчитать стоимость доставки.

Условия:

1. Компонент установлен на сайте

2. Необходимо наличие нескольких зон с обозначенной стоимостью и собранных в одну карту для доставки курьером (точка отсчета: склад/магазин)

3. Необходимо наличие нескольких (других) зон с обозначенной стоимостью и собранных в одну (другую) карту для доставки машиной (точка отсчёта: склад/магазин)

Решение:

Переходим на страницу заказа (в корзину). В службах доставки появляется доставка на основе зон в Яндекс.картах и там предлагается указать местоположение для расчёта доставки, необходимо указать адрес, переходя по ссылкам:

6.1.png

Кликаем по ссылке «отметить место доставки», открывается дополнительное окно с картой, отмечаем адрес для доставки кликая по карте или вводя адрес в окно поиска. (!метки можно двигать по карте вручную, удерживая мышью)

После выбора местоположения, автоматически рассчитывается стоимость доставки:

6.2.png

До добавления заказа на доставку корзина выглядела так:

6.3.png

Выбираем подходящий вариант доставки:

6.4.png

Жмем сохранить. Выбранный вариант с рассчитанной стоимостью доставки включается в заказ:

6.5.png

В этом случае мы формируем заявку на доставку на этапе оформления заказа. Вернее она автоматически включается в заказ, мы лишь выбираем способ с рассчитанной стоимостью.

Настройка зависимости стоимости доставки от стоимости или веса заказа

Иногда возможность и стоимость доставки может зависеть от стоимости или веса заказа. В модуле «Расчёт стоимости доставки по Яндекс.карте» начиная с версии 1.0.18 добавлена возможность указания для карт диапазонов стоимости или весов заказа для которых будет доступна эта доставка.

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

  1. Если сумма заказа составляет до 4000р, то стоимость доставки будет фиксированной — 200р, и доставка только в пределах города (доставка по области — недоступна).
  2. Если сумма заказа более 4000р, то стоимость доставки по городу 0 рублей, а по области — считается по длине маршрута, тариф 50 руб. за 1 км.

Для того чтобы настроить доставку под данный вариант, нужно:

  1. Создать 3 зоны:
  2. 1.1. Зона «Москва 200». Стоимость доставки фиксирована и составляет 200 р. (см. рис. 1)

    1.2. Зона «Москва 0» (зона может быть создана через копирование зоны «Москва 0»). Стоимость доставки фиксирована и составляет 0р.

    1.3. Зона «Область 50р./км.». Стоимость доставки рассчитывается исходя из тарифа 50р. за км., расстояние рассчитывается от границ зоны «Москва 0». (см. рис. 2)

    Безымянный 1 для модуля.png

    Рис. 1. Создание зоны «Москва 200»
  3. Создать 2 карты:
  4. 2.2. Карта «Курьер 1». В неё входит только одна зона «Москва 200». В настройках этой карты в поле «Стоимость заказа до» указано 4000. (см. рис. 3)

    2.3. Карта «Курьер 2». В неё входят зоны «Москва 0» и «Область 50р./км.». В настройках этой карты в поле «Стоимость заказа от» указано 4000.

Безымянный2 для модуля 1.png

Рис. 2. Создание зоны «Область 50р./км.»

Безымянный2 для модуля.png

Рис. 3. Карта «Курьер 1»

После активации службы доставки при стоимости заказа менее 4000 руб. будет доступна доставка только по карте «Курьер 1» см. рис. 4 (только Москва за 200р.).

Безымянный 4 для модуля.png

Рис. 4. Заказ 1000 рублей

При стоимости заказа более 4000 р. доставка «Курьер 1» становится недоступна, зато появляется доставка «Курьер 2».

Если после введения ключа API Яндекс карт на сайте в консоли ошибка 429?

Обратите внимание! Необходимо обязательно проверить наличие подключения API Яндекс.Карт в вашем шаблоне компонента оформления заказ, при наличии такого подключения необходимо добавить ключ вручную (в стандартном шаблоне компонента оформления заказа от 1С-Битрикс есть подключения API Яндекс.Карт).

2.0.1 Изменения:

  • рефакторинг JS кода;
  • добавлена возможность использования перехвата событий в JS;
  • исправлены ошибки.

1.4.1 Возможность отключить jQuery

1.4.0 Добавлены дополнительные настройки

1.3.9 Устранены ошибки

1.3.8 Устранены ошибки

1.3.7 Изменения:

  • устранены ошибки в языковых метках;
  • оптимизирован расчёт стоимости доставки.

1.3.6 Исправления в JS

1.3.5 Изменения:

  • устранён баг с IE10;
  • исправлена прокрутка подсказки;
  • изменён приоритет поиска по адресу.

1.3.4 Изменения:

  • исправлена ошибка с обновлением подсказки;
  • незначительные внешние изменения.

1.3.3 Изменения:

  • добавлена поддержка работы по протоколу HTTPS;
  • исправлена ошибка для узких экранов.

1.3.2 Изменения:

  • исправлены баги;
  • добавлена автоподстановка в строку поиска;
  • добавлена возможность указания цен за км. в интервалах.

1.3.1 Исправлены ошибки

1.3.0 Исправления в процедуре оформления заказа

1.2.6 Исправления в процедуре оформления заказа

1.2.5 Добавлена возможность указания цен для интервалов в км.

1.2.4 Сокращение количества запросов к сервису Яндекс

1.2.3 Небольшие исправления

1.2.2 Поддержка 14+ версии Битрикс

1.2.0 Исправлены ошибки

1.1.9 Модуль не зависит от установленных JS фреймворков

1.1.8 Если карта не соответствует выбранному местоположению, то она не выводится

1.1.7 Изменения:

  • добавлена возможность привязки карт доставки к местоположениям;
  • устранён недочет с сохранением последней отмеченной точки при закрытии сессии.

1.1.6 Устранены недочёты

1.1.5 Устранены недочёты

1.1.4 Устранены недочёты

1.1.3 Изменения:

  • устранён баг с редактированием в админиистративной панеле;
  • высота всплывающего окна, подстраивается под разрешение экрана.

1.1.2 Изменения:

  • добавлена обработка точек не входящих ни в одну зону;
  • устранены проблемы с совместимостью с версией 11.5.

1.1.1 Добавлена возможность сохранения всех данных в служебные поля

1.0.21 Изменения:

  • добавлена проверка на корректность созданной карты;
  • добавлено автоматическое позиционирование карты в административной панеле на редактируемой зоне;
  • устранены мелкие недочёты.

1.0.20 Добавлена возможность настраивать зависимость стоимости доставки от веса и стоимости заказа

1.0.19 Добавлена поддержка местоположений 12 версии

1.0.18 Изменения:

  • добавлена возможность настраивать зависимость стоимости доставки от веса и стоимости заказа;
  • добавлены события для возможности их перехватывать.

1.0.17 Перенос скриптов в шапку

1.0.16 Обновление описания доставки

1.0.15 Изменения:

  • переделана интеграция службы доставки в процедуре оформления заказа;
  • устранён баг в интеграции службы доставки на этапе оформления заказа.

1.0.14 Добавлена поддержка бесплатных способов доставки

1.0.13 Не подключаем jquery если он уже ранее был подключён

1.0.12 Возможность добавления неограниченного количества компонентов по расчёту стоимости доставки на одну страницу.

1.0.11 Автоматическое позиционирование карты на добавленных зонах

1.0.9 Добавлена кнопка очистить, добавлен учёт фиксированной стоимости при расчёте цены за километр

1.0.8 Добавлена поддержка PHP 4

1.0.7 Добавлена возможность сортировки зон в административной панели

1.0.5 Изменения:

  • добавлен новый шаблон компонента "light", который отображает зоны на карте и, при указании места доставки, отображает информацию о выбранной зоне;
  • расчёт стоимости доставки на основе зон и Яндекс.карт заинтегрирован в модуль.

1.0.3 Добавлена параметр для мониторинга распространения модуля в Яндекс.Картах

1.0.2 Добавлена подсказка

1.0.1 Баг фикс подписей в стандартном шаблоне компонента

Проекты, использующие этот модуль:

«Рустара»
Оптово-розничная продажа промышленной тары.

«Ковчег»
Интернет-магазин сантехники.

«Глобус Гурмэ»
Интернет-магазин сети гастрономов премиум класса.