💟
Expirenza
На головнуДо кабінету
  • Про Expirenza
  • Підключення закладу
    • Подати заявку
    • Приєднання до оферти
    • Технiчне підключення
      • r_keeper
        • Останні зміни
      • Poster
      • Syrve
        • Оновлення плагіна
        • Друк QR-коду на пречеку
        • Програма лояльності Expirenza
        • Останні зміни
      • SmartTouch
      • BarBoss
      • SkyService
      • Інші POS-системи
    • Операційна готовність
    • Тестова оплата
    • Підготовка до запуску
  • Налаштування роботи
    • Додавання офіціанта
      • В Poster
      • В Syrve
      • В r_keeper
      • В SmartTouch
      • B BarBoss
      • В SkyService
      • В інші POS-системи
    • Доставка
      • Налаштування Syrve Office / Syrve HQ
      • Налаштування r_keeper
      • Налаштування Poster
    • 🆕Самовивіз
    • Розділення рахунку (Split Bill)
    • Бронювання столика
    • Expirenza Гості (CRM)
    • Замовляй та плати
    • Програма Лояльності
    • Таємні Бокси
  • Підтримка POS-систем
  • API для інших POS-систем
    • Інтеграція нових POS-систем
      • Підготовка до інтеграції
      • Технічна інтеграція
      • Тестування технічної інтеграції
    • Схема роботи з AПІ
    • Авторизація
    • Операції між Expirenza і POS системою
      • Отримання рахунку за номером стола
      • Оплата рахунку і закриття замовлення
      • Отримання списку персоналу
      • Отримання категорій
      • Отримання інформації про столи ресторану
      • Отримання переліку залів у ресторані
      • Отримання налаштувань для відображення QR на ПреЧек
      • Замовлення в меню
      • Розділення рахунку (Split Bill)
      • Отримання стоп-листів
      • Повідомлення у POS-систему
      • Кешування рахунків
      • Результати інших повідомлень від POS системи
    • Підключення за допомогою Postman
    • Поширені питання (FAQ)
  • ПУБЛІЧНЕ АПІ
    • Webhook отримання оновлень по Боксам
  • Корисні посилання
    • Instagram
    • Telegram
    • Youtube
  • Підтримка
    • Telegram
Powered by GitBook
On this page
  • Створення та оплата замовлення в меню
  • Перевірка наявності блюд
  1. API для інших POS-систем
  2. Операції між Expirenza і POS системою

Замовлення в меню

Операція дозволяє зробити замовлення самостійно в меню (без виклику офіціанта, або з номера у готелі)

PreviousОтримання налаштувань для відображення QR на ПреЧекNextРозділення рахунку (Split Bill)

Last updated 4 months ago

Створення та оплата замовлення в меню

Схема роботи команди createOrderOnTable

  1. Перевірка чи вже існує подібне замовлення, у разі якщо це замовлення на якомусь з етапів було відхилене, або чи вже існує декілька подібних замовлень (що є результатом розділення замовлення за місцями оплати).

  2. Якщо замовлення ще не існує -> перевіряємо наявність блюд-> якщо блюд немає -> отримуємо помилку.

  3. Якщо замовлення ще не існує -> перевіряємо наявність блюд-> якщо наявність блюд підтверджується -> створюємо замовлення.

  4. Якщо замовлення створено або існувало(и) -> намагаємось роздрукувати нероздруковані .

  5. Якщо замовлення має статус "New" або "Bill" - намагаємось сплатити його.

Якщо замовлення мають id від rootOrder, що виник у результаті розділення після попередньої спроби оплати, то спроба оплатити замовлення буде проходити через нього.

Expirenza приймає наступні стани(state) рахунку:

  • NEW - Замовлення створено, ПреЧек не роздруковано

  • BILL- Замовлення створено, ПреЧек роздруковано

  • PAYED-Замовлення сплачене

Операції getBill та payBill не використовуються

Опис параметрів запиту createOrderOnTable

Приклад запиту команди createOrderOnTable
{
    "operation": "createOrderOnTable",
    "rID": "manual16",
      
    "externalId": "003",
    "originName": "expz",
    "tableId":"aaabfb9b-ba7f-076e-0183-59bcbe5a0068",
    "items":[
  
        {
            "id":"428dc245-9112-4709-b007-c6dc8c2744f3",
            "quantity": 1.0,
            "modifiers": [
                {
                    "id": "f9a40cf6-7f4e-4086-8872-d0c165e59040",
                    "groupId":"3a72b59e-d5e3-4a2e-b634-1bc1cbf7432e",
                    "quantity": 1
                }
            ]
        }
    ]
  },
  "fiscalData": [
    {
      "key": "ЕКВАЙЕР",
      "value": "Universal Bank"
    },
    {
      "key": "ТЕРМІНАЛ"
    },
    {
      "key": "КОМІСІЯ",
      "value": "0 грн."
    },
    {
      "key": "ВИД ОПЕРАЦІЇ",
      "value": "Оплата"
    },
    {
      "key": "ЕПЗ",
      "value": "53754141******56"
    },
    {
      "key": "ПС",
      "value": "MC"
    },
    {
      "key": "RRN",
      "value": "010025711364"
    },
    {
      "key": "КОД. АВТ",
      "value": "319431"
    }
  ]
}
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

Приклад відповіді команди createOrderOnTable

    "rID": "manual119",
    "result": {
        "success": true,
        "stage": "PAYED",
        "rootOrder": {
            "orderId": "a162cb7f-4edd-46a7-9824-4c5dfde4326f",
            "orderNumber": 372,
            "resultSum": 1450.5,
            "orderStatus": "Deleted",
            "tableNumber": 372,
            "waiterId": "123",
            "waiter": "John Doe"
        },
        "ordersSummary": [
            {
                "orderId": "b79b3997-7491-4518-91e0-a04a89a28437",
                "orderNumber": 373,
                "resultSum": 1100.0,
                "orderStatus": "Closed",
                "closed": "2023.04.12 16:17:14",
                "tableNumber": 1,
                "waiterId": "123",
                "waiter": "John Doe"
            },
            {
                "orderId": "6cc87f61-c6d4-4b7f-8a52-229102b09748",
                "orderNumber": 374,
                "resultSum": 350.5,
                "orderStatus": "Closed",
                "closed": "2023.04.12 16:17:15",
                "tableNumber": 1,
                "waiterId": "123",
                "waiter": "John Doe"
            }
        ],
        "guests": [
            {
                "name": "Гiсть",
                "dishes": [
                    {
                        "categoryId": "04e705cf-0f9f-36cd-0183-a2be58c00094",
                        "category": "Не фискальный",
                        "name": "Пицца - Маргарита",
                        "count": 2.0,
                        "sum": 1100.0,
                        "orderNumber": 373,
                        "type": "dish",
                        "dishId": "428dc245-9112-4709-b007-c6dc8c2744f3"
                    },
                    {
                        "categoryId": "-1",
                        "category": "Блюдо без категории",
                        "name": "Петрушка",
                        "count": 2.0,
                        "sum": 0.0,
                        "orderNumber": 373,
                        "type": "modifier",
                        "dishId": "f9a40cf6-7f4e-4086-8872-d0c165e59040"
                    }
                ]
            },
            {
                "name": "Гiсть",
                "dishes": [
                    {
                        "categoryId": "04e705cf-0f9f-36cd-0183-a2be58c00093",
                        "category": "Фискальный",
                        "name": "Kopke",
                        "count": 1.0,
                        "sum": 350.5,
                        "orderNumber": 374,
                        "type": "dish",
                        "dishId": "50391936-2733-48a1-980c-5b7a3c9635f6"
                    }
                ]
            }
        ]
    }
}
Name
Type
Required
Description

rID

string

✔️

Ідентифікатор

запиту

result

object

✔️

none

success

boolean

✔️

Ознака успіху

stage

string

✔️

Можуть бути стани: STARTED,CHECKED,CREATED,

PRINTED,PAYED,UNKNOWN_ERROR

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

  1. Якщо в позиції є modifiers, то визначаємо їх загальну кількість.

    1. Кількість = кількість модифікаторів у позиції * кількість страв, до якого прив'язан modifiers

  2. Перевіряємо доступність блюд для замовлення і записуємо недостатню кількість у exceedQuantity

  3. Якщо exceedQuantity = 0, то available = true.

  4. Якщо exceedQuantity > 0, то available = false.

Опис команди - checkProductsRestrictions

Приклад запиту команди checkProductsRestrictions
{
    "operation": "checkProductsRestrictions",
    "rID": "manual16",
     
    "items":[
        {
            "id":"428dc245-9112-4709-b007-c6dc8c2744f3",
            "quantity": 1.0,
            "modifiers": [
                {
                    "id": "f9a40cf6-7f4e-4086-8872-d0c165e59040",
                    "quantity": 1
                }
            ]
        }
    ]
}
Name
Type
Required
Description

rID

string

✔️

Код запиту

items

[object]

✔️

none

id

string

✔️

Код блюда

quantity

integer

✔️

Кількість

modifiers

[object]

❌

Модифікатори

id

string

✔️

Код блюда

quantity

integer

✔️

Кількість

Опис параметрів відповіді checkProductsRestrictions

Приклад відповіді команди checkProductsRestrictions
{
    "rID": "manual16",
    "result": {
        "checkResult": "Allowed",
        "itemResults": [
            {
                "id": "428dc245-9112-4709-b007-c6dc8c2744f3",
                "name": "Пицца - Маргарита",
                "available": true,
                "exceedQuantity": 0.0
            },
            {
                "id": "f9a40cf6-7f4e-4086-8872-d0c165e59040",
                "name": "Петрушка",
                "available": true,
                "exceedQuantity": 0.0
            }
        ]
    }
}
Name
Type
Required
Description

result

object

✔️

none

rID

string

✔️

Ідентификатор запиту

checkResult

string

✔️

itemResults

[object]

✔️

none

available

boolean

✔️

Ознака доступності

exceedQuantity

integer

✔️

Недостатня кількість

id

string

✔️

Код продукту (блюда або модифікатора)

name

string

✔️

Найменування продукту


Результат перевірки . Можливі значення описано

тут.
Створення замовлення