События

Данный раздел справки находится в стадии наполнения

OnBuildOrderParamsArray - событие при сборке промежуточного массива параметров заказа

Событие возникает при сборке массива параметров заказа. Функция может вернуть измененный массив. Это промежуточный, а не окончательный массив данных для передачи данных в iiko, окончательный массив можно изменить по событию OnBuildIikoOrderBody.

Входные параметры:

Параметр Тип Описание
RESTAURANT Array Массив с данными ресторана
ORDER \Bitrix\Sale\Order object Объект заказа модуля интернет-магазина
PARAMS Array Промежуточный массив параметров заказа
CHECK Boolean Флаг проверки возможности создания заказа. Установлен в true, если производится проверка перед созданием заказа, а не добавление.

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


namespace Partner;


\Bitrix\Main\EventManager::getInstance()->addEventHandler
    
'grain.iiko'
    
'OnBuildOrderParamsArray'
    
'\Partner\IikoOrderEvents::onBuildOrderParamsArray'
); 

class 
IikoOrderEvents
{
    function 
onBuildOrderParamsArray(\Bitrix\Main\Event $event
    {
        
$restaurant $event->getParameter('RESTAURANT');
        
$order $event->getParameter('ORDER');
        
$params $event->getParameter('PARAMS');
        
$check $event->getParameter('CHECK');

        
// изменяем массив $params 

        
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS$params);
        return 
$result;
    }
}

OnBuildIikoOrderBody - событие при сборке окончательного массива параметров заказа

Событие возникает при сборке окончательного массива данных для передачи данных в iiko. Функция может вернуть измененный массив.

Входные параметры:

Параметр Тип Описание
RESTAURANT Array Массив с данными ресторана
ORDER \Bitrix\Sale\Order object Объект заказа модуля интернет-магазина
PARAMS Array Промежуточный массив параметров заказа
BODY Array Окончательный массив параметров заказа для передачи в iiko
CHECK Boolean Флаг проверки возможности создания заказа. Установлен в true, если производится проверка перед созданием заказа, а не добавление.

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


namespace Partner;


\Bitrix\Main\EventManager::getInstance()->addEventHandler
    
'grain.iiko'
    
'OnBuildIikoOrderBody'
    
'\Partner\IikoOrderEvents::onBuildIikoOrderBody'
); 

class 
IikoOrderEvents
{
    function 
onBuildIikoOrderBody(\Bitrix\Main\Event $event
    {
        
$restaurant $event->getParameter('RESTAURANT');
        
$order $event->getParameter('ORDER');
        
$params $event->getParameter('PARAMS');
        
$body $event->getParameter('BODY');
        
$check $event->getParameter('CHECK');

        
// изменяем массив $body

        
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS$body);
        return 
$result;
    }
}

Классы и функции

\Grain\Iiko\Restaurants - класс для работы с ресторанами

Ресторан в рамках модуля является элементом инфоблока, под ID ресторана подразумевается ID элемента инфоблока. ID ресторана в системе iiko сохраняется в поле "Внешний код" (XML_ID) элемента инфоблока и по нему осуществляется синхронизация.

При синхронизации также создаются и заполняются следующие свойства ресторанов:

Название Символьный код в системе 1С-Битрикс
Адрес address
Местоположение location
E-mail email
Телефон phone
Средний чек averagecheque
Iso идентификатор валюты currencyisoname
Домашняя страница homepage
Веб-сайт website
Широта latitude
Долгота longitude
Максимальный бонус maxbonus
Минимальный бонус minbonus
Сетевой идентификатор networkid
Тип организации organizationtype
Временная зона timezone
Режим работы worktime

\Grain\Iiko\Restaurants\getRestaurantByProductId - получение массива ресторана по ID блюда

Возвращает массив с основными полями ресторана (NAME, ID, XML_ID) по ID блюда.

Параметр Описание параметра
$productId ID блюда

\Grain\Iiko\Restaurants::getRestaurantByProductIblockId - получение массива ресторана по ID инфоблока блюд

Возвращает массив с основными полями ресторана (NAME, ID, XML_ID) по ID инфоблока блюда.

Параметр Описание параметра
$productIblockId ID инфоблока блюда

\Grain\Iiko\Restaurants::getRestaurantByOrder - получение массива ресторана из объекта заказа

Возвращает массив с основными полями ресторана (NAME, ID, XML_ID) по объекту заказа.

Параметр Описание параметра
\Bitrix\Sale\Order $order Объект заказа модуля интернет-магазина

