Введение

В r_k Delivery есть возможность создать заказ с весовыми блюдами. 

Для работы весовых блюд в интерфейсе заведения и колл-центре необходим White Server Agent версии от 2.7.1.7 и выше.

Чтобы создавать заказ на доставку с весовым блюдом:

  1. Создайте блюдо в менеджерской станции
  2. В административной панели r_k Delivery добавьте блюдо в представление меню
  3. Создайте заказ с весовым блюдом. 

В этой статье будет рассмотрен пример создания и продажи весового блюда торт.

Предварительные настройки

Создайте блюдо в менеджерской станции.

  1. Создайте весовое блюдо, например Торт Медовик
  2. Задайте цену и активируйте блюдо
  3. В разделе Порции укажите:
    • Добавление в заказ — Склеивать
    • Тип единицы измерения — Килограмм
    • Выключите настройку 1 Изменение веса. Если она будет включена, вес всех весовых товаров придется подтверждать на кассовой станции
    • Включите настройку Не паковать
    • Вес порции — вес порции торта в заведении из примера — 250 грамм. В поле укажите 0,25, так как выбран тип единицы измерения — килограммы
    • Режим цены — Порционное за стд. Порцию. В этом случае заданная цена будет применятся именно к порции, то есть 250 грамм торта будут стоить 350 рублей
  4. Сохраните изменения. 

Таким же образом создайте весовое блюдо, например Конфеты на вес. Только в настройках блюда в поле Режим цены выберите Порционное за вес.

Затем добавьте блюдо в представление меню в административной панели r_k Delivery.

  1. Перейдите в административную панель r_k Delivery
  2. Перейдите в меню Меню > Представление меню ресторана
  3. Выберите группу и добавьте туда весовое блюдо
  4. Нажмите на кнопку Опубликовать меню для заведений.

Готово, весовое блюдо добавлено в представление. Теперь его можно продать.

Создание заказа

Запрос

Для создания заказа используйте запрос:

POST https://delivery.ucs.ru/orders/api/v1/orders
JSON

Content-Type укажите application/json.

Добавить вес блюду можно только при добавлении его в заказ. Если ввести вес в существующее блюдо в заказе, оно не разобьется на порции.

Пример тела запроса

{ 
  "comment": "приготовьте с любовью ", 
  "restaurantId": "a7db6017-3f7b-444d-a1d4-9c277b28ffd0",
  "persons": "1", 
  "dishList": [ 
    { 
      "id": "8198255e-1c7a-702a-a512-05b1803561e5", 
      "name": "Конфеты - вес",
      "price": "500",
      "imageUrls":[
         ],
        "measure": {
                "value": 0.100,
                "unit": "кг",
                "priceMode": "PerUnitOfWeight",
                "qntDecDigits": 3,
                "changeQntOnce": false,
                "joinMode": "almOnePortion"
                },
         "quantity": 0.75,
         },
 ], 
 "expeditionType": "delivery",
 "expectedAt":"2022-12-23T18:03:42.504+03:00",
 "paymentTypeId": "card",
 "changeFrom": "5000", 
 "guest": {
   "email": "eewd@dgf.ru", 
   "phone": "79991234567",
   "firstName": "Олег"
 }, 
 "address": { 
   "postcode": "109443", 
   "cityId": "73439fb3-c0c4-42ca-a269-64f031a6a33b",
   "street": "Юных Ленинцев", 
   "comment": " дом находится справа от школы", 
   "lat": "55.700897", 
   "lon": "37.773808", 
   "cityName": "Москва", 
   "entrance": "1", 
   "houseNumber": "85", 
   "apartmentNumber": "6", 
   "subway": "Кузьминки", 
   "fullAddress": "109443, г Москва, ул Юных Ленинцев, д 85 к 2, кв 6" 
  } 
}
JSON

В зависимости от способа доставки: delivery — доставка курьером или pickup — самовывоз обязательность полей изменяется.

Чтобы система передавала заказы сразу, указывайте в запросе параметр Как можно скорее. В этом случае не указывайте параметр expectedAt, так как он становится не обязательным. Заказы Как можно скорее передаются на кассу с минимальной задержкой.

ПараметрТип параметраОписание
commentstringКомментарий к заказу
restaurantIdstringID ресторана из Delivery в формате GUID
personsintКоличество персон
dishListarrayСостав заказа

-id

string

ID блюда из представления меню Delivery, которое используется для синхронизации с кассой, в формате GUID.

-namestringНаименование блюда
-price

double

разделителем всегда будет  точка - "." 

Цена блюда
-measure

Параметры веса.

