События связанные с контрагентом

[OnCustomCounterPartySearch] Событие перед началом поиска контрагента в МС

Событие вызывается перед началом поиска контрагента в МС при создании заказа. Позволяет прервать поиск контрагента полностью и вернуть нужного контрагента модулю для его дальнейшего использования в создаваемом заказе.

//Пример кода нужно вставить в файл init.php

\Bitrix\Main\EventManager::getInstance()->addEventHandler( 
    'rbs.moysklad', 
    'OnCustomCounterPartySearch', 
    'OnCustomCounterPartySearchHandler'
);

function OnCustomCounterPartySearchHandler(\Bitrix\Main\Event $event)
{
    $eventParams = $event->getParameters();

    $orderId = $eventParams['orderId']; //ID заказа в БУС
    
    $counterParty = null;

    //ниже пример того, что считываем по АПИ контрагента с внешним кодом = BX_USER и тем самым всегда подставляем его в заказ МС 
    $cp = \Rbs\Moysklad\ApiNew::get('/entity/counterparty', ['filter' => 'externalCode=BX_USER']);
    if(!$cp->hasErrors){
        if(property_exists($cp, 'rows') && is_array($cp->rows) && $cp->rows > 0){
            $counterParty = $cp->rows[0];
        }
    }

    if($counterParty !== null){
        //возвращяем найденного контрагента
        return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $counterParty);
    }
}

[OnBeforeCreateCounterParty] Событие перед созданием контрагента в МС

Событие вызывается после поиска контрагента в МС (согласно настройкам модуля) и в случае, если контрагент не найден, модуль его создает и вызывает перед созданием контрагента в МС это событие. Можно использовать для модификации данных контрагента перед созданием в МС.

//Пример кода нужно вставить в файл init.php

\Bitrix\Main\EventManager::getInstance()->addEventHandler( 
    'rbs.moysklad', 
    'OnBeforeCreateCounterParty', 
    'OnBeforeCreateCounterPartyHandler'
);

function OnBeforeCreateCounterPartyHandler(\Bitrix\Main\Event $event)
{
    $eventParams = $event->getParameters();

    $orderId = $eventParams['orderId']; //ID заказа в БУС
    $counterPartyCreateArray= $eventParams['counterPartyCreateArray']; // массив, который отправляется в МС как запрос на создание контрагента
    
    if($orderId > 0){ 
        if($order = \Bitrix\Sale\Order::load($orderId)){
            #WORK_AREA#
            //здесь работаем с заказом БУС и если нужно меняем массив $counterPartyCreateArray
        }
    }
    
    // \Rbs\Moysklad\Logger::debugMsg($counterPartyCreateArray, 'OnBeforeCreateCounterPartyHandler.txt'); // записываем логи в папку /bitrix/modules/rbs.moysklad/logs/
    
    //Отправляем \Bitrix\Main\EventResult::SUCCESS только в случае, если нужно поменять данные перед отправкой
    return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $counterPartyCreateArray);
}

Last updated