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

События перед записью поля "Доступное количество"

События позволяют менять поля товара после полного рассчета остатков для него. В модуле используется для смены поля QUANTITY у товара. Фактически результат события записывается в товар следующим методом:

\Bitrix\Catalog\Model\Product::update($productId, $arUpdateProductFields);

[OnBeforeUpdateProductInStockRow] Для вкладки "Остатки"

Это событие стоит применять если используете вкладку "Остатки".

Параметры события

ПараметрТипОписание
arUpdateProductFieldsarrayПоля товара для обновления (по умолчанию только QUANTITY)
productBxintID товара в Битрикс
currentStocksarrayТекущие остатки на складах ДО изменения, ключи — ID склада
productInfoStocksarrayПолный массив данных, влияющих на изменение остатков
qtyByStocksarrayРассчитанные количества по складам

Возвращаемое значение

Верните EventResult::SUCCESS с модифицированным массивом $arUpdateProductFields. Этот массив заменит тот, что передаёт модуль в \Bitrix\Catalog\Model\Product::update().

return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $arUpdateProductFields);
к сведению

Ключи ALL, ALL_MS, ALL_BX и ID складов присутствуют в зависимости от настроек синхронизации. qtyByStocks содержит рассчитанные значения, одно из которых выбирается для записи в QUANTITY.


[OnBeforeUpdateProductInCurrentStockRow] для вкладки "Быстрые остатки"

Событие полностью аналогично событию выше, но работает при передаче быстрых остатков.

Параметры события

ПараметрТипОписание
arUpdateProductFieldsarrayПоля товара для обновления (по умолчанию только QUANTITY)
productBxintID товара в Битрикс
currentStocksarrayТекущие остатки на складах ДО изменения, ключи — ID склада
productInfoStocksarrayПолный массив данных, влияющих на изменение остатков
Отличие от OnBeforeUpdateProductInStockRow

В данном событии не передаётся параметр qtyByStocks. Структура productInfoStocks аналогична событию выше.

Возвращаемое значение

Верните EventResult::SUCCESS с модифицированным массивом $arUpdateProductFields.

return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $arUpdateProductFields);