Перейти к основному содержимому

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

[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);
}