208 похожих чатов

Копаюсь в api правил корзины и что-то пока не могу

сообразить - можно ли к конкретному товару применить правило просто чтоб посмотреть цену со скидкой, но не менять её по факту в корзине?
Задача примерно следующая - например у меня при покупке чехла вместе с телефоном, на телефон даётся скидка 10%.
Мне нужно в карточке товара сделать кнопку, типа "Посмотреть цену при покупке чехла". При нажатии на эту кнопку появляется сообщение наподобие "Если добавите к заказу чехол то ваш телефон будет стоить 9000 вместо 10000."

Просто рассчитать цену в скрипте не подходит, так как там на самом деле очень сложное правило корзины из 12 разных условий и 6 возможных размеров скидки.

7 ответов

11 просмотров

Примерный план действий при клике на кнопку: 1. Создаете виртуальную корзину 2. Добавляете в нее телефон и чехол 3. Вызываете расчет цен корзины

Alexey-Nazarov Автор вопроса
Ruslan
Примерный план действий при клике на кнопку: 1. Со...

Спасибо. Думал про что-то такое, но надеялся есть попроще варианты. Типа getPriceWithDiscount($productId, $discountId) Придётся самому писать😁

Alexey-Nazarov Автор вопроса

Если кому интересно, то не стал делать манипуляции с виртуальными заказами/корзинами. Правила и размеры скидок получил через CSaleDiscount::GetByID(), обработав его до простого читаемого массива. Все данные записал в js объект и отдал обработчику в script.js. Там, после проверки всех условий, выбирается размер скидки и покупателю показывается возможная цена со скидкой.

Alexey Nazarov
Если кому интересно, то не стал делать манипуляции...

Считайте, что пошли по канату без страховки.

Alexey-Nazarov Автор вопроса
Eugene Zhukov
Считайте, что пошли по канату без страховки.

Ну, для моей задачи этого хватило. Условий много, но они однотипные, я их все собрал в простой объект и отдал в js. Сейчас, если в правило корзины добавить или убрать какие-то условия, то всё аналогично подтягивается. К тому же это просто информационная фича, а не настоящая скидка. На скрине собираются параметры по свойству товара. Потом в шаблоне детальной страницы товара проверяется принадлежность товара к нужному разделу, в скрытый инпут записывается значение свойства от которого зависит размер скидки. Если товар из нужного раздела, то появляется кнопка "Посмотреть цену при самовывозе". При нажатии срабатывает js, который считывает значение свойства из скрытого инпута, перебирает объект со скидками, находит подходящую, применяет её к текущей цене и показывает пересчитанную цену пользователю. Но если подскажете какой способ для этой задачи наиболее правильный, то буду очень благодарен.

Alexey Nazarov
Ну, для моей задачи этого хватило. Условий много, ...

Вам его выше сказали - создать объект заказа и получить из него обьект скидок. Самый надежный и универсальный.

Alexey-Nazarov Автор вопроса

Похожие вопросы

Обсуждают сегодня

вопрос: кто как решает вопрос с динамической подгрузкой скриптов для отдельных страниц с включенным turbo router?
Sergei Toroptsev
25
Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
> комьюнити я бы не судил по этому чату. Как мы видели по статам просмотров нескольких телеговских постов, то в чате их набивается 30-40 или даже выше, когда как общаются акти...
Constantin F.
4
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Как сделать чтобы short точно был 2 байта, int точно 4 байта ?(без стандартных библиотек, ну типа без int16_t, int32_t)
#
8
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Всем привет. Испытываю проблемы в работе БД, а именно огромного роста логов, такого характера: 024-05-16 18:39:07 +05 sentry sentry [unknown] 1050169 7-1 app-sentry01.corp.ru>...
Alexey
2
Только такой if ($modx->event->name == 'OnBeforeCartItemAdding') { $meta = $params['item']['meta']; $lang = $modx->getConfig('_lang'); // проверяем, задана ли опция i...
Multi Web
1
Хм. А телеграм апи работают через HTTP?
The Bird of Hermes
14
Карта сайта