Август 31, 2022
Теги: События, Модули grain, Интеграция с iiko
Снятие флага активности для отсутствующих товаров. Для модуля Интеграция с iiko. Используется событие "OnAfterSyncElementAsProductPropertyUpdate".
При использовании стоп-листа, товары с количеством 0 будут помечаться как неактивные с помощью данного кода:
<?php
namespace Partner;
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'grain.iiko',
'OnAfterSyncElementAsProductPropertyUpdate',
'\Partner\AvailableActivity::onAfterSyncElementAsProductPropertyUpdate'
);
class AvailableActivity
{
public static function onAfterSyncElementAsProductPropertyUpdate(\Bitrix\Main\Event $event)
{
// на этапе вызова события элемент инфоблока создан или обновлен, также обновлены данные товара и свойства
$restaurant = $event->getParameter('RESTAURANT'); // массив с данными ресторана
$fields = $event->getParameter('PROP_TO_PRODUCT'); // соответствие название свойств и полей товара из iiko
$id = $event->getParameter('ID'); // ID элемента инфоблока
$product = $event->getParameter('PRODUCT'); // данные товара из iiko
if(!\Bitrix\Main\Loader::includeModule('catalog'))
return;
$productResult = \Bitrix\Catalog\ProductTable::getList(array(
'select' => array('AVAILABLE'),
'filter' => array('=ID'=>$id),
'limit' => 1,
));
if($catalogProduct=$productResult->fetch())
{
\Bitrix\Iblock\ElementTable::update($id,array('ACTIVE'=>$catalogProduct['AVAILABLE']));
}
}
}