Замовлення в меню
Операція дозволяє зробити замовлення самостійно в меню (без виклику офіціанта, або з номера у готелі)
Створення та оплата замовлення в меню
Схема роботи команди
createOrderOnTable
Перевірка чи вже існує подібне замовлення, у разі якщо це замовлення на якомусь з етапів було відхилене, або чи вже існує декілька подібних замовлень (що є результатом розділення замовлення за місцями оплати).
Якщо замовлення ще не існує -> перевіряємо наявність блюд-> якщо блюд немає -> отримуємо помилку.
Якщо замовлення ще не існує -> перевіряємо наявність блюд-> якщо наявність блюд підтверджується -> створюємо замовлення.
Якщо замовлення створено або існувало(и) -> намагаємось роздрукувати нероздруковані .
Якщо замовлення має статус "
New
" або "Bill
" - намагаємось сплатити його.
Якщо замовлення мають id від rootOrder, що виник у результаті розділення після попередньої спроби оплати, то спроба оплатити замовлення буде проходити через нього.
Expirenza приймає наступні стани рахунку:
NEW
- Замовлення створено, ПреЧек не роздрукованоBILL
- Замовлення створено, ПреЧек роздрукованоPAYED
Операції getBill
та payBill
не використовуються
Опис параметрів запиту
createOrderOnTable
Name | Type | Required | Description |
---|---|---|---|
operation | String | ✔️ | Назва команди |
rID | String | ✔️ | Ідентифікатор запиту |
externalId | String | ✔️ | Ідентифікатор запиту із зовнішньої системи |
originName | String | ✔️ | Ідентифікатор зовнішньої системи |
tableId | String | ✔️ | Ідентифікатор столу |
items | [object] | ✔️ | Блюда |
id | String | ❌ | Ідентифікатор |
quantity | Integer | ❌ | Кількість |
modifiers | [object] | ❌ | Модифікатори |
id | String | ✔️ | Ідентифікатор модифікатору |
groupId | String | ❌ | Ідентифікатор групи модифікатору, якщо модифікатору має групу |
quantity | Integer | ✔️ | Кількість модифікаторів |
fiscalData | [object] | ❌ | Дані для фіксального чеку |
key | String | ✔️ | |
value | String | ✔️ |
Опис параметрів відповіді
createOrderOnTable
Name | Type | Required | Description |
---|---|---|---|
rID | string | ✔️ | Ідентифікатор запиту |
result | object | ✔️ | none |
success | boolean | ✔️ | Ознака успіху |
stage | string | ✔️ | Стадія |
paySubstate | string | ❌ | Під-статус з процесу оплати |
errorMessage | string | ❌ | Сповіщення про помилку |
rootOrder | object | ✔️ | Інформація про початкове замовлення |
orderId | string | ✔️ | Ід замовлення |
orderNumber | integer | ✔️ | Номер |
resultSum | number | ✔️ | Сума замовлення |
orderStatus | string | ✔️ | Статус |
tableNumber | integer | ✔️ | Номер столу |
waiterId | string | ✔️ | Ід офіціанта |
waiter | string | ✔️ | Ім'я офіціанта |
ordersSummary | [object] | ✔️ | Інфо о замовленнях, отриманих у результаті оплати |
orderId | string | ✔️ | ід |
orderNumber | integer | ✔️ | Номер |
resultSum | integer | ✔️ | Сума |
orderStatus | string | ✔️ | Статус |
closed | string | ❌ | Дата закриття |
tableNumber | integer | ✔️ | Номер столу |
waiterId | string | ✔️ | Ід офіціанта |
waiter | string | ✔️ | Ім'я офіціанта |
guests | [object] | ✔️ | Деталіровка |
name | string | ✔️ | Ім'я гостя |
dishes | [object] | ✔️ | Позиції замовлення |
categoryId | string | ✔️ | Ід категорії |
category | string | ✔️ | Категорія |
name | string | ✔️ | Найменування блюда |
count | integer | ✔️ | Кількість |
sum | integer | ✔️ | Сума |
orderNumber | integer | ✔️ | Номер замовлення |
type | string | ✔️ | Тип блюда |
dishId | string | ✔️ | Код блюда |
Перевірка наявності блюд
Дана команда потрібна для попередньої перевірки наявності блюд у POS-системі, перед створенням інвойсу.
Приклад: Блюдо за якихось причин (як приклад: у POS-ситемі блюдо знаходиться у stop-list) не доступне до замовлення, виключити ситуацію коли гість закладу оплачує замовлення, а ресторан не може приготувати дану страву.
Логіка роботи команди checkProductsRestrictions
Якщо в позиції є modifiers, то визначаємо їх загальну кількість.
Кількість = кількість модифікаторів у позиції * кількість страв, до якого прив'язан
modifiers
Перевіряємо доступність блюд для замовлення і записуємо недостатню кількість у
exceedQuantity
Якщо exceedQuantity = 0, то available = true.
Якщо exceedQuantity > 0, то available = false.
Опис команди - checkProductsRestrictions
Name | Type | Required | Description |
---|---|---|---|
rID | string | ✔️ | Код запиту |
items | [object] | ✔️ | none |
id | string | ✔️ | Код блюда |
quantity | integer | ✔️ | Кількість |
modifiers | [object] | ❌ | Модифікатори |
id | string | ✔️ | Код блюда |
quantity | integer | ✔️ | Кількість |
Опис параметрів відповіді checkProductsRestrictions
Name | Type | Required | Description |
---|---|---|---|
result | object | ✔️ | none |
rID | string | ✔️ | Ідентификатор запиту |
checkResult | string | ✔️ | Результат перевірки . Можливі значення описано тут. |
itemResults | [object] | ✔️ | none |
available | boolean | ✔️ | Ознака доступності |
exceedQuantity | integer | ✔️ | Недостатня кількість |
id | string | ✔️ | Код продукту (блюда або модифікатора) |
name | string | ✔️ | Найменування продукту |
Last updated