Апрель 25, 2025
Теги: Инфоблоки, События, Интеграция с iiko
Установка свойства товара с дополнительной единицей измерения из данных внешнего меню. Для модуля Интеграция с iiko.
Данные берутся из itemSizes/measureUnitType. Эти данные не используются штатно в модуле, и не влияют на добавление в корзину и отправку заказов, но могут быть полезны в информационных целях. Возможные значения: "MILLILITER", "GRAM" и другие.
<?php
namespace Partner;
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'grain.iiko',
'OnAfterSyncElementAsProductPropertyUpdate',
'\Partner\SetMeasureProperty::onAfterSyncElementAsProductPropertyUpdate'
);
class SetMeasureProperty
{
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(is_array($product['itemSizes']))
{
$measureUnitType = '';
foreach($product['itemSizes'] as $size)
{
if(isset($size['measureUnitType']) && $size['measureUnitType'])
{
$measureUnitType = $size['measureUnitType'];
break;
}
}
\CIBlockElement::SetPropertyValueCode($id, 'MEASURE_UNIT_TYPE', $measureUnitType);
}
// /проставляем свойство с единицами измерения в элементах инфоблока
}
}