\Grain\Iiko\Restaurants::getRestaurantByBasketItem - получение массива ресторана из объекта позиции корзины

Возвращает массив с основными полями ресторана (NAME, ID, XML_ID) по объекту позиции корзины.

Параметр Описание параметра
\Bitrix\Sale\BasketItem $item Объект позиции корзины модуля интернет-магазина

\Grain\Iiko\Restaurants::getRestaurantList - получение списка ресторанов

Возвращает список ресторанов в виде вложенных массивов (NAME, ID, XML_ID) по объекту позиции корзины.

Параметр Описание параметра
$filter=false Дополнительный фильтр по элементам инфоблока

\Grain\Iiko\Restaurants::getRestaurantById - получение массива ресторана по ID

Возвращает массив с основными полями ресторана (NAME, ID, XML_ID) по ID ресторана.

Параметр Описание параметра
$id ID ресторана (ID элемента инфоблока)

Grain\Iiko\Restaurants::sync - синхронизация ресторанов

Выполняет синхронизацию ресторанов.

Функция является функцией агента и возвращает собственное имя для следующего выполнения.

Функция не имеет параметров.

\Grain\Iiko\Dishes - класс для работы с блюдами ресторана

Блюдо в рамках модуля является элементом инфоблока, под ID блюда подразумевается ID элемента инфоблока. ID блюда в системе iiko сохраняется в поле "Внешний код" (XML_ID) элемента инфоблока и по нему осуществляется синхронизация блюд.

При синхронизации также создаются и заполняются следующие свойства блюд:

Название Символьный код в системе 1С-Битрикс
Количество углеводов carbohydrateamount
Полное количество углеводов carbohydratefullamount
Не печатать в чеке donotprintincheque
Полное количество энергии energyfullamount
Количество жира fatamount
Количество клетчатки fiberamount
Полное количество клетчатки fiberfullamount
Единица измерения measureunit
Тип type
Вес weight
Включено в меню isincludedinmenu
Заказ order
Id изображения imageid

\Grain\Iiko\Dishes::sync - синхронизация блюд

Выполняет синхронизацию блюд.

Функция является функцией агента и возвращает собственное имя для следующего выполнения.

Функция не имеет параметров.

\Grain\Iiko\Location - класс для работы с базой адресов зоны доставки

\Grain\Iiko\Location::sync - синхронизация зон доставки

Выполняет синхронизацию адресов зон доставки.

Функция является функцией агента и возвращает собственное имя для следующего выполнения.

Функция не имеет параметров.

\Grain\Iiko\Modifier - работа с модификаторами

Данный раздел справки находится в стадии наполнения

\Grain\Iiko\Modifier::get - получение массива модификаторов по ID или массиву элемента

Возвращает массив модификаторов блюда.

Параметр Описание параметра
$element ID или массив со свойствами, блюда как элемента информационного блока
\Bitrix\Sale\BasketItem $item=null Объект позиции корзины модуля интернет-магазина. Если присутствует, то также будут возвращены значения количества для каждого модификатора для данной позиции корзины (ключ "selected").

Пример результата:


Array

