Спарвка по данному событию. Оно происходит до окончания перерасчета стоимости корзины
https://dev.1c-bitrix.ru/api_d7/bitrix/sale/events...
/// проверка пользователей для применения купона WELCOME10
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale', 'OnBeforeSaleOrderFinalAction', 'chkCupon'
);
function chkCupon(Bitrix\Main\Event $event) {
$groupId = 10;
$couponName = 'WELCOME10';
$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);
}
}