Задать вопрос
@webdefvika
SMM специалист

Как сделать скидку в корзине по количеству согласных букв в логине пользователя?

Задача сделать на сайте скидку, которая применяется к корзине. Скидка должна быть равна количеству согласных в логине пользователя. Например для человека с логином login скидка будет 3%

Я предположила, что надо сделать обработчик по событию OnBeforeBasketAdd
в этом обработчике у текущего пользователя если он авторизован получать логин далее получить число согласных букв и далее формировать скидку в корзине.

Но вот как создавать саму скидку не понятно?

Каждый раз вызывать обработчик и смотреть список скидок если среди них есть скидка равная числу согласных букв в логине пользователя то получать ID скидки и применять к корзине таким образом:

$basket = Bitrix\Sale\Basket::loadItemsForFUser(Bitrix\Sale\Fuser::getId(), SITE_ID);
$discountApply = $basket->applyDiscount($discountId);


В том случае если скидки нет то создавать скидку так:

$discount = array(
    'LID' => SITE_ID,
    'NAME' => 'Скидка 10%',
    'ACTIVE' => 'Y',
    'DISCOUNT_TYPE' => 'P', // Процентная скидка
    'VALUE' => 10, // 10%
);
$discountId = CSaleDiscount::Add($discount);


И дальше применять созданную скидку по ID к корзине текущего пользователя.

Может быть есть возможность как-то более гибко создавать скидку, например сделать некую динамическую скидку которая будет менять % скидки в зависимости от переданного значения которое будет ей передаваться в обработчике перед добавлением товара в корзине?
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
babarun
@babarun Куратор тега 1С-Битрикс
Безумный план моих идей в руках больных людей
Если без лишних заморочек, то я бы порекомендовал при авторизации/регистрации пользователя привязывать к разным группам, например, "Кол-во согласных в логине N". А для каждой группы добать правило работы с корзиной с соответствующей скидкой.
*Исхожу из предположения что акция у вас будет работать в диапазоне до 10% максимум, т.е. понадобится 10 групп и 10 правил.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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