msNovaPoshta

Расчет стоимости доставки «Новая Почта». Создание/редактирование ТТН
Автор дополнения
Prihod
Пакетов
38
Закачек
13 361
Обычно отвечает в течение суток
Автор дополнения
Пакетов
38
Закачек
13 361
Обычно отвечает в течение суток
Версия 2.3.5-pl
Дата выпуска 23.06.2025
Загрузки 333
Просмотры 11 439
Внимание, этот компонент несовместим с MODX 3.

Возможности


  • Рассчитывать стоимость доставки, с учетом веса заказа и стоимости всех товаров.
  • Просмотр все отделений “Новая Почта” на карте 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;
        }


«Прогрев» кэша



Для ускорения работы рекомендуется добавить на сервере задачу в CRON, которая будет вызывать следующий скрипт:

../core/components/msnovaposhta/scripts/cache_warmup.php

Периодичность запуска скрипта должна учитывать значение системной опции
msnovaposhta.cache_time
— время жизни кэша (в секундах).
По умолчанию оно составляет
2592000
секунд (30 дней).

При значении по умолчанию оптимально запускать скрипт один раз в 15 дней.

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.3.5-pl] - 2025-06-23

Исправлено

  • Загрузка городов при выбранной области по умолчанию

    Изменено

    • Чанк "msNovaPoshta.order" (стр. 86 и стр. 111)

[2.3.4-pl] - 2025-05-16

Добавлено

  • Опции:
    1. "Разрешенные области";
    2. "Минимальный вес для отделения" ;
    3. "Разрешенные типы отделений";
    4. Событие "msnpOnGetWarehouses";

[2.3.3-pl] - 2024-09-3

Добавлено

  • Опции:
    1. "Прогреть кэш городов";
    2. "Загружать сразу все города";
    3. "Загружать сразу все улицы города";
    4. "Загружать сразу все отделения города";
      • У сниппета msNovaPoshta.Order параметр "fuseOptions"
      • Скрипт для "прогревки" кэша: core/components/msnovaposhta/scripts/cache_warmup.php

Изменено

  • Чанк "msNovaPoshta.order"

[2.2.1-pl] - 2024-03-27

Добавлено

  • Учет при расчете стоимости доставки опции "Бесплатная доставка от суммы заказа"

Исправлено

  • Отсутствие стоимости доставки при первом выборе отделения

[2.2.0-pl] - 2023-04-06

Добавлено

  • Системная опция "Параметр груза для каждого места отправки" (msnovaposhta.default_options_seat).

Исправлено

  • Применение опции: "Добавлять стоимость доставки"
  • Создание ТТН

[2.1.2-pl] - 2023-02-27

Исправлено

  • Ошибка "Call to undefined method MsNovaPoshta::getDeliveryCost()"
  • Ошибка 'Fatal error: require_once(): Failed opening required /model/minishop2/msdeliveryhandler.class.php' в miniShop2 >= 3.0.0-pl

[2.1.1-pl] - 2023-01-15

Исправлено

  • Баг закрытия списка в Safari

[2.1.0-pl] - 2022-07-21

Изменено

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

Добавлено

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

Улучшено

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

Удалено

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

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