ms_CDEK2

Добавляет методы доставки СДЭК, расчет цены и времени доставки по индексу и городу
Автор дополнения
Pavel Zarubin
Пакетов
7
Закачек
1 004
Обычно отвечает в течение суток
Автор дополнения
Пакетов
7
Закачек
1 004
Обычно отвечает в течение суток
Версия 1.2.4-beta
Дата выпуска 29.07.2018
Загрузки 113
Просмотры 2 295
Внимание, этот компонент требует версию PHP 5.6 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.3 !
На данный момент компонент не реализует функционал отправки заказов в личный кабинет СДЭК'а! Если вы хотите реализацю данного функционала, то обращайтесь через личные контакты

Что может:


  • Расчет цены и времени доставки СДЭК
  • Вывод статуса на фронт сайта
  • Расчет по индексу и/или названию города
  • Автокомплит городов
  • После выбора города поле области автоматически заполняется
  • Пункты самовывоза

Настройка пунктов самовывоза:



За пункты самовывоза отвечает сниппет cdekDeliveryPoints
Он принимает несколько параметров:
  • cityid — id города по таблице сдэк (если вы хотите вывести пункты самовывоза только одного города)
  • citypostcode — почтовый индекс города (если вы хотите вывести пункты самовывоза только одного города)
  • tpl — чанк оформления вывода, по умолчани используется стандартный cdek2.getpvz
  • deliveryids — id способов доставки для которых нужно выводить пункты самовывоза (по умолчанию выводится для всех)
Сниппет обязательно должен быть обернут в div с id cdek2_map_ajax
Пример вызова:
<div id="cdek2_map_ajax">
	{'!cdekDeliveryPoints' | snippet}
</div>
В чанк приходит множество переменных по умолчанию используется лишь малая часть, вы можете оформить вывод пунктов самовывоза как вам угодно, перед использованием настоятельно рекомендую посмотреть все переменные
{$pvz | print}

Если вы хотите, чтобы выбранный адрес самовывоза записывался в админку, то в форму заказа (id=«msOrder») добавьте input:
<input type="hidden" name="point">

Тогда после оформления заказа, если пользователь выбрал пункт самовывоза он будет записан в админку:

Вы также можете использовать его в письме пользователя.
Внимание! Поле динамическое и появляется только тогда, когда пользователь выбрал доставку, в противном случае вы его не увидите!

Главные отличия от первой версии msCDEK:

  • Была немного переписана стандартная библиотека сдэк'а, компонент научился работать с индексами покупатель может указать только индекс или только город или все вместе и компонент рассчитает стоимость
  • Поддержка дополнительной цены (наценки)
  • Не конфликтует с другими методами доставки т.е. выводит статус времени и цены доставки только когда выбран сдэк, убирает его если выбран метод доставки не сдэк
  • Устранены проблемы с записью города в заказ
  • Выводимая информация о удачном расчете/времени доставки/ошибки расчета теперь выводится через чанки используя феном и pdoTools, вы можете спокойно модифицировать его, добавлять условия и т.д.
  • Для автокомплита теперь не используется громоздкий jquery UI, теперь используется маленькая библиотека на ванильном JS от pixabay
  • Компонент не требует модификации полей оформления заказа все подгружается и подключается самостоятельно
  • Добавлена возможность отключить автокомплит вообще
  • Добавлено корректное удаление дополнения, он чистит за собой все методы, что добавил
  • Авторизация работает корректно
  • Для города — отправителя теперь не нужно искать ID города в каких — то списках, достаточно указать индекс отправителя в настройках
  • Главный JS скрипт можно переопределить опять же в настройках
  • Добавлены пункты самовывоза

