Сообщение о скидке битрикс
Обновлено: 28.06.2024
Задача: показать, текущему авторизованному, пользователю сумму всех выполненных заказов и процент накопительной скидки- доступной на данный момент.
В модуле маркетинга создана вот такая накопительная скидка:
В целом, задача решается легко: нам нужно получить все заказы текущего пользоватетеля и сопоставить попадание их суммы в диапазон накопительной скидки:
Получить сумму всех выполненных заказов пользователя
Для этого воспользуемся API методом Order::getList класса \Bitrix\Sale\Order, который дастн нам всю информацию обо всех заказах (вообще всех).
С помощью select отбираем, только, стоимость заказа (PRICE), так как вся остальная информация нам не нужна. И с помощью фильтра отбираем заказы текущего пользователя, которые находятся в статусе N (Выполнен)
Таким образом, в переменной $bunusPrice, получаем сумму всех выполненных заказов текущего пользователя
Получить данные о накопительной скидке через API
Теперь, получим все параметры накопительной скидки c методом CCatalogDiscountSave::GetList
Теперь, в массиве $arResult['ALL_DISCOUNTS'] все параметры накопительной скидки, самое главное диапазоны применения скидок, в VALUE и RANGE_FROM.
Выводим текущую скидку и потраченную сумму
Осталось самое простое, найти в массиве $arResult['ALL_DISCOUNTS'] конкретную скидку для переменной $bunusPrice
Просто, прогоняем массив через foreach с индексом и внутри него находим текущий диапазон, смещаясь по индексу.
Да можно было воспользоваться более простым вариантом for или while для поиска диапазона в массиве. Но, решил оставить больше гибкости для компонента. Если понадобится, допишу в комментарии.
В общем-то и все. Проверка на статус заказа вполне надежна, так как сюда не попадут отмененные заказ. Если нужна сверх надежность (хотя избыточна), можно получить сумму из оплаченных заказов (которые в статусе "Оплачен" и не "Возврат") классом \Bitrix\Sale\PaymentCollection
Компонент: вывод текущей скидки пользователю
На базе написанного выше, сделал набросок-компонент "Бонусная система" - название не очень удачное, но переименовать можете сами. Языковые файлы не создавал, названия параметров прямо в .parameters.php
После добавления, компонент попадет в "Служебные -> Пользователь -> Бонусная система" (хотя, не плохо переместить его в "магазин")))
Параметров у компонента всего 3:
- Выбор шаблона. Работает как и все, можно копировать
- Выбор скидки. Если у вас их несколько сюда подтянутся все
- Выбор статуса заказа. Не очень нужно, так как компонент имеет смысл только на выполненных заказах. Но, если захотите его расширить, может пригодиться.
Сам шаблон просто, без верстки. Но распечатав массив $arResult можно поиграться с данными и сделать например так (слайдер всех этапов скидки с показом текущей):
Далее можно развивать компонент как угодно, добавлять новые данные в массив и . в общем, фантазировать как угодно)
Читайте также: