[ms_CDEK2] - Все с нуля



Всем привет, ребята! В ноябре ко мне на курирование перешел компонент msCDEK т.к. в последней выпущенной версии поломалось абсолютно все, я повтыкал в исходники и было принято решение снять компонент с публикации а также переписать его полностью с нуля.

Представляю вам вторую версию компонента! Главные отличия от старой версии:

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

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

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

  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 - Невозможно однозначно идентифицировать город-получатель по почтовому индексу

На что стоит обратить внимание:
  • Выбор города приоритетней, чем индекс, т.е. если вдруг покупатель выбрал город, а потом решил поменять индекс, не изменив город, то доставка будет рассчитываться исходя из выбранного города
  • При изменении полей индекса или города метод доставки сбрасывается
  • Компонент не реализует функционал интеграции, только функционал калькулятора, если появится спонсор на интеграцию, тогда возможно это будет сделано
  • Только minishop2.4+
Pavel Zarubin
22 января 2018, 14:12
modx.pro
1
3 501
+5
Поблагодарить автора Отправить деньги

Комментарии: 52

Pavel Zarubin
28 февраля 2018, 04:56
0
Обновление до версии 1.1.0:
Значительно изменен front-end код дополнения
Больше не сбрасывает метод доставки при изменении полей
Уведомляет пользователя при обновлении цены доставки
Производит расчет даже если страница была обновлена
Улучшена совместимость с другими методами доставки
Компонент теперь даже не инициализируется если метод доставки выбран НЕ сдэк
Расчет не запускается если не заполнено ни одно из полей (индекс или город)
Подготовка к следующему глобальному обновлению

На самом деле обновление очень глобальное, компонент научился быть очень универсальным по части Front-End. Я знаю что некоторые из купивших допиливали его под себя самостоятельно, но теперь могу гордо заявить что скорее всего вам этого делать не надо будет, ситуаций, при котором на фронте сайта расчет не был произведен скорее всего не возникнет (если не согласны, можете потыкать демо-сайт и отписаться в комментариях в какой ситуации возникла проблема).

Всем, кто еще не обновился, крайне рекомендую это сделать

А в следующем обновлении добавлю выбор нужных методов доставки при установке, чтобы вам не добавлялись десятки методов, которые вы не используете
    Дмитрий
    27 марта 2018, 17:26
    0
    Поменяйте, пожалуйста, нынешнее содержимое чанка cdek2.status.error в сборке
    Ошибка расчета СДЭК, вашу посылку посчитает менеджер отдельно! 
    Пожалуйста, сообщите менеджеру "код ошибки {$code}"

    на это:

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

    А вообще, лучше это сделать по взрослому через lexicon, для поддержки многоязычности.
      Алексей
      21 декабря 2018, 09:37
      0
      Дмитрий спасибо!
      Максим
      01 мая 2018, 18:05
      0
      А планируется ли доработка модуля в плане отправки заказа в лк СДЕК?
      А то без этого модуль не совсем полный получается: \
        Pavel Zarubin
        01 мая 2018, 23:49
        +1
        Планируется и для одного покупателя прямо сейчас делается, как доделаю на этой неделе, выпущу мини-заметку о том как сделать то же самое самостоятельно, к сожалению для полной интеграции так, как я ее вижу (с табом в заказе и полным управлением сдэком через админку) требуется гораздо больше времени, чем просто реализовать отправку заказа в сдэк
        Максим
        04 мая 2018, 23:12
        0
        И еще вопрос.
        Зависит ли как-то цена от веса?
        А то калькулятор сдека дает разные цены по тарифу, в зависимости, от веса груза
          Максим
          04 мая 2018, 23:24
          0
          А нет, все вопрос снимается. Вроде считает…
            Pavel Zarubin
            05 мая 2018, 03:41
            0
            Если у товаров заполнено поле weight, то да, вес учитывается
            Антон
            14 августа 2018, 19:08
            0
            1. Почему для выбора пункта самовывоза не используется готовое решение от CDEK? У них удобный интерфейс и есть возможность выбрать город доставки сразу на карте, а не отдельно в поле формы.
            2. В инструкции 5 пункт не понятен. Написано, что необходимо указать логин и пароль от CDEK, но если я правильно понял, то необходимо указывать данные для подключения к API CDEK. В админке так же в описании параметра не написано конкретно, что нужно указывать. Лучше было бы, если бы было написано, что указывать надо «Account» и «Secure_password». Именно в таком виде CDEK и предоставляет эти данные.
            3. Как в корзине вывести выбранный пункт самовывоза? А то всплывает только окошко, а информация о выбранном пункте нигде не отображается.
            4. Как сделать, чтобы автоматически был выбран город, а то при выборе способа доставки CDEK, вылетает ошибка о том, что не указаны параметры.
              Pavel Zarubin
              14 августа 2018, 19:25
              +1
              Почему для выбора пункта самовывоза не используется готовое решение от CDEK? У них удобный интерфейс и есть возможность выбрать город доставки сразу на карте, а не отдельно в поле формы.
              Удобный для вас, не удобный для меня например. Кастомное решение позволяет оформить вам карту как вам хочется. Да и выбор прикрутить по клику на карту дело 5 минут (к слову сейчас можно выбрать по клику по названию пункта)

              Лучше было бы, если бы было написано, что указывать надо «Account» и «Secure_password».
              Об этом информация со вчерашнего дня есть в описании компонента на modstore

              Как в корзине вывести выбранный пункт самовывоза? А то всплывает только окошко, а информация о выбранном пункте нигде не отображается.
              Просто уберите hidden из инпута с выбранным городом и оформите его как хотите

              Как сделать, чтобы автоматически был выбран город, а то при выборе способа доставки CDEK, вылетает ошибка о том, что не указаны параметры.
              Никак, сервис сдэк не знает что такое «город» он знает только ID городов именно по этому город необходимо выбрать вручную. Однако, если вы это сделали, и обновили страницу, выбор сохраняется. Как альтернативу во второй версии я сделал возможность определения города по индексу, Его можете смело подставлять.

              Если что-то непонятно, добро пожаловать в поддержку modstore
                Максим
                20 августа 2018, 14:29
                +1
                Вот тут есть одна неудобная штука, если не выбрать город в выпадающей подсказке, он не будет учитываться.
                Если например выбрать данные Питера, а потом набрать город Москва (не выбирая из списка), то город не будет учитываться.
                Можно сделать ли так, чтобы при потере фокуса с поля «город», автоматически подгружался нужный ID города?
                  Pavel Zarubin
                  20 августа 2018, 17:36
                  0
                  если не выбрать город в выпадающей подсказке, он не будет учитываться.
                  Как я уже не однократно говорил — это осбенности самого сдэка, как вариант обхода этой особенности я добавил определение по индексу

                  Можно сделать ли так, чтобы при потере фокуса с поля «город», автоматически подгружался нужный ID города?
                  Теоретически можно, если создать базу соответствий «название города-сдэк id», но во первых это огромная работа, во вторых целесообразность сомнительна, т.к. хоть одна опечатка и мы получаем ровно такую же ситуацию, как и была

                  Еще раз говорю, те, кто по специфике не может использовать выбор города — определяйте его по индексу
                    Максим
                    20 августа 2018, 23:05
                    +1
                    Теоретически можно, если создать базу соответствий «название города-сдэк id»
                    А почему именно так? Не легче ли, сделать чтобы при потере фокуса, автоматически применялся первый город в выпавшем списке (ты же сам список получаешь).
                    Суть в том, чтобы пользователь не заполнил поле самостоятельно, и магазин получил бы гарантировано id города.
                      Pavel Zarubin
                      21 августа 2018, 02:04
                      +1
                      Хорошая идея, спасибо, подумаю над реализацией в следующем обновлении
              Metallurg.IT
              24 октября 2018, 20:51
              0
              Будет ли функционал полного формирования оформления документа для отправки заказа.
              Что бы владелец сайта только распечатал заполненый бланк, на котором ФИО и Адрес куда доставлять и уже пробитый и оформленный трек номер, а далее с этой бумагой и посылкой просто вызвать курьера или самому сдать на пункт отправки.

              А то сейчас я как понял, продавцу требуется самому вбивать все данные для отправки, а пользователь только стоимость доставки узнает и выбирает пункт выдачи.
                Pavel Zarubin
                24 октября 2018, 23:00
                0
                Будет, пока что это делается индивидуально для каждого клиента за отдельную стоимость, но такой функционал планируется
                  Metallurg.IT
                  24 октября 2018, 23:02
                  0
                  Клиента оформляющего заказ или можно купить доработку функционала как плагин и на себе оттестировать?
                    Pavel Zarubin
                    24 октября 2018, 23:08
                    0
                    Интеграция со сдэком (где заказ уходит в личный кабинет сдэка) сейчас заказывается отдельно, но в будущем возможно дойдут руки чтобы унифицировать этот процесс и интегрировать в дополнение
                      Metallurg.IT
                      24 октября 2018, 23:11
                      0
                      Как связаться, куда платить?
                      Только ли СДЭК можете настроить еще?
              Алексей
              04 мая 2019, 21:47
              0
              Подскажите, как отправить в письме менеджеру пункт выдачи — выбранный клиентом?
              Сергей
              24 июня 2019, 09:32
              0
              Здравствуйте. Подскажите, как реализовать просто расчет стоимости доставки и сроки на текстовой странице без товаров. (Плагин купленный, на другой аккаунт)
                Денис
                05 августа 2019, 13:54
                0
                Добрый день!
                С помощью данного компонента можно получать трек номер после оформления заказа?
                  ewal
                  30 сентября 2019, 10:43
                  0
                  Сдэк при переключении вариантов доставки срабатывает с ошибками, отдаем неверные данные по доставке. К примеру я выбрал вариант доставки до склада по мск, 240р, переключаюсь на доставку курьером. так же 240р, клацанием выдает доставку курьером 480р. Такое не годится! Прошу допилить плагин.
                    Pavel Zarubin
                    30 сентября 2019, 10:45
                    0
                    Прошу с проблемами обращаться в поддержку, такое поведение может быть не только из-за ошибок плагина, но и из-за устаревшей версии или вашими проблемами с сервером
                    mekirile
                    26 декабря 2019, 21:19
                    0
                    Как вывести срок и стоимость доставки на странице товара?
                      Сергей
                      17 марта 2020, 14:30
                      0
                      При добавлении баг, при частом переключении вариантов доставки. В идеале сразу рассчитывать и показывать сколько стоит доставка, а не переключать, что бы узнать стоимость. (У Почты России нет таких проблем).
                        Pavel Zarubin
                        17 марта 2020, 14:33
                        0
                        Для показа «Сразу» есть компонент modstore.pro/packages/delivery/ms2deliverycost, баг описанный вами является особенностью минишопа, решается прелоадером блокирующим переключение до получения стоимости, я не стал делать это в компоненте, т.к. это вмешивается в механизм общей работы корзины, что никак не вписывается в рамки компонента
                          Сергей
                          17 марта 2020, 17:16
                          0
                          Спасибо за ответ, ms2deliverycost действительно это решил. Но остается вопрос. Как скрывать карту, если доставка до дома, зачем её показывать. И касательно (в коде это есть, адрес там написан, но в админке это поле не как не хочет отображаться), хотя раньше вроде работало. И касательно msRussianPost там тоже есть нюанс, если пользователь вводит не существующий индекс, то потом нет возможности отменить поиск индекса в базе, бесконечная загрузка.
                            Pavel Zarubin
                            17 марта 2020, 18:42
                            0
                            Как скрывать карту, если доставка до дома, зачем её показывать
                            Читайте внимательно описание компонента на modstore, параметр deliveryids

                            но в админке это поле не как не хочет отображаться
                            Также, описание, включить событие msOnManagerCustomCssJs

                            то потом нет возможности отменить поиск индекса в базе
                            Напишите в поддержку, я не наблюдал таких нюансов
                        Дмитрий Танцирев
                        29 апреля 2020, 16:19
                        0
                        Модуль — откровенный шлак. Крайне не советую к покупке. Ладно бы он еще бесплатно отдавался — претензий бы не было, но за 1,5к. и такое — по мне так это позорно товарищ.

                        В JS скриптах черти чё и сбоку бантик. Ощущение что накидано за пять минут, с мыслями: «И так сойдёт».

                        Банально куча багов даже на демо-сайте. Вбиваем город — выдаёт подсказки — выбрали город из подсказок — отобразились пункты выдачи. А теперь вводим вручную другой город и не выбираем его из подсказок — выдаст пункты выдачи прошлого города.
                        И таких багов — множество.
                        Ты хоть тестируй своё чудо перед релизом.
                          Pavel Zarubin
                          29 апреля 2020, 16:34
                          0
                          Друг, у тебя с пистолетом у головы стоят и заставляют его покупать?)
                            Дмитрий Танцирев
                            29 апреля 2020, 16:36
                            0
                            Окей. Делай возврат за модуль.
                              Pavel Zarubin
                              29 апреля 2020, 16:39
                              0
                              Смотри, во первых ты сам сказал что есть демо сайт где ты заранее можешь посмотреть как все работает, во вторых модуль можно абсолютно бесплатно поставить на modhost и крутить его как захочешь в течении суток, а в третих, тут обсуждение модуля, все что касается покупи или работы — это тебе на другой сайт modstore, там же, к слову, есть техническая поддержка
                                Дмитрий Танцирев
                                29 апреля 2020, 17:00
                                0
                                То что я не проверил модуль — да, мой косяк. Глянул бы глубже — не купил.

                                Тут обсуждение модуля — так мы его и обсуждаем (я бы сказал: осуждаем).

                                Надеюсь что ты адекватно воспримешь фидбек и всё таки причешешь и оттестишь код. Хотя бы для себя.
                                  Pavel Zarubin
                                  29 апреля 2020, 17:16
                                  +2
                                  так мы его и обсуждаем (я бы сказал: осуждаем).
                                  Друг, я знаю обо всех возможных проблемах которые могут возникнуть, все они решаются и возникают в основном на говнохостингах и говносайтах и возникают далеко не у всех, в данный момент они решаются обращением в ТП. В js там нет никакой мешанины как ты говоришь, а многие спорные решения являются таковыми из-за ограничений самого minishop2, можешь сделать лучше — сделай и предоставь общественности.

                                  Однако в разработке 3я версия msCDEK, да, с релизом я чуть подзатянул по ряду причин (он должен быть в январе) там не будет привязки к api минишопа и в целом будет совсем другой принцип работы, релиз планируется уже в эти выходные, по этому если тебе не горит, ты можешь написать мне в личные сообщения любой соцсети или месседжера и получить msCDEK3 бесплатно уже на этих выходных, будешь первым бета-тестером :)
                            Илья
                            25 мая 2020, 10:21
                            -1
                            Pavel Zarubin — исключительный человек, благодаря которому я овладел(надеюсь), навыком доскональной проверки продукта перед его покупкой. Настоятельно НЕ советую пользоваться его продукцией. Мало того, в 2 из 2 продуктов с его участием были проблемы с корректным выводом результата, так еще и столкнулся с вопиющим хамством в «поддержке», особенно порадовала фраза «чтобы не беспокоить людей из за 1300 рублей»

                            Я блин эти 1300 рублей заплатил для того что бы сэкономить свое время и не тратить лишний день на разработку своего приложения, в итоге за свои деньги потратил три дня на общение с хамской службой поддержки и исправления косяков разработчика.
                              Pavel Zarubin
                              25 мая 2020, 10:44
                              0
                              Что? Косяков разработчика? Друг, что же ты всю переписку не выложил, ты задаешь один вопрос, потом говоришь совсем о другом, пока я не наткнулся на твое хамство, ты «хамство» в ответ и не получал, я пожалуй выложу всю переписку а там пусть люди делают выводы сами:
                              monosnap.com/direct/btlwkYpmtE1qmTNMdGtTNhyE37hlsV
                              monosnap.com/direct/t7GYtfzkZd9fUF0p3ecCsggRWTMAzM

                              И да, по поводу «три дня потратил» я тебе отвечал буквально через 10 минут как ты задал вопрос, ты же мне отвечал через 5-6 часов, если бы ты мониторил бы поддержку, то твой вопрос (который я кстати так и не понял) решился бы за 20 минут, а если бы написал мне в любом месседжере и того быстрее)
                              Удачи, к слову в модсторе можно вернуть деньги за компонент, в следующий раз советую воспользоваться.

                              А еще очень хотелось бы услышать какие такие косяки разработчика то ты решил?))
                                Илья
                                25 мая 2020, 10:59
                                -1
                                Я задал вполне конкретный вопрос. Как ты его себе интерпретируешь, прости но не мои проблемы.
                                твой скрипт при расчете стоимости продукции выдает ОШИБОЧНЫЕ данные. И я логично спросил как эти ошибочные данные можно отлавливать.
                                Что я получил в ответ? НИ-ЧЕ-ГО.
                                Ты вообще понимаешь, что тебе уже два, ДВА КАРЛ человека написали, что скрипт косячный. Так трудно взять и сделать нормально? Или так трудно сесть и разобраться в ситуации?
                                Почему я должен править криво работающий автокомплит?
                                Почему я должен добавлять атрибуты в инпуты, что бы автозаполнение не косячило?
                                Почему я должен разбиратся с синхронизацией запросов на сдек?

                                Окей, я это сделал, я это поправил. Вопрос, за что я тебе заплатил деньги, если по факту я получил хамство в ТП и переписал процентов 40 твоих «скриптов» прежде чем эта фигня начала нормально работать?
                                  Pavel Zarubin
                                  25 мая 2020, 11:28
                                  1
                                  0
                                  Я задал вполне конкретный вопрос
                                  Ты задал вопрос, цитирую:
                                  Подскажите, как можно отловить событие «ошибки расчетов стоимости доставки»
                                  На что я тебе вполне конкретно ответил, цитирую:
                                  на событие msOnSubmitOrder проверять если стоимость доставки отличная от нуля — продолжаем оформление заказа, если же нет через $modx->event->output() выкидываем ошибку.
                                  Следующим же сообщением ты пишешь совсем о другом, цитирую:
                                  А сейчас я сначала ввожу мск и получаю стоимость доставки в 300р, а потом ввожу Владивосток и стоимость доставки не меняется, это несколько печалит.
                                  Мой логичный вопрос, «что?»

                                  На самоизоляции вообще шарики за ролики заезжают, да?

                                  твой скрипт при расчете стоимости продукции выдает ОШИБОЧНЫЕ данные. И я логично спросил как эти ошибочные данные можно отлавливать.
                                  Вопрос был в том как отловаить «Ошибка расчета стоимости доставки» это НЕ ошибочные данные, такая ошибка может быть когда офис сдэка в этом городе закрылся например а город еще не удалили из базы и еще миллиард случаев, ошибочные данные это если бы на сайте сдэка доставка по направлению стоила бы 500 рублей, а тебе выдает 300.

                                  ДВА КАРЛ человека написали, что скрипт косячный.
                                  Из 268 покупателей, ты же понимаешь что это даже не 1%?

                                  Окей, я это сделал, я это поправил.
                                  Так что же ты не расскажешь всем что же ты такого исправил?

                                  Официально заявляю, если пользователь modx.pro/users/nazz340 выложит статью о том что не так считается в компоненте ms_cdek2 и что нужно переписать чтобы работало правильно, я согласен передать права на компонент этому человеку при его желании, как это когда то сделал я например, а пока что это детские лепет и несерьезно. Одно лишь условие, это должны быть такие глобальные доработки что аж:
                                  переписал процентов 40 твоих «скриптов»
                                  А не две строчки поправить
                                    Илья
                                    25 мая 2020, 11:42
                                    -2
                                    Да харэ уже отмазываться, халтурщик.
                                    Тебя спросили.
                                    Я цитирую.
                                    «Подскажите, как можно отловить событие «ошибки расчетов стоимости доставки»»
                                    Знаешь почему? Потому что твой скрипт дает ОШИБОЧНЫЕ ДАННЫЕ. И мне логично было интересно узнать как и где идет обработка и КАК ИХ МОЖНО ОТЛОВИТЬ.
                                    Нафига мне «msOnSubmitOrder» Если туда УЖЕ идут данные с ошибкой, умник? Тебе уже написали, что при вводе некоретных данных в поле «Цыти», твой мега скрипт выдает результат с прошлого запроса. Повторю, мне абсолютно плевать, что ты не можешь разобраться в вопросе и нормально общаться со своими клиентами.
                                    И я все еще не понимаю, за что я в данном случае заплатил деньги, если по факту скрипт который лежит на серваке переработан мной, а тех поддержка сказа мне что за 1300 рублей ей что то там думать и править — впадлу.

                                    На счет твоего предложения по поводу статьи, ок. я подумаю, если будет время — напишу.
                                      Pavel Zarubin
                                      25 мая 2020, 12:10
                                      0
                                      Клоунада… я не хочу переливать из пустого в порожнее по этому пожалуй на этом и закончим, покажешь свои «40%» после этого и продолжим диалог
                                    Pavel Zarubin
                                    25 мая 2020, 11:34
                                    0
                                    Когда мне передали сдэк и почту россии, я не сидел и не плакался в комментариях о том что меня обидели, я взял и написал цикл статей почему текущие компоненты работают неправильно и как сделать «Правильно». А болобольство из разряда «Я переписал 40% кода но вам я его не покажу» выглядят смешно, как уже выше сказал, показываешь эти 40% — получаешь все права на компоненты, дорабатываешь их как тебе нравится и получаешь денюшку
                                    Дмитрий Танцирев
                                    25 мая 2020, 11:37
                                    +1
                                    Вместо того чтобы отрефакторить код и документацию, всё превращается в какую-то санта-барбару.

                                    Адреса пунктов самовывоза, СДЭК умеет отдавать только если получит индекс города получателя и (или) код города получателя по базе СДЭК.

                                    Ссылка на документацию API СДЭК:
                                    clck.ru/NdXeu

                                    Соответственно, СДЭК не умеет отдавать адреса пунктов самовывоза, если вы ему просто отправите название города получателя. Он должен получить именно код города.
                                    Отсюда и начинается гемор.
                                    Город указали (и самое главное — выбрали его из выпадающего списка) — вам выдало пункты самовывоза. Затем начинаете менять название города (и самое главное — НЕ выбираете его из списка, а просто меняете в поле) — СДЭК никак на это не реагирует, и выдаёт адреса прошлого города.

                                    Всё потому, что код города получателя, умеет отдавать только JS плагин «autocomplete» (выпадающий список со списком городов). И только если вы выберете город из этого выпадающего списка городов.

                                    Решения тут два:

                                    1. Пользователю — идти в конфигурацию, искать настройку «cdek_calc_city» (Учитывать город) и ставить «Нет».
                                    2. Разработчику — допилить свой код и сделать так, чтобы код города получателя отдавался не JS плагином «autocomplete», а непосредственно в самом классе «msCDEK_handler».

                                    P.S. в файле: /assets/components/ms_cdek2/js/libs/autocomplete.js:47

                                    Вместо:
                                    /* инициализация индекса */
                                                var index = $('[name=index]').val();
                                                if (!index) {
                                                    setTimeout(function () {
                                                        $('[name=index]').val($(item).data('index'));
                                                        miniShop2.Order.add('index', $(item).data('index'));
                                                    }, 1500);
                                                }
                                    Надо:
                                    setTimeout(function () {
                                                    $('[name=index]').val($(item).data('index'));
                                                    miniShop2.Order.add('index', $(item).data('index'));
                                                }, 1500);
                                    Иначе, если мы выберем город из выпадающего списка (и при этом если у нас указан индекс), то индекс не будет изменен. А по сути должен. Т.к. город то мы поменяли.
                                      Pavel Zarubin
                                      25 мая 2020, 11:48
                                      0
                                      Соответственно, СДЭК не умеет отдавать адреса пунктов самовывоза, если вы ему просто отправите название города получателя
                                      Ошибочка, сдэк прекрасно отдает пункты самовывоза если вместо названия или id города ему скрамливать индекс, именно по этому в компоненте есть настройка об отключении учитывания id города

                                      Город указали (и самое главное — выбрали его из выпадающего списка) — вам выдало пункты самовывоза. Затем начинаете менять название города (и самое главное — НЕ выбираете его из списка, а просто меняете в поле) — и сдэк никак на это не реагирует, и выдаёт адреса прошлого города.
                                      Да, как уже выше сказал я например для всех своих клиентов отключаю учитывания города, по мне эта механика в самом сдэке работает неправильно, при том в третьей версии (которую получать вы к слову отказались) были попытке сделать выборку по названию аля «Делаем запрос на сдэк, забираем первый город который он отдал, и учитываем его id» чтобы обойти механику выбора это не дало результатов, были города где сдэк отдавал первым пунктом совсем не то что надо

                                      2. Разработчику — допилить свой код и сделать так, чтобы код города получателя отдавался не JS плагином «autocomplete», а непосредственно в самом классе «msCDEK_handler».
                                      Можно подробнее? Вы имеете ввиду способ который описал выше? Если да — он работать не будет

                                      А по сути должен. Т.к. город то мы поменяли.
                                      Опять же, почему вы так думаете? То что индекс не меняется от смены города — задумано специально, пользователь врятли ошибется в своем индексе, а вот в городе запросто выбрав например Ростов, вместо «Ростов-на-Дону» и если в этом случае индекс у него автоматически изменится, а пользователь даже не заметит — пользователь получит все шансы не получить посылку, а магазин все шансы понести убыток.

                                      Мне всегда было интересно почему есть целый пласт людей считающий что остальные дебилы, а вот они умные, я работаю с интернет магазинами уже 5 лет, и интернет магазины с которыми я работаю относительно большие с 50-150 заказами в день, вы правда считаете что я не сделал замену индекса только потому что я дурак и не проверил этот момент?
                                        Дмитрий Танцирев
                                        25 мая 2020, 12:18
                                        0
                                        Ошибочка, сдэк прекрасно отдает пункты самовывоза если вместо названия или id города ему скрамливать индекс, именно по этому в компоненте есть настройка об отключении учитывания id города
                                        Нет тут ошибочки. Я про это и пишу, что если сдэку отправить просто название города — он ничего не выдаст. Но при этом если ему отправить индекс и (или) код города — он выдаёт пункты.

                                        Можно подробнее? Вы имеете ввиду способ который описал выше? Если да — он работать не будет
                                        Ну да. Тут согласен. Работать не будет. И теперь ясно для чего были придуманы эти коды городов. Т.к. городов с одним и тем же названием — может быть множество. Справедливо.

                                        Опять же, почему вы так думаете? То что индекс не меняется от смены города — задумано специально, пользователь врятли ошибется в своем индексе, а вот в городе запросто выбрав например Ростов, вместо «Ростов-на-Дону» и если в этом случае индекс у него автоматически изменится, а пользователь даже не заметит — пользователь получит все шансы не получить посылку, а магазин все шансы понести убыток.
                                        Как вы уже писали — «пользователь всегда идиот». И введя название другого города и выбрав его из выпадающего списка, он будет долго соображать, че же у него пункты самовывоза то старые остались. А всё потому, что индекс города остался прежним.

                                        Мне всегда было интересно почему есть целый пласт людей считающий что остальные дебилы, а вот они умные, я работаю с интернет магазинами уже 5 лет, и интернет магазины с которыми я работаю относительно большие с 50-150 заказами в день, вы правда считаете что я не сделал замену индекса только потому что я дурак и не проверил этот момент?
                                        Эм. Я где-то вас назвал дебилом? Или дураком?
                                        Вы как-то очень критично и агрессивно относитесь к комментариям (ну или мне так кажется).
                                        Да и похоже сами считаете, что кроме вашей точки зрения, не должно быть никакой другой.

                                        Смею заверить, что мой опыт разработки и работы с инет. магазинами — не чуть не меньше вашего.
                                        И чем глубже в лес, тем больше приходит понимания, что далеко не всегда даже 100% кажущаяся правильной вещь — действительно правильная.

                                        Сейчас модуль работает именно со сменой индекса при смене города. Заказы поступают постоянно и не было еще не одной жалобы. (Но при этом надо учесть, что в настройке «cdek_calc_city» — стоит «Нет». Это ключевой момент, в данном случае)

                                        Можете не переделывать этот момент. Это вам решать.
                                          Pavel Zarubin
                                          25 мая 2020, 12:42
                                          +1
                                          Нет тут ошибочки. Я про это и пишу, что если сдэку отправить просто название города — он ничего не выдаст. Но при этом если ему отправить индекс и (или) код города — он выдаёт пункты.
                                          Я последовательно отвечал, по этому то что ниже еще не видел на тот момент :)

                                          Как вы уже писали — «пользователь всегда идиот». И введя название другого города и выбрав его из выпадающего списка, он будет долго соображать, че же у него пункты самовывоза то старые остались. А всё потому, что индекс города остался прежним.
                                          id города приоритетнее если учитывание города не выключено по этому пункты самовывоза покажут на город который пользователь «выбрал», а вот различие между выбранным городом и индексом хотя бы помогут менеджеру отследить несоответствие и перезвонить уточнив у пользователя реальные данные

                                          Эм. Я где-то вас назвал дебилом? Или дураком?
                                          Я не к этому, я к тому что вы указываете этот момент как ошибку и к сожалению вы не первый считаете что это ошибка, в поддержке я всегда людям говорю где указать путь к совему js и как поменять конкретно эту логику, но да, наверное такой императивный подход к этому моменту неправильный и надо бы его вынести в настройки

                                          Да и похоже сами считаете, что кроме вашей точки зрения, не должно быть никакой другой.
                                          Нет, я так не считаю и люблю критику, просто критика бывает разной, и мне правда непонятны вот такие моменты когда клиент считает что его способ верный — а мой нет, есть демо сайт, есть modhost где можно все посмотреть и проверить, не нравится мой подход — не покупай, напиши сам. Не знаешь как написать? У меня есть цикл статей как я писал msCDEK там буквально из статьи можно собрать компонент бесплатно и сделать такую логику — какую ты захочешь. Купил и разочарован? Обратись в поддержку — когда ты вежлив в поддержке — с тобой тоже вежливы, ну или верни деньги через администрацию modstore. Смотри, вариантов решения вопроса — не меньше 5.
                                          Недовольных тут двое при этом один вообще не обращался в поддержку, другой сначала задал один вопрос, потом получив ответ что то непонятное промямлил назвав поддержку «так себе», на что получил «может вы программист так себе?» и побежал везде рассказывать как ему нахамили и морально навредили. Это из разряда «вези меня, мразь».

                                          И чем глубже в лес, тем больше приходит понимания, что далеко не всегда даже 100% кажущаяся правильной вещь — действительно правильная.
                                          Тут соглашусь на 100% есть огромная разница что и кому продавать, в ИМ слишком много переменных чтобы утверждать что то на 100%

                                          Можете не переделывать этот момент. Это вам решать.
                                          Спасибо за критику этого момента, пожалуй все же сделаю это опционально
                                Сергей
                                26 мая 2020, 09:28
                                0
                                Как на счет обещания из 2018? Об отправке заказов в личный кабинет? Я так полагаю это обещание не было выполнено?
                                  Pavel Zarubin
                                  26 мая 2020, 15:40
                                  0
                                  Добрый день, в описании компонента в самом верху жирным шрифтом висит то что компонент не отправляет заказы в личный кабинет сдэка, делать отдельный компонент для интеграции я не вижу смысла т.к. каждая интеграция уникальная, вы можете написать мне в личные сообщения vk/telegram @Pavel Zarubin и я могу дать заготовку которую сам использую при интеграции, но придется пописать код, либо заказать платную интеграцию, стоит она в зависимости от ваших потребностей, для более подробной информации пишите туда же
                                  Andrey Neverkevich
                                  16 июня 2020, 13:30
                                  0
                                  Здравствуйте. Установил плагин. Магазин находится в Казахстане в городе Нур-Султан, устанавливаю индекс города отправителя, выдаёт ошибку 14
                                    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                    52