(
    [
0] => Array
        (
            [
maxAmount] => 1
            
[minAmount] => 0
            
[modifierId] => 55d3bd31-99c8-4ea1-b27c-1fdb6587d87a
            
[required] => 
            [
defaultAmount] => 0
            
[hideIfDefaultAmount] => 
            [
groupId] => de5f8326-5c2f-4662-b218-79430115ba90
            
[groupName] => Оливье
            
[groupRequired] => 1
            
[groupMinAmount] => 1
            
[groupMaxAmount] => 1
            
[m] => Array
                (
                    [
additionalInfo] => 
                    [
code] => 03626
                    
[description] => 
                    [
id] => 55d3bd31-99c8-4ea1-b27c-1fdb6587d87a
                    
[isDeleted] => 
                    [
name] => Малая порция
                    
[seoDescription] => 
                    [
seoKeywords] => 
                    [
seoText] => 
                    [
seoTitle] => 
                    [
tags] => 
                    [
carbohydrateAmount] => 8.079
                    
[carbohydrateFullAmount] => 80.79
                    
[differentPricesOn] => Array
                        (
                        )

                    [
doNotPrintInCheque] => 
                    [
energyAmount] => 144.006
                    
[energyFullAmount] => 1440.06
                    
[fatAmount] => 7.863
                    
[fatFullAmount] => 78.63
                    
[fiberAmount] => 10.039
                    
[fiberFullAmount] => 100.39
                    
[groupId] => de5f8326-5c2f-4662-b218-79430115ba90
                    
[groupModifiers] => Array
                        (
                        )

                    [
measureUnit] => порц
                    
[modifiers] => Array
                        (
                        )

                    [
price] => 350
                    
[productCategoryId] => 0e9ab194-1ef5-4854-0172-b4889f507477
                    
[prohibitedToSaleOn] => Array
                        (
                        )

                    [
type] => modifier
                    
[useBalanceForSell] => 
                    [
weight] => 1
                    
[images] => 
                    [
isIncludedInMenu] => 1
                    
[order] => 0
                    
[parentGroup] => 
                    [
warningType] => 0
                
)

            [
selected] => 1
        
)

    [
1] => Array
        (
            [
maxAmount] => 1
            
[minAmount] => 0
            
[modifierId] => 6de49eff-3d87-463c-b987-261a64e4a127
            
[required] => 
            [
defaultAmount] => 0
            
[hideIfDefaultAmount] => 
            [
groupId] => de5f8326-5c2f-4662-b218-79430115ba90
            
[groupName] => Оливье
            
[groupRequired] => 1
            
[groupMinAmount] => 1
            
[groupMaxAmount] => 1
            
[m] => Array
                (
                    [
additionalInfo] => 
                    [
code] => 03628
                    
[description] => 
                    [
id] => 6de49eff-3d87-463c-b987-261a64e4a127
                    
[isDeleted] => 
                    [
name] => Большая порция
                    
[seoDescription] => 
                    [
seoKeywords] => 
                    [
seoText] => 
                    [
seoTitle] => 
                    [
tags] => 
                    [
carbohydrateAmount] => 8.079
                    
[carbohydrateFullAmount] => 121.185
                    
[differentPricesOn] => Array
                        (
                        )

                    [
doNotPrintInCheque] => 
                    [
energyAmount] => 144.006
                    
[energyFullAmount] => 2160.09
                    
[fatAmount] => 7.863
                    
[fatFullAmount] => 117.945
                    
[fiberAmount] => 10.039
                    
[fiberFullAmount] => 150.585
                    
[groupId] => de5f8326-5c2f-4662-b218-79430115ba90
                    
[groupModifiers] => Array
                        (
                        )

                    [
measureUnit] => порц
                    
[modifiers] => Array
                        (
                        )

                    [
price] => 990
                    
[productCategoryId] => 0e9ab194-1ef5-4854-0172-b4889f507477
                    
[prohibitedToSaleOn] => Array
                        (
                        )

                    [
type] => modifier
                    
[useBalanceForSell] => 
                    [
weight] => 1.5
                    
[images] => 
                    [
isIncludedInMenu] => 1
                    
[order] => 0
                    
[parentGroup] => 
                    [
warningType] => 0
                
)

            [
selected] => 0
        
)

)

\Grain\Iiko\Modifier::getRequired - получение массива обязательных модификаторов для элемента

Возвращает массив обязательных модификаторов с необходимым минимальным количеством для быстрого добавления в корзину. Возвращаемый результат аналогичен функции \Grain\Iiko\Modifier::get.

Параметр Описание параметра
$element ID или массив со свойствами, блюда как элемента информационного блока

\Grain\Iiko\Modifier::getRequiredModifierProps - получение массива свойств корзины для обязательных модификаторов элемента

Аналогична функции \Grain\Iiko\Modifier::getRequired, но возвращаемый результат содержит готовый массив свойств для позиции корзины.

\Grain\Iiko\Modifier::getRequiredModifiersPrice - получение стоимости обязательных модификаторов элемента

Возвращает минимальную стоимость обязательных модификаторов в виде числа с плавающей точкой (float).

Параметр Описание параметра
$element ID или массив со свойствами, блюда как элемента информационного блока

\Grain\Iiko\Modifier::getPreparedForOrder - получение массива модификаторов, подготовленного для заказа, по ID или массиву элемента

Аналогична функции \Grain\Iiko\Modifier::get, но возвращаемый массив имеет структуру, специально подготовленную для добавления заказа.

\Grain\Iiko\Modifier::setModifierQuantity - установка количества для модификатора в позиции корзины

Устанавливает количество модификатора для позиции корзины.

Параметр Описание параметра
\Bitrix\Sale\BasketItem $item Объект позиции корзины модуля интернет-магазина
String $modifierId Идентификатор модификатора
$quantity Количество модификатора для позиции корзины

