Заказ состоит из 1 или нескольких позиций. Каждая позиция - это блюдо(+вариант порции и выбранные добавки) или товар.
Цены в заказе можно указывать свои, следовать ценам, заданным в программе не обязательно. Таким образом на вашем интернет-магазине могут быть отличные цены от тех, что указаны в кассовой программе.
/order/save
POSThttps://api.ytimes.ru/ex/order/save
Создание заказа с выбранными позициями. Данный метод можно вызывать не чаще 60 раз в час. Структура данных заказа (она используется в запросе и она же возвращается в ответ):
//Данные заказа
OrderRecord {
guid: string, (при заказа оставляем пустым, используется в ответе, чтобы идентифицировать созданный заказ и отслеживать его статус по данному guid)
status: string, (при заказе оставляем пустым, в ответе показывает, в каком статусе создался заказ: CREATED или ACCEPTED)
shopGuid: string, (идентификатор торговой точки, на которой создаем заказ)
type: string, (тип заказа, возможны варианты: TOGO (на вынос), IN (заказ в зале), DELIVERY (заказ на доставку))
client: OrderClient, (контактные данные клиента, могут отсутствовать)
itemList: OrderItem[], (позиции заказа, должна быть хотя бы 1 позиция, максимум 40 позиций в одном заказе)
comment: string, (комментарий к заказу, например адрес доставки)
paidValue: double, (оплаченная сумма, если клиент уже оплатил заказ. Или 0, если оплата в кафе)
usedPoints: integer, (сколько бонусов списать с этим заказом. При этом цены за позиции в заказе должны быть без учета списания бонусов)
printFiscalCheck: boolean, (требуется или нет автоматически распечатать фискальный чек на кассе кафе при подтверждении заказа)
printFiscalCheckEmail: string (если требуется распечатать фискальный чек, то в данном поле можно указать email покупателя для отправки электронного фискального чека)
}
//Данные клиента. Обязательно указание или телефона или номера существующей карты клиента
OrderClient {
name: string, (имя клиента, без фамилии)
cardNumber: int, (номер существующей карты гостя из CRM, если гостю выдавали скидочную карту)
phoneCode: string, (международный код номера телефона страны, только цифры. Для РФ это "7")
phone: string, (номер телефона без международного кода, только цифры. Для РФ это 10 цифр, например "9001235533")
email: string (электронная почта клиента)
}
//Данные позиции. Для заказа блюда указать идентификатор блюда и порции menuItemGuid и menuTypeGuid. Для заказа товара указать идентификатор товара: goodsItemGuid.
OrderItem {
guid: string, (идентификатор позиции. Задать пустое значение, используется в ответе)
menuItemGuid: string, (идентификатор блюда)
menuTypeGuid: string, (идентификатор порции)
supplementList: Map<string, int> (список идентификаторов выбранных добавок и их количество)
goodsItemGuid: string, (идентификатор товара)
priceWithDiscount: double, (цена 1 позиции с учетом скидки)
quantity: int (количество одинаковых позиций, например 2 капучино)
}