msNovaPoshta

Расчет стоимости доставки «Новая Почта». Создание/редактирование ТТН
Автор дополнения
Prihod
Пакетов
19
Закачек
6 027
Автор дополнения
Пакетов
19
Закачек
6 027
Обычно отвечает в течение суток
Версия 2.0.2-pl
Дата выпуска 13.11.2020
Загрузки 179
Просмотры 6 298
Внимание, этот компонент требует версию PHP 5.6 или выше! Если ваш сайт использует 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}

msNovaPoshta 2.0.2

  • Исправлено: Игнорирование смены "Способы оплаты" или "Варианты доставки"
  • Исправлено: Создания ТТН с спецсимволами в описании

msNovaPoshta 2.0.1

  • Добавлено: Возможность выбрать несколько значений для опций: Статус заказа для автоматического создания ТТН; Статус заказа для автоматического удаления ТТН; Способ оплаты наложенный платеж;
  • Исправлено: Сброс последнего заполненного поля из данных получателя при выборе области, города или отделения доставки

msNovaPoshta 2.0.0

  • Добавлено: Автоматическое создание, обновление и удаление товарно транспортной накладной
  • Добавлено: Сниппет msNovaPoshta.Tracking
  • Добавлено: События "msnpOnBeforeSaveTTN" и "msnpOnSaveTTN"
  • Изменено: Параметр "Добавлять стоимость доставки" на "Кто оплачивает доставку". Если выбрано "получатель" то стоимость доставки добавляется к стоимости заказа.

  • ВАЖНО!! Перед обновлением с 1-й версии на 2-ю желательно сделать бэкап сайта и БД, а после обновления обязательно нужно сделать донастройку компонента и очистить кэш сайта и браузера.

msNovaPoshta 1.0.9

  • Исправлено: Список городов

msNovaPoshta 1.0.8

  • Добавлено: Событие "msnpOnGetDeliveryCost"

msNovaPoshta 1.0.7

  • Исправлено: Информация о заказе

msNovaPoshta 1.0.6

  • Исправлено: Общая стоимость заказа

msNovaPoshta 1.0.5

  • Исправлено: Дублирование ID элементов формы в чанке "msNovaPoshta.order". Добавлены постфиксы _courier и _pickup.

msNovaPoshta 1.0.4

Добавлено: Интеграция с msMultiCurrency

msNovaPoshta 1.0.3

  • Исправлено: Карта Google для устройств на iOS

msNovaPoshta 1.0.2

  • Исправлено: Список городов в заказе

msNovaPoshta 1.0.1

  • Добавлено: Возможность показать отделения с учетом веса заказа
  • Исправлено: Ошибка "caught TypeError: Cannot read property 'msnovaposhta' of null"
  • Исправлено: Дублирование городов