Сообщение о скидке битрикс

Обновлено: 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 можно поиграться с данными и сделать например так (слайдер всех этапов скидки с показом текущей):

Компонент накопительная скидка битрикс

Далее можно развивать компонент как угодно, добавлять новые данные в массив и . в общем, фантазировать как угодно)

Читайте также: