сообразить - можно ли к конкретному товару применить правило просто чтоб посмотреть цену со скидкой, но не менять её по факту в корзине?
Задача примерно следующая - например у меня при покупке чехла вместе с телефоном, на телефон даётся скидка 10%.
Мне нужно в карточке товара сделать кнопку, типа "Посмотреть цену при покупке чехла". При нажатии на эту кнопку появляется сообщение наподобие "Если добавите к заказу чехол то ваш телефон будет стоить 9000 вместо 10000."
Просто рассчитать цену в скрипте не подходит, так как там на самом деле очень сложное правило корзины из 12 разных условий и 6 возможных размеров скидки.
Примерный план действий при клике на кнопку: 1. Создаете виртуальную корзину 2. Добавляете в нее телефон и чехол 3. Вызываете расчет цен корзины
Спасибо. Думал про что-то такое, но надеялся есть попроще варианты. Типа getPriceWithDiscount($productId, $discountId) Придётся самому писать😁
Если кому интересно, то не стал делать манипуляции с виртуальными заказами/корзинами. Правила и размеры скидок получил через CSaleDiscount::GetByID(), обработав его до простого читаемого массива. Все данные записал в js объект и отдал обработчику в script.js. Там, после проверки всех условий, выбирается размер скидки и покупателю показывается возможная цена со скидкой.
Считайте, что пошли по канату без страховки.
Ну, для моей задачи этого хватило. Условий много, но они однотипные, я их все собрал в простой объект и отдал в js. Сейчас, если в правило корзины добавить или убрать какие-то условия, то всё аналогично подтягивается. К тому же это просто информационная фича, а не настоящая скидка. На скрине собираются параметры по свойству товара. Потом в шаблоне детальной страницы товара проверяется принадлежность товара к нужному разделу, в скрытый инпут записывается значение свойства от которого зависит размер скидки. Если товар из нужного раздела, то появляется кнопка "Посмотреть цену при самовывозе". При нажатии срабатывает js, который считывает значение свойства из скрытого инпута, перебирает объект со скидками, находит подходящую, применяет её к текущей цене и показывает пересчитанную цену пользователю. Но если подскажете какой способ для этой задачи наиболее правильный, то буду очень благодарен.
Вам его выше сказали - создать объект заказа и получить из него обьект скидок. Самый надежный и универсальный.
Спасибо, учту. Хотелось попроще как-то)
Обсуждают сегодня