Для получения подробной информации о блюдах, доступных к продаже в данный момент времени, необходимо выполнить два запроса к API r_keeper.

  • Первый запрос — получение справочника Меню. Необходим для получения названий, параметров отображения и других параметров блюд, созданных в R_Keeper.
  • Второй запрос — получение блюд, доступных к продаже. Актуализирует список блюд, доступных к продаже на конкретной кассовой станции, учитывает остатки, период доступности, торговые группы и прочие ограничения, которые возможно наложить на блюда в настройках R_Keeper. Этот запрос не возвращает подробной информации об элементах меню.

Для отображения списка блюд необходимо из ответа на первый запрос выбрать лишь те блюда, идентификаторы которых содержатся в ответе на второй. 

Чтобы избежать дублирования идентификаторов при создании элемента через XML-API, в таблице GENERATORS используйте значение SIFR=1. Генератор будет использоваться для сквозной идентификации в таблицах:

  • MENUITEMS
  • MODIFIERS
  • DISCOUNTS
  • DISCOUNTDETAILS
  • MODISCHEMEDETAILS.

Запрос всего менюLink to Запрос всего меню

Для получения полного списка блюд, отправьте XML-запрос: 

<RK7Query>
<RK7CMD CMD="GetRefData" RefName="MENUITEMS" onlyActive="1"/>
</RK7Query>
XML

В ответ на запрос вернется XML документ следующего вида: 

<?xml version="1.0" encoding="utf-8"?><RK7QueryResult ServerVersion="7.6.0.81" XmlVersion="243" NetName="CONF_MIDSERVER"
Status="Ok" CMD="GetRefData" ErrorText="" DateTime="2019-12-30T11:47:46" WorkTime="15" Processed="1">
<RK7Reference DataVersion="151" ClassName="TRK7MenuItems" Name="MENUITEMS" MinIdent="1" MaxIdent="0" ViewRight="0"
UpdateRight="21" ChildRight="21" DeleteRight="21" XMLExport="true" XMLMask="*" LeafCollectionCount="1">
<Items>
<Item Ident="1000189" ItemIdent="1000189" SourceIdent="0" GUIDString="{02721FC1-0B02-4AA4-8E6E644F45B40FB2}" AssignChildsOnServer="false" ActiveHierarchy="true" Code="222" Name="Булка°" AltName="" MainParentIdent="1000186"
Status="rsActive" VisualType_Image="0" VisualType_BColor="536870911" VisualType_TextColor="536870911"
VisualType_Flags="bsPictureTop" SalesTerms_Flag="[]" SalesTerms_StartSale="3748606669879" SalesTerms_StopSale="3748606669879"
RightLvl="0" AvailabilitySchedule="0" UseStartSale="false" UseStopSale="false" TaxDishType="1" FutureTaxDishType="1" ExtCode="2"
ShortName="" AltShortName="" PortionWeight="0" PortionName="" AltPortion="" Kurs="0" QntDecDigits="3" ModiScheme="0"
ComboScheme="0" ModiWeight="0" CookMins="0" Comment=""
Instruct="12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567
890123456789012345678901234567890" Flags="[miUseRestControl]" TaraWeight="0" ConfirmQnt="0" MInterface="0" MinRestQnt="0"
BarCodes="" PriceMode="pmPerPiece" OpenPrice="false" DontPack="false" ChangeQntOnce="false" AllowPurchasing="false"
UseRestControl="true" UseConfirmQnt="false" CategPath="Бар\Алкоголь" SaleObjectType="sotMenuItem"
ComboJoinMode="cjmNone" ComboSplitMode="csmNone" 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="1000183" HighLevelGroup2="1000186" HighLevelGroup3="0" HighLevelGroup4="0" BarCodesText="" BarcodesFullInfo="">
<RecommendedMenuItems ClassName="TRecommendedMenuItems">
<Items/>
</RecommendedMenuItems>
<Childs ClassName="tChildCollection"/>
</Item>

XML

В ответе будет содержаться полный список блюд, с подробной информацией по каждому из них.

В случае ошибки XML-документ не будет содержать ноды RK7Reference, в атрибуте RK7QueryResult.ErrorText будет приведен текст ошибки.
Для оптимизации кэширования справочника используйте атрибут RK7QueryResult.XMLVersion.

Если с момента предыдущего запроса в справочнике меню произошли какие либо изменения, значение данного атрибута будет отличаться от предыдущего.

Получение блюд, доступных к продажеLink to Получение блюд, доступных к продаже

Для выборки из справочника блюд только тех элементов, которые возможно в данный момент продать на кассе, необходимо отправить следующий запрос: 

<RK7Query>
<RK7CMD CMD="GetOrderMenu" >
<Station code="1"/>
</RK7CMD>
</RK7Query>
XML

В значении атрибута Station.code необходимо передать код станции, для которой будет актуализирован список блюд.
Дополнительно можно уточнить список по следующим параметрам: 

  • Order — конкретный, существующий заказ
  • Waiter — официант
  • Table — Стол
  • OrderCategory — Категория заказа

Эти свойства могут быть добавлены к запросу в ноду RK7CMD, по аналогии со Station, однако для Order необходимо использовать атрибут guid в место code.

В ответ на запрос вернется XML документ следующего вида: 

