Данный запрос работает только во Внешнем Протоколе, начиная с версии 4.0.R4
В данной статье описывается расширение запроса SaleReservation
Помимо прочего в параметре Places можно указывать блюда бара для резервирования продажи.
Список блюд и цены можно узнать запросом PrkGetMenus.
Пример указания блюда
[{dish=1;pk=4}{m=2;count=2}][{dish=2;pk=4}{m=3;count=1}{m=6;count=1}]
Каждая покупаемая позиция традиционно обрамляется квадратными скобками. Таким образом, здесь мы видим резервирование покупки двух блюд:
{dish=1;pk=4}{m=2;count=2}
Описание параметра pk (признак способа расчета) в статье SaleReservation.
Например, это могло бы быть такое блюдо (см. запрос PrkGetMenus):
Пример блюда из запроса PrkGetMenus
<Dish ID="1" Code="1346" Name="Борщ" MaxModiWeight="0" ParentID="0" Price="9000">
<ModiSchemes>
<ModiScheme ID="1" MinLimit="0" MaxLimit="3" Name="Для супов" DefaultModifierID="0" ChangesPrice="1">
<Modifiers>
<Modifier ID="1" Code="7346" Name="Сметана" Weight="1" MaxOneDish="1" Price="1500" />
<Modifier ID="2" Code="234" Name="Пампушка" Weight="1" MaxOneDish="2" Price="2000" />
</Modifiers>
</ModiScheme>
</ModiSchemes>
</Dish>
Тогда получается, что это заказ борща с двумя пампушками. Итоговая стоимость заказа будет равна: 130 рублей (подробнее про расчет смотри в статье PrkGetMenus → раздел «Контроль добавления модификаторов и расчет цены»).
{dish=2;pk=4}{m=3;count=1}{m=6;count=1}
Это блюдо с идентификатором 2, плюс к нему два модификатора: m=3 одна порция и m=6 одна порция.
Пример комбо из запроса PrkGetMenus
<Combo ID="2" Code="295" Name="Попкорн + кола" MaxModiWeight="0" ParentID="1001066" Price="25000">
<ModiSchemes>
<ModiScheme ID="2" Name="Попкорн" MinLimit="1" MaxLimit="1" DefaultModifierID="0" ChangesPrice="0">
<Modifiers>
<Modifier ID="3" Code="743" Name="Попкорн сладкий" Weight="1" MaxOneDish="1" DishID="1002598" Price="20000" />
<Modifier ID="4" Code="759" Name="Попкорн соленный" Weight="1" MaxOneDish="1" DishID="1002599" Price="20000" />
</Modifiers>
</ModiScheme>
<ModiScheme ID="3" Name="Кола" MinLimit="1" MaxLimit="1" DefaultModifierID="0" ChangesPrice="0">
<Modifiers>
<Modifier ID="5" Code="859" Name="Кола 0.5" Weight="1" MaxOneDish="1" DishID="1003326" Price="10000" />
<Modifier ID="6" Code="889" Name="Кола 0.5 zero" Weight="1" MaxOneDish="1" DishID="1003327" Price="10000" />
</Modifiers>
</ModiScheme>
</ModiSchemes>
</Combo>
Как видно выше, идентификатор 2 подразумевает комбо-набор.
{m=3;count=1} обеспечивает выбор из набора сладкого попкорна.
{m=6;count=1} обеспечивает выбор из набора колу 0.5 zero.
Итоговая стоимость набора равна: 250 рублей (подробнее про расчет смотри в статье PrkGetMenus → раздел «Контроль добавления модификаторов и расчет цены»).
Во Внешнем Протоколе, начиная с версии 5.5.R1 появится возможность указывать дополнительные модификаторы у модификаторов комбо набора.
{dish=1001110;pk=4}{m=1002626;count=1}{d=1002626;cm=1011464;qty=1}{m=1002944;count=1}{m=1012342;count=1}{d=1012342;cm=1000377;qty=1}{m=1008020;count=1}
Пример комбо из запроса PrkGetMenus
<Combo ID="1001110" Code="295" ParentID="1001066" Name="Салат + суп + горячее блюдо"
Barcode="[10110 BQ F01]" MediaID="" MaxModiWeight="0" OrgID="1">
<ModiSchemes>
<ModiScheme ID="1003788" MinLimit="2" MaxLimit="2" Name="Салаты/супы" DefaultModifierID="0"
ChangesPrice="0">
<Modifiers>
<Modifier ID="1002626" Code="743" Name="Рассольник" Weight="1" MaxOneDish="2"
DishID="1002599" TaxID="1" TaxPercentPenny="1800" AddToName="0">
<ComboModiSchemes>
<ComboModiScheme ID="1011466" MinLimit="0" MaxLimit="0" Name="Для супов"
DefaultModifierID="0" ChangesPrice="0">
<ComboModifiers>
<ComboModifier ID="1011464" Code="1537" Name="Сметана" Weight="1"
MaxOneDish="1" AddToName="0" Price="0" />
<ComboModifier ID="1013916" Code="16" Name="Майонез" Weight="0"
MaxOneDish="1" AddToName="0" Price="0" />
</ComboModifiers>
</ComboModiScheme>
</ComboModiSchemes>
</Modifier>
<Modifier ID="1002628" Code="759" Name="Салат витаминный" Weight="1" MaxOneDish="1"
DishID="1002595" TaxID="1" TaxPercentPenny="1800" AddToName="0" />
<Modifier ID="1002944" Code="811" Name="Салат Ветчинный" Weight="2" MaxOneDish="0"
DishID="1002922" TaxID="1" TaxPercentPenny="1800" AddToName="0" />
</Modifiers>
</ModiScheme>
<ModiScheme ID="1003885" MinLimit="1" MaxLimit="1" Name="Горячие блюда" DefaultModifierID="0"
ChangesPrice="0">
<Modifiers>
<Modifier ID="1003328" Code="859" Name="Буррито из говядины" Weight="1" MaxOneDish="1"
DishID="1003326" TaxID="1" TaxPercentPenny="1800" AddToName="0" />
<Modifier ID="1003438" Code="889" Name="Плов" Weight="1" MaxOneDish="1" DishID="1003436"
TaxID="1" TaxPercentPenny="1800" AddToName="0" />
<Modifier ID="1012342" Code="1655" Name="Ягненок на косточке" Weight="1" MaxOneDish="1"
DishID="1000605" TaxID="1" TaxPercentPenny="1800" AddToName="0">
<ComboModiSchemes>
<ComboModiScheme ID="1004018" MinLimit="1" MaxLimit="1" Name="Степень прожарки"
DefaultModifierID="0" ChangesPrice="0">
<ComboModifiers>
<ComboModifier ID="1000376" Code="63" Name="Medium Rare" Weight="0"
MaxOneDish="2" AddToName="0" Price="0" />
<ComboModifier ID="1000377" Code="71" Name="Medium" Weight="0"
MaxOneDish="2" AddToName="0" Price="0" />
<ComboModifier ID="1000378" Code="330" Name="Medium well" Weight="0"
MaxOneDish="2" AddToName="0" Price="0" />
</ComboModifiers>
</ComboModiScheme>
</ComboModiSchemes>
</Modifier>
</Modifiers>
</ModiScheme>
<ModiScheme ID="1009363" MinLimit="1" MaxLimit="1" Name="Напиток к ланчу" DefaultModifierID="0"
ChangesPrice="0">
<Modifiers>
<Modifier ID="1007974" Code="737" Name="Домашний лимонад" Weight="1" MaxOneDish="1"
DishID="1007958" TaxID="1" TaxPercentPenny="1800" AddToName="0" />
<Modifier ID="1007979" Code="742" Name="Кофе эспрессо" Weight="1" MaxOneDish="1"
DishID="1007964" TaxID="1" TaxPercentPenny="1800" AddToName="0" />
<Modifier ID="1007980" Code="744" Name="Морс 200 мл" Weight="1" MaxOneDish="1"
DishID="1007965" TaxID="1" TaxPercentPenny="1800" AddToName="0" />
<Modifier ID="1008020" Code="271" Name="Капучино" Weight="1" MaxOneDish="1"
DishID="1008019" TaxID="1" TaxPercentPenny="1800" AddToName="0" />
</Modifiers>
</ModiScheme>
</ModiSchemes>
</Combo>
Как видно выше, идентификатор 1001110 подразумевает комбо-набор "Салат + суп + горячее блюдо".
{m=1002626;count=1} из предложенного набора супов обеспечивает выбор рассольника.
{d=1002626;cm=1011464;qty=1} из предложенных дополнений к рассольнику выбирает сметану. (в d= указывается атрибут ID модификатора Modifier, для которого требуется дополнение, в cm= указывается атрибут ID, выбранного ComboModifier, qty= это количество )
{m=1002944;count=1} обеспечивает выбор из набора модификаторов "Салат Ветчинный"
DateTime - [обязательный, если не указан параметр Sessions] - Дата и время получения заказа, если не указан сеанс. Формат DD.MM.YYYYThh:mm:ss
Для продажи бара без билета необходимо указать параметр DateTime - дата, когда заказ будет получен, при этом параметр Sessions должен оставаться пустым.
в параметре Places должны быть указаны только товары бара. Например: Places=[{dish=1001110;pk=4}{m=1002626;count=1}{d=1002626;cm=1011464;qty=1}{m=1002944;count=1}{m=1012342;count=1}{d=1012342;cm=1000377;qty=1}{m=1008020;count=1}]
Пример запроса для продажи бара без билета
ServiceID=1&QueryCode=SaleReservation&CardCode=&Sessions=&Places=[{dish=1000517;pk=1}{m=1000382;count=1}{m=1004343;count=1}]&ReservationID=2022.11.09_008&ReservationType=&Seasons=&Encoding=Windows-1251&Version=3&Archive=0&Expect=&DateTime=10.11.2022T20:00:00
Пример успешного ответа
<?xml version='1.0' encoding='Windows-1251' standalone='yes'?>
<XML>
<Result>Ok</Result>
<Error/>
<Remark/>
<Data>
<Reservation ID='2022.11.09_008'>
<Sum Sum='32000'>320руб 00коп</Sum>
<PrintPrice Sum='32000'>320руб 00коп</PrintPrice>
<AddPrice Sum='0'>0руб 00коп</AddPrice>
<PrintAddPrice Sum='0'>0руб 00коп</PrintAddPrice>
<ComissionSum Sum='0'>0руб 00коп</ComissionSum>
<PrintComissionSum Sum='0'>0руб 00коп</PrintComissionSum>
<Expired>31.12.2050 00:00</Expired>
</Reservation>
</Data>
</XML>
Для продажи бара вместе с билетом запрос SaleReservation может выглядеть следующим образом:
Пример запроса для продажи билета + бар
ServiceID=1&QueryCode=SaleReservation&CardCode=12345&Sessions=248&Places=[l=1;f=0;r=1;p=1;pk=4][{dish=1;pk=4}{m=2;count=2}][{dish=2;pk=4}{m=3;count=1}{m=6;count=1}]&ReservationID=ac550&Encoding=Windows-1251
CardCode требует указания, если настроена сиcтема лояльности (CRM), подробнее: CRM Integration
Здесь осуществляется продажа одного места «ряд 1, место 1» на сеанс 248 (ярус 1, фрагмент 0) плюс позиции бара, которые были рассмотрены в предыдущем пункте.
Пример успешного ответа
<?xml version='1.0' encoding='Windows-1251' standalone='yes'?>
<XML>
<Result>Ok</Result>
<Error></Error>
<Remark></Remark>
<Data>
<Reservation ID='ac550'>
<Sum Sum='100300'>1003руб 00коп</Sum>
<PrintPrice Sum='100300'>1003руб 00коп</PrintPrice>
<AddPrice Sum='0'>0руб 00коп</AddPrice>
<PrintAddPrice Sum='0'>0руб 00коп</PrintAddPrice>
<ComissionSum Sum='2060'>20руб 60коп</ComissionSum>
<PrintComissionSum Sum='2060'>20руб 60коп</PrintComissionSum>
<Expired>23.11.2018 22:57</Expired>
</Reservation>
</Data>
</XML>
Помимо стандартных ошибок SaleReservation при продаже бара могут возникнуть следующие ошибки: