[QUOTE]Иван Золин написал:
Создаёте группу пользователей. Например "Для купона ВСЕПО300".
В неё добавляете всех пользователей из группы Зарегистрированные пользователи.
В Настройки - Модули - Главный модуль - Авторизация. Ставите что при регистрации новые пользователи добавлялись в ещё одну группу "Для купона ВСЕПО300".
У меня новый битрикс 18 и я использую Правила работы с корзиной (который уже по новому формату идет).
Там создаёте правило для корзины и в нём купон многоразовый. Ограничение ставите на Группы пользователей "Для купона ВСЕПО300". Купон в правиле так и будет называться "ВСЕПО300".
Запоминаем ID группы. Он нам пригодится в коде. Например новая группа с ID 18.
Дальше в init.php описываем событие, которое будет проверять создан ли заказ с купоном "ВСЕПО300" и если купон присутствует там, то пользователя отвязать от группы "Для купона ВСЕПО300". И дальше купон не примениться для этого пользователя, так как он не будет находится в этой группе. Функционал рабочий, сами используем.
[CODE] \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 );
}
} [/CODE][/QUOTE]
Спасибо за решение) Только оно не совсем полноценно работает для неавторизованных пользователей - они не видят величину скидки по купону ни в корзине, ни при оформлении, а только после авторегистрации в оформлении.
А разработчикам БУСа: пилить такие костыли на пустом месте - это ж бред какой-то, потратил 3 часа на, казалось бы, очевидные для скидок вещи и то не все получилось - логика со скриншотов не работает для неавт. пользователей. Почему? А бог его знает, перепробовал все варианты, толку 0
Создаёте группу пользователей. Например "Для купона ВСЕПО300".
В неё добавляете всех пользователей из группы Зарегистрированные пользователи.
В Настройки - Модули - Главный модуль - Авторизация. Ставите что при регистрации новые пользователи добавлялись в ещё одну группу "Для купона ВСЕПО300".
У меня новый битрикс 18 и я использую Правила работы с корзиной (который уже по новому формату идет).
Там создаёте правило для корзины и в нём купон многоразовый. Ограничение ставите на Группы пользователей "Для купона ВСЕПО300". Купон в правиле так и будет называться "ВСЕПО300".
Запоминаем ID группы. Он нам пригодится в коде. Например новая группа с ID 18.
Дальше в init.php описываем событие, которое будет проверять создан ли заказ с купоном "ВСЕПО300" и если купон присутствует там, то пользователя отвязать от группы "Для купона ВСЕПО300". И дальше купон не примениться для этого пользователя, так как он не будет находится в этой группе. Функционал рабочий, сами используем.
[CODE] \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 );
}
} [/CODE][/QUOTE]
Спасибо за решение) Только оно не совсем полноценно работает для неавторизованных пользователей - они не видят величину скидки по купону ни в корзине, ни при оформлении, а только после авторегистрации в оформлении.
А разработчикам БУСа: пилить такие костыли на пустом месте - это ж бред какой-то, потратил 3 часа на, казалось бы, очевидные для скидок вещи и то не все получилось - логика со скриншотов не работает для неавт. пользователей. Почему? А бог его знает, перепробовал все варианты, толку 0