Размер блюда
В версиях до 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).