Работа с заказами
XML-запросы по внесению/удалению предоплаты, распечатки пречека и другие операции рассмотрены в статье Оплата заказа.
Заказ в доставку
<RK7Query>
<RK7CMD CMD="DeliveryUpdateStatus">
<Order guid="{99ECDC52-09EF-4927-8068-F25830EF493C}"/>
<DeliveryBlock deliveryState="1" startTime="2" travelTime="3" deliveryTime="4" forwarderSendTime="" forwarderReturnTime="" realDeliveryTime="" zoneID="" zoneName="" orderPrefix=""/>
<ExtSource source="31"/>
</RK7CMD>
</RK7Query>
Список заказов
<RK7Query>
<RK7Command CMD="GetOrderList" >
</RK7Command>
</RK7Query>
Список открытых заказов
<?xml version="1.0" encoding="UTF-8"?>
<RK7Query >
<RK7CMD CMD="GetOrderList" onlyOpened="1">
</RK7CMD>
</RK7Query>
Заказ
<RK7Query>
<RK7Command CMD="GetOrder">
<Order guid="{577FFA69-348A-41D7-810B-CF0A32489BE1}"/>
</RK7Command>
</RK7Query>
Либо по связке visit+orderident:
<RK7Query>
<RK7Command CMD="GetOrder">
<Order visit="543555" ident="256"/>
</RK7Command>
</RK7Query>
Создание нового заказа
Для создания нового заказа, используйте запрос вида:
<RK7Query>
<RK7CMD CMD="CreateOrder">
<Order persistentComment="100500">
<Table code="1"/>
<Waiter code="5"/>
<Station id="15015"/>
<GuestType id="1"/>
<Guests>
<Guest GuestLabel="1"/>
<Guest GuestLabel="2"/>
<Guest GuestLabel="3"/>
<Guest GuestLabel="4"/>
<Guest GuestLabel="5"/>
</Guests>
</Order>
</RK7CMD>
</RK7Query>
Здесь обязательный параметр - только стол.
Где:
- PersistentComment — сохраняемый комментарий к заказу
- Table — стол, обязательный параметр для заполнения. Обращение происходит при указании любого из его полей code, ident или guid. Аналогично для всех остальных параметров.
- Waiter — от имени какого официанта создается заказ. Если не задан — создается от имени системы.
- Station — станция
- GuestType — тип гостей. В разделе <Guests> заполните гостей, задайте имена.
Пустой заказ создан, после чего приходит ответ вида:
<?xml version="1.0" encoding="utf-8"?>
<RK7QueryResult ServerVersion="7.5.3.182" XmlVersion="166" Status="Ok" CMD="CreateOrder" VisitID="356255787" OrderID="256" guid="{6002FD3A-68B6-4FC9-8EB1-D53A697C286C}" ErrorText="" DateTime="2014-11-19T18:23:04" WorkTime="30" Processed="1"/>
В данном ответе, для дальнейшей работы, необходимо получить связку visit + orderid или guid.
Для наполнения заказа отправьте запрос вида:
<RK7Query>
<RK7CMD CMD="SaveOrder">
<Order visit="356255787" orderIdent="256"/>
<Session>
<Station id="15015"/>
<Dish id="1043439" quantity="1000" price="0"/>
</Session>
</RK7CMD>
</RK7Query>
В примере обращались ключом связкой полей visit + orderid.
Станция не является обязательным параметром, её можно опустить.
Общаться к блюдам можно по id, guid или коду. Количество — умножается на 1000. Цена — необязательный параметр.
Для задания модификатора, сделайте запрос вида:
<Dish id="1043439" quantity="1000" price="0">
<Modi id="100" count="1" price="100"/>
</Dish>
- Обращение по id, guid или коду.
- price — необязательный параметр
- count — в единицах.
Пример наполнения заказа блюдом со скидкой на заказ:
<RK7Query>
<RK7CMD CMD="SaveOrder">
<Order visit="356255787" orderIdent="256"/>2
<Session>
<Station id="15015"/>
<Dish id="1043439" quantity="1000" price="0"/>
<Discount id="100"/>
</Session>
</RK7CMD>
</RK7Query>
Пример на добавление в заказ скидки на заказ:
<RK7Query>
<RK7CMD CMD="SaveOrder">
<Order guid="{5AAEB01D-C8BE-4C11-A1EC-348EF361F3AE}"/>
<Session>
<Station id="15002"/>
<Discount id="1000229"/>
</Session>
</RK7CMD>
</RK7Query>
Пример на добавление в заказ скидки на блюдо:
<RK7Query>
<RK7CMD CMD="SaveOrder">
<Order guid="{5AAEB01D-C8BE-4C11-A1EC-348EF361F3AE}"/>
<Session line_guid="{9DC95843-E141-42BF-BB78-9818BCDED302}">
<Dish line_guid="{A409B650-DC23-45B3-8509-97DE257F00EF}">
<Discount code="6"/>
</Dish>
</Session>
</RK7CMD>
</RK7Query>
<Session line_guid=«{9DC95843-E141-42BF-BB78-9818BCDED302}»> — данные берутся из запроса GetOrder
<Dish line_guid=«{A409B650-DC23-45B3-8509-97DE257F00EF}»> — данные берутся из запроса GetOrder наполнения заказа комбо-блюдом
<RK7Query>
<RK7CMD CMD="saveOrder">
<order guid="{4461052B-CF8B-4AB8-9D9D-40D1D6363EAC}"/>
<Session>
<Combo id="1000205" quantity = "1000" >
<Component id="1000033"></Component>
<Component id="1000034"></Component>
</Combo>
</Session>
</RK7CMD>
</RK7Query>
Где:
- Combo id=«1000205» - это идентификатор блюда в меню
- Component id=«1000033» - идентификатор блюда привязанного к комбоэлементу.
Пример на добавление в заказ email гостя:
<?xml version="1.0" encoding="utf-8"?>');
<RK7Query>
<RK7CMD CMD="UpdateOrder">
<Station code="'IntToStr(StationCode)'"/>
<Order guid="'o.GUIDString'" />
<ExternalProps>
<Prop name="Printed103384" value="1"/> // set extprop sysname
</ExternalProps>
</RK7CMD>
</RK7Query>
Для изменения курса подачи блюд, воспользуйтесь командой ChangeSessionCourse. Пример:
<?xml version="1.0" encoding="UTF-8"?>
<RK7Query >
<RK7CMD CMD="ChangeSessionCourse" isDraft="true">
<Order guid="" orderIdent="1" visit="1"/>
<Employee code="0" guid="" id="0" />
<LockStation code="0" guid="" id="0" />
<Course code="0" guid="" id="0" />
<CourseFrom code="0" guid="" id="0" />
</RK7CMD>
</RK7Query>
Пример добавления блюда с указанием курса подачи (тег Course):
<?xml version="1.0" encoding="UTF-8"?>
<RK7Query>
<RK7CMD CMD="SaveOrder">
<Order guid="{E8D39ADA-8C8D-49BF-BC87-7A61650F36D6}"/>
<Session>
<Course code="3"/>
<Waiter code="10"/>
<Station id="15002"/>
<Dish id="1003070" quantity="1000"/>
</Session>
</RK7CMD>
</RK7Query>
Пример назначения блюду места после переноса между заказами (для переноса блюда используйте TransferDishes):
<?xml version="1.0" encoding="UTF-8"?>
<RK7Query>
<RK7Command CMD="SaveOrder">
<Order guid="{99FEAB46-5C9D-4AC9-8E3F-5C365AE8BAE5}"/>
<Session>
<Station id="15002"/>
<Dish id="1000059" line_guid="{E5E8ADC5-41B8-42DF-8007-CBA57007C2D5}" seat="2">
</Dish>
</Session>
</RK7Command>
</RK7Query>
Создания банкетного заказа
1. Для создания банкетного заказа используйте xml-запрос CreateOrder.
Пример xml-запроса:
<RK7Query>
<RK7CMD CMD="CreateOrder" openTime="2025-04-17T10:00:00" duration="T05:00:00" holder="ООО Рога и Копыта">
<Table code="44"/>
<Waiter code = "1"/>
</RK7CMD>
</RK7Query>
2. Для получения свойств банкетного заказа нужно используйте запрос GetOrder:
<RK7Query>
<RK7CMD CMD="GetOrder">
<Order guid="{871891FB-FFC3-40D7-B2E0-4D30853E88EE}"/>
</RK7CMD>
</RK7Query>
3. Для добавления блюд в заказ используйте запрос SaveOrder:
<RK7Query>
<RK7CMD CMD="SaveOrder">
<Order guid="{871891FB-FFC3-40D7-B2E0-4D30853E88EE}"/>
<Session>
<Dish code="18" quantity="1000"/>
</Session>
</RK7CMD>
</RK7Query>
Удаление блюд из заказа
По своей структуре похож на наполнение заказа:
<RK7Query>
<RK7CMD CMD="SaveOrder">
<Order guid="guid заказа" />
<Session uni="sessionuni">
<Dish uni="dishuni" code="1000" price="0">
<Void id="ident причины удаления" quantity="сколько удалять"/>
</Dish>
</Session>
</RK7CMD>
</RK7Query>
Закрытие визита
<RK7Query>
<RK7CMD CMD="CloseVisit" VisitID="393873942"/>
</RK7Query>
Получение ответа:
<?xml version="1.0" encoding="utf-8"?>
<RK7Query>
<RK7CMD CMD="GetPrintLayout" TextReport="1" >
<Layout id="1001922">
</Layout>
</RK7CMD>
</RK7Query>
Удаление заказа
Перед удалением необходимо очистить заказ, удаляется только пустой заказ:
<?xml version="1.0"?>
<RK7Query>
<RK7CMD CMD="VoidOrder">
<Order visit="489300334" orderIdent="256"/>
<Station id="26888"/>
<Manager id="1100308"/>
<DeleteReason id="2"/>
</RK7CMD>
</RK7Query>
Cписок выполненных операций на кассе
<RK7Query>
<RK7Command CMD="GetDocByLayout">
<Layout code="12083"/>
</RK7Command>
</RK7Query>