Установка и настройка модуля
Модуль совместим с модулем Главный модуль Битрикса 22 и новее. Требования к серверу (хостингу) для корректной работы модуля: PHP не ниже версии 8.1.
Важно
При использовании другой версии модуля Главный модуль Битрикса, а также несовместимых версий PHP, корректная работа модуля не гарантируется!
Установка из Маркетплейса
- Перейти по ссылке
- Нажать кнопку Установить, ввести адрес сайта, нажать Установить
- В админке сайта нажать Загрузить, принять лицензионное соглашение, нажать Установить. Модуль установлен.
Установка из архива
- Авторизоваться на Вашем сайте с доступом администратора
- Проверить кодировку вашей установки Bitrix, нажать на клавиатуре Ctrl + U
- В открывшейся вкладке вы увидите кодировку, она может быть windows-1251, либо UTF-8
- Скачать модуль для соответствующей кодировки
- В админке магазина перейти в Контент/Файлы и папки в поле Путь указать /bitrix/modules, нажать ОК
- Нажать Загрузить файл, затем Добавить файл - выбрать скачанный ранее архив, нажать Сохранить
- В меню напротив файла нажать кнопку Действия, нажать Распаковать, еще раз нажать Распаковать
- В меню админки перейти в Marketplace/Установленные решения, нажать на меню действий загруженного модуля, нажать Установить. Модуль установлен.
Создание службы доставки
-
В меню админки перейти в Магазин/Службы доставки нажать кнопку Добавить - Служба доставки Яндекс Доставка
-
На странице добавления службы доставки может отобразится окошко с уведомлением об обновлении данных. Модуль получает по API данные городов и пунктов приема, если они отсутствуют, все действие занимает буквально несколько секунд, выполняется только в случае отсутствия данных, текст сообщения сменится на успешный, либо на текст ошибки в случае ошибки. Окошко закроется автоматически через 2 секунды после завершения операции.
-
Для создания службы доставки нужно указать несколько обязательных настроек, это API токен из ЛК и пункт приема заказов по умолчанию. Если какая то из настроек не заполнена, на соответствующей вкладке отобразится иконка с восклицательным знаком и вкладка будет подсвечена красным цветом. Незаполненные опции также выделяются красным цветом, под полем настройки отображается сообщение об ошибке.
-
Если API токен не заполнен отобразится ошибка: Укажите API токен
Если API токен указан неверно, то отобразится ошибка переданная ЛК Яндекс Доставки.
-
Если у вас на данный момент нет API токена, нажмите галку Тестовый режим, в этом случае модуль будет работать с тестовым токеном и ему не потребуется реальный токен клиента.
-
Для выбора пункта приема начните набирать название города в поле Пункт приема по умолчанию во вкладке Заказы, отобразится выпадающий список, где вы сможете выбрать нужный вам пункт приема, не редактируйте выбранное значение.
-
На вкладке Соответствие свойств заказа проверьте, что указанные по умолчанию свойства у вас существуют, настроены и активны, либо укажите свои. Свойства находятся в разделе Магазин/Свойства заказа/Список свойств.
-
Если у вас используются составные свойства ФИО или Адрес, выберите Раздельные свойства в соответствующей настройке службы доставки, иначе используйте одно свойство.
-
Если в магазине несколько типов плательщиков, вы можете задать для них одинаковый символьный код, либо создать новую службу доставки и в ней указать уже другие символьные коды, а чтобы они не пересекались, настроить ограничения.
-
Нажмите Сохранить или Применить. Создание службы доставки завершено. После создания службы доставки модуль автоматически добавляет два профиля доставки - Самовывоз и Курьер.
Описание настроек
Модуль содержит два типа настроек:
- Общие - доступны в меню Настройки/Модули/Яндекс Доставка
- В службе доставки
Это позволяет гибко настраивать службы доставки штатными средствами Битрикса без необходимости доработок.
Можно создавать службы доставки и устанавливать в них разные API токены для работы с несколькими кабинетами, разные пункты приема, использовать разные свойства заказа. Дополнительно каждый профиль в службе доставки предлагает широкий набор настроек калькуляции стоимости доставки.
Настройки службы доставки
| Вкладка | Наименование настройки | Описание настройки |
|---|---|---|
| Основные | API токен | Здесь указывается API токен из ЛК Яндекс Доставки для работы модуля, указанный токен проверяется по клику вне поля, при наличии ошибки отображается её текст из ЛК Яндекс Доставки, деактивируются кнопки Сохранить/Применить. |
| Тестовый режим | При активации служба доставки будет использовать для работы тестовый токен. Опция будет полезна для проверки работы службы доставки или при отсутствии API токена. При включении тестового режима указание API токена не требуется. | |
| Заказы | Помечать заказ оплаченным при успешной выдаче | Если статус заказа в API Яндекс Доставки сменяется на Успешно выдан в битриксе заказу проставляется отметка Оплачен, удобно использовать для заказов с наложкой. |
| Тип выдачи заказа по умолчанию | При создании заказа по API модуль будет передавать выбранный тип выдачи, по умолчанию используется тот, что выбран в ЛК Яндекс Доставки в разделе Услуги. В каждом заказе можно поменять тип выдачи через форму редактирования. | |
| Пункт приема заказа по умолчанию | Пункт приема, в который сдаются заказы для отправки. Используется в расчете стоимости доставки и в создании заказа. В каждом заказе можно поменять пункт приема через форму редактирования. | |
| Префикс к номеру заказа | Введенное значение будет добавляться к номеру заказа при создании заказа. |
Настройки профиля доставки
| Вкладка | Наименование настройки | Описание настройки |
|---|---|---|
| Тип доставки | При создании профиля доставки на вкладке Тип доставки нужно обязательно выбрать, какой тип профиля вы хотите создать: самовывоз или курьерская доставка. Не забывайте изменить название профиля. После создания профиля изменить его тип уже нельзя. | |
| Настройки наложенного платежа | Режим наложенного платежа для расчета стоимости | Позволяет игнорировать настройку наложки из службы доставки для текущего профиля и сделать его постоянно профилем с наложенным платежом, либо без. По умолчанию не используется (отключена). |
Общие настройки модуля
| Вкладка | Наименование настройки | Описание настройки |
|---|---|---|
| Общие настройки | Укажите код свойства артикула товара | По умолчанию указан код свойства ARTNUMBER. Настройка позволяет передавать артикулы у вложений в заказе, если указанный код свойства не будет найден передается Id товара. |
| Отображать кнопку создания заказа в Яндекс Доставку для всех заказов в админке | Если активно, в просмотре любого заказа будет отображаться кнопка Яндекс Доставки, кнопка отображает удобную форму для создания и редактирования данных в отправке, если не активно отображается только в заказах со службой доставки Яндекс Доставки. | |
| Выберите статус заказа для выгрузки | При наступлении указанного статуса заказы будут выгружаться в ЛК Яндекс Доставки. | |
| Настройки статусов | Включить синхронизацию статусов | Активирует агента (фоновое задание) для синхронизации статусов Яндекс Доставки со статусами в Битриксе, что позволяет автоматически двигать заказы по статусам. |
Печать этикеток и актов
Печать этикеток и актов доступна на странице заказов в админке: Магазин/Заказы. Если выбрать заказы, которые еще не созданы в ЛК Яндекс Доставки, при выборе печати этикетки заказ будет выгружен и будет возвращена этикетка, при печати актов будет сформирован акт и возвращен для печати.
Все этикетки формируются на печать в одной вкладке браузера, акты открываются для печати каждый в новой вкладке браузера.
В админке перейти в Магазин/Заказы, выбрать галочкой нужные заказы, в меню действий выбрать нужное действие.
Редактирование заказа в админке
В новом модуле добавлен функционал редактирования данных заказа в ЛК Яндекс Доставки в просмотре заказа в Битриксе.
В тулбаре с действиями вверху добавляется кнопка Яндекс Доставки, по нажатию на которую открывается форма для редактирования данных заказа. Повторное нажатие скрывает форму.
Вы можете редактировать любые данные доступные в форме, как перед отправкой заказа так и после. До тех пор пока не сформируете акт по заказу можете обновлять все данные любое количество раз.
Заказы Яндекс Доставки в админке
Посмотреть все статусы заказов со службой доставки Яндекс Доставки можно в админке в разделе Магазин/Заказы Яндекс Доставка. На этой странице доступен поиск, отображение текущих статусов заказов.
Агенты модуля
Модуль создает 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 содержащий два параметра:
- orderId - id заказа в Битриксе
- boxes - массив мест в заказе, его можно изменять
onBeforeSetNotice - позволяет добавлять комментарий к заказу, строка с комментарием передается в параметре notice API метода ParcelCreate.
Метод обработчик получает объект \Bitrix\Main\Event содержащий два параметра:
- orderId - id заказа в Битриксе
- notice - строка с комментарием, его можно изменять
Таблицы модуля
Модуль создает 3 таблицы в БД при установке:
- b_boxberry_cities_full - таблица с городами
- b_boxberry_points_for_parcels - таблица с пунктами приема
- b_boxberry_orders - таблица с заказами
Для разработки
Загрузка модуля
Для начала загружаем модуль используя класс Loader:
\Bitrix\Main\Loader::includeModule('boxberry.delivery');
Работа с API клиентом
Создание экземпляра класса с тестовым токеном:
$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 профиля доставки:
\Bitrix\Main\Loader::includeModule('boxberry.delivery');
$options = new \Boxberry\Bitrix\Helpers\Options('95'); //замените id профиля на ваш существующий
echo '<pre>';
print_r($options);
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);
}
Передача комментария для заказа
Регистрируем обработчик события onBeforeSetNotice, затем, для примера, добавляем комментарий к заказу:
use Bitrix\Main\EventManager;
//Регистрация обработчика
$eventManager = EventManager::getInstance();
$eventManager->registerEventHandler(
'boxberry.delivery',
'onBeforeSetNotice',
'boxberry.delivery',
'\Boxberry\Bitrix\Entity\Order',
'setNotice'
);
// Метод-обработчик события в классе \Boxberry\Bitrix\Entity\Order
public static function setNotice(Event $event): void
{
$event->setParameter('notice', 'Комментарий к заказу');
}
Доработка для кастомных компонентов оформления заказа
"Из коробки" модуль гарантировано работает только со стандартным пошаговым компонентом оформления заказа sale.order.ajax. Под другие компоненты/кастомы он не тестировался, но вполне может работать с ними после доработок со стороны магазина.
Что стоит учесть если вы планируете использовать его с кастомным компонентом оформления заказа:
- Модуль подписан на событие OnSaleComponentOrderJsData для определения выбранного способа доставки в оформлении заказа
- Модуль подписан на событие OnSaleOrderBeforeSaved для проверки выбранного ПВЗ при сохранении заказа
- Модуль подписан на событие OnSaleOrderSaved для обработки и сохранения данных заказа
Все указанные выше подписки находятся в файле /bitrix/php_interface/include/sale_delivery/boxberry/handler.php
Если в вашем кастоме этот функционал изменен/работает по другому, вам нужно адаптировать его под модуль самостоятельно.
Во фронте модуль не использует объект BX.Sale.OrderAjaxComponent. Модуль создает два своих объекта это bbParams и bbDelivery, значения в bbParams устанавливаются во время отработки события onAjaxSuccess.