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

— Совместимость с msOptionsPrice2 и msBonus2,
— Программное API — можно применить/отменить скидку для юзера в сниппете или плагине,
— Применение промо-кода в бек-энде для уже созданных заказов,
— Применение промо-кода на любой странице сайта и обновление цен товаров на лету,
— Возможность сгенерировать промо-код и вывести сообщение пользователю, когда он провёл на странице N секунд,
— Возможность применять скидку только к одной единице товара,
— Вывод скидки не только в корзине, но и в любом месте сайта, где отображается цена товара,
— И множество мелочей, которые будут приятным дополнением при использовании компонента.
Внимание! Вторая версия не имеет ничего общего с первой версией компонента. Даже в части функционала они отличаются, ибо реализованы совершенно иначе.
Демку потыкать можно тут, документация уже на docs.modx.pro
Компонент можно приобрести в Modstore
Создание компонента спонсировал наш любимый магазин дополнений Modstore.pro
Комментарии: 65
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Вторая версия естественно в приоритете и в ней будет появляться новый функционал.
При покупке 3 товаров из категории по цене 40 рублей, сделать общую цену 100 рублей?
ну и при покупке 4 будет 100 + 40 = 140
6 — 100 + 100 = 200 и т.д.
И еще вот такой нюанс заметил — prnt.sc/ph919f — но это наверное какие то проблемы с кодировкой у меняю
Вывод логов уберу в ближайшей версии.
И просьба, если будут вопросы по ТП, то писать в соответствующий раздел на Modstore, пжл.
в личном кабинете, пользователь сам создает себе промокод который будет давать другим людям, какое то слово, например «lopata». Оно является уникальным, т.е. у второго пользователя не может быть такого же промокода.
При оформлении заказа если вводишь промокод «lopata», клиент получает 5% скидку на заказ, а тот человек которому принадлежит данный промокод «lopata» получает бонусы 10% от суммы заказа клиента.
И так каждый раз при оформлении заказа, когда вводят lopata скида 5% и соответственно 10% человеку.
Что-то вроде реферальной системы, но с промокодом.
Мне нужно купить оба компонента msPromoCode2 и msBonus?
Просто расширил профиль пользователя, в это поле записываю название промокода. Промокод создается из формы в личном кабинете пользователя. Т.е. у каждого пользователя свой промокод. В случае если человек захочет поменять промокод, берется старый и обновляется название.
Осталось только сделать начисления бонусов за оплаченый заказ, это наверно на смену статуса повесить.
Спасибо за отличные компоненты, жду ответа в ТП =)
можно выводить в феноме без запросов на получение названия промокода.
еще например не надо будет искать название старого купона, оно уже у пользователя, зару запрос на получение объекта с кодом.
Павел сделал так, что название купона уникально, а так же индекс сделал в mysql, так что поиск по varchar не так страшен будет. Но естественно я в своем коде тоже проверяю на уникальность и там всякие нехорошие символы)
А так ваша идея имеет смысл, обычно так и делаю, но тут как то решился так :)
Первая версия не умеет давать скидку на всю корзину для определенных товаров или раздела с товарами.
Может ли вторая версия следующее:
Промо-код, действующий на определенную группу товаров (или раздел), дающий скидку на всю корзину, при условии, что товаров из этой группы в корзине больше, чем XX рублей?
Спасибо.
Сейчас в корзине при применении недействительного купона выводится одно и тоже сообщение «Промо-код недействителен».
А можно ли в msPromoCode2 добавить такой функционал:
1. Если у купона истекла дата действия писать «Дата действия данного промо-кода истекла такого-то числа».
2. Если на купоне количество заказов превышает допустимое писать «Превышено количество (кол-во доступных заказов числом) доступных заказов по данному промо-коду».
3. Если промо-кода нет в системе вообще писать «Указанный промо-код недействителен».
Хочется покупателям сразу показать причину, по которой промо-код не работает, а то они начинают звонить менеджерам магазина и выяснять в чем проблема.
Подскажите, пожалуйста
1) есть ли возможность установить дату валидности промокода?
2) промокоды одноразовые или можно применять один промокод несколько раз (или это опционально)?
3) есть ли возможность промокодом увеличить, а не уменьшить цену? (не спрашивайте, зачем — заказчик интересуется)
4) скидка по промокоду задается фикс числом или можно и в %?
Спасибо.
2) можно, опционально
3) не знаю, юзайте modhost тестовый тариф
4) можно
В корзине при добавленных опциях через компоненты msSetInCart и msAddLinked — формируется сумма товара с учётом выбранных опций.
После применения промо-кода наценка слетает.
и После отмены промо-кода наценка не суммируется обратно.
Вопрос: Как можно изолировать применение к корзине, без учёта цены наценки от опций.
Кейсы — Именные промокоды для пользователя
во второй версии это есть?
В корзине при добавленных опциях через компоненты msSetInCart и msAddLinked — формируется сумма товара с учётом выбранных опций.
После применения промо-кода наценка слетает.
2) Обратиться ко мне и оплатить моё время.
Уточню, что совместимости с данными компонентами я нигде не заявлял и если я буду каждую просьбу в ТП выполнять за свой счёт (с чего бы интересно?), то ни на личную жизнь, ни на собственную работу времени у меня не останется. Но не смотря на этот, вроде бы логичный момент, порой в ТП проскакивают такие наглецы, которые уверены, что любую их просьбу по доработке компонента я должен и обязан выполнить.
P.S. А вот эти решения типа отключения каких-то событий плагина компонента, которые мне некоторые умники предлагают в ТП, я бы не посоветовал никому, ибо называется «Одно лечим, другое калечим»…
на определенные категории товаров и товары. Но что делать если нужно наоборот исключить категорию/товар?
Например есть промокод, который действует на весь ассортимент каталога, за исключением одного товара.
И ещё один момент — в конфиге промокода есть чекбокс — Не применять без скидки, когда он включен,
на фронте применить промокод можно, а в админке к уже существующему заказу с тем же составом товаров нет, так и должно быть? Пишет — в корзине нет товаров, соответствующих этому промо-коду.
2) Не применяется, когда включён. Ни там, ни там.
Все вопросы в ТП, пожалуйста, на Модстор.
Заметил, что компонент ломает работу других плагинов на некоторые события и валит админку с фатальной ошибкой, например простейший плагин для скрытия файлов у медиаисточников, с выключенным плагином mspc2System, прекрасно работает, но стоит включить валится вся админка с fatal error
Код плагина, для примера.
Та же история с компонентом hideSource из modStore, который по сути делает тоже, что и плагин выше, без промокодов работает норм, с включенным компонентом — падает админка.
Скорее всего это происходит из-за того, что код плагина самого компонента, вообще никак не ограничен событиями, то есть работает через все события системы насквозь и по пути что-то ломает.
Я же указал, что проблема решалась отключением Вашего компонента. Оставалось только найти причину, её я так пока и не нашел, но мне удалось её воспроизвести на modhost.
Ставим всего 2 компонента: msPromoCode2 и hideSource
Если у плагина промокодов поставить галку «статичный» — система падает с fatal error
Без галки — всё работает норм
Но если при этом в системе будут какие-то другие плагины с этой галкой, что не редкость для тех, кто работает в IDE, то в консоли в некоторых случаях получаем ошибки вида:
Я пока не знаю почему атрибут «статичный» так влияет на работу плагинов, но как небольшой вывод для себя:
1)У плагина компонента msPromoCode2 не должна стоять галка «статичный» при установленном hideSource
2)Если в системе стоят и msPromoCode2 и hideSource и при этом есть другие статичные плагины, могут быть проблемы. (наблюдаются ошибки в консоли, но не у всех плагинов)
3)Я не утверждаю, что проблема именно в msPromoCode2, она проявляется в связке двух компонентов.
Вот тут тоже очень интересно:
Особенно «работает через все события системы насквозь». Хз, откуда такие выводы.
Не понял, а нахера её ставить? Какой профит? Компонент поставляется с включённой галкой «статичный»? Вроде нет. Так где он из коробки ломает что-то, не пойму? С таким же успехом предлагаю выключить вообще плагин компонента и заявлять в комментариях, что компонент не работает. А потом можно сказать «беру слова обратно» и как ничего и не было, все довольны и счастливы… Только вот я не доволен, что мой труд обосрали и считают, что в порядке вещей просто в конце сказать «беру слова обратно».
Но прошу, раз уж Вы отвечаете на комментарии, помочь разобраться в вопросе.
По поводу галочки — не понятна Ваша позиция, то что из коробки он идет с выключенной. Эта галочка, системная возможность движка и по идее кроме как «откуда брать код плагина» она не должна ни на что влиять, но влияет. И хотелось бы разобраться почему?
Даже если галочка не стоит, и при этом в системе есть другие статичные плагины — в консоль падают ошибки, о не возможности загрузки классов со странными префиксами «mspc2»
И это только когда в систему поставлен также hideSource
В итоге виновником является hideSource и то как он реагирует на статичные плагины.
Прошу прощения за беспокойство и ещё раз извиняюсь за клевету на компонент.
hideSource срабатывает на событие OnMediaSourceGetProperties
В списке событий msPromoCode2 этого события нет, значит плагин не должен реагировать на него.
Но ошибки которые падают в консоль говорят об обратном.
Возникла небольшая проблема. Некорректно отображается всплывающее окно с промокодом (генерируется через сниппет mspc2Generate) на мобильной версии сайта. Нет ни текста, ни кнопок, только пустое окно.
Это связано с тем, что такой функционал не был предусмотрен? или это проблема уже самого конкретного сайта?
Подскажите пожалуйста. Повесил на событие mspc2OnSetProductDiscountPrice плагин, который отменяет применение скидки к определенным товарам в корзине. Но суть в том, что например если в корзине 3 товара и 2 из них из этой категории и скидка купона равна 600 рублей, то применяется лишь 200. Т.е. она заранее делится на равные части, можно ли как-то это обойти?
Как сделать так, чтобы пользователь мог применить промокод только один раз. При этом количество пользователей, которые могут применить промокод не ограничено.
В самом простом варианте на статусы заказов не смотрим — есть оформленный заказ пользователя с этим промокодом, значит больше этот промокод пользователь применить не может.
При вводе промо-кода срабатывает событие. На это событие написать плагин, который будет проверять. есть ли у этого пользователя подобный промо-код в профиле.
А в вашем модуле такой функционал не планируется?
Я поторопился с ответом и принял вас за разработчика модуля )
Выборка позволит получить заказы пользователя с нужным промокодом. Вешаем эту выборку и логику проверки на событие mspc2OnBeforeSetCoupon. В доке есть кейс, как отменить применение промокода на этом событии.
P.S. Сорри за долгий ответ.
казалось бы очевидная штука — но ее нет
минишоп 3.0.5 + msPromoCode2 1.1.22-beta
в корзине не обновляется сумма скидки при увеличении или уменьшении количества товара, ошибок в консоли нет.
в остальном проблем нет) шикарная штука
msminicartdynamic.js
с 65 строки
не смог перенести дамп базы таблицы modx_ms2d_coupons
и вот это крайне озаботило
Конфликт кастомного модуля pricecar (применяет цену к товарам, относительно того в какой группе находится пользователь) на событие msOnGetProductPrice с msPromoCode2. Если приоритет msPromoCode2 выше, то промокод применяется, если ниже, то пишет что нет товара к которым можно применить, а модуль pricecar отображает цену в корзине не корректно, если приоритет выше у msPromoCode2.