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