save_order
Метод сохранения/обновления заказа.
Входные данные: OrderRequest
Возвращаемые данные:
null
- если заказ был успешно создан.- Order - замененный заказ (тот, что имел тот же идентификатор и был заменен заказом в запросе).
Важно: для вызова данного метода требуется пройденная авторизация в СКО.
Важно: для вызова данного метода требуется открытая смена в СКО.
Осуществляемые действия перед сохранением заказа
- Проверка заголовка чека
- Проверка кол-ва товарных позиций в поле
items
- Кол-во тов. позиций не равно
0
, иначе ошибкаTIN_NO_ITEMS
- Кол-во тов. позиций не превышает
140
, иначе ошибкаTIN_MAX_ITEMS
- Кол-во тов. позиций не равно
- Проверка скидки по чеку - Проверка суммы
- Проверка товарных позиций
- Проверка наименования тов. позиции
- Проверка цены (
item.price
) - Проверка суммы - Расчёт значений по полям товарной позиции
(формирование ItemCalculatedValues)
raw_sum = (item.price * item.quantity)
, значение округляетсяdiscount = item.discount ?: 0
(скидка/надбавка, если указана, иначе0
)sum = raw_sum - discount
- Проверка значений
sum
иraw_sum
- Проверка суммы - Проверка значения
discount
- Проверка скидки тов. позиции
- Проверка суммы всех тов. позиций с учетом скидок по тов. позициям и скидки по чеку
Примеры
Запрос:
{
"address": "ik.service.token.sales.rest",
"headers": {
"action": "save_order",
"sid": "{{ _.sid }}",
"token": "AVQ11071080687"
},
"data": {
"order_id": "123",
"order": {
"number": 111,
"header": {
"cashier": "Test",
"currency": "BYN"
},
"items": [
{
"price": "1.00",
"quantity": "1.000",
"code": {
"type": 0,
"value": 9999999999
},
"name": "блюдо 1",
"discount": "-1.02"
}
],
"cheque_discount": "1.22",
"table": 1,
"place": 1
}
},
"type": "send"
}