Ознакомьтесь с обновлениями продуктов, которые мы анонсировали! Смотрите, что нового.

/

Руководство о службах доставки


Основные шаги для добавления новой службы доставки

Добавление HighLoad-блока

  1. Создаем HighLoad-блок с названием man_delivery_interceptor_{название службы доставки}{название службы доставки}_store

    За основу можно глянуть подобные таблицы, например ManDeliveryInterceptorRussianpostStore:

  1. В созданную таблицу необходимо создать поля сущности:

  2. На этом этапе можно забыть про таблицу. После работы функции с модуля man.delivery.inteceptorman.delivery.inteceptor можно проверить правильность новых точек–записей.

Добавление в модуль man.delivery.interceptor

  1. Переходим по пути, где лежит модуль:
    /local/modules/man.delivery.interceptor/lib//local/modules/man.delivery.interceptor/lib/

  2. Необходимо создать два файла с названием новой службы доставки и вставить в две директории: handler/handler/ и request/request/.

  3. За основу кода берем из существующих служб, например 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

  1. Создаем в таблице b_optionb_option запись с наименованием службы доставки и в VALUEVALUE указываем значение, взятое из уже существующей записи для модуля  man.delivery.interceptorman.delivery.interceptor

  2. При необходимости вывода определенных типов ПВЗ для определенного профиля службы доставки указываем 'postamat' => ID профиля службы доставки'postamat' => ID профиля службы доставки.


Добавление в файл orders.php

  1. Переходим по пути /local/tools/434737be681605b85d9fa357c6b2d039/orders.php/local/tools/434737be681605b85d9fa357c6b2d039/orders.php

  2. Добавляем сюда ID службы доставки