Описание сценария Delivery External
Сценарий внешней интеграции с созданием заказа на кассе без использования UCS Delivery. Внешняя система создаёт заказ на кассе и самостоятельно осуществляет доставку этого заказа.
1 Общее описание
2 Описание сценария
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 Настройки
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: тип контакта;