Руководство о службах доставки
Основные шаги для добавления новой службы доставки
Добавление HighLoad-блока
Создаем HighLoad-блок с названием man_delivery_interceptor_{название службы доставки}{название службы доставки}_store
За основу можно глянуть подобные таблицы, например ManDeliveryInterceptorRussianpostStore:
В созданную таблицу необходимо создать поля сущности:
На этом этапе можно забыть про таблицу. После работы функции с модуля man.delivery.inteceptorman.delivery.inteceptor можно проверить правильность новых точек–записей.
Добавление в модуль man.delivery.interceptor
Переходим по пути, где лежит модуль:
/local/modules/man.delivery.interceptor/lib//local/modules/man.delivery.interceptor/lib/Необходимо создать два файла с названием новой службы доставки и вставить в две директории: handler/handler/ и request/request/.
За основу кода берем из существующих служб, например fivepost.phpfivepost.php или russianpost.phprussianpost.php.
Разбор кода /request/{название_службы_доставки}.php
У каждой службы одинаковые функции, но отличаются обработкой данных и постановкой в таблицу. Тут уже необходимо разобраться в получаемых данных с сервера службы доставки.
1. getCredentialsgetCredentials (Авторизация)
- Зачем нужна: Получает временный ключ доступа (JWT-токен).
2. loadDeliveryPointsloadDeliveryPoints (Импорт данных)
- Зачем нужна: Загружает точки в HighLoad-блок с тем же наименованием, что и служба доставки.
3. getDeliveryPointsgetDeliveryPoints (Выдача данных)
- Зачем нужна: Извлекает данные из HighLoad-блока и в будущем в handler/handler/подставляет данные в компонент SaleOrderAjaxSaleOrderAjax для отображения пользователю на карте при выборе пункта выдачи заказа.
Разбор кода /handler/{название_службы_доставки}.php
intercept (Перехват данных при оформлении)
- Зачем нужна: Срабатывает в момент выбора пользователем службы доставки на странице оформления заказа. Она добавляет список точек выдачи в стандартный интерфейс Битрикса.
modify (Сохранение выбора в заказ)
- Зачем нужна: Срабатывает на этапе финального создания или изменения заказа. Она отвечает за то, чтобы ID выбранной точки не потерялся и попал в заказ.
Указание новой службы в /lib/handler.php
Также необходимо в файле handler.phphandler.php указать службу доставки:
Добавление конфигурации в таблицу b_option
Создаем в таблице b_optionb_option запись с наименованием службы доставки и в VALUEVALUE указываем значение, взятое из уже существующей записи для модуля man.delivery.interceptorman.delivery.interceptor.
При необходимости вывода определенных типов ПВЗ для определенного профиля службы доставки указываем 'postamat' => ID профиля службы доставки'postamat' => ID профиля службы доставки.
Добавление в файл orders.php
Переходим по пути /local/tools/434737be681605b85d9fa357c6b2d039/orders.php/local/tools/434737be681605b85d9fa357c6b2d039/orders.php
Добавляем сюда ID службы доставки