Установка компонента:


  1. Если у вас была установлена первая версия, то перед установкой выполните зачистку старых методов доставки СДЭК (приложения->minishop2->настройки (вкладка варианты доставки) выберите все методы доставки от msCDEK (поддерживается мультивыбор через shift) затем нажмите правой кнопкой мыши и выберите «Удалить выбранные»
  2. Установите компонент из modstore
  3. На странице корзины в любом месте вызовите сниппет msCDEK.init
    {'!msCDEK.init' | snippet}
    или
    [[!msCDEK.init]]
    он подключит нужные js файлы а также создаст несколько глобальных js переменных.
    Внимание, у вас должен быть также подключен Jquery, компонент самостоятельно его не подключает! Если вы противник jquery по религиозным соображениям, вы можете переопределить стандартный скрипт, он очень прост и jquery там используется по минимуму
  4. В любом месте на странице корзины добавьте блок
    <div id="ms_cdek2_status"></div>
    сюда будет записываться информация о времени и цене доставки, а также об ошибках, если таковые будут
  5. Перейдите в системные настройки->ms_cdek2 и укажите ваш логин и пароль от СДЭК (если имеется), а также Индекс города-отправителя

Опциональность:

  • В чанке cdek2.status.success можно задать свой шаблон вывода статуса удачного расчета, туда передается три переменных:
    • price — цена доставки
    • min — минимальное кол-во дней доставки с момента отправления
    • max — максимальное кол-во дней доставки с момента отправления
  • В чанке cdek2.status.error можно задать свой шаблон вывода статуса неудачного расчета, туда передается одна переменная:
    • code — код ошибки. Он нужен для того, чтобы покупатель мог сообщить менеджеру какая именно ошибка произошла, также во время ошибки в лог modx'a записывается код ошибки и его расшифровка, так что вам не обязательно помнить все коды наизусть

Расшифровка кодов ошибок:
0 - Внутренняя ошибка на сервере. Обратитесь к программистам компании СДЭК для исправления.
1 - Указанная вами версия API не поддерживается 
2 - Ошибка авторизации 
3 - Невозможно осуществить доставку по этому направлению при заданных условиях 
4 - Ошибка при указании параметров места 
5 - Не задано ни одного места для отправления 
6 - Не задан тариф или список тарифов 
7 - Не задан город-отправитель 
8 - Не задан город-получатель
9 - При авторизации не задана дата планируемой отправки
10 - Ошибка задания режима доставки
11 - Неправильно задан формат данных
12 - Ошибка декодирования данных. Ожидается <json или jsop>
13 - Почтовый индекс города-отправителя отсутствует в базе СДЭК
14 - Невозможно однозначно идентифицировать город-отправитель по почтовому индексу
15 - Почтовый индекс города-получателя отсутствует в базе СДЭК
16 - Невозможно однозначно идентифицировать город-получатель по почтовому индексу

На что стоит обратить внимание:


  • Выбор города приоритетней, чем индекс, т.е. если вдруг покупатель выбрал город, а потом решил поменять индекс, не изменив город, то доставка будет рассчитываться исходя из выбранного города
  • Только minishop 2.4+

Добавление своих методов доставки:


Если вдруг список методов доставки который идет в комплекте вас не устраивает — вы можете добавить свои методы доставки. Заходим в дополнение console и вставляем вот такой код
$tarifs = array(
    '139' => 'Посылка дверь-дверь',
    '138' => 'Посылка дверь-склад',
    '137' => 'Посылка склад-дверь',
    '136' => 'Посылка склад-склад'
);

foreach ($tarifs as $key => $value) {
    $newDeliv = $modx->newObject('msDelivery', array(
        'name' => $value,
        //'description' => '',
        'price' => 0,
        'weight_price' => 0,
        'distance_price' => 0,
        'active' => 0,
        'logo' => MODX_ASSETS_URL.'components/ms_cdek2/cdek.png',
        'class' => 'msCDEK_handler',
        'requires' => 'email,receiver,index'
    ));
    $newDeliv->save();
    $modx->log(3, 'Добавлен метод доставки <b>'.$value.'</b>, с ID '.$key);

    $id = $newDeliv->get('id');
    $cdek = $modx->newObject('MsCdek', array(
        'id_delivery' => $id,
        'id_tarif' => $key
    ));
    $cdek->save();
}
смотрим массив «tarifs», ключ массива — это id метода доставки (его смотрим тут документация по api калькулятора), значение — название метода

Для интеграции важно сделать запрос на формирование тестовой учетной записи (Account и Secure_password) на email: integrator@cdek.ru.
Учетная запись для интеграции не совпадает с учетной записью доступа в Личный Кабинет. В запросе на получение аккаунта нужно указывать ваш договор и используемую интеграционную систему (Своя)


Обсуждение в сообществе modx

ms_cdek2 1.2.4

  • Добавлена возможность учета габаритов корзины [setting_cdek_allow_size]
  • Добавлена возможность учета веса в граммах [setting_cdek_weight]
  • Исправлена ошибка со статусом СДЭК
  • Теперь если индекс не заполнен при выборе города сдэк пытается подставить индекс самостоятельно
  • Повышена стабильность Front-end части
  • Совместимость с msRussianPost3

ms_cdek2 1.2.3

  • Добавлена настройка которая позволяет отключить учитывание стоимости доставки в конечной цене корзины [php]
  • Статус доставки больше не пишется при цене корзины 0 [php]

ms_cdek2 1.2.2

  • Добавлена обработка клика по балуну карты [js]
  • Исправлено получение id доставки в хандлере доставки [php]

ms_cdek2 1.2.1

  • Исправлена ошибка с выбором города возникающая в браузере Safari (PC) [js]
  • Исправлен вывод пунктов самовывоза если выбранном городе только один пункт [php]

ms_cdek2 1.2.0

  • Добавлен сниппет вывода пунктов доставки
  • Улучшен установщик, если вы еще не настраивали компонент "под себя" рекомендую удалить старую версию и установить новую с нуля (это вовсе не обязательно, но универсальность будет лучше)
  • Улучшен js - код
  • Компонент добавляет новое поле в msOrderAdress
  • Более подробный анонс изменений смотрите на modx.pro

ms_cdek2 1.1.1

  • Исправлен перерасчет при выборе города мышкой
  • Добавлена настройка которая позволяет отключить спам в лог пользовательских ошибок (cdek_debug)
  • Добавлена поддержка html тегов оформления ошибки

ms_cdek2 1.1.0

  • Значительно изменен front-end код дополнения
  • Больше не сбрасывает метод доставки при изменении полей
  • Уведомляет пользователя при обновлении цены доставки
  • Производит расчет даже если страница была обновлена
  • Улучшена совместимость с другими методами доставки
  • Компонент теперь даже не инициализируется если метод доставки выбран НЕ сдэк
  • Расчет не запускается если не заполнено ни одно из полей (индекс или город)
  • Подготовка к следующему глобальному обновлению

ms_cdek2 1.0.3

  • Интегрирована защита от пиратских версий
  • Изменения front-end части кода

ms_cdek2 1.0.2

  • Исправление расчета дополнительной цены

ms_cdek2 1.0.1

  • Небольшие исправления

ms_cdek2 1.0.0

  • Первый релиз

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