\Grain\Iiko\Modifier::getBasketPropertyValue - получение значения свойства позиции корзины

Вспомогательная функция. Позволяет получить значение свойства позиции корзины модуля интернет-магазина.

Параметр Описание параметра
\Bitrix\Sale\BasketItem $item Объект позиции корзины модуля интернет-магазина
String $propertyCode Символьный код свойства позиции корзины

\Grain\Iiko\Modifier::getBasketPropertyValues - получение значений всех свойств позиции корзины

Вспомогательная функция. Позволяет получить значение всех свойств позиции корзины модуля интернет-магазина.

Параметр Описание параметра
\Bitrix\Sale\BasketItem $item Объект позиции корзины модуля интернет-магазина

\Grain\Iiko\Modifier::saveBasketProperty - сохранение значения свойства позиции корзины

Вспомогательная функция. Позволяет сохранить значение свойства позиции корзины модуля интернет-магазина.

Параметр Описание параметра
\Bitrix\Sale\BasketItem $item Объект позиции корзины модуля интернет-магазина
String $propertyCode Символьный код свойства позиции корзины
String $value Значение свойства
String $name Название свойства
String $sort Сортировка свойства
String $xmlId Внешний код свойства

\Grain\Iiko\Modifier::deleteBasketProperty - удаление свойства позиции корзины

Вспомогательная функция. Позволяет удалить свойство позиции корзины модуля интернет-магазина.

Параметр Описание параметра
\Bitrix\Sale\BasketItem $item Объект позиции корзины модуля интернет-магазина
String $propertyCode Символьный код свойства позиции корзины

\Grain\Iiko\Modifier::getGroupTree - получение дерева групп модификаторов для ресторана

Возвращает список групп модификаторов ресторана в виде развернутого дерева.

Параметр Описание параметра
String $organizationId ID ресторана в системе iiko

\Grain\Iiko\Modifier::getTree - получение дерева модификаторов для ресторана

Возвращает список модификаторов ресторана в виде развернутого дерева с учетом групп модификаторов.

Параметр Описание параметра
String $organizationId ID ресторана в системе iiko

\Grain\Iiko\Modifier::isModifierActive - проверка активности модификатора

Проверяет, активен ли модификатор и возвращает булевое значение. Функция имеет кеширование в статической переменной для множественного обращения внутри цикла.

Параметр Описание параметра
$iblockId ID инфоблока блюд
String $modifierId Символьный код модификатора

\Grain\Iiko\ModifierListTable - ORM класс для сохранения списка модификаторов

Данный класс предназначен для сохранения списка модификаторов для ресторанов. Для обращения можно использовать стандартный функции ORM getList, add, update, delete и др.

Поле Тип Обяз. Умолч. Описание
ID Integer Да Авт.
ORGANIZATION_ID String Да ID ресторана в системе iiko
MODIFIER_ID String Да ID модификатора в системе iiko
NAME String Да Название модификатора
SORT Integer 100 Сортировка
GROUP_ID Integer ID группы модификаторов
GROUP \Grain\Iiko\ModifierListGroupTable Авт.
ACTIVE Boolean Да Y Активен
DELETED Boolean Да N Удален

\Grain\Iiko\ModifierListGroupTable - ORM класс для сохранения групп модификаторов

Данный класс предназначен для сохранения дерева групп модификаторов для ресторанов. Для обращения можно использовать стандартный функции ORM getList, add, update, delete и др.

Поле Тип Обяз. Умолч. Описание
ID Integer Да Авт.
ORGANIZATION_ID String Да ID ресторана в системе iiko
GROUP_ID String Да ID группы модификаторов в системе iiko
NAME String Да Название группы модификаторов
SORT Integer 100 Сортировка
PARENT_GROUP_ID Integer ID родительской группы модификаторов
PARENT_GROUP \Grain\Iiko\ModifierListGroupTable Авт.
ACTIVE Boolean Да Y Активен
DELETED Boolean Да N Удален

\Grain\Iiko\Rest - класс для выполнения запросов к api iiko

Класс предназначен для выполнения запросов к api системы iiko.

\Grain\Iiko\Rest::query - запрос к api iiko

Позволяет выполнить запрос к api iiko. Список методов и их параметров можно найти в документации iiko.

Параметр Описание параметра
String $path Путь к методу
Array $body Массив параметров запроса
String $method = 'POST' Http метод