Сценарий внешней интеграции с созданием заказа на кассе без использования UCS Delivery. Внешняя система создаёт заказ на кассе и самостоятельно осуществляет доставку этого заказа.

2.1 Основной позитивный сценарий

1. Агент получает новую команду new_order_delivery;

2. От WSA на кассу отправляется команда OpenWebForm;

3. Если в текущий момент на кассе не происходит обработка заказа в web-форме (если заказ создан впервые)- web-форма будет открыта на кассе (рис. 1).

 

Рис. 1

В этом пункте текст «Если отклонить, то может быть несколько причин отмены (например, кончилась кола и нельзя принять заказ с колой)» заменить на «При нажатии кнопки «Отклонить» происходит переход на экран выбора причины отклонения заказа (см. альтернативные сценарии, рис.4)»

4. В позитивном сценарии кассир нажимает «Принять», после этого агент посылает на кассовый сервер RK7 команды CreateOrder + SaveOrder; 

Рис. 2

5. Полученный ответ отправляется на WS, а WS в свою очередь отправляет результат в DeliveryClub.

2.2 Отмена заказа по инициативе внешней службы

2.2.1 Агент еще не выполнил пункт 2 основного сценария (кассиру отображается форма, кассир не принял решение, до SaveOrder)

Callback на создание заказа

<?xml version="1.0" encoding="UTF-8"?>
<RP taskguid="guid">
   <ERROR code="300" text="Order has been canceled by aggregator " />
</RP>

Callback на отмену заказа

<?xml version="1.0" encoding="UTF-8"?>
<Error code="0" Text="OK" />
 

Что происходит на кассе/агенте

Кассиру отобразилась форма заказа.

Веб форма опрашивает сервер на предмет отмены заказа.

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

2.2.2 Агент еще не выполнил пункт 2 основного сценария (заказ приняли, был выполнен SaveOrder)

Callback на сценарий 1 (основной сценарий)

<?xml version="1.0" encoding="UTF-8"?>
<RP taskguid="guid">
   <ERROR code="300" text="Order has been canceled by aggregator " />
</RP>

Callback на отмену заказа

<?xml version="1.0" encoding="UTF-8"?>
<Error code="0" Text="OK" />

Что происходит на кассе/агенте

Кассир принял заказ.

Заказ скорее всего успел создаться.

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

2.2.3 Пункт 2 основного сценария был уже выполнен (заказ приняли, был выполнен SaveOrder)

2.2.3.1 Заказ не оплачен

Callback на отмену заказа

<?xml version="1.0" encoding="utf-8"?>
<Error code="0" Text="OK" />

Что происходит на кассе/агенте

Агент войдирует содержимое заказа, с причиной удаления, смаппенной по таблице причин и закрывает визит.

2.2.3.2 Заказ оплачен наличными, но еще не готовили

Callback на отмену заказа

<?xml version="1.0" encoding="utf-8"?>
<Error code="0" Text="OK" />

При оплате налом отмена происходит на кассе, агент отмену не делает (на этапе 1). От внешней службы нужно будет только сохранить причину отмены заказа в расширенное свойство.

2.2.3.3 Заказ оплачен безналом, но еще не готовили

Callback на отмену заказа

<?xml version="1.0" encoding="utf-8"?>
<Error code="0" Text="OK" />

Что происходит на кассе/агенте

От внешней службы нужно будет только сохранить причину отмены заказа в расширенное свойство, агент отмену не делает (на этапе 1).

2.2.3.4 Заказ оплачен наличными, заказ частично или полностью приготовлен на кухне Callback на отмену заказа

<?xml version="1.0" encoding="utf-8"?>
<Error code="0" Text="OK" />

Что происходит на кассе/агенте

От внешней службы нужно будет только сохранить причину отмены заказа в расширенное свойство.

2.2.3.5 Заказ оплачен безналом, заказ частично или полностью приготовлен на кухне Callback на отмену заказа

<?xml version="1.0" encoding="utf-8"?>
<Error code="0" Text="OK" />

Что происходит на кассе/агенте

