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