В обработчике события OnSaleComponentOrderResultPrepared делаем следующее: 1) Получаем список активных правил корзины 2) Проверяем, подходит ли какое-либо правило под сумму товаров в корзине. 3) Получаем размер скидки этого правила (пусть например 15%) 4) Ищем среди существующих купонов многоразовый купон, который даёт скидку 15% (заранее создать в админке по одному многоразовому купону для каждого правила) 5) Применяем этот купон через CCatalogDiscountCoupon::SetCoupon .
Решение похоже на финт ушами, админ делает лишнюю работу : к каждому правилу работы с корзиной создаётся по купону, хотя правила работы с корзиной должны и так работать. До конца не уверен, все ли пункты можно реализовать средствами API. Да и решение это корявое, по сути делаем ту работу, которую должен бы был сделать битрикс.
Потом ещё один ньюанс: если применяется в корзине одновременно купон и правило работы с корзиной, то скидка формируется по какому-то хитрому алгоритму, т.е., например купон на скидку 50% и правило работы со скидкой 10% дадут в итоге 53.5% . Соответственно, мой велосипед это пока-что не учитывает и велосипед придётся модифицировать ещё и под эту ситуацию.
Гладышев Сергей написал: Потом ещё один ньюанс: если применяется в корзине одновременно купон и правило работы с корзиной, то скидка формируется по какому-то хитрому алгоритму, т.е., например купон на скидку 50% и правило работы со скидкой 10% дадут в итоге 53.5% .
Никаких хитростей. Изначально все процентные скидки рассчитывались от текущей (т.е. цены на момент применения). В версии 15.0 вышла настройка в модуле sale - "Процентная скидка/наценка рассчитывается для полной цены товара". У Вас она, судя по всему, снята (т.е. сохранено изначальное поведение). Хотя в итоге должна быть скидка 55%. Правила округлений используете?
Цитата
Гладышев Сергей написал: написал ещё утром. жду пока ответа.
Номер тикета?
Не надо сверлить зубы через задний проход дрелью от Сваровски
. Хотя в итоге должна быть скидка 55%. Правила округлений используете?правила округлений используются. а алгоритм там такой: если применён промокод, то при заказе от 5000 р. - скидка = [скидка промокода + 2.5% (скидка правила работы с корзиной - 5%)] от 6000 р. - скидка = [скидка промокода + 3.5% (скидка правила работы с корзиной - 7%)] от 10000 р. - скидка = [скидка промокода + 5% (скидка правила работы с корзиной - 10%)] от 15000 р. - скидка = [скидка промокода + 7.5% (скидка правила работы с корзиной - 15%)] ну да, к скидке по промокоду прибавляется половина скидки правила работы с корзиной
а это у них тактика такая. привыкайте при создании тикета сразу давать доступ к сайту: сайт, логин, пароль. а также версии всего и вся, а то вы ответ до 31 не получите
мда. вообщем как всегда. бэкап-то есть? после кучи фейлов битрикса, мы обновляемся 1-2 раза в год, предварительно подняв копию сайта, с новыми обновлениями и тестируем ее по чек-листу. если все ок, то обновляем боевой, иначе пишем тикеты
На странице оформления заказа купон корзины применяется.
После оформления заказа, в панели в инфо о заказе код промокода отображается, но со скидкой 0% ( Если заглянуть в историю изменений по заказу, то видно после сохранения налогов появляется изменение цены товара СО скидкой на цену БЕЗ скидки. И следующая операция пересчитывает общую сумму заказов
На странице оформления заказа купон корзины применяется.
После оформления заказа, в панели в инфо о заказе код промокода отображается, но со скидкой 0% ( Если заглянуть в историю изменений по заказу, то видно после сохранения налогов появляется изменение цены товара СО скидкой на цену БЕЗ скидки. И следующая операция пересчитывает общую сумму заказов
Куда копать?
Роман, привет, у меня тоже самое, не нашли проблему и её решение?