Модуль совместим с модулем Главный модуль Битрикса 22 и новее. Требования к серверу (хостингу) для корректной работы модуля: PHP не ниже версии 8.1. |
При использовании другой версии модуля Главный модуль Битрикса, а также несовместимых версий PHP, корректная работа модуля не гарантируется! |
|
Модуль содержит два типа настроек:
Это позволяет гибко настраивать службы доставки штатными средствами Битрикса без необходимости доработок.
Можно создавать службы доставки и устанавливать в них разные API токены для работы с несколькими кабинетами, разные пункты приема, использовать разные свойства заказа. Дополнительно каждый профиль в службе доставки предлагает широкий набор настроек калькуляции стоимости доставки. Таким образом можно создать несколько служб доставки если необходимо, добавить в них ограничения по регионам/городам/сайтам и т.д., и в каждом выставить нужные настройки. Рассмотрим все настройки подробнее. |
Вкладка | Наименование настройки | Описание настройки | ||
---|---|---|---|---|
Основные | API токен | Здесь указывается API токен из ЛК Boxberry для работы модуля, указанный токен проверяется по клику вне поля, при наличии ошибки отображается её текст из ЛК Boxberry, деактивируются кнопки Сохранить/Применить. | ||
Тестовый режим | При активации служба доставки будет использовать для работы тестовый токен. Опция будет полезна для проверки работы службы доставки или при отсутствии API токена. При включении тестового режима указание API токена не требуется. | |||
Заказы | Помечать заказ оплаченным при успешной выдаче | Если статус заказа в api Boxberry сменяется на Успешно выдан в битриксе заказу проставляется отметка Оплачен, удобно использовать для заказов с наложкой. | ||
Тип выдачи заказа по умолчанию | При создании заказа по api модуль будет передавать выбранный тип выдачи, по умолчанию используется тот, что выбран в ЛК Boxberry в разделе Услуги. В каждом заказе можно поменять тип выдачи через форму редактирования. | |||
Пункт приема заказа по умолчанию | Пункт приема, в который сдаются заказы для отправки. Используется в расчете стоимости доставки и в создании заказа. В каждом заказе можно поменять пункт приема через форму редактирования. | |||
Префикс к номеру заказа | Введенное значение будет добавляться к номеру заказа при создании заказа. | |||
Вес, габариты, места (В этой группе настроек размещены настройки габаритов и веса, которые применяются если в свойстве товара эти значения не указаны либо равны 0) | Применить вес и габариты по умолчанию к | Если выбрано к заказу, вес и габариты заказа, указанные в опциях выше всегда будут постоянными, независимо от количества товара в заказе. Создается только 1 место. Если выбрано к 1 товару вес и габариты по умолчанию будут применяться на каждый товар в заказе (если вес/габарит товара не заполнен или 0), будут создаваться места с авторазбивкой по лимитам веса/габаритов. | ||
Индексы (Этот раздел будет со временем дополнятся другими опциями) | Проверять почтовый индекс для расчета курьерской доставки | Индекс переданный битриксом будет передаваться в api запрос калькуляции стоимости доставки для расчета более точной цены, деактивировано по умолчанию т.к. далеко не все индексы Битрикса совпадают с существующими индексами службы доставки Boxberry, рекомендуется активировать только при наличии ошибок в расчете стоимости курьерки. | ||
Наложенный платеж | В этой группе настроек вам нужно пометить галочками платежные системы работающие как пост оплата (наложенный платеж) для расчета стоимости доставки с наложенным платежом при их выборе покупателем в оформлении заказа. | |||
Соответствие свойств заказа | В этой группе настроек нужно указать соответствие полей заказа в Boxberry символьным кодам свойств в Битриксе. Символьный код свойства в Битриксе можно найти в разделе Магазин/Свойства заказа/Список свойств. Если у вас есть несколько плательщиков для них нужно задать одинаковый код свойства и указать его в настройке. Два последних поля Контактное лицо и Название компании предназначены для юр лиц. Если вы используете составные свойства ФИО или Адрес выберите соответствующую раздельную настройку и укажите существующие коды свойств. | |||
Оформление заказа | Не разрешать оформление заказа без выбора ПВЗ | При активации не позволяет покупателю оформить заказ на самовывоз, если пункт выдачи не выбран. Код ПВЗ обязательно требуется при создании заказа в ЛК поэтому опция активна по умолчанию. | ||
Блокировать от изменений поле адреса ПВЗ при выборе самовывоза | Если активно, блокирует от изменений поле с адресом, т.к. иногда покупатели стирают адрес выбранного ПВЗ и пишут свой адрес. Активно по умолчанию. | |||
Добавить кнопку виджета по умолчанию | Следующие 5 настроек предназначены для размещения кнопки открытия виджета с выбором ПВЗ на странице оформления заказа. Активна может быть только 1 из 5-ти опций одновременно. Если у вас есть проблемы с опцией по умолчанию, пробуйте переключать другие опции, возможно проблема решится. Эти опции добавлены как возможное решение проблемы без необходимости править код. Если не включить ни одну из опций кнопка открытия виджета не будет отображаться. | |||
Добавить кнопку виджета к описанию службы доставки | ||||
Добавить кнопку виджета после описания службы доставки | ||||
Добавить кнопку виджета к сроку доставки | ||||
Добавить кнопку виджета к элементу (Укажите id элемента) | ||||
Профили | В данном разделе можно добавить необходимые профили службы доставки. | |||
Ограничения | В данном разделе можно добавить необходимые, встроенные в битрикс, ограничения для службы доставки, | |||
Кнопка "Обновить данные" | Кнопка Обновить данные открывает выпадающий список с вариантами обновления. Выбираете какие данные нужно обновить, жмете на них, выполняется api запрос в ЛК Boxberry, затем данные обновляются в таблицах в БД битрикса. Если api запрос вернет ошибку, её текст отобразится в окошке обновления.
| |||
Кнопка "Очистить кеш" | Модуль хранит кеш селективно, что позволяет очищать не весь кеш битрикса целиком, а только определенные данные самого модуля. Кеш api запросов хранится в папке /bitrix/cache/bb_api/ + название api метода, кеш найденных местоположений хранится в папке /bitrix/cache/bb_locations.
В других случаях очистку кеша производите на свое усмотрение. |
Вкладка | Наименование настройки | Описание настройки | ||
---|---|---|---|---|
Тип доставки | При создании профиля доставки на вкладке Тип доставки нужно обязательно выбрать, какой тип профиля вы хотите создать: самовывоз или курьерская доставка. Не забывайте изменить название профиля. После создания профиля изменить его тип уже нельзя. | |||
Настройки наложенного платежа
| Режим наложенного платежа для расчета стоимости | Позволяет игнорировать настройку наложки из службы доставки (где добавление наложки в стоимость доставки зависит от выбранного способа оплаты) для текущего профиля и сделать его постоянно профилем с наложенным платежом, либо без. По умолчанию не используется (отключена). | ||
Режим наложенного платежа для выгрузки в ЛК | Позволяет принудительно выгружать заказ в личный кабинет интернет магазина с суммой к оплате или без неё для текущего профиля доставки. По умолчанию опция не используется (отключена). | |||
Источник настроек расчета (Каждый профиль позволяет выбрать источник настроек расчета стоимости доставки) | ЛК Boxberry | Будут использоваться настройки из ЛК Boxberry отсюда со вкладки Расчеты. | ||
Профиль доставки | Позволяет использовать настройки внутри профиля. Все опции аналогичны настройкам из ЛК со вкладки Расчеты, работают также с одинаковой логикой и также называются. Выбор этой опции открывает настройки в профиле, а настройки расчета из ЛК будут игнорироваться. | |||
Описанные далее настройки применимы, если выбран источник настроек расчета - Профиль доставки. | ||||
Срок доставки | Скрыть срок доставки | Скрывает срок доставки в оформлении заказа и при любом расчете стоимости доставки с данным профилем. | ||
Укажите количество дней, которое необходимо добавить к основному сроку доставки Boxberry | Добавляет указанное число к сроку доставки. | |||
Округление | Округление до | Позволяет округлить расчет стоимости. Возможные варианты:
| ||
Округлить как |
| |||
Стоимость доставки | Позволяет настроить бесплатную стоимость доставки от определенной суммы заказа, либо полностью бесплатную стоимость доставки. Например, при таком условии стоимость доставки будет рассчитана по тарифу для заказов <= 7000р, а затем доставка будет бесплатной. | |||
Надбавки (Позволяет настроить надбавки ко многим параметрам)
| Вес | Добавляет\убавляет вес, переданный для расчета на сайте. | ||
Процент от тарифа Boxberry | Добавляет\убавляет процент от итоговой стоимости доставки. | |||
Процент от объявленной стоимости | Добавляет\убавляет процент от стоимости услуги страховки. | |||
Процент от суммы к оплате | Добавляет\убавляет процент от стоимости услуги Прием платежа (Наложенный платеж). | |||
Фиксированная сумма | Добавляет\убавляет фиксированную сумму от стоимости доставки | |||
Опции | Минимальная стоимость доставки | Позволяет задать минимальную стоимость доставки, т.е. даже если реальный расчет стоимости будет ниже указанной, модуль все равно отобразит минимальную стоимость. | ||
Максимальная стоимость доставки | Позволяет задать максимальную стоимость доставки, т.е. даже если реальный расчет стоимости будет выше указанной, модуль все равно отобразит максимальную стоимость. |
Вкладка | Наименование настройки | Описание настройки |
---|---|---|
Общие настройки
| Укажите код свойства артикула товара | По умолчанию указан код свойства ARTNUMBER. Настройка позволяет передавать артикулы у вложений в заказе, если указанный код свойства не будет найден передается Id товара. |
| Если активно, в просмотре любого заказа будет отображаться кнопка Доставка Boxberry, кнопка отображает удобную форму для создания и редактирования данных в отправке, если не активно отображается только в заказах со службой доставки Boxberry. | |
Выберите статус заказа для выгрузки | При наступлении указанного статуса заказы будут выгружаться в ЛК Boxberry. | |
Добавлять трек номер в поле "Идентификатор отправления" при создании заказа в ЛК | Добавляет треки в идентификатор отправления после выгрузки заказа в ЛК. По умолчанию активно. | |
Инициализация виджета только на стандартное событие | Позволяет ограничить инициализацию расширения виджета только на стандартное событие, чтобы он не подключался на всех страницах сайта | |
Настройки статусов | Включить синхронизацию статусов | Активирует агента (фоновое задание) для синхронизации статусов Boxberry со статусами в Битриксе, что позволяет автоматически двигать заказы по статусам. |
Далее следует соответствие статусов, статусы свои у каждого магазина. Необязательно выбирать соответствие каждому, те что не нужны можно не настраивать, они не будут обрабатываться. | ||
Количество заказов, обрабатываемых за 1 запуск | Если заказов слишком много и агент не забирает на обработку все нужные заказы с настройкой по умолчанию, количество можно увеличить. | |
Интервал запуска агента | Здесь можно изменить интервал запуска. | |
Количество дней с последнего обновления заказа, на которые запрашиваются статусы | Позволяет исключить из обработки заказы, статус которых не менялся указанное количество дней. | |
Помечать заказ оплаченным при успешной выдаче | Если активно, то при смене статуса заказа на "Успешно выдан", статус оплаты заказа будет изменён на "Оплачен". | |
Отладка и логирование | Записывать ошибки модуля в журнал событий | Позволяет записывать все ошибки в штатный Журнал событий Битрикса (Настройки/Инструменты/Диагностика/Журнал событий). По умолчанию отключено. |
Выводить в консоль данные для отладки | Выводит отладочную информацию в консоль браузера. Работает в оформлении заказа, в службе доставки, создании заказа в админке. | |
Логировать запросы к апи | Записывает все api запросы/ответы в файл с расширением .log | |
Размер лог-файла API запросов | Лимит размера файла для логов, в мегабайтах. | |
Пусть к лог-файлу API запросов | Путь создания файла с логами, модуль создает только файл, убедитесь что указанная папка существует. | |
Доступ | Стандартная для всех модулей настройка прав доступа. | |
Обновление модуля | Модуль предлагает встроенную систему обновлений. В этом случае дистрибутивы обновлений загружаются с сервера Boxberry bitrix.boxberry.ru После загрузки архива выполняется штатный процесс обновления, как если бы модуль обновляли через Marketplace. Данная система, возможно, временная, пока модуль не добавлен в Marketplace Битрикса. Нужно нажать на кнопку Проверить обновление, если оно доступно отобразится номер версии и кнопка Обновить модуль. Нажимаете на нее и модуль обновится. Весь процесс занимает несколько секунд. | |
Сервисы | Раздел предназначен для подключения сторонних сервисов для работы с модулем. На данный момент доступно только указание своего токена для сервиса DaData. Это необязательно, но добавлено на случай исчерпания лимита по встроенному в модуль токену. В этом случае пользователь может зарегистрировать аккаунт в сервисе DaData и добавить в настройку свой токен. Бесплатный лимит запросов в сервисе 10000 запросов в сутки. С учетом того, что модуль кеширует результат запроса на сутки и редких обращений к сервису, этого количества должно хватить более чем. В дальнейшем данный раздел будет дополняться другими сервисами. |
Печать этикеток и актов доступна на странице заказов в админке: Магазин/Заказы. Если выбрать заказы, которые еще не созданы в ЛК Boxberry, при выборе печати этикетки заказ будет выгружен и будет возвращена этикетка, при печати актов будет сформирован акт и возвращен для печати. Таким образом пользователю не требуется отдельно выполнять выгрузку заказа, а потом переходить на страницу печати, все выполняется в одном месте. Доступно действие выполняющее все сразу - печать этикеток и актов.
Все этикетки формируются на печать в одной вкладке браузера, акты открываются для печати каждый в новой вкладке браузера. |
В админке перейти в Магазин/Заказы, выбрать галочкой нужные заказы, в меню действий выбрать нужное действие.
По нажатию кнопки Применить откроется окошко с отображением действий, по каждому заказу, будет отображена информация в своей строке таблицы, если этикетку или акт получить не удалось будет выведено сообщение с текстом ошибки, затем открываются вкладки с файлами для печати.
В новом модуле добавлен функционал редактирования данных заказа в ЛК Boxberry в просмотре заказа в Битриксе.
Функционал редактирования будет доступен в заказах с любой службой доставки при активации этой опции в настройках модуля. Иначе функционал доступен только в заказах со службой доставки Boxberry. |
В тулбаре с действиями вверху добавляется кнопка Доставка Boxberry, по нажатию на которую открывается форма для редактирования данных заказа. Повторное нажатие скрывает форму. |
Пример заказа, оформленного со службой доставки Boxberry:
Вы можете редактировать любые данные доступные в форме, как перед отправкой заказа так и после. До тех пор пока не сформируете акт по заказу можете обновлять все данные любое количество раз. |
Разберем как это работает на практике:
Посмотреть все статусы заказов со службой доставки Boxberry можно в админке в разделе Магазин/Заказы Boxberry. На этой странице доступен поиск, отображение текущих статусов заказов. Доступный на странице функционал будем расширять со временем.
Модуль создает 4 агента при установке
Агент обновления городов, интервал 86400 секунды (раз в сутки)
Boxberry\Bitrix\Agents\CitiesUpdate::run(); |
Агент обновления пунктов приема, интервал 21600 секунды (раз в 6 часов)
Boxberry\Bitrix\Agents\PointsForParcelsUpdate::run(); |
Агент проверки активности API токенов, интервал 3600 секунд (раз в час)
Boxberry\Bitrix\Agents\KeysChecker::checkToken(); |
Агент синхронизации статусов заказов, интервал 3600 секунд (раз в час). Настройки этого агента можно менять в настройках модуля
Boxberry\Bitrix\Agents\Tracking::syncStatuses(); |
onBeforeGetWeights - позволяет менять массив мест перед выгрузкой заказа в ЛК. Пример работы.
Метод обработчик получает объект \Bitrix\Main\Event содержащий два параметра:
Модуль создает 3 таблицы в БД при установке
b_boxberry_cities_full - таблица с городами
b_boxberry_points_for_parcels - таблица с пунктами приема
b_boxberry_orders - таблица с заказами
Здесь описаны примеры работы с кодом модуля.
Для начала загружаем модуль используя класс Loader
\Bitrix\Main\Loader::includeModule('boxberry.delivery'); |
Создание экземпляра класса с тестовым токеном
$client = new \Boxberry\Api\Client(\Boxberry\Api\Client::TEST_TOKEN); |
Выполнение api запроса GetKeyIntegration
\Bitrix\Main\Loader::includeModule('boxberry.delivery'); $client = new \Boxberry\Api\Client(\Boxberry\Api\Client::TEST_TOKEN); $widgetKey = $client->getKeyIntegration(); var_dump($widgetKey); |
Для получения опций профиля и службы доставки нужно создать экземпляр класса \Boxberry\Bitrix\Helpers\Options передав аргументом id профиля доставки. Id профиля доставки легко получить из объекта заказа или другими способами.
\Bitrix\Main\Loader::includeModule('boxberry.delivery'); $options = new \Boxberry\Bitrix\Helpers\Options('95'); //замените id профиля на ваш существующий echo '<pre>'; print_r($options); echo '</pre>'; |
В конструкторе класса выполняется маппинг параметров к свойствам, что позволяет работать с опциями через методы.
Вы получите доступ как к опциям профиля доставки, так и к опциям службы доставки - родителя профиля.
Если передать несуществующий айди профиля, либо не принадлежащий службе доставки Boxberry, будет выброшено исключение.
Работать с опциями модуля нужно через статичные методы класса \Boxberry\Bitrix\Helpers\Options, например:
\Bitrix\Main\Loader::includeModule('boxberry.delivery'); echo '<pre>'; print_r(\Boxberry\Bitrix\Helpers\Options::getApiLogFilePath()); echo '</pre>'; |
Расчет стоимости доставки выполняется методом \Boxberry\Bitrix\Helpers\Delivery::calculate
Для выполнения расчета необходим объект отгрузки \Bitrix\Sale\Shipment
\Bitrix\Main\Loader::includeModule('boxberry.delivery'); use Bitrix\Sale\Order; $order = Order::load('7'); //айди заказа $shipmentCollection = $order->getShipmentCollection(); $calculateResult = null; foreach ($shipmentCollection as $shipment) { if (!$shipment->isSystem()) { $calculateResult = \Boxberry\Bitrix\Helpers\Delivery::calculate($shipment); } } echo '<pre>'; print_r($calculateResult); echo '</pre>'; |
\Bitrix\Main\Loader::includeModule('boxberry.delivery'); use Bitrix\Sale\Order; $order = Order::load('7'); // ID заказа $isBoxberryDeliveryInOrder = \Boxberry\Bitrix\Helpers\Validator::isBoxberryDeliveryInOrder($order); var_dump($isBoxberryDeliveryInOrder); |
Получение по коду города из api Boxberry
\Bitrix\Main\Loader::includeModule('boxberry.delivery'); $bbCity = \Boxberry\Bitrix\CitiesFullTable::getBbCityByCode('68'); // 68 - Москва, код города в api Boxberry echo '<pre>'; print_r($bbCity); echo '</pre>'; |
Получение по коду местоположения Битрикса
\Bitrix\Main\Loader::includeModule('boxberry.delivery'); $bbCity = \Boxberry\Bitrix\CitiesFullTable::getBbCityByBitrixLocationCode('0000073738'); // 0000073738 - Москва, код города в Битриксе echo '<pre>'; print_r($bbCity); echo '</pre>'; |
Регистрируем обработчик события onBeforeGetWeights, затем, для примера, меняем вес у первого места
use Bitrix\Main\EventManager; //Регистрация обработчика $eventManager = EventManager::getInstance(); $eventManager->registerEventHandler( 'boxberry.delivery', 'onBeforeGetWeights', 'boxberry.delivery', '\Boxberry\Bitrix\Entity\Order', 'modifyPlaces' ); // Метод-обработчик события в классе \Boxberry\Bitrix\Entity\Order public static function modifyPlaces(Event $event): void { $boxes = $event->getParameter('boxes'); $boxes[0]['Weight'] = 1301; $event->setParameter('boxes', $boxes); } |
Запуск агента синхронизации статусов заказов
\Bitrix\Main\Loader::includeModule('boxberry.delivery'); $syncStatusesAgentRun = Boxberry\Bitrix\Agents\Tracking::syncStatuses(); echo $syncStatusesAgentRun; |
Запуск агента обновлений городов
\Bitrix\Main\Loader::includeModule('boxberry.delivery'); $citiesUpdateAgentRun = Boxberry\Bitrix\Agents\CitiesUpdate::run(); echo $citiesUpdateAgentRun; |
Запуск агента обновлений пунктов приема заказа
\Bitrix\Main\Loader::includeModule('boxberry.delivery'); $pointsForParcelsUpdateAgentRun = Boxberry\Bitrix\Agents\PointsForParcelsUpdate::run(); echo $pointsForParcelsUpdateAgentRun; |
"Из коробки" модуль гарантировано работает только со стандартным пошаговым компонентом оформления заказа sale.order.ajax. Под другие компоненты\кастомы он не тестировался, но вполне может работать с ними после доработок со стороны магазина.
Что стоит учесть если вы планируете использовать его с кастомным компонентом оформления заказа:
Все указанные выше подписки находятся в файле /bitrix/php_interface/include/sale_delivery/boxberry/handler.php
Если в вашем кастоме этот функционал изменен\работает по другому, вам нужно адаптировать его под модуль самостоятельно.
Также, вероятно, вам нужно будет добавить кнопку выбора ПВЗ в другой элемент на странице, не в тот, что добавляется по умолчанию, в этом случае перейдите в службу доставки, в ней настройка Оформление заказа→Добавить кнопку виджета к элементу и там в поле впишите id элемента.
Во фронте модуль не использует объект BX.Sale.OrderAjaxComponent. Модуль создает два своих объекта это bbParams и bbDelivery, значения в bbParams устанавливаются во время отработки события onAjaxSuccess.