Да, как раз этот вариант и нашел:
[CODE]\Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSalePaymentSetField', 'changePay');
function changePay(\Bitrix\Main\Event $event)
{
$arParameters = $event->getParameters();
if($arParameters['NAME']=='PAY_SYSTEM_ID'){
if(($arParameters['VALUE']==7 && $arParameters['OLD_VALUE']==4) || ($arParameters['VALUE']==6 && $arParameters['OLD_VALUE']==7)) {
\Bitrix\Main\Loader::includeModule('sale');
$orderEnt = $event->getParameter("ENTITY");
$arPayVals = $orderEnt->getFields()->getValues();
$order = \Bitrix\Sale\Order::load($arPayVals['ORDER_ID']);
$discount = $order->getDiscount();
\Bitrix\Sale\DiscountCouponsManager::clearApply(true);
\Bitrix\Sale\DiscountCouponsManager::useSavedCouponsForApply(true);
$discount->setOrderRefresh(true);
$discount->setApplyResult(array());
$basket->refreshData(array('PRICE', 'COUPONS'));
$discount->calculate();
$order->save();
}
}
}[/CODE]
[CODE]\Bitrix\Main\EventManager::getInstance()->addEventHandler('sale', 'OnSalePaymentSetField', 'changePay');
function changePay(\Bitrix\Main\Event $event)
{
$arParameters = $event->getParameters();
if($arParameters['NAME']=='PAY_SYSTEM_ID'){
if(($arParameters['VALUE']==7 && $arParameters['OLD_VALUE']==4) || ($arParameters['VALUE']==6 && $arParameters['OLD_VALUE']==7)) {
\Bitrix\Main\Loader::includeModule('sale');
$orderEnt = $event->getParameter("ENTITY");
$arPayVals = $orderEnt->getFields()->getValues();
$order = \Bitrix\Sale\Order::load($arPayVals['ORDER_ID']);
$discount = $order->getDiscount();
\Bitrix\Sale\DiscountCouponsManager::clearApply(true);
\Bitrix\Sale\DiscountCouponsManager::useSavedCouponsForApply(true);
$discount->setOrderRefresh(true);
$discount->setApplyResult(array());
$basket->refreshData(array('PRICE', 'COUPONS'));
$discount->calculate();
$order->save();
}
}
}[/CODE]