Черновики чеков
Незавершённые чеки кассира на кассе (до 3 параллельных чеков на кассу и склад). Черновик хранит корзину между перезагрузками и удаляется, когда по чеку проходит продажа или создаётся отложка.
| Метод | Адрес | Назначение |
|---|---|---|
| DELETE | /company/trade/temporary-cart | Очистить черновик чека |
| GET | /company/trade/temporary-cart | Черновики чеков кассира |
| POST | /company/trade/temporary-cart | Сохранить черновик чека |
Очистить черновик чека
/company/trade/temporary-cartУдаляет черновики текущего пользователя на кассе cashbox_id и складе stock_id: с cheque — только этот чек, без него — все чеки кассы. С product_id удаляется лишь эта строка, а чек, оставшийся без товаров, удаляется целиком.
Из формы (
multipart/form-data) методDELETEотправляется какPOSTс параметром?_method=DELETE.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
cashbox_id | integer | Нет | Касса |
stock_id | integer | Нет | Склад |
cheque | integer | Нет | Чек. Не меньше 1. Не больше 3 |
product_id | integer | Нет | Продукт |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
message | string | Сообщение |
{
"message": "Success"
}Черновики чеков кассира
/company/trade/temporary-cartЧерновики текущего пользователя, упорядоченные по номеру чека, с товарами, услугами, комплектами и клиентом; строки дополнены актуальными ценами и доступным остатком. Можно сузить до кассы и склада.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
cashbox_id | integer | Нет | Только черновики этой кассы |
stock_id | integer | Нет | Только черновики этого склада |
filter[id] | — | Нет | ID — точное значение |
filter[creator_id] | — | Нет | Создатель — точное значение |
filter[company_id] | — | Нет | Компания — точное значение |
filter[cashbox_id] | — | Нет | Касса — точное значение |
filter[stock_id] | — | Нет | Склад — точное значение |
filter[client_id] | — | Нет | Клиент — точное значение |
filter[cheque] | — | Нет | Чек — точное значение |
filter[currency] | — | Нет | Валюта — точное значение |
filter[created_at] | — | Нет | Создано — период: [0] — с, [1] — по (Y-m-d) |
sort[] | — | Нет | Сортировка, - — по убыванию: id, -id, cheque, -cheque |
with[] | — | Нет | Подгрузить связи: products.product.category, products.product.unit, client.bonus_tariff |
page | — | Нет | Номер страницы, с 1 |
page-size | — | Нет | Записей на странице, не больше 20 |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
cheques | object | |
cheques.1 | object | |
cheques.1.discount_mode | string | Тип скидки |
cheques.1.discount_value | integer | Размер скидки |
cheques.1.client | object | |
cheques.1.client.id | integer | ID |
cheques.1.client.full_name | string | ФИО |
cheques.1.client.main_phone | string | Основной телефон |
cheques.1.client.bonus_accumulations_amount | integer | Бонусный баланс |
cheques.1.client.bonus_tariff | integer | |
cheques.1.client.force_bonus | object | Принудительный бонус |
cheques.1.client.force_bonus.percent | integer | Процент |
cheques.1.client.force_bonus.reason_type | string | Тип причины |
cheques.1.client.force_bonus.comment | string | Комментарий |
cheques.1.products | object[] | Продукты |
cheques.1.products[].id | integer | ID |
cheques.1.products[].is_service | boolean | |
cheques.1.products[].is_bundle | boolean | |
cheques.1.products[].bundle_id | null | Комплект |
cheques.1.products[].service_id | null | |
cheques.1.products[].name | string | Название |
cheques.1.products[].category | string | Категория |
cheques.1.products[].barcode | string | Штрих-код |
cheques.1.products[].quantity | integer | Количество |
cheques.1.products[].max_quantity | integer | |
cheques.1.products[].price | integer | Цена |
cheques.1.products[].currency | string | Валюта |
cheques.1.products[].img | null | |
cheques.1.products[].discount | integer | Скидка |
cheques.1.products[].unit | string | |
cheques.1.products[].unit_accuracy | integer | |
cheques.1.products[].is_free_price | boolean | Продажа по свободной цене |
cheques.1.products[].min_price | integer | |
cheques.1.products[].min_price_currency | string | |
cheques.1.products[].images_list_thumbs | array | |
cheques.1.products[].description | string | Описание |
cheques.2 | object | |
cheques.2.discount_mode | null | Тип скидки |
cheques.2.discount_value | null | Размер скидки |
cheques.2.client | null | |
cheques.2.products | object[] | Продукты |
cheques.2.products[].id | integer | ID |
cheques.2.products[].is_service | boolean | |
cheques.2.products[].is_bundle | boolean | |
cheques.2.products[].bundle_id | null | Комплект |
cheques.2.products[].service_id | null | |
cheques.2.products[].name | string | Название |
cheques.2.products[].category | string | Категория |
cheques.2.products[].barcode | string | Штрих-код |
cheques.2.products[].quantity | integer | Количество |
cheques.2.products[].max_quantity | integer | |
cheques.2.products[].price | integer | Цена |
cheques.2.products[].currency | string | Валюта |
cheques.2.products[].img | null | |
cheques.2.products[].discount | integer | Скидка |
cheques.2.products[].unit | string | |
cheques.2.products[].unit_accuracy | integer | |
cheques.2.products[].is_free_price | boolean | Продажа по свободной цене |
cheques.2.products[].min_price | integer | |
cheques.2.products[].min_price_currency | string | |
cheques.2.products[].images_list_thumbs | array | |
cheques.2.products[].description | string | Описание |
cashbox_id | integer | Касса |
stock_id | integer | Склад |
company_id | integer | Компания |
currency | string | Валюта |
{
"cheques": {
"1": {
"discount_mode": "percent",
"discount_value": 10,
"client": {
"id": 1,
"full_name": "Full name 1",
"main_phone": "998000000001",
"bonus_accumulations_amount": 1000,
"bonus_tariff": 1,
"force_bonus": {
"percent": 5,
"reason_type": "loyalty",
"comment": "Comment 1"
}
},
"products": [
{
"id": 1,
"is_service": false,
"is_bundle": false,
"bundle_id": null,
"service_id": null,
"name": "Product 1",
"category": "Category 1-1-1 ru",
"barcode": "0000000000001",
"quantity": 2,
"max_quantity": 1,
"price": 1100,
"currency": "uzs",
"img": null,
"discount": 300,
"unit": "Unit 1 ru",
"unit_accuracy": 4,
"is_free_price": false,
"min_price": 0,
"min_price_currency": "uzs",
"images_list_thumbs": [],
"description": "Description 1"
},
{
"id": 2,
"is_service": false,
"is_bundle": false,
"bundle_id": null,
"service_id": null,
"name": "Product 1-1",
"category": "Category 1-1-1 ru",
"barcode": "0000000000011",
"quantity": 1,
"max_quantity": 2,
"price": 2400000,
"currency": "uzs",
"img": null,
"discount": 0,
"unit": "Unit 1 ru",
"unit_accuracy": 4,
"is_free_price": false,
"min_price": 0,
"min_price_currency": "uzs",
"images_list_thumbs": [],
"description": "Description 1-1"
}
]
},
"2": {
"discount_mode": null,
"discount_value": null,
"client": null,
"products": [
{
"id": 1,
"is_service": false,
"is_bundle": false,
"bundle_id": null,
"service_id": null,
"name": "Product 1",
"category": "Category 1-1-1 ru",
"barcode": "0000000000001",
"quantity": 3,
"max_quantity": 1,
"price": 1100,
"currency": "uzs",
"img": null,
"discount": 0,
"unit": "Unit 1 ru",
"unit_accuracy": 4,
"is_free_price": false,
"min_price": 0,
"min_price_currency": "uzs",
"images_list_thumbs": [],
"description": "Description 1"
}
]
}
},
"cashbox_id": 2,
"stock_id": 1,
"company_id": 1,
"currency": "uzs"
}Сохранить черновик чека
/company/trade/temporary-cartСохраняет корзину чека cheque (1–3) на кассе и складе: если черновик уже есть, он перезаписывается. Нужна хотя бы одна строка; товары, услуги и комплекты должны принадлежать компании. Остаток не резервируется.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_id | integer | Да | Компания. ID существующей записи, доступной пользователю |
cashbox_id | integer | Да | Касса. ID существующей записи, доступной пользователю |
stock_id | integer | Да | Склад. ID существующей записи, доступной пользователю |
client_id | integer | Нет | Клиент. ID существующей записи, доступной пользователю |
currency | string | Да | Валюта. Допустимые значения: uzs |
cheque | integer | Да | Чек. Не меньше 1. Не больше 3 |
discount_mode | string | Нет | Тип скидки. Допустимые значения: percent, integer |
discount_value | number | Нет | Размер скидки. До 2 знаков после запятой. Не меньше 0 |
force_bonus | array | Нет | Принудительный бонус |
force_bonus.percent | number | Если передано force_bonus | Процент. До 2 знаков после запятой. Не меньше 0. Не больше 100 |
force_bonus.reason_type | string | Нет | Тип причины. Макс. 100 символов |
force_bonus.comment | string | Нет | Комментарий. Макс. 1000 символов |
products | object[] | Нет | Продукты. Макс. 100 элементов |
products[].id | integer | Да | ID. Без повторов |
products[].quantity | number | Да | Количество. До 8 знаков после запятой. Не меньше 0.00000001 |
products[].amount | number | Да | Сумма. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99 |
products[].discount | number | Нет | Скидка. До 2 знаков после запятой. Не меньше 0. Не больше 999999999999.99 |
services | object[] | Нет | Макс. 100 элементов |
services[].id | integer | Да | ID. Без повторов |
services[].amount | number | Да | Сумма. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99 |
services[].discount | number | Нет | Скидка. До 2 знаков после запятой. Не меньше 0. Не больше 999999999999.99 |
bundles | object[] | Нет | Комплекты. Макс. 100 элементов |
bundles[].id | integer | Да | ID |
bundles[].quantity | integer | Нет | Количество. Не меньше 1. Не больше 1000 |
bundles[].amount | number | Да | Сумма. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99 |
bundles[].discount | number | Нет | Скидка. До 2 знаков после запятой. Не меньше 0. Не больше 999999999999.99 |
{
"company_id": 1,
"cashbox_id": 2,
"stock_id": 1,
"client_id": 1,
"currency": "uzs",
"discount_mode": "percent",
"discount_value": 10,
"force_bonus": {
"percent": 5,
"reason_type": "loyalty",
"comment": "Test comment"
},
"products": [
{
"id": 1,
"quantity": 2,
"amount": 9000,
"discount": 300
},
{
"id": 2,
"quantity": 1,
"amount": 5000,
"discount": 0
}
],
"cheque": 3
}curl -X POST "https://api.wasyt.uz/company/trade/temporary-cart" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"company_id":1,"cashbox_id":2,"stock_id":1,"client_id":1,"currency":"uzs","discount_mode":"percent","discount_value":10,"force_bonus":{"percent":5,"reason_type":"loyalty","comment":"Test comment"},"products":[{"id":1,"quantity":2,"amount":9000,"discount":300},{"id":2,"quantity":1,"amount":5000,"discount":0}],"cheque":3}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
company_id | integer | Компания |
cashbox_id | integer | Касса |
stock_id | integer | Склад |
client_id | integer | Клиент |
currency | string | Валюта |
cheque | integer | Чек |
discount_mode | string | Тип скидки |
discount_value | integer | Размер скидки |
force_bonus | object | Принудительный бонус |
force_bonus.percent | integer | Процент |
force_bonus.reason_type | string | Тип причины |
force_bonus.comment | string | Комментарий |
updated_at | string | Обновлено |
created_at | string | Создано |
creator_id | integer | Создатель |
id | integer | ID |
{
"company_id": 1,
"cashbox_id": 2,
"stock_id": 1,
"client_id": 1,
"currency": "uzs",
"cheque": 3,
"discount_mode": "percent",
"discount_value": 10,
"force_bonus": {
"percent": 5,
"reason_type": "loyalty",
"comment": "Test comment"
},
"updated_at": "2026-09-30 12:25:03",
"created_at": "2026-09-30 12:25:03",
"creator_id": 2,
"id": 5
}