<RK7QueryResult ServerVersion="7.6.0.81" XmlVersion="243" NetName="CONF_MIDSERVER" Status="Ok" CMD="GetOrderMenu"
ErrorText="" DateTime="2019-12-30T11:37:25" WorkTime="0" Processed="1">
<PriceScale id="3" code="1" name="Основная"/>
<TradeGroup id="7" code="1" name="По умолчанию"/>
<Dishes>
<Item Ident="1000189" Price="100" quantity="3000"/>
<Item Ident="1000193" Price="100" quantity="2000"/>
<Item Ident="1000338" Price="100"/>
</Dishes>
<Modifiers>
<Item Ident="2003" ID="2003" Price="0"/>
<Item Ident="1000378" ID="1000378" Price="0"/>
</Modifiers>
</RK7QueryResult>
XML

Обработка ошибок должна работать аналогично предыдущему запросу.
В нодах Dishes и Modifiers будет перечислен список блюд и модификаторов соответственно, доступных к продаже на данный момент.
Для каждой из позиций вернется стоимость за штуку в копейках в атрибуте Price. Price=”100” — один рубль.
Для позиций, которым заданы ограничения по количеству так же вернется атрибут quantity, указывающий на остаток блюда тысячных долях. То есть: quantity = “1000” — Одна порция.
Для демонстрации списка блюд, доступных к заказу необходимо выбрать из справочника блюд — первый запрос, лишь те блюда, которые есть в меню заказа — второй запрос.
Связать элементы можно при помощи атрибута ident.

Запрос меню с себестоимостьюLink to Запрос меню с себестоимостью

При необходимости выгрузить себестоимость из r_keeper, в который настроена загрузка себестоимости из Store House 5, воспользуйтесь XML-запросом:

<?xml version="1.0" encoding="UTF-8"?>
<RK7Query >
  <RK7CMD CMD="GetRefData" RefName="MENUITEMS" OnlyActive="true" WithMacroProp="1" PropMask="items.(IDENT, CODE, NAME, PRICETYPES^4)">
  </RK7CMD>
</RK7Query>
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-02-09T13:55:20" WorkTime="31" Processed="1" ArrivalDateTime="2023-02-09T13:55:20">
    <RK7Reference DataVersion="373" ClassName="TRK7MenuItems" TotalItemCount="51">
        <Items>
            <Item Ident="1000015" Code="2" Name="суп" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000016" Code="3" Name="картофель жареный" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000025" Code="4" Name="Пинаколлада" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000027" Code="6" Name="Цыплёнок жаренный" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000028" Code="8" Name="Шашлык из баранины" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000042" Code="7" Name="Картофель Фри" PRICETYPES-4="2000"/>
            <Item Ident="1000058" Code="12" Name="Хэппи монинг" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000059" Code="13" Name="Кофе66" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000060" Code="14" Name="Чай" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000237" Code="23" Name="Ром" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000238" Code="24" Name="Баккарди" PRICETYPES-4="10000"/>
            <Item Ident="1000239" Code="25" Name="Бейлис" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000246" Code="27" Name="Молочный поросёнок" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000247" Code="28" Name="Бараньи рёбрышки" PRICETYPES-4="50000"/>
            <Item Ident="1000256" Code="29" Name="Чай лимонный" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000322" Code="31" Name="Купон на 600 р." PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000492" Code="33" Name="картофельное пюре" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000972" Code="34" Name="Комбо Тест" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1000989" Code="39" Name="Штопор" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1001145" Code="41" Name="каша гречневая" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1001184" Code="42" Name="Условное блюдо" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1001295" Code="43" Name="Блюдо с открытой ценой" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1001403" Code="45" Name="Бесплатное блюдо 1" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1001404" Code="46" Name="Бесплатное блюдо 2" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1001405" Code="48" Name="ттттттт" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1001614" Code="47" Name="Сантьяго дэ Куба" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002103" Code="50" Name="BigBurger" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002104" Code="51" Name="StandBurger" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002105" Code="52" Name="SmallBurger" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002106" Code="53" Name="BigCola" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002107" Code="54" Name="StdCola" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002108" Code="55" Name="SmallCola" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002109" Code="56" Name="BigPotato" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002110" Code="57" Name="StdPotato" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002111" Code="58" Name="SmallPotato" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002119" Code="60" Name="SMALL_DINNER" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002147" Code="65" Name="Standart_Dinner" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002148" Code="66" Name="Big_Dinner" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002166" Code="74" Name="Small_COLA_2" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002229" Code="61" Name="Роллы 1" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002230" Code="75" Name="Роллы 2" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002235" Code="76" Name="Роллы 3" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002240" Code="78" Name="Роллы 4" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002245" Code="84" Name="Роллы 5" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002266" Code="91" Name="1час" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002473" Code="92" Name="Предоплата Plazius" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002474" Code="93" Name="предопл." PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002765" Code="94" Name="Акция блюдо 1" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002766" Code="95" Name="Акция блюдо 2" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002837" Code="96" Name="Акция блюдо 3" PRICETYPES-4="9223372036854775807"/>
            <Item Ident="1002897" Code="98" Name="Сдача в чаевые" PRICETYPES-4="9223372036854775807"/>
        </Items>
    </RK7Reference>
</RK7QueryResult>
XML

Где значение 9223372036854775807 соответствует — Не задано.

Запрос группы блюдLink to Запрос группы блюд

При необходимости выгрузить группу блюд из меню из r_keeper 7 воспользуйтесь XML-запросом.

Пример запроса для группы Бар:

<?xml version="1.0" encoding="UTF-8"?>
<RK7Query >
	<RK7CMD CMD="GetRefData" RefName="CATEGLIST" OnlyActive="true" WithChildItems="2" PropMask="*">
		<PROPFILTERS>
			<PROPFILTER>
				<PROPFILTER Name="Name" Value="Бар" />
			</PROPFILTER>
		</PROPFILTERS>
	</RK7CMD>
</RK7Query>
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&#9;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>