Создаёте группу пользователей. Например "Для купона ВСЕПО300".
В неё добавляете всех пользователей из группы Зарегистрированные пользователи.
В Настройки - Модули - Главный модуль - Авторизация. Ставите что при регистрации новые пользователи добавлялись в ещё одну группу "Для купона ВСЕПО300".
У меня новый битрикс 18 и я использую Правила работы с корзиной (который уже по новому формату идет).
Там создаёте правило для корзины и в нём купон многоразовый. Ограничение ставите на Группы пользователей "Для купона ВСЕПО300". Купон в правиле так и будет называться "ВСЕПО300".
Запоминаем ID группы. Он нам пригодится в коде. Например новая группа с ID 18.
Дальше в init.php описываем событие, которое будет проверять создан ли заказ с купоном "ВСЕПО300" и если купон присутствует там, то пользователя отвязать от группы "Для купона ВСЕПО300". И дальше купон не примениться для этого пользователя, так как он не будет находится в этой группе. Функционал рабочий, сами используем.
В неё добавляете всех пользователей из группы Зарегистрированные пользователи.
В Настройки - Модули - Главный модуль - Авторизация. Ставите что при регистрации новые пользователи добавлялись в ещё одну группу "Для купона ВСЕПО300".
У меня новый битрикс 18 и я использую Правила работы с корзиной (который уже по новому формату идет).
Там создаёте правило для корзины и в нём купон многоразовый. Ограничение ставите на Группы пользователей "Для купона ВСЕПО300". Купон в правиле так и будет называться "ВСЕПО300".
Запоминаем ID группы. Он нам пригодится в коде. Например новая группа с ID 18.
Дальше в init.php описываем событие, которое будет проверять создан ли заказ с купоном "ВСЕПО300" и если купон присутствует там, то пользователя отвязать от группы "Для купона ВСЕПО300". И дальше купон не примениться для этого пользователя, так как он не будет находится в этой группе. Функционал рабочий, сами используем.
Код |
---|
\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', 'OnSaleOrderEntitySaved', 'OnStatusChange' ); function OnStatusChange(Bitrix\Main\Event $event) { $groupId = 18; $couponName = 'ВСЕПО300'; $order = $event->getParameter("ENTITY"); $arOrderVals = $order->getFields()->getValues(); $orderId = $arOrderVals['ID']; $userId = $order->getUserId(); $discountData = $order->getDiscount()->getApplyResult(); if (key($discountData['COUPON_LIST']) == $couponName) { $arGroups = CUser::GetUserGroup($userId); unset($arGroups[array_search($groupId, $arGroups)]); CUser::SetUserGroup($userId, $arGroups); } } |