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

OnBeforeAddPosition

Событие вызывается перед добавлением товара в массив позиций МС для отправки. Можно модифицировать добавляемую позицию в МС.
//Пример кода нужно вставить в файл init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moysklad',
'OnBeforeAddPosition',
'OnBeforeAddPositionHandler'
);
function OnBeforeAddPositionHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$basketItem= $eventParams['basketItem']; //объект позиции корзины в БУС
$currXmlId= $eventParams['currXmlId']; //внешний код добавляемой позиции
$positionParams = $eventParams['positionParams']; //массив параметров позиции, который можно модифицировать перед отправкой
$productObj= $eventParams['productObj']; //объект товара в МС
//Например прибавим количество товара в позиции:
//$positionParams['quantity'] += 2;
// \Rbs\Moysklad\Logger::debugMsg($positionParams, 'OnBeforeAddPositionHandler.txt'); // записываем логи в папку /bitrix/modules/rbs.moysklad/logs/
//Отправляем \Bitrix\Main\EventResult::SUCCESS только в случае, если нужно поменять параметры позиции
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $positionParams);
}

OnAfterSetBasketPositions

Событие вызывается после обработки всех позиций (событие выше) и перед отправкой их в МС. Можно использовать для добавления \ удаления \ изменения позиций корзины перед отправкой в МС.
//Пример кода нужно вставить в файл init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moysklad',
'OnAfterSetBasketPositions',
'OnAfterSetBasketPositionsHandler'
);
function OnAfterSetBasketPositionsHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$positions = $eventParams['positions']; //массив всех позиций корзины для отправки в МС
//Например удалим последнюю позицию перед отправкой:
//array_pop($positions);
// \Rbs\Moysklad\Logger::debugMsg($positions, 'OnAfterSetBasketPositionsHandler.txt'); // записываем логи в папку /bitrix/modules/rbs.moysklad/logs/
//Отправляем \Bitrix\Main\EventResult::SUCCESS только в случае, если нужно поменять параметры позиции
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $positions);
}

OnBeforeCreateProductMs

Событие вызывается перед созданием товара в МС. Необходимо для модификации создаваемых позиций в МС.
//Пример кода нужно вставить в файл init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moysklad',
'OnBeforeCreateProductMs',
'OnBeforeCreateProductMsHandler'
);
function OnBeforeCreateProductMsHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$basketItem = $eventParams['basketItem']; //объект позиции корзины в БУС
$currXmlId = $eventParams['currXmlId']; //внешний код добавляемой позиции
$createItemArray = $eventParams['createItemArray']; //массив параметров позиции, который можно модифицировать перед отправкой
$entityType = $eventParams['entityType']; //тип добавляемого объека (на данный момент только product)
//Например добавим в название добавляемой позиции постфикс в название
//$createItemArray['name'] .= ' (from site)';
// \Rbs\Moysklad\Logger::debugMsg($createItemArray, 'OnBeforeCreateProductMsHandler.txt'); // записываем логи в папку /bitrix/modules/rbs.moysklad/logs/
//Отправляем \Bitrix\Main\EventResult::SUCCESS только в случае, если нужно поменять параметры позиции
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $createItemArray);
}