Смотрел код, который типа поправили в модуле vote в версии 21.0.100, нашёл такой же код в модуле disk, который не поправляли. Т.ч., возможно, что не конец истории
Антон Козлов написал: p.s. скидка модуля catalog, кстати, если это имеет значение.
Да, имеет. Причем решающее. Вешайте обработчик на событие OnGetOptimalPrice либо на OnGetOptimalPriceResult. В первом можно реализовать полностью свою логику, во втором - повлиять на результат и список примененных скидок торгового каталога.
Евгений Жуков написал: Антон, вы не понимаете, что такое купон и как он работает. Купон - всего-навсего еще одно условие применения скидки. С ним ничего делать не надо. Нужно добавлять условия в саму скидку. Об этом я вам уже говорил.
Наверное, не понимаю. У меня есть задача - мне нужно отменить скидку, которая применилась при использовании купона. Скидка применяется ко многим клиентам одновременно(т.е. играться с её условиями на лету - не вариант), я же хочу отменить её у конкретного клиента, который не имеет на неё права - потому что уже ранее использовал её купон - как это сделать?
p.s. скидка модуля catalog, кстати, если это имеет значение.
Евгений Жуков написал: На основании событий менеджера купонов - нет.
Да на основании чего угодно. Вот применил я купон, хожу по страницам сайта, ушёл, через неделю вернулся на сайт, купон за это время изменил скидку, например, или исчез вообще. Как его отменить у покупателя в корзине?
Валерий Дьяченко написал: Решил задачу отмены примененного купона следующим образом.
Здравствуйте, Валерий. Да, такое решение вполне подходит, если все условия проверки купона постоянны. У нас ситуация такая - есть купоны одноразовые на клиента - можно применить только на первый заказ, все последующие не должны применяться. Ваше решение тут не подойдёт потому что неавторизованным пользователь может ввести ранее использовавшийся им купон, а потом авторизоваться и в этом случае мне нужно деактивировать введённый им купон.
Евгений Жуков написал: Для того, чтобы отменить успешный купон, надо откатить результат его применения (изменения цен). Данное событие не даст реализовать подобный сценарий, т.к. вызывается в процессе расчета. Оно создавалось именно для отслеживания успешного применения. Решать задачу учета количества использований можно лишь через кастомные условия правил корзины. Подобный функционал запланирован, но конкретных сроков назвать не можем.
Егвений, а почему нельзя решить подобный функционал через событие EVENT_ON_BEFORE_COUPON_APPLY и Вы так категорично против него настроены? Кому надо - допилили бы функционал, ведь решило бы проблему.
Как мне поступить в моём случае? - подскажите решение, поделитесь опытом.
Антон Козлов написал: Стоит задача сделать многоразовый купон (для множества клиентов), но на один заказ на клиента.
Можно воспользоваться событием Bitrix\Sale\DiscountCouponsManager::EVENT_ON_COUPON_APPLY . Проверяем - если данный купон нам не подходит - удаляем данный купон из списка активированных купонов пользователя. Если все норм - оставляем.
Алексей написал: Так если у вас в произвольном месте это происходит, то почему бы не разрулить непосредственно в методе , которым обрабатываете ввод купона?
Потому что это происходит в sale.basket.basket, который кастомизировать тоже не очень хочется. По ходу единственное решение на JS проверять ввод поля.
Антон Козлов написал: Тогда какие есть варианты решения поставленной задачи?
Предлагаю вариант через OnSaleComponentOrderShowAjaxAnswer. Костыльно, да. Но куда деваться. Зато, без модификации компонента и без потери обновлений. Смотрим на введеный посетителем код купона, анализируем, делаем, что надо и возвращаем соответствующий код. Чуть выше кидал ссылку на аналогичное решение.
Это не подходит, т.к. купон вводится в корзине, до заказа. Ну, и хочется вообще предусмотреть ввод купона до корзины или заказа - маркетинг такой маркетинг...
Здравствуйте, Евгений. Скажите, есть ли событие перед активацией купона клиентом? Стоит задача сделать многоразовый купон (для множества клиентов), но на один заказ на клиента. Варианты делать ограничения на проверку поля ввода и на событиях пересчёт OnOptimalPrice - идеологически неправильные в данном случае.
Здравствуйте. Нужно сделать так, чтобы на определённые товары (свойство инфоблока - отличие) не распространялись никакие скидки. Со скидками каталога помогает OnGetOptimalPrice, а как быть с купонами модуля sale чтобы отменить применение скидки для конкректных товаров?
В связи расширением отдела разработки, ищем квалифицированных программистов 1С-Битрикс (в штат, возможна удалённая работа, частичная занятость).
От соискателя: - наличие портфолио; - наличие сертификатов "Администратор - Бизнес", "Разработчик Bitrix Framework"; - понимание JS хотя бы в рамках JQuery; - желательно умение переводить разработанные сторонними программистами сайты на Композит; - адекватная оценка ТЗ по нормо-часам с разблюдовкой.
От нас: - адекватная, конкурентоспособная оценка нормо-часа по результатам собеседования; - повышение квалификации за счёт компании; - полноценные технические задания (разработчик - разработчику); - ненормированный рабочий день при соблюдении и выполнении спринтов; - неограниченный объем работ.
Ждём ваши резюме: - на почту - в скайп black-sun.ru
Иван Неслуховский написал: если в коризине пользователя уже лежали товары, то они объединятся с теми, что были набраны неавторизованным посетителем
Естественно.
Евгений, здравствуйте. А что - функцию перекрыли? В /bitrix/modules/sale/mysql/basket.php она закомментирована. Её чем-то заменили или вообще убрали пожизненно?
Используем CIBlockElement::GetList() с сортировкой и группировкой(элементы группируются по одному св-ву, а сортируются по другим). В силу универсальности API для разных БД в формирующемся запросе в группировку автоматически попадают все поля из сортировки, т.е. группировки не происходит.
Изначально задача стоит так: для облегчения запроса в бд сначала выбираются элементы с разными группами в количестве 4-х шт на страницу. Следующим запросом выбираются все товары с указанной группой и выводятся на страницу. Т.е. сортировка внутри каталога должна примениться в первом запросе.
Вопрос - как выбрать из базы 4 группы товаров так, чтобы: 1) сортировка каталога сохранилась 2) не выбирались все товары, а можно было бы использовать стандартную постраничку
RPM-пакет BitrixEnv4.2 и виртуальная машина BitrixVM4.2
Коллеги, здравствуйте. У контент-менеджером то и дело возникают проблемы с фильтрами в админке по пользовательским свойствам, например, "привязка к пользователю", когда ищем пользователя с id 45, а находим параллельно 1000 других типа 1445, 445 и т.д.
Куча идей на эту тему в idea.1c-bitrix-ru и все в статусе "На голосовании", некоторые уже более двух лет - т.е. от битрикса реализации мы не дождемся.
Появилась идея расширить стандартный функционал модуля iblock в админской стороне в части фильтрации. Вопрос, собственно, заключается в том как сделать расширение так, чтобы оно не было затерто с обновлением + монитор качества не показывал изменений в файлах ядра.
RPM-пакет BitrixEnv4.2 и виртуальная машина BitrixVM4.2