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

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

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

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

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

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

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

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

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

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

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

  • 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"
    }
  ]
}

Опис параметрів відповіді 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"
                    }
                ]
            }
        ]
    }
}

Перевірка наявності блюд

Дана команда потрібна для попередньої перевірки наявності блюд у 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
                }
            ]
        }
    ]
}

Опис параметрів відповіді 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
            }
        ]
    }
}

Last updated