new

msNovaPoshta

Расчет стоимости доставки «Новая Почта». Создание/редактирование ТТН
Автор дополнения
Prihod
Пакетов
23
Закачек
6 755
Автор дополнения
Пакетов
23
Закачек
6 755
Обычно отвечает в течение суток
Версия 2.1.0-pl
Дата выпуска 21.07.2022
Загрузки 222
Просмотры 7 339
Внимание, этот компонент требует версию PHP 7.1 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.4 !

Возможности


  • Рассчитывать стоимость доставки, с учетом веса заказа и стоимости всех товаров.
  • Просмотр все отделений “Новая Почта” на карте Google в определенном городе с возможностью выбрать нужное.
  • Создание/редактирование в автоматическом/ручном режиме товарно транспортной накладной (ТТН) она же
    экспресс-накладная на отделение и на почтамт «Новая почта»

Типы доставки:
от отделения до отделения,
от отделения до адреса.

Видео-обзор



Видео устарело и не отражает весь функционал дополнения!

Настройка


После того как вы установили пакет необходимо зайти в его настройки и указать первым делом API ключ «Новая почта» который можно получить согласно
инструкции.

После того как вы указали API ключ «Новая почта» необходимо нахать на кнопку «Сохранить» и только после этого продолжить настраивать остальные параметры.

Также крайне желательно получить свой ключ для API Google Maps, а не использовать который установлен по умолчанию т.к количество запросов в рамках одного ключа к сервису Google Maps ограничено.

ВАЖНО! Созданные через ваш магазин ТТН могут редактироваться только в нем же т/е на сайте «Новая почта» их отредактировать нельзя.

Cниппеты



msNovaPoshta.Order — расчет стоимости доставки и выбора отделения.

Параметры:
elements — cписок сниппетов через запятую, которые нужно запустить. По умолчанию msOrder,
tpl — Чанк оформления. По умолчанию msNovaPoshta.order,
theme — Название темы (js и css скрипты которые будут подключены на фронтенде). По умолчанию default,
zoom — Zoom для карты Google. По умолчанию 12

Cниппет msNovaPoshta.Order является ничем иным как оберткой, выполняет необходимые действия, данные выставляет в плейсходеры, затем запускает поочередно сниппеты из списка elements. Последним необходимо указать родной сниппет msOrder.

Пример вызова
[[!msNovaPoshta.Order]]

msNovaPoshta.Tracking — трекинг посылки.

Параметры:
order — ID заказа,
number — Номер товарно транспортной накладной, если задан order number не обязателен или если задан number то order не обязателен.
tpl — Чанк оформления. По умолчанию msNovaPoshta.tracking, В переменной чанка data доступна вся информация ответа на запрос к API

События


msnpOnGetDeliveryCost — расчет стоимости доставки:
np — экземпляр класса дополнения
cost — стоимость заказанных товаров
weight — общий вес заказанных товаров
deliveryCost — стоимость доставки
deliveryId — id способа доставки
citySender — код города отправителя
cityRecipient — код города получателя
serviceType — тип услуги
cargoType — значение из справочника Тип груза: Cargo, Documents, TiresWheels, Pallet


Пример плагина:

switch ($modx->event->name) {
        case 'msnpOnGetDeliveryCost':
        if($cost > 1000) { // если стоимость заказанных товаров больше 1000 Гр. делаем доставку бесплатной
        $modx->event->returnedValues['deliveryCost'] = 0;
        }
        break;
        }


msnpOnBeforeSaveTTN — срабатывает перед сохранением ТТН:
mode — может принимать значение либо new (новая ТТН), либо upd (редактирование ТТН)
order — объект msOrder
msnovaposhta — объект MsNovaPoshta
data — массив исходных данных
params — массив подготовленных данных для запроса к API


Пример плагина изменения объявленной стоимости для новой ТТН:

switch ($modx->event->name) {
        case 'msnpOnBeforeSaveTTN':
        if($mode != 'new') return;
        //$modx->log(modX::LOG_LEVEL_ERROR,print_r($data,1));
        //$modx->log(modX::LOG_LEVEL_ERROR,print_r($params,1));
        $params['Cost'] = $params['Cost'] + 100;
        $modx->event->returnedValues['params'] = $params;
        break;
        }


msnpOnSaveTTN — срабатывает после сохранения ТТН:
mode — new|upd
order — объект msOrder
msnovaposhta — объект MsNovaPoshta
data — массив исходных данных
params — массив подготовленных данных для запроса к API
result — массив данных ответа запроса к API


Пример плагина отправки номера ТТН покупателю:

switch ($modx->event->name) {
        case 'msnpOnSaveTTN':
        if($mode != 'new') return;
        $email = $order->getOne('UserProfile')->get('email');
        //$receiver = $order->getOne('Address')->get('receiver');
        if($email) {
        $num = $order->get('num');
        $subject = "Номер экспресс-накладной для заказа №{$num}";
        $message = "Стоимость: {$result['CostOnSite']}; Прогноз даты доставки: {$result['EstimatedDeliveryDate']}; Номер экспресс-накладной: <a href=\"https://novaposhta.ua/tracking/?cargo_number={$result['IntDocNumber']}\" target=\"_blank\">{$result['IntDocNumber']}</a>";
        $msnovaposhta->sendEmail($email, $subject, $message);
        }
        break;
        }



FAQ


Q: Каким образом передавать данные о доставке менеджеру в письме?
A: В чанк tpl.msEmail.new.manager добавить код

{if $properties.msnovaposhta.area? }<strong>Область:</strong> {$properties.msnovaposhta.area}{/if}
        {if $properties.msnovaposhta.city? }<strong>Город:</strong> {$properties.msnovaposhta.city}{/if}
        {if $properties.msnovaposhta.warehouse? }<strong>Отделение:</strong> {$properties.msnovaposhta.warehouse.Description}{/if}
        {if $properties.msnovaposhta.number_ttn? }<strong>Номер ТТН:</strong> {$properties.msnovaposhta.number_ttn}{/if}

[2.1.0-pl] - 2022-07-21

Изменено

  • Чанк "msNovaPoshta.order"
  • Кэш компонента отделен от основного кэша сайта
  • Стандартные списки на списки с возможностью поиска в стилистике Bootstrap 5

Добавлено

  • Лексикон "uk"
  • Опция "msnovaposhta.cache_time" (время жизни кэша компонента, по умолчанию 30 дней)
  • На странице настройки компонента кнопка очистки кэша
  • Выбор отделения на карте
  • Поиск ближайшего отделения на карте
  • Поиск области по названию
  • Поиск города по названию
  • Поиск улицы по названию
  • Поиск отделения по его номеру или названию улицы его расположения

Улучшено

  • Скорость работы
  • Работа с картой отделений

Удалено

  • jQuery зависимость

Последние обсуждения в сообществе MODX.pro