События позволяют менять поля товара после полного рассчета остатков для него. В модуле используется для смены поля QUANTITY у товара. Фактически результат события записывается в товар следущим методом:
[OnBeforeUpdateProductInStockRow] Для вкладки "Остатки"
Это событие стоит применять если используете вкладки "Остатки"
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moyskladstocks',
'OnBeforeUpdateProductInStockRow',
'OnBeforeUpdateProductInStockRowHandler'
);
function OnBeforeUpdateProductInStockRowHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$arUpdateProductFields = $eventParams['arUpdateProductFields']; //поля товара, можно изменять любые поля, но модуль здесь передает только рассчитанное доступное количество
$productId= $eventParams['productBx']; //передается ID товара
$currentStocks= $eventParams['currentStocks']; //передаются текущие остатки ДО изменения, ключи массива -- это ID склада
$productInfoStocks= $eventParams['productInfoStocks']; //передается полный массив данных которые влияют на изменения остатков, ниже описаны ключи массива
$msStocks = $productInfoStocks['MS_STOCKS']; //актуальные остатки из МС
$bxQuantity = $productInfoStocks['BX_QUANTITY']; //поле "доступное количество" ДО изменения
$bxStocks = $productInfoStocks['BX_STOCKS']; //тоже самое что и в $currentStocks (для совместимости)
//возвращаем SUCCESS если нужно поменять массив полей товара, этот массив замениться тем, что передает модуль в товар
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $arUpdateProductFields);
}
[OnBeforeUpdateProductInCurrentStockRow] для вкладки "Быстрые остатки"
Событие полностью аналогично событию выше, но работает при передаче быстрых остатков
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moyskladstocks',
'OnBeforeUpdateProductInCurrentStockRow',
'OnBeforeUpdateProductInCurrentStockRowHandler'
);
function OnBeforeUpdateProductInCurrentStockRowHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$arUpdateProductFields = $eventParams['arUpdateProductFields']; //поля товара, можно изменять любые поля, но модуль здесь передает только рассчитанное доступное количество
$productId= $eventParams['productBx']; //передается ID товара
$currentStocks= $eventParams['currentStocks']; //передаются текущие остатки ДО изменения, ключи массива -- это ID склада
$productInfoStocks= $eventParams['productInfoStocks']; //передается полный массив данных которые влияют на изменения остатков, ниже описаны ключи массива
$msStocks = $productInfoStocks['MS_STOCKS']; //актуальные остатки из МС
$bxQuantity = $productInfoStocks['BX_QUANTITY']; //поле "доступное количество" ДО изменения
$bxStocks = $productInfoStocks['BX_STOCKS']; //тоже самое что и в $currentStocks (для совместимости)
//возвращаем SUCCESS если нужно поменять массив полей товара, этот массив замениться тем, что передает модуль в товар
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $arUpdateProductFields);
}