От внешней службы нужно будет только сохранить причину отмены заказа в расширенное свойство.

2.3 Отмена на кассе по инициативе кассира

В случае отклонения заказа на шаге 3 основного сценария (кассир нажимает кнопку «Отклонить») необходимо передать статус и причину отмены заказа внешнему сервису. При нажатии кассиром кнопки Отклонить происходит переход на экран выбора причины отклонения заказа (рис. 3)

 )

Рис. 3

<?xml version="1.0" encoding="UTF-8"?>
<RP taskguid="7b31bad0-1962-44ac-b9f1-dfa14d595800">
   <STATUS code="1">
      <CANCELREASON code="int" text="кассир занят" />
   </STATUS>
</RP>

Если в это время приходит команда отмена заказа, то отвечаем на отмену:

<?xml version="1.0" encoding="UTF-8"?>
<RP taskguid="guid">
   <ERROR code="n" text="Заказ отменен в ресторане" />
</RP>

Что происходит на кассе/агенте На сервер API пришла команда “Cancel”.

2.4 Автоматические действия с заказом

1) В случае неактивности кассира на шаге 3 (кассир не отреагировал на открытый диалог), форма будет отображена в течение 60 секунд и закроется по таймауту, в этом случае в DC будет отправлен таймаут создания заказа

<?xml version="1.0" encoding="UTF-8"?>
<RP taskguid="guid">
	<ERROR code="302" text="Сashier didn't respond in time"/>
</RP>

Если в это время приходит команда отмена заказа (сценарий 3.1), то отвечаем на отмену:

<?xml version="1.0" encoding="UTF-8"?>
<RP taskguid="guid">
	<ERROR code="302" text="Сashier didn't respond in time"/>
</RP>

Что происходит на кассе/агенте

Форма заказа отобразилась, но кассир не отреагировал за время указанное в cashier_timeout_sec=”30”. Посылается команда “закрыть форму”.

2) Если на шаге 3 основного сценария происходит обработка или оплата другого заказа, касса блокирует отображение OpenWebForm. В этом случае Агент повторяет отправку команды OpenWebForm в перделах установленного таймаута. Если время вышло то необходимо сообщить внешнему сервису, что заказ еще не принят (произошел таймаут принятия заказа на кассе).

<?xml version="1.0" encoding="UTF-8"?>
<RP taskguid="guid">
	<ERROR code="301" text="Unable to open form on POS"/>
</RP>

Что происходит на кассе/агенте

2Форму не удалось открыть, т.к. занята касса (кассир редактирует/оплачивает другой заказ)

Если в это время приходит команда отмена заказа (сценарий 2.1), то отвечаем на отмену:

<?xml version="1.0" encoding="UTF-8"?>
<RP taskguid="guid">
	<ERROR code="301" text="Unable to open form on POS"/>
</RP>

3)На любом шаге из DC может прийти команда «клиент отменил заказ«.

2.5 Ошибки при работе с заказами

На этапе создания заказа (шаг. 4) возможно возвращение ошибки создания заказа от кассового сервера RK7, например в случаях:

- блюдо удалено или закончилось

- нет валюты или некорректно заведена

- касса выключена (таймаут)

3.1 Настройки WSAgent

Секция Интеграция с Delivery Club

IP адрес: IP-адрес станции, на которой будет поднят Web-сервис
Port: любой свободный порт на этой станции

При отсутствии настройки в этой секции вы получите ошибку 306, подробнее см: https://docs.rkeeper.ru/display/WS/WhiteServer+API+1.0

Секция Действие с заказом при таймауте на кассе

Отклонить заказ – заказ будет автоматически отклонен, если за указанное время заказ не будет подтвержден/отклонен кассиром;
Создать заказ – заказ будет автоматически подтвержден, если за указанное время заказ не будет подтвержден/отклонен кассиром;

Секция Идентификаторы типов данных в CRM

TerminalType: справочник CRM: классификатор ПО;
AddressTypeId: справочник CRM: тип адреса;
ContactTypeId: справочник CRM: тип контакта;