Для получения подробной информации о блюдах, доступных к продаже в данный момент времени, необходимо выполнить два запроса к API r_keeper.
- Первый запрос — получение справочника Меню. Необходим для получения названий, параметров отображения и других параметров блюд, созданных в R_Keeper.
- Второй запрос — получение блюд, доступных к продаже. Актуализирует список блюд, доступных к продаже на конкретной кассовой станции, учитывает остатки, период доступности, торговые группы и прочие ограничения, которые возможно наложить на блюда в настройках R_Keeper. Этот запрос не возвращает подробной информации об элементах меню.
Для отображения списка блюд необходимо из ответа на первый запрос выбрать лишь те блюда, идентификаторы которых содержатся в ответе на второй.
Чтобы избежать дублирования идентификаторов при создании элемента через XML-API, в таблице GENERATORS используйте значение SIFR=1. Генератор будет использоваться для сквозной идентификации в таблицах:
- MENUITEMS
- MODIFIERS
- DISCOUNTS
- DISCOUNTDETAILS
- MODISCHEMEDETAILS.
Запрос всего меню
Для получения полного списка блюд, отправьте XML-запрос:
В ответ на запрос вернется XML документ следующего вида:
В ответе будет содержаться полный список блюд, с подробной информацией по каждому из них.
В случае ошибки XML-документ не будет содержать ноды RK7Reference, в атрибуте RK7QueryResult.ErrorText будет приведен текст ошибки.
Для оптимизации кэширования справочника используйте атрибут RK7QueryResult.XMLVersion.
Если с момента предыдущего запроса в справочнике меню произошли какие либо изменения, значение данного атрибута будет отличаться от предыдущего.
Получение блюд, доступных к продаже
Для выборки из справочника блюд только тех элементов, которые возможно в данный момент продать на кассе, необходимо отправить следующий запрос:
В значении атрибута Station.code необходимо передать код станции, для которой будет актуализирован список блюд.
Дополнительно можно уточнить список по следующим параметрам:
- Order — конкретный, существующий заказ
- Waiter — официант
- Table — Стол
- OrderCategory — Категория заказа
Эти свойства могут быть добавлены к запросу в ноду RK7CMD, по аналогии со Station, однако для Order необходимо использовать атрибут guid в место code.
В ответ на запрос вернется XML документ следующего вида:
Обработка ошибок должна работать аналогично предыдущему запросу.
В нодах Dishes и Modifiers будет перечислен список блюд и модификаторов соответственно, доступных к продаже на данный момент.
Для каждой из позиций вернется стоимость за штуку в копейках в атрибуте Price. Price=”100” — один рубль.
Для позиций, которым заданы ограничения по количеству так же вернется атрибут quantity, указывающий на остаток блюда тысячных долях. То есть: quantity = “1000” — Одна порция.
Для демонстрации списка блюд, доступных к заказу необходимо выбрать из справочника блюд — первый запрос, лишь те блюда, которые есть в меню заказа — второй запрос.
Связать элементы можно при помощи атрибута ident.
Запрос меню с себестоимостью
При необходимости выгрузить себестоимость из r_keeper, в который настроена загрузка себестоимости из Store House 5, воспользуйтесь XML-запросом:
В ответ на запрос вернется XML документ следующего вида:
Где значение 9223372036854775807 соответствует — Не задано.
Запрос группы блюд
При необходимости выгрузить группу блюд из меню из r_keeper 7 воспользуйтесь XML-запросом.
Пример запроса для группы Бар:
В ответ на запрос вернется XML документ следующего вида:
Просмотреть ответ
Ответ
<?xml version="1.0" encoding="utf-8"?>
<RK7QueryResult ServerVersion="7.7.0.232" XmlVersion="248" NetName="TSTWIN770" Status="Ok" CMD="GetRefData" ErrorText="" DateTime="2023-01-26T16:58:20" WorkTime="0" Processed="1" ArrivalDateTime="2023-01-26T16:58:20">
<RK7Reference DataVersion="121" ClassName="TCategListItems" Name="CATEGLIST" MinIdent="1" MaxIdent="0" ViewRight="0" UpdateRight="21" ChildRight="116" DeleteRight="21"
XMLExport="true" XMLMask="*" LeafCollectionCount="1" TotalItemCount="1">
<Items>
<Item Ident="1000014" ItemIdent="1000014" SourceIdent="0" GUIDString="{912599B4-E190-4508-8871-F2CCFBA700A5}" AssignChildsOnServer="false" ActiveHierarchy="true"
Code="1" Name="Бар" AltName="" MainParentIdent="0" Status="rsActive" VisualType_Image="0" VisualType_BColor="12073565" VisualType_TextColor="16777215" VisualType_Flags="bsPictureTop"
Parent="0" Comment="" AddToOrder="false" ExtCode="1" EditRight="0" RightLvl="0" CategKind="0">
<Childs ClassName="tChildCollection">
<Child ChildIdent="1000025" IsTerminal="1"/>
<Child ChildIdent="1000059" IsTerminal="1"/>
<Child ChildIdent="1000060" IsTerminal="1"/>
<Child ChildIdent="1000237" IsTerminal="1"/>
<Child ChildIdent="1000238" IsTerminal="1"/>
<Child ChildIdent="1000239" IsTerminal="1"/>
<Child ChildIdent="1000989" IsTerminal="1"/>
<Child ChildIdent="1001405" IsTerminal="1"/>
<Child ChildIdent="1001494" IsTerminal="1"/>
<Child ChildIdent="1001495" IsTerminal="1"/>
<Child ChildIdent="1001614" IsTerminal="1"/>
</Childs>
<RIChildItems>
<TRK7MenuItem ItemIdent="1000025" SourceIdent="0" GUIDString="{2ACC7522-E39E-4D72-AF74-7D8F9D7E4E08}" AssignChildsOnServer="false"
ActiveHierarchy="true" Code="4" Name="Пинаколлада" AltName="" MainParentIdent="1000014" Status="rsActive" VisualType_Image="0" VisualType_BColor="11394815"
VisualType_TextColor="16777215" VisualType_Flags="bsPictureTop" SalesTerms_Flag="[]" SalesTerms_StartSale="3561993778437" SalesTerms_StopSale="3561993778437"
RightLvl="0" AvailabilitySchedule="0" UseStartSale="false" UseStopSale="false" TaxDishType="1" Parent="1000014" ExtCode="3" ShortName="" AltShortName="" PortionWeight="0"
PortionName="" AltPortion="" Kurs="0" QntDecDigits="0" ModiScheme="0" ComboScheme="0" ModiWeight="0" CookMins="0" Comment="" Instruct="" Flags="[miOpenPrice]"
TaraWeight="0" ConfirmQnt="0" MInterface="0" MinRestQnt="0" BarCodes="[200100000001]" PriceMode="pmPerPiece" PartsPerPackage="0" OpenPrice="true" DontPack="false"
ChangeQntOnce="false" AllowPurchasing="false" UseRestControl="false" UseConfirmQnt="false" LabeledProduct="false" CategPath="Бар" SaleObjectType="sotMenuItem" ComboJoinMode="cjmNone"
ComboSplitMode="csmCanSplit" AddLineMode="almJoinLines" ChangeToCombo="0" GuestsDishRating="300" RateType="rtOneTime" MinimumTarifTime="0" MaximumTarifTime="0" IgnoredTarifTime="0"
MinTarifAmount="0" MaxTarifAmount="0" RoundTime="1" TariffRoundRule="trrMath" MoneyRoundRule="rr1Cent" DefTarifTimeLimit="0" ComboDiscount="0" LargeImagePath="" HighLevelGroup1="1000014"
HighLevelGroup2="0" HighLevelGroup3="0" HighLevelGroup4="0" BarCodesText="200100000001" BarcodesFullInfo="200100000001	1000.000" ItemKind="1" MeasureUnitID="0" Ident="1000025">
<RecommendedMenuItems ClassName="TRecommendedMenuItems">
<Items/>
</RecommendedMenuItems>
</TRK7MenuItem>
<TRK7MenuItem ItemIdent="1000059" SourceIdent="0" GUIDString="{2057BA87-8EC1-4F49-A0FF-D25351FBA416}" AssignChildsOnServer="false" ActiveHierarchy="true" Code="13"
Name="Кофе66" AltName="" MainParentIdent="1000014" Status="rsActive" VisualType_Image="0" VisualType_BColor="-16777210" VisualType_TextColor="16777215" VisualType_Flags="bsPictureTop"
SalesTerms_Flag="[]" SalesTerms_StartSale="3562078702640" SalesTerms_StopSale="3562078702640" RightLvl="0" AvailabilitySchedule="0" UseStartSale="false" UseStopSale="false" TaxDishType="3"
Parent="1000014" ExtCode="9" ShortName="" AltShortName="" PortionWeight="0" PortionName="" AltPortion="" Kurs="0" QntDecDigits="0" ModiScheme="1000070" ComboScheme="1000070" ModiWeight="0"
CookMins="0" Comment="" Instruct="" Flags="[]" TaraWeight="0" ConfirmQnt="0" MInterface="0" MinRestQnt="0" BarCodes="" PriceMode="pmPerPiece" PartsPerPackage="0" OpenPrice="false" DontPack="false"
ChangeQntOnce="false" AllowPurchasing="false" UseRestControl="false" UseConfirmQnt="false" LabeledProduct="false" CategPath="Бар" SaleObjectType="sotMenuItem" ComboJoinMode="cjmNone"
ComboSplitMode="csmCanSplit" AddLineMode="almJoinLines" ChangeToCombo="0" GuestsDishRating="300" RateType="rtOneTime" MinimumTarifTime="0" MaximumTarifTime="0" IgnoredTarifTime="0"
MinTarifAmount="0" MaxTarifAmount="0" RoundTime="1" TariffRoundRule="trrMath" MoneyRoundRule="rr1Cent" DefTarifTimeLimit="0" ComboDiscount="0" LargeImagePath="" HighLevelGroup1="1000014"
HighLevelGroup2="0" HighLevelGroup3="0" HighLevelGroup4="0" BarCodesText="" BarcodesFullInfo="" ItemKind="1" MeasureUnitID="0" Ident="1000059">
<RecommendedMenuItems ClassName="TRecommendedMenuItems">
<Items/>
</RecommendedMenuItems>
</TRK7MenuItem>
</RIChildItems>
</Item>
</Items>
</RK7Reference>
</RK7QueryResult>