[msPromoCode2] Промо-коды второй версии


— Совместимость с msOptionsPrice2 и msBonus2,
— Программное API — можно применить/отменить скидку для юзера в сниппете или плагине,
— Применение промо-кода в бек-энде для уже созданных заказов,
— Применение промо-кода на любой странице сайта и обновление цен товаров на лету,
— Возможность сгенерировать промо-код и вывести сообщение пользователю, когда он провёл на странице N секунд,
— Возможность применять скидку только к одной единице товара,
— Вывод скидки не только в корзине, но и в любом месте сайта, где отображается цена товара,
— И множество мелочей, которые будут приятным дополнением при использовании компонента.

Внимание! Вторая версия не имеет ничего общего с первой версией компонента. Даже в части функционала они отличаются, ибо реализованы совершенно иначе.

Демку потыкать можно тут, документация уже на docs.modx.pro

Компонент можно приобрести в Modstore

Создание компонента спонсировал наш любимый магазин дополнений Modstore.pro
Павел Гвоздь
01 октября 2019, 08:51
modx.pro
1 649
+10
Поблагодарить автора Отправить деньги

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

Александр
01 октября 2019, 11:44
+1
А что станет с первой версией? Будет ли она поддерживаться, обновляться, или эта версия пришла на замену предыдущей?
    Павел Гвоздь
    01 октября 2019, 11:50
    +1
    Первая версия останется, но ряд функционала из второй версии в ней никогда не появится, из-за иной реализации. Баги в ней будут фикситься. Она дешевле второй версии.
    Вторая версия естественно в приоритете и в ней будет появляться новый функционал.
    yani
    01 октября 2019, 14:17
    0
    Павел, подскажите, есть ли возможность сделать такую скидку
    При покупке 3 товаров из категории по цене 40 рублей, сделать общую цену 100 рублей?
    ну и при покупке 4 будет 100 + 40 = 140
    6 — 100 + 100 = 200 и т.д.
      Павел Гвоздь
      01 октября 2019, 15:38
      0
      Из коробки — нет. Только если написать какой-то плагин, который бы контролировал такое поведение.
      Василий Краковецкий
      02 октября 2019, 15:36
      0
      Скидка на всю корзину применяется к конечной цене или как в предыдущей версии — разбивается и применяется отдельно к каждому из товаров?
      Николай Савин
      07 октября 2019, 06:46
      0
      Паш, а есть возможность создать промокод ограниченный по времени? Действующий, в течение часа, к примеру.
        Павел Гвоздь
        07 октября 2019, 08:20
        +1
        Да, конечно! prnt.sc/pfsfuj
          Николай Савин
          10 октября 2019, 08:22
          +1
          Отлично купил. Вижу в консоли браузера вывод логов при рендере формы. Наверное убрать забыл.
          И еще вот такой нюанс заметил — prnt.sc/ph919f — но это наверное какие то проблемы с кодировкой у меняю
            Павел Гвоздь
            10 октября 2019, 08:36
            0
            Описание вопросами? Да, видимо у тебя, т.к. не замечал нигде такого.
            Вывод логов уберу в ближайшей версии.
            И просьба, если будут вопросы по ТП, то писать в соответствующий раздел на Modstore, пжл.
              Николай Савин
              10 октября 2019, 08:37
              +1
              Вопросов то нет, заметил нюансы — дал знать.
                Павел Гвоздь
                10 октября 2019, 08:38
                0
                Я понял. На всякий случай заранее попросил)
        Константин Ильин
        03 ноября 2019, 20:28
        +1
        Павел, подскажите пожалуйста, можно ли будет напилить такую систему:

        в личном кабинете, пользователь сам создает себе промокод который будет давать другим людям, какое то слово, например «lopata». Оно является уникальным, т.е. у второго пользователя не может быть такого же промокода.

        При оформлении заказа если вводишь промокод «lopata», клиент получает 5% скидку на заказ, а тот человек которому принадлежит данный промокод «lopata» получает бонусы 10% от суммы заказа клиента.

        И так каждый раз при оформлении заказа, когда вводят lopata скида 5% и соответственно 10% человеку.
        Что-то вроде реферальной системы, но с промокодом.

        Мне нужно купить оба компонента msPromoCode2 и msBonus?
          Павел Гвоздь
          03 ноября 2019, 21:00
          0
          В целом можно, но придётся допилить. Исходники ни одного из компонентов по идее править не придётся, т.к. есть соответствующие события плагинов.
            Константин Ильин
            04 ноября 2019, 01:07
            +2
            Почти сделал сам :)

            Просто расширил профиль пользователя, в это поле записываю название промокода. Промокод создается из формы в личном кабинете пользователя. Т.е. у каждого пользователя свой промокод. В случае если человек захочет поменять промокод, берется старый и обновляется название.

            Осталось только сделать начисления бонусов за оплаченый заказ, это наверно на смену статуса повесить.

            Спасибо за отличные компоненты, жду ответа в ТП =)
              Николай Савин
              04 ноября 2019, 07:19
              +2
              Тогда уж надо id промокода записывать, а не содержимое, скорее всего
                Константин Ильин
                04 ноября 2019, 16:57
                +1
                Местами удобнее текстовый вариант)
                можно выводить в феноме без запросов на получение названия промокода.
                {$_modx->user.promocode}
                еще например не надо будет искать название старого купона, оно уже у пользователя, зару запрос на получение объекта с кодом.
                Павел сделал так, что название купона уникально, а так же индекс сделал в mysql, так что поиск по varchar не так страшен будет. Но естественно я в своем коде тоже проверяю на уникальность и там всякие нехорошие символы)

                А так ваша идея имеет смысл, обычно так и делаю, но тут как то решился так :)
                  Николай Савин
                  04 ноября 2019, 17:42
                  +1
                  Ответ исчерпывающий — Умываю руки.
                    Константин Ильин
                    04 ноября 2019, 18:01
                    0
                    Дошел до бонусов и сразу аукнулось. Вы были правы, что лучше id. Я не учел ситуацию если до оплаты заказа пользователь поменяет свой промокод, будет поиск пользователя по названию, а такого пользователя с промокодом уже нет.
          UDAV
          19 марта 2020, 13:36
          0
          А фиксированную сумму в рублях можно сделать?
            Александр
            09 апреля 2020, 20:56
            0
            Павел, возможно через модуль дать скидку группе товаров одним промо-кодом?
              Евгений Пашков
              21 августа 2020, 18:36
              0
              Павел, подскажет такой момент.
              Первая версия не умеет давать скидку на всю корзину для определенных товаров или раздела с товарами.

              Может ли вторая версия следующее:
              Промо-код, действующий на определенную группу товаров (или раздел), дающий скидку на всю корзину, при условии, что товаров из этой группы в корзине больше, чем XX рублей?
              Спасибо.
              Владимир
              01 сентября 2020, 15:03
              0
              Добрый день!
              Сейчас в корзине при применении недействительного купона выводится одно и тоже сообщение «Промо-код недействителен».
              А можно ли в msPromoCode2 добавить такой функционал:
              1. Если у купона истекла дата действия писать «Дата действия данного промо-кода истекла такого-то числа».
              2. Если на купоне количество заказов превышает допустимое писать «Превышено количество (кол-во доступных заказов числом) доступных заказов по данному промо-коду».
              3. Если промо-кода нет в системе вообще писать «Указанный промо-код недействителен».
              Хочется покупателям сразу показать причину, по которой промо-код не работает, а то они начинают звонить менеджерам магазина и выяснять в чем проблема.
                Владимир Ребров
                21 декабря 2020, 13:40
                0
                Добрый день.
                Подскажите, пожалуйста
                1) есть ли возможность установить дату валидности промокода?
                2) промокоды одноразовые или можно применять один промокод несколько раз (или это опционально)?
                3) есть ли возможность промокодом увеличить, а не уменьшить цену? (не спрашивайте, зачем — заказчик интересуется)
                4) скидка по промокоду задается фикс числом или можно и в %?
                Спасибо.
                  Павел Гвоздь
                  21 декабря 2020, 20:55
                  0
                  1) да
                  2) можно, опционально
                  3) не знаю, юзайте modhost тестовый тариф
                  4) можно
                  pobnpolk
                  09 января 2021, 17:52
                  0
                  Павел, подскажи пожалуйста:
                  В корзине при добавленных опциях через компоненты msSetInCart и msAddLinked — формируется сумма товара с учётом выбранных опций.
                  После применения промо-кода наценка слетает.
                  и После отмены промо-кода наценка не суммируется обратно.
                  Вопрос: Как можно изолировать применение к корзине, без учёта цены наценки от опций.
                    Илья Александрович
                    29 января 2021, 19:46
                    0
                    в первой версии msPromoCode есть такое
                    Кейсы — Именные промокоды для пользователя

                    во второй версии это есть?
                      Павел Гвоздь
                      01 февраля 2021, 09:03
                      0
                      Подобное для второй версии я не описывал.
                      pobnpolk
                      17 февраля 2021, 15:18
                      0
                      Паша, что можно сделать?
                      В корзине при добавленных опциях через компоненты msSetInCart и msAddLinked — формируется сумма товара с учётом выбранных опций.
                      После применения промо-кода наценка слетает.
                        Павел Гвоздь
                        18 февраля 2021, 06:58
                        +2
                        что можно сделать?
                        1) Наладить совместимость как-то самостоятельно.
                        2) Обратиться ко мне и оплатить моё время.

                        Уточню, что совместимости с данными компонентами я нигде не заявлял и если я буду каждую просьбу в ТП выполнять за свой счёт (с чего бы интересно?), то ни на личную жизнь, ни на собственную работу времени у меня не останется. Но не смотря на этот, вроде бы логичный момент, порой в ТП проскакивают такие наглецы, которые уверены, что любую их просьбу по доработке компонента я должен и обязан выполнить.

                        P.S. А вот эти решения типа отключения каких-то событий плагина компонента, которые мне некоторые умники предлагают в ТП, я бы не посоветовал никому, ибо называется «Одно лечим, другое калечим»…
                        Дмитрий
                        20 февраля 2021, 11:00
                        0
                        Добрый день! Подскажите, возможно ли в первой или второй версии использовать данный модуль msPromoCode, чтобы промокод (скидка) не распространялся на товары у которых уже установлена скида в cms mishope (заполнено поле старая цена)?
                          Алексей Суслов
                          20 февраля 2021, 13:45
                          0
                          Не знаю про первую версию, а в msPromoCode2 точно есть и я часто этим пользуюсь:

                          Sem
                          Sem
                          04 марта 2021, 17:40
                          0
                          Есть вопрос по компоненту, в интерфейсе во вкладке связи есть возможность включить действие промокода
                          на определенные категории товаров и товары. Но что делать если нужно наоборот исключить категорию/товар?
                          Например есть промокод, который действует на весь ассортимент каталога, за исключением одного товара.
                          И ещё один момент — в конфиге промокода есть чекбокс — Не применять без скидки, когда он включен,
                          на фронте применить промокод можно, а в админке к уже существующему заказу с тем же составом товаров нет, так и должно быть? Пишет — в корзине нет товаров, соответствующих этому промо-коду.
                            Павел Гвоздь
                            05 марта 2021, 06:27
                            0
                            1) 0 укажите.
                            2) Не применяется, когда включён. Ни там, ни там.

                            Все вопросы в ТП, пожалуйста, на Модстор.
                            Alexey
                            17 марта 2021, 15:22
                            0
                            Павел, добрый день! Вопрос: в этой версии компонента есть возможность настроить применение промокода по условию принадлежности к определенному производителю? Возможно, во вкладке промокода в админке есть поле для дополнительных условий? Наподобие такого — skrinshoter.ru/s/170321/GzD6Lfz8
                              Sem
                              Sem
                              31 марта 2021, 21:30
                              -1
                              Знаю, что автор предпочитает, чтобы все вопросы по компоненту писали в ТП, но на днях попался сайт у клиента, где поддержки уже нет, а проблема с компонентом есть.
                              Заметил, что компонент ломает работу других плагинов на некоторые события и валит админку с фатальной ошибкой, например простейший плагин для скрытия файлов у медиаисточников, с выключенным плагином mspc2System, прекрасно работает, но стоит включить валится вся админка с fatal error ​
                              Код плагина, для примера.
                              <?php
                              /** @var modX $modx */
                              switch ($modx->event->name) {
                                 ​case 'OnMediaSourceGetProperties':
                                     ​$properties = json_decode($properties, true);
                                     ​if (!empty($properties['hideSource']) AND !empty($properties['hideSource']['value']) AND $_REQUEST['node'] == '/') {
                                         ​die('{}');
                                     ​}
                                 ​break;
                              }
                              Та же история с компонентом hideSource из modStore, который по сути делает тоже, что и плагин выше, без промокодов работает норм, с включенным компонентом — падает админка.
                              Скорее всего это происходит из-за того, что код плагина самого компонента, вообще никак не ограничен событиями, то есть работает через все события системы насквозь и по пути что-то ломает.
                                Sem
                                Sem
                                31 марта 2021, 21:50
                                0
                                По видимому такой эффект дает сочетание нескольких компонентов, попробовал на modhost проверить, такой проблемы нет, беру слова обратно. Буду искать проблему дальше
                                  Павел Гвоздь
                                  01 апреля 2021, 06:24
                                  -1
                                  беру слова обратно
                                  Тебя кто так извиняться учил? Не работают такие извинения, как будто.
                                    Sem
                                    Sem
                                    01 апреля 2021, 10:13
                                    0
                                    Честно, не знаю на что Вы обиделись и какого рода извинения ожидали.
                                    Я же указал, что проблема решалась отключением Вашего компонента. Оставалось только найти причину, её я так пока и не нашел, но мне удалось её воспроизвести на modhost.
                                    Ставим всего 2 компонента: msPromoCode2 и hideSource
                                    Если у плагина промокодов поставить галку «статичный» — система падает с fatal error
                                    Без галки — всё работает норм

                                    Но если при этом в системе будут какие-то другие плагины с этой галкой, что не редкость для тех, кто работает в IDE, то в консоли в некоторых случаях получаем ошибки вида:
                                    Could not load class: mspc2OnMediaSourceGetProperties from mspc2onmediasourcegetproperties.
                                    Could not load class: msYaEcommerceOnMediaSourceGetProperties from msyaecommerceonmediasourcegetproperties.
                                    Я пока не знаю почему атрибут «статичный» так влияет на работу плагинов, но как небольшой вывод для себя:
                                    1)У плагина компонента msPromoCode2 не должна стоять галка «статичный» при установленном hideSource
                                    2)Если в системе стоят и msPromoCode2 и hideSource и при этом есть другие статичные плагины, могут быть проблемы. (наблюдаются ошибки в консоли, но не у всех плагинов)
                                    3)Я не утверждаю, что проблема именно в msPromoCode2, она проявляется в связке двух компонентов.
                                      Павел Гвоздь
                                      01 апреля 2021, 10:48
                                      0
                                      Я не обижался. А извиниться, ну как минимум за клевету, что мой пакет якобы что-то там ломает:
                                      компонент ломает работу других плагинов
                                      валит админку с фатальной ошибкой
                                      Вот тут тоже очень интересно:
                                      код плагина самого компонента, вообще никак не ограничен событиями, то есть работает через все события системы насквозь и по пути что-то ломает
                                      Особенно «работает через все события системы насквозь». Хз, откуда такие выводы.

                                      Если у плагина промокодов поставить галку «статичный» — система падает с fatal error
                                      Не понял, а нахера её ставить? Какой профит? Компонент поставляется с включённой галкой «статичный»? Вроде нет. Так где он из коробки ломает что-то, не пойму? С таким же успехом предлагаю выключить вообще плагин компонента и заявлять в комментариях, что компонент не работает. А потом можно сказать «беру слова обратно» и как ничего и не было, все довольны и счастливы… Только вот я не доволен, что мой труд обосрали и считают, что в порядке вещей просто в конце сказать «беру слова обратно».
                                        Sem
                                        Sem
                                        01 апреля 2021, 11:05
                                        0
                                        Павел, я не ставил перед собой цели, как Вы говорите «обосрать Ваш труд», я столкнулся с проблемой и решил её описать в сообществе, где есть возможность, что кто-то поможет с этим разобраться, может кто-то с этим уже сталкивался. За неимением возможности написать в ТП, единственное место, где можно осветить проблему — это здесь. И целью комментария было желание привлечь внимание автора компонента, и возможно его помощи разобраться в проблеме. Но Вы же это приняли как клевету в свой адрес. Я извиняюсь за то, что задел своим комментарием Вас.
                                        Но прошу, раз уж Вы отвечаете на комментарии, помочь разобраться в вопросе.
                                        По поводу галочки — не понятна Ваша позиция, то что из коробки он идет с выключенной. Эта галочка, системная возможность движка и по идее кроме как «откуда брать код плагина» она не должна ни на что влиять, но влияет. И хотелось бы разобраться почему?
                                          Павел Гвоздь
                                          01 апреля 2021, 11:10
                                          0
                                          Ещё раз: в чём профит? Если вы мне объясните профит сего действия, то я потрачу своё время на то, чтобы это решить. Иначе смысла не вижу поддерживать эту затею.
                                            Sem
                                            Sem
                                            01 апреля 2021, 11:15
                                            0
                                            Вы всё по поводу этой галочки? Это было для воспроизведения проблемы на modhost.
                                            Даже если галочка не стоит, и при этом в системе есть другие статичные плагины — в консоль падают ошибки, о не возможности загрузки классов со странными префиксами «mspc2»
                                            И это только когда в систему поставлен также hideSource
                                              Sem
                                              Sem
                                              01 апреля 2021, 11:35
                                              0
                                              По поводу ошибок, разобрался это не Ваш компонент, их кидает hideSource, когда другие плагины статичные, просто в случае с msPromoCode2 эти ошибки кладут систему.
                                              В итоге виновником является hideSource и то как он реагирует на статичные плагины.
                                              Прошу прощения за беспокойство и ещё раз извиняюсь за клевету на компонент.
                                            Sem
                                            Sem
                                            01 апреля 2021, 11:11
                                            0
                                            А по поводу событий, я имел ввиду следующее:
                                            hideSource срабатывает на событие OnMediaSourceGetProperties
                                            В списке событий msPromoCode2 этого события нет, значит плагин не должен реагировать на него.
                                            Но ошибки которые падают в консоль говорят об обратном.
                                            Could not load class: mspc2OnMediaSourceGetProperties from mspc2onmediasourcegetproperties.
                                    Александр
                                    07 апреля 2021, 12:30
                                    0
                                    Добрый день.

                                    Возникла небольшая проблема. Некорректно отображается всплывающее окно с промокодом (генерируется через сниппет mspc2Generate) на мобильной версии сайта. Нет ни текста, ни кнопок, только пустое окно.
                                    Это связано с тем, что такой функционал не был предусмотрен? или это проблема уже самого конкретного сайта?
                                      Павел Гвоздь
                                      07 апреля 2021, 15:15
                                      0
                                      Конкретного сайта. В дальнейшем пишите в ТП на Модстор, пжл…
                                      Яценюк Софья Васильевна
                                      08 апреля 2021, 12:43
                                      -1
                                      А что с первой версией?
                                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                      50