msNovaPoshta

Расчет стоимости доставки «Новая Почта». Создание/редактирование ТТН
Автор дополнения
Prihod
Пакетов
35
Закачек
11 380
Обычно отвечает в течение суток
Автор дополнения
Пакетов
35
Закачек
11 380
Обычно отвечает в течение суток
Версия 2.3.3-pl
Дата выпуска 03.09.2024
Загрузки 310
Просмотры 9 780
Внимание, этот компонент требует версию PHP 7.4 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.7 !

Возможности


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