Размер блюда
В версиях до 5.0 предполагалось, что блюдо каждый раз готовится одинаково, его состав и размер полностью описываются его технологической картой. Для продажи таких блюд, которые могут выпекаться в формах разного диаметра (пироги, пицца), напитков в стаканчиках разного объёма и т. п. приходилось регистрировать блюдо каждого размера как отдельное блюдо, следовательно, плодить наборы модификаторов под каждый размер, дублировать прочие (не относящиеся к размерам) настройки блюд и модификаторов, при редактировании заказа в iikoFront при необходимости выбрать другой размер приходилось удалять одно блюдо и добавлять другое. В меню куча кнопок, в отчётах куча строчек. Назрела потребность ввести самостоятельное понятие размер блюда.
Размер блюда — дополнительная характеристика, определяющая состав и расход ингредиентов, выход готового блюда и, соответственно, его цену. Набор взаимозаменяемых размеров образует шкалу размеров. Если блюду назначена шкала размеров, при добавлении блюда в заказ необходимо выбрать один из размеров этой шкалы. Некоторые размеры могут быть недоступны для конкретного блюда. Модификаторы будут готовиться в том же размере, что и блюдо, некоторые из них могут быть недоступны для выбранного размера.
Ключевые типы
IProduct
— элемент номенклатуры, имеет свойствоScale
со ссылкой на шкалу размеров. Аналогичную ссылку на шкалу размеров имеет и шаблон составного блюдаCompoundItemTemplate
. Если блюду не назначена шкала размеров, тоnull
.IProductScale
— шкала размеров, для неё известны название шкалы (Name
) и размер по умолчанию (DefaultSize
). Список размеров этой шкалы можно получить с помощью сервисного методаGetProductScaleSizes
.IProductSize
— размер блюда, имеет полный и краткий варианты названия (Name
иKitchenName
).- Методы
AddOrderProductItem
иAddOrderCompoundItem
имеют аргументsize
, позволяющий указать размер добавляемого блюда. OrderCookingItem
— добавленные в заказ блюда (OrderProductItem
иOrderCompoundItem
) имеют свойствоSize
со ссылкой на выбранный размер.- Выбранный размер можно поменять с помощью метода редактирования
ChangeOrderCookingItemSize
. - Одна и та же шкала может использоваться для многих продуктов, однако, не все продукты доступны во всех размерах. Узнать, в каких размерах заведомо недоступен тот или иной продукт, можно с помощью сервисного метода
GetDisabledSizes
. - Метод
GetPrice
теперь позволяет узнать цену с учётом размера (помимо ценовой категории и даты).
Примеры
Пример работы с размерами можно посмотреть во входящем в состав SDK плагине Resto.Front.Api.SamplePlugin (EditorTester.AddCompoundItem
).