Документация
# Описание
Компонент предназначен для:
- интеграции вариантов доставки, настроенных в сервисе eShopLogistic в minishop2 (далее MS2)
- приёма заказов от виджетов eShopLogistic
- выгрузки заказов в кабинеты транспортных компаний и печати этикеток
В настоящий момент: СДЭК, Boxberry, Яндекс.Доставка, 5POST - редактировании способа доставки в панели управления (виджет строен в интерфейс редактирования заказа MS2)
Чтобы возможно было произвести правильный расчёт доставки, для товаров вашего магазина должен быть указан вес. В настройках можно указать минимальный вес, который будет использоваться для товаров без веса, но этот вариант подходит, если все товары имеют примерно одинаковый вес.
Если вес товаров в вашем магазине не указан, но все заказы имеют примерно одинаковый вес, можно настроить дефолтный вес для каждой службы в кабинете eShopLogistic.ru (документация).
Данные о стоимости, сроке и способе доставки записываются в заказ (поле properties
объекта msOrder
, подробнее ниже)
и выводятся на дополнительной вкладке в панели заказов MS2
.
# Настройки модуля в корзине
Настройка модуля предельно проста и состоит из 3-х простых пунктов:
-
Указать необходимые системные настройки.
Разделы «Основные» и «Оформление заказа в корзине».
Подробнее о системных настройках смотрите в пункте «Системные настройки».
-
Включить методы доставки и связать их со способами оплаты в настройках MS2
При установке модуль создаёт 2 новых способа доставки:
- Самовывоз
Подразумевается способ доставки до пункта выдачи заказа любой доступной транспортной компанией - Курьер
Подразумевается способ доставки курьером любой доступной транспортной компанией
- Самовывоз
-
Настроить чанк оформления заказа
Есть 2 варианта настройки:
-
1. Использовать чанк
tpl.eshoplogistic3.cart
(в комплекте данного модуля)
Его функционал и вид идентичен примеру корзины на этом сайте: перейти в корзину. -
2. Использовать свой чанк
В нужное место чанка необходимо добавить 2 элемента:
-
Cниппет
{'!eshoplogistic3Order' | snippet}
Выводит виджет расчёта доставки.
-
блок
<div id="eShopLogistic3Info"></div>
Выводит блок с подробной информацией о выбранном способе доставки
(см. системную настройку «Чанк для вывода информации в корзине»).Если на вашем сайте работает какая-либо система определения местополождения, то для автоматического включения населённого пункта в расчёт доставки можно добавить в запуск сниппета eShopLogisticOrder параметры (на выбор): fias (ФИАС-код населённого пункта) или city (название населённого пункта). Например:
Если fias/city не указаны, то населённый пункт будет определён сервисом eShopLogistic автоматически по IP посетителя.{'!eshoplogistic2Order' | snippet : ['fias' => $fias]}
-
Cниппет
-
1. Использовать чанк
# Редактирование доставки в панели управления
В любой момент возможно изменить данные доставки прямо в панели управления MODX, в интерфейсе редактирования заказа.
Для этого прейдите на вкладку «Доставка» и кликните на кнопке «Изменить данные доставки» .
Выбор нового варианта доставки осуществляется с помощью модального виджета (пример на странице товара), поэтому сначала его нужно создать в кабинете eShopLogistic аналогично созданию обычного виджета.
Важно соблюсти следующие моменты:
- Виджет должен быть привязан к томуже ключу, который указан в системной настройке «Ключ API eShopLogistic»
- Ключ этого виджета необходимо указать в системной настройке «Ключ виджета для редактирования в окне заказа Minishop2»
# Выгрузка заказов в кабинеты транспортных компаний
Для выгрузки заказов в кабинет ТК, заполните разделы системных настроек: «Выгрузка заказов (общие)» и «Выгрузка заказов (СДЭК)» (если выгружаете в СДЭК).
Перейдите на вкладку «Доставка» и кликните на кнопке «Выгрузить в кабинет службы доставки» .
Для уточнения данных по возможности выгрузки заказов можно обратиться в поддержку sShopLogistic.
В результате успешной выгрузки будет отображён идентификатор заказа в система ТК. Также он будет сохранён в properties msOrder и доступен как $order.properties.esl.order.id
.
В результате успешного запроса на выгрузку заказа, срабатывают системные события eshoplogistic3BeforeUnloadOrder
и eshoplogistic3UnloadOrder
.
Подробнее смотрите в разделе Системные события.
# Вывод информации о доставке в письмах MS2 и других чанках
Данные о доставке записываются в поле properties объекта msOrder.
Соответственно доступ к ним в чанках писем (и других, где есть доступ в объекту заказа) происходит следующим образом:
Доступные данные (в зависимости от стадии обработки заказа):
Переменная | Описание |
---|---|
$order.properties.esl.settlement |
Массив данных населённого пункта (куда доставляем). Содержит:
|
$order.properties.esl.service |
Массив данных выбранной ТК. Содержит:
|
$order.properties.esl.type |
Способ доставки: door (курьер) или terminal (самовывоз, т.е. доставка до ПВЗ/постамата) |
$order.properties.esl.price |
Массив данных по стоимости. Содержит:
|
$order.properties.esl.time |
Массив данных по стоимости. Содержит:
|
$order.properties.esl.comments |
Массив данных с комментариями (если заданы в настройках данной ТК в каюинете eShopLogistic). Содержит:
|
$order.properties.esl.data.tariff |
Массив данных о выбранном тарифе ТК (если передаётся данной ТК). Содержит:
|
$order.properties.esl.data.terminal |
Если доставка до ПВЗ/постамата. Содержит полную информацию о выбранном ПВЗ/постамате. Обязательно присутствуют:
|
$order.properties.esl.order |
Содержит общую информацию о заказе на доставку (если заказ выгружен в ЛК перевозчика):
|
$order.properties.esl.order.state |
Содержит полную информацию о текущем статусе заказа на доставку (если заказ выгружен в ЛК перевозчика). Обязательно присутствуют:
|
Перед выводом проверяйте наличие данных, например:
{if $order.properties.esl.name?}
Служба доставки: {$order.properties.esl.name}
{/if}
Для просмотра всех данных по доставке распечатайте массив $order.properties.esl
:
{$order.properties.esl | print_r}
# Информация об аккаунте, кэширование, логгирование
Интерфейс модуля позволяет:
- Видеть актуальную информацию о балансе счёта eShopLogistic, подключённых ТК, размере кэша данных
.
Время жизни кэша определяется системной настройкой «Время жизни кэша». - Видеть статистику запросов всего и в разреже API/виджеты .
Это позволяет контролировать количество запросов (например на предмет: нет ли аномально большого количества запросов от виджетов) и понимать, подходит ли текущий тариф.
Видеть лог запросов .
Полезно для отладки: видно какие именно данные уходят на расчёт доставки; включение лога определяется системными настройками «Сохранять лог запросов» и «Режим записи лога».
# Обновление статусов доставки
Обновить статус доставки выгруженного заказа можно двумя способами:
- По кнопке в интерфейсе редактирования заказа .
-
Настроить cron-задачу
Необходимо:
- Разрешить автоматическое обновление данных выгруженных заказов выставив «Да» для системной настройки
eshoplogistic3_update_data
- Указать статусы заказа, для которых следует обновлять данные; системная настройка
eshoplogistic3_update_data_statuses
- Настроить с нужной периодичностью запуск скрипта
{core_path}/componemts/eshoplogistic3/cron/run.php
с помощью cron.
- Разрешить автоматическое обновление данных выгруженных заказов выставив «Да» для системной настройки
При любом варианте запуска в результате успешного выполнения запроса на получение данных, срабатывает системное событие eshoplogistic3OnGetOrderStatus
. Подробнее смотрите в разделе Системные события.
# Настройка виджетов
Примеры и настройка виджетов:
-
Встраиваемый виджет
Виджет для карточки товара, встраиваемый в страницу
-
Виджет во всплывающем окне
Виджет для карточки товара, во всплывающем окне
-
Простой виджет
Информационный виджет с ручным вводом параметров
# Системные настройки
# Системные события
Событие | Описание |
---|---|
eshoplogistic3OnGetOffers |
Выполняется после подготовки массива товаров перед отправкой запроса на рассчёт стоимости доставки. Доступны: $offers — массив отправленных товарных позиций.Необходимо вернуть: $new_offers — новый массив товарных позиций.Пример:
|
eshoplogistic3BeforeUnloadOrder |
Выполняется перед выгрузкой заказа в кабинет транспортной компании, можно изменить данные заказа. Доступны: $order — объект заказа msOrder;$query_data — массив данных выгружаемого заказа.Необходимо вернуть изменённый массив данных. Пример:
|
eshoplogistic3UnloadOrder |
Выполняется после выгрузки заказа в кабинет транспортной компании. Доступны: $query_data — массив данных выгружаемого заказа;$order — объект заказа msOrder;$response - массив с данными ответа.Пример:
|
eshoplogistic3OnGetOrderStatus |
Выполняется после обновления статуса доставки выгрженного заказа. Доступны: $status — массив со старым и новым значениями статуса выгрузки;$order — объект заказа msOrder;$response - массив с данными ответа.Пример:
Документация по запросу получения заказа на доставку смотрите в официальной документации . |
# Частые вопросы
Частые причины:
- Не указаны обязательные системные настройки.
- Не настроены способы доставки MS2.
-
Не указан вес для товаров и при этом не указано значение для настройки «Минимальный вес единицы товара».
При этом в личном кабинете eShopLogistic для включённых служб не указана опция «Использовать стандартную коробку / стандартный вес» . -
Не правильно указана единица веса у товаров.
Например, в настройке «Единица измерения веса» указаны килограммы, а у товаров вес хранится в граммах. -
Не правильно указаны габариты товаров.
Единица измерения для габаритов - сантиметры. Если указываются миллиметры, то получится превышение по габаритам. - Проверьте состояние баланса в кабинете eShopLogistic.
Для максимально верного расчёта стоимости доставки большинство служб требует указания габаритов груза. Соответственно, желательно учитывать габариты товаров.
1) Если у товаров вашего магазина не указаны габариты в упаковке, можно воспользоваться параметром «Стандартная коробка / стандартный вес» в настройках службы доставки личного кабинета сервиса eShopLogistic .
2) Если у товаров вашего магазина указаны габариты в упаковке, то их необходимо добавить в объект корзины MS2.
Т.к. стандартных полей под габариты MS2 не имеет, очевидно, что данные у вас содержатся либо в полях объекта msProductData, либо
в свойствах товара (объект msProductOption).
Проще всего добавить габариты / изменить вес товаров можно с помощью плагина на событие eshoplogistic3OnGetOffers
:
switch ($modx->event->name) {
case 'eshoplogistic3OnGetOffers':
foreach($offers as $k => $offer) {
# Например, в поле weight_packing msProductData у нас хранятся параметры веса упаковки: возьмём её вес вместо штатного поля weight
if($productData = $modx->getObject('msProductData', $offer['article'])) {
$offers[$k]['weight'] = (int)$productData->get('weight_packing') ?? 5;
}
# Например, в поле dimensions msProductData у нас хранятся габариты товар, формат Д*Ш*В (25*15*10), в сантиметрах
if($productData = $modx->getObject('msProductData', $offer['article'])) {
$offers[$k]['dimensions'] = $productData->get('dimensions');
}
}
$modx->event->output(['offers' => $offers]);
break;
}
Наш модуль ждёт ответа от всех транспортных компаний (ТК), которые вы выбрали. Сервера ТК отвечают с разной скоростью, а также иногда не отвечают совсем. Поэтому модуль должен подождать пока будут получены все данные или выйдет таймаут запроса к не отвечающей ТК.
К сожалению, запросы к серверам ТК - единственный правильный вариант для получения актуальных данных, во всех иных случаях данные не будут верными, соответственно будет возникать много конфликтых ситуаций.
Как снизить время ожидания и риск отказа от заказа? Рекомендации:
- Ограничить количество ТК в корзине
- Убрать явно медленные ТК (среднюю скорось ответа серверов по каждой ТК можно можно посмотреть здесь)
- Чтобы пользователь понимал, что именно он ожидает, используйте осмысленное сообщение лоадера (настройка словаря
eshoplogistic3_loading_message
# Поддержка
Если у вас возникли какие-либо проблемы с подключением модуля или что-то не устраивает в работе сервиса eShopLogistic, вы всегда можете обратиться за поддержкой:
- написав обращение в соответствующем разделе личного кабинета eShopLogistic;
- написав в поддержку модуля через форму modstore.pro;
- отправив письмо на адрес support@eshoplogistic.ru.
# Changelog
0.0.1-beta 13.03.2023