Поддержана обратная совместимость: если передавать null или не передавать параметры из measure, то система сама подставит данные из меню. В случае передачи пустых строк или значений отличных от значений в меню, то при создании заказа возникнет исключение.

--valuedoubleРазмер порции
--unitstringЕдиница измерения: кг, литр, шт. Значение не словарное 
--priceModestringПараметр расчета стоимости, установленный в r_keeper. 

Допустимые значения:

  • PerUnitOfWeight — порционное за вес, рассчитывается как quantity = weight
  • PerPortion — порционное за стандартную порцию рассчитывается как:
    • quantity = weight/value
    • weight = quantity*value
  • PerDose — порционное для напитков, рассчитывается как:
    • quantity = weight/value
    • weight = quantity*value
--qntDecDigitsdoubleКоличество цифр в весе после запятой, настраивается в r_keeper
--changeQntOncestringМожно ли изменить вес, настройка блюда из r_keeper
--joinModestring

Параметр добавления в заказ, настраивается в r_keeper. Допустимые значения:

  • almJoinLines — склеивать. Добавляет вес/количество к такому же существующему в заказе
  • almSeparately — отдельной строкой
  • almOnePortion — отдельной строкой для каждой порции
-quantity

double

разделителем всегда будет  точка - "." 

Вес добавляемой порции
 -ingredientsarrayИнгредиенты 
--idstringID ингредиента из представления меню Delivery, которое используется для синхронизации с кассой, в формате GUID
--namestringНаименование ингредиента
--price

double

разделителем всегда будет  точка - "." 

Цена ингредиента
--quantity

double

разделителем всегда будет  точка - "." 

Количество ингредиента
--ingredientsarrayМодификаторы 
---idstringID модификатора из представления меню Delivery, которое используется для синхронизации с кассой, в формате GUID.
---namestringНаименование модификатора
---price

double

разделителем всегда будет  точка - "." 

Цена модификатора
---quantity

double

разделителем всегда будет  точка - "." 

Количество модификатора
expeditionTypestring

ID способа получения заказа:

  • delivery — доставка 
  • pickup — самовывоз 
soonestbooleanВремя передачи заказа Как можно скорее
expectedAtDateTimeВремя к которому ожидается заказ
paymentTypeIdstring

ID способа оплаты:

  • cash — оплата наличными
  • card — оплата картой
  • online — онлайн оплата.
changeFrom

double

разделителем всегда будет  точка - "." 

Сдача с какой суммы
guest
Гость
-emailstringЭлектронная почта гостя
-phonestringНомер телефона
-firstNamestringИмя
-lastNamestringФамилия 
address
Адрес доставки
-postcodestringПочтовый индекс
-streetstringУлица
-commentstringКомментарий к адресу
-lat

double

разделителем всегда будет  точка - "." 

Широта
-lon

double

разделителем всегда будет  точка - "." 

Долгота
-cityIdstringID города
-cityNamestringНаименование города
-floorintЭтаж
-houseNumberstringНомер дома
-apartmentNumberstringНомер квартиры 
-entrancestringВход
-subwaystringМетро
-fullAddressstringПолный адрес

Пример ответа

{
    "result": {
        "orderId": "233132",
        "restaurant": {
            "phone": "79123456789, 79987654321",
            "address": "Багратионовский проезд 3"
        },
    }
}
JSON

Пример передачи такого запроса в интерфейс заведения:

Редактирование заказа

Добавить вес блюду можно только при добавлении его в заказ. Если ввести вес в существующее блюдо в заказе, оно не разобьется на порции.

Запрос

PATCH https://delivery.ucs.ru/orders/api/v1/orders/{orderId}
JSON

где {orderId} — номер заказа.

Content-Type укажите application/json.

Пример тела запроса

{
"dishList": [
    {
      "id": "8198255e-1c7a-702a-a512-05b1803561e5",
      "name": "Конфеты - вес",
      "price": "500",  
      "imageUrls":[
         ],
        "measure": {
                "value": 0.100,
                "unit": "кг",
                "priceMode": "PerUnitOfWeight",
                "qntDecDigits": 3,
                "changeQntOnce": false,
                "joinMode": "almOnePortion"
                },
         "quantity": 0.55,
         },
 ],
}
JSON

для изменения веса блюда измените параметр quantity.

Пример ответа

{
    "result": {
        "item1": {
            "orderId": "233132",
            "restaurant": null,
            "onlinePayUrl": null
        },
        "item2": {}
    }
}
JSON

Пример передачи такого запроса в интерфейс заведения — вес блюда и цена заказа были изменены: