Опишите доработку или сценарий — обсудим вместе с другими клиентами.
Доставка за КАД: расчёт по километрам
Технические данные
Совместимые редакции
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Малый бизнес
- Программа для ЭВМ "1С-Битрикс: Управление сайтом". Лицензия Бизнес
Описание
Доставка за КАД: расчёт по километрамСлужба доставки для модуля «Интернет-магазин», стоимость которой зависит от расстояния по дорогам от кольцевой дороги города до адреса покупателя. Адрес внутри кольцевой — 0 км, за ней — расстояние по реальному маршруту, а не по прямой. Контур КАД Санкт-Петербурга встроен в модуль, контур любого другого города (МКАД, ЦКАД, кольцевые Казани, Екатеринбурга и др.) загружается из файла.
Кому подходит- Магазинам с курьерской доставкой за КАД или МКАД, где цена растёт с каждым километром: стройматериалы, мебель, техника, вода, корма.
- Доставке еды и цветов: зона «центр» со своей ценой, бесплатная доставка от суммы заказа, срок доставки.
- Магазинам с несколькими городами: у каждой службы доставки свой контур и свой тариф.
Как считается стоимость
- Адрес из свойства заказа вместе с городом из местоположения покупателя переводится в координаты геокодером Яндекса. Если найден не дом, а улица или посёлок, покупателя просят уточнить адрес.
- Если точка внутри контура кольцевой дороги, расстояние равно 0 км.
- Иначе одним запросом к серверу маршрутов OSRM (данные OpenStreetMap) считаются маршруты от нескольких ближайших точек кольцевой дороги, берётся самый короткий.
- Стоимость считается по тарифу службы доставки и условиям: базовая цена, километры, наценка за вес, бесплатная доставка от суммы, минимальная стоимость, округление.
Тариф
- Три способа расчёта: по цене за километр; фиксированная цена по диапазонам («до 10 км — 500 руб., до 30 км — 900 руб.»); своя цена километра в каждом диапазоне — более дальняя доставка никогда не стоит дешевле более близкой.
- Базовая цена, бесплатные километры, максимальное расстояние доставки, округление расстояния до целого километра или до 0,1 км.
- Условия: минимальная стоимость, округление цены вверх до 10 или 50 руб., бесплатная доставка от суммы заказа (можно только в пределах заданного расстояния), наценка за каждый килограмм сверх веса, входящего в цену.
- Срок доставки: общий или свой у каждого диапазона расстояний — покупатель видит его рядом с доставкой.
- Зоны: район города со своей базовой ценой, например центр дороже или дешевле остального города.
- Ограничения по местоположению, сумме, весу и платёжной системе — штатные ограничения служб доставки.
Несколько городов
- Все контуры собраны в одной таблице на вкладке «Контуры» настроек модуля: кольцевая дорога любого города или зона внутри города.
- Контур добавляется вручную, из файла GeoJSON или KML (нарисованного в Конструкторе карт Яндекса или на geojson.io) или кнопкой встроенного контура КАД Санкт-Петербурга.
- Каждая служба доставки считает от своего контура: для двух городов — две службы с разными контурами и ограничениями по местоположению.
Оформление заказа
- Покупатель видит расстояние, цену и срок доставки, а если до бесплатной доставки не хватает суммы — сколько осталось добрать.
- Адрес можно ввести текстом или выбрать меткой на карте Яндекса в оформлении заказа (sale.order.ajax): адрес подставляется в заказ, стоимость пересчитывается.
- Если адрес не найден, указан неточно или дальше максимального расстояния, покупатель видит причину, и заказ не оформляется.
- При сбое сервисов заказ принимается с пометкой «Проблемный», чтобы не останавливать продажи; поведение настраивается.
Контроль
- Проверка расчёта по любому адресу в настройках модуля: найденный адрес, точность, расстояние, цена и срок по каждой службе доставки, ошибки в настройках тарифа.
- Журнал расчётов: адрес покупателя, найденная точка на карте, расстояние и причина ошибки — чтобы ответить на вопрос «почему доставка столько стоит». Срок хранения настраивается.
- Уведомление администратору, если геокодер или сервер маршрутов перестали отвечать или не настроены; снимается само, когда расчёт снова работает.
- Кеширование расчётов по адресу и ограничение числа новых адресов на посетителя: квота геокодера не расходуется на повторы и перебор адресов.
- Все настройки модуля, контуры и журнал — на одной странице; тариф — в карточке службы доставки.
Что нужно для работы
- Модуль «Интернет-магазин» (sale) и оформление заказа на штатном компоненте sale.order.ajax.
- Ключ API Яндекса с доступом к HTTP-геокодеру. Условия использования бесплатного ключа, в том числе для интернет-магазинов, уточняйте у Яндекса.
- Сервер маршрутов OSRM: публичный router.project-osrm.org подходит для небольшой нагрузки, для высокой — свой сервер (инструкция по развёртыванию в Docker есть в настройках модуля).
Что нужно знать
- Маршруты строятся по данным OpenStreetMap и могут отличаться от Яндекс Карт, особенно в сельской местности.
- Расчёт выполняется во время оформления заказа: при медленном ответе сервисов оформление замедляется.
- Для каждого контура, от которого считает служба доставки, новый адрес — отдельный запрос к геокодеру.
- Журнал расчётов содержит адреса покупателей (персональные данные); срок их хранения задаётся в настройках, журнал можно отключить.
- Установлен модуль «Интернет-магазин» (sale), заказ оформляется штатным компонентом sale.order.ajax.
- Есть ключ API Яндекса с доступом к HTTP-геокодеру (кабинет разработчика Яндекса). Можно использовать ключ, уже указанный в настройках модуля «Управление структурой».
- У свойства заказа «Адрес доставки» стоит флажок «Использовать как адрес» (или символьный код ADDRESS). Желательно свойство «Местоположение»: город из него подставляется к адресу.
1. Установка
- Установите модуль из Маркетплейса или в разделе «Настройки > Настройки продукта > Модули».
- При установке в таблицу контуров автоматически добавляется КАД Санкт-Петербурга (код kad) и регистрируется агент: он раз в час удаляет старые записи журнала и проверяет сервисы после сбоя.
2. Настройки модуля
Откройте «Магазин > Доставка за КАД» (или «Настройки > Настройки продукта > Настройки модулей > Доставка за КАД: расчёт по километрам»).
- Вкладка «Настройки»: укажите ключ API Яндекса и адрес сервера OSRM. Для начала подойдёт публичный router.project-osrm.org; свой сервер — на вкладке «Свой сервер OSRM». Остальные значения можно оставить по умолчанию.
- Вкладка «Контуры»: для Санкт-Петербурга контур КАД уже есть. Для другого города заполните форму «Новый контур»: название для покупателя (например, МКАД), код латиницей (mkad) и точки — из файла GeoJSON или KML либо вручную, затем нажмите «Добавить контур». Как нарисовать контур — на вкладке «Как нарисовать контур».
- Для зоны со своей ценой (например, центра города) добавьте её контур так же — многоугольником вокруг района.
- Нажмите «Сохранить».
3. Служба доставки
- Откройте «Магазин > Настройки > Службы доставки», нажмите «Добавить» и выберите «Доставка за КАД: расчёт по километрам».
- На вкладке «Тариф» выберите контур (по умолчанию — первый в списке), способ расчёта и задайте базовую цену, бесплатные километры, цену за километр или диапазоны расстояний, округление и максимальное расстояние.
Диапазоны — по одному в строке: «до км: цена» или «до км: цена: срок в днях», например «10: 500» и «30: 900: 1-2».
Зоны — по одной в строке: «код контура: базовая цена», например «center: 500». - На вкладке «Условия» при необходимости задайте минимальную стоимость, округление цены, бесплатную доставку от суммы заказа, наценку за вес и срок доставки.
- На вкладке «Ограничения» ограничьте службу по местоположению (особенно если городов несколько), сумме, весу или платёжным системам.
- Сохраните службу. Для второго города создайте ещё одну службу и выберите в ней другой контур.
4. Проверка
- В настройках модуля на вкладке «Проверка расчёта» введите адрес с городом: модуль покажет найденный адрес, расстояние, цену и срок по каждой службе доставки, а также ошибки в строках диапазонов и зон.
- Проверьте адрес в центре города (0 км) и адрес сразу за кольцевой дорогой.
- Оформите тестовый заказ с адресом за кольцевой дорогой. Расчёт попадёт на вкладку «Журнал».
Карта в оформлении заказа
Карта не обязательна: адрес, введённый текстом, пересчитывается при выходе из поля. Чтобы покупатель мог выбрать адрес меткой на карте, включите в компоненте sale.order.ajax карту в свойствах заказа (параметры SHOW_MAP_IN_PROPS и SHOW_MAP_FOR_DELIVERIES со службой модуля) и укажите ключ JavaScript API Яндекс Карт в настройках модуля «Управление структурой».
УдалениеПри удалении можно сохранить настройки модуля, контуры и журнал расчётов. Службы доставки модуля деактивируются с сохранением тарифа и включаются обратно при повторной установке.
Сайт: xlogic.ru
Время работы: пн–пт с 10:00 до 19:00 (МСК, UTC+3).
Время реакции на заявку: в течение 1 рабочего дня
Установите этот модуль прямо сейчас!
Для этого укажите адрес сайта:
Подтвердите что сама лицензия у вас куплена
