Событие импорта цен
Доступно с версии 3.3.0
[OnPriceStepImported] Событие после шага импорта цен
Событие OnPriceStepImported срабатывает после завершения очередного шага импорта цен из МойСклад. Событие вызывается в классе Rbs\MoyskladStocks\Import\Type\Prices после обработки каждой порции товаров.
- Описание события
- Пример вызова события
Когда срабатывает
При автоматическом импорте цен через агент, при ручном запуске импорта цен из админки, при импорте цен из объекта МойСклад (webhook и т.д.).
Параметры события
| Параметр | Тип | Описание |
|---|---|---|
entity | string | Тип сущности: product, variant, bundle, service |
changedProductsIds | array | Массив ID товаров (b_iblock_element.ID), у которых изменились цены на текущем шаге |
productInfoArray | array | Ассоциативный массив с информацией о ценах из МойСклад для всех товаров шага |
Важные замечания
changedProductsIds может быть пустым — если массив пуст, значит на текущем шаге не было изменений цен (цены уже актуальны).
Обработчик вызывается на каждом шаге импорта. При большом каталоге это может быть много вызовов. Избегайте тяжёлых операций в обработчике.
productInfoArray содержит все товары текущего шага, не только изменённые. Для фильтрации используйте changedProductsIds.
ID валют и типов цен — это UUID из МойСклад, не ID из Битрикс. Для маппинга используйте настройки модуля.
//Пример кода нужно вставить в файл init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moyskladstocks',
'OnPriceStepImported',
'OnPriceStepImportedHandler'
);
function OnPriceStepImportedHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$entity = $eventParams['entity']; // Тип сущности: product, variant, bundle, service
$changedProductsIds = $eventParams['changedProductsIds']; // Массив ID товаров с изменёнными ценами
// $productInfoArray — ассоциативный массив с информацией о ценах из МойСклад
// Структура:
// [
// 47520 => [ // ID товара в Битрикс
// 'MS_PRICES' => [
// 'cbb10056-e0aa-11f0-0a80-182a000a50bc' => [ // ID типа цены в МойСклад
// 'PRICE' => 3887.24,
// 'CURRENCY' => 'cbb0bdeb-e0aa-11f0-0a80-182a000a50bb' // ID валюты в МойСклад
// ],
// 'minPrice' => [
// 'PRICE' => 0,
// 'CURRENCY' => 'cbb0bdeb-e0aa-11f0-0a80-182a000a50bb'
// ],
// 'buyPrice' => [
// 'PRICE' => 0,
// 'CURRENCY' => 'cbb0bdeb-e0aa-11f0-0a80-182a000a50bb'
// ]
// ]
// ],
// // ... другие товары
// ]
$productInfoArray = $eventParams['productInfoArray'];
if (!empty($changedProductsIds)) {
#WORK_AREA#
// здесь работаем с массивом изменённых товаров
}
}