Отложки (бронь)
Отложенные для покупателя товары: остаток резервируется со склада в момент создания и возвращается при отмене. Отложка закрывается продажей с hold_id.
| Метод | Адрес | Назначение |
|---|---|---|
| PATCH | /company/trade/hold/{model}/cancel | Отменить отложку |
| PATCH | /company/trade/hold/{model}/add-products | Добавить товары в отложку |
| PATCH | /company/trade/hold/{model}/update-products | Изменить состав отложки |
| GET | /company/trade/hold | Список отложек |
| GET | /company/trade/hold/{model} | Детали отложки |
| POST | /company/trade/hold | Создать отложку |
Отменить отложку
/company/trade/hold/{model}/cancelПереводит отложку в canceled и возвращает зарезервированные товары на склад. Доступно только для отложки в статусе in_progress.
Из формы (
multipart/form-data) методPATCHотправляется какPOSTс параметром?_method=PATCH.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
message | string | Сообщение |
{
"message": "Success"
}Добавить товары в отложку
/company/trade/hold/{model}/add-products«Добавить к текущим»: товары и комплекты из чека кассы резервируются в открытой отложке, черновик чека cheque на кассе очищается. Товар, уже лежащий в отложке, добавляется по цене, по которой он был зарезервирован. Только для статуса in_progress.
Из формы (
multipart/form-data) методPATCHотправляется какPOSTс параметром?_method=PATCH.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
cashbox_id | integer | Да | Касса. ID существующей записи, доступной пользователю |
cheque | integer | Да | Чек. Не меньше 1. Не больше 3 |
products | object[] | Нет | Продукты. Макс. 100 элементов |
products[].product_id | integer | Да | Продукт. Без повторов |
products[].quantity | number | Да | Количество. До 8 знаков после запятой. Не меньше 0.00000001 |
bundles | object[] | Нет | Комплекты. Макс. 100 элементов |
bundles[].bundle_id | integer | Да | Комплект |
bundles[].quantity | integer | Нет | Количество. Не меньше 1. Не больше 1000 |
bundles[].price | number | Нет | Цена. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99 |
{
"cashbox_id": 2,
"cheque": 1,
"products": [
{
"product_id": 2,
"quantity": 1
}
]
}curl -X PATCH "https://api.wasyt.uz/company/trade/hold/1/add-products" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"cashbox_id":2,"cheque":1,"products":[{"product_id":2,"quantity":1}]}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID |
creator_id | integer | Создатель |
updater_id | integer | Обновитель |
company_id | integer | Компания |
stock_id | integer | Склад |
sale_id | null | Продажа |
full_name | string | ФИО |
date | string | Дата |
comment | string | Комментарий |
currency | string | Валюта |
amount | integer | Сумма |
status | string | Статус |
created_at | string | Создано |
updated_at | string | Обновлено |
{
"id": 1,
"creator_id": 2,
"updater_id": 2,
"company_id": 1,
"stock_id": 1,
"sale_id": null,
"full_name": "Full name 1",
"date": "2026-09-30",
"comment": "Comment 1",
"currency": "uzs",
"amount": 7000,
"status": "in_progress",
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:54:04"
}Пример ошибки · 422
{
"message": "Значение поля Количество не может быть больше 2.",
"errors": {
"products.0.quantity": "Значение поля Количество не может быть больше 2."
}
}Изменить состав отложки
/company/trade/hold/{model}/update-productsПриводит отложку к переданному составу: увеличение количества резервирует разницу со склада, уменьшение возвращает её, товары и комплекты (bundle_keys), не попавшие в запрос, удаляются из отложки с возвратом остатка. Количество ограничено уже отложенным плюс остатком склада.
Из формы (
multipart/form-data) методPATCHотправляется какPOSTс параметром?_method=PATCH.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
products | object[] | Нет | Продукты. Макс. 100 элементов |
products[].product_id | integer | Да | Продукт. Без повторов |
products[].quantity | number | Да | Количество. До 8 знаков после запятой. Не меньше 0.00000001 |
bundle_keys | array | Нет | Макс. 1000 элементов |
bundle_keys[] | string | Да | Без повторов |
{
"products": [
{
"product_id": 1,
"quantity": 1
},
{
"product_id": 2,
"quantity": 1
}
]
}curl -X PATCH "https://api.wasyt.uz/company/trade/hold/1/update-products" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"products":[{"product_id":1,"quantity":1},{"product_id":2,"quantity":1}]}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID |
creator_id | integer | Создатель |
updater_id | integer | Обновитель |
company_id | integer | Компания |
stock_id | integer | Склад |
sale_id | null | Продажа |
full_name | string | ФИО |
date | string | Дата |
comment | string | Комментарий |
currency | string | Валюта |
amount | integer | Сумма |
status | string | Статус |
created_at | string | Создано |
updated_at | string | Обновлено |
{
"id": 1,
"creator_id": 2,
"updater_id": 2,
"company_id": 1,
"stock_id": 1,
"sale_id": null,
"full_name": "Full name 1",
"date": "2026-09-30",
"comment": "Comment 1",
"currency": "uzs",
"amount": 3000,
"status": "in_progress",
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:54:10"
}Пример ошибки · 422
{
"message": "Данного товара нет в отложке",
"errors": {
"products.0.product_id": "Данного товара нет в отложке"
}
}Список отложек
/company/trade/holdОтложки компании с пагинацией, фильтрами и суммой amount в валюте продажи.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Параметр | Описание |
|---|---|
filter[id] | ID — точное значение |
filter[creator_id] | Создатель — точное значение |
filter[updater_id] | Обновитель — точное значение |
filter[company_id] | Компания — точное значение |
filter[stock_id] | Склад — точное значение |
filter[full_name] | ФИО — поиск по части строки |
filter[date] | Дата — период: [0] — с, [1] — по (Y-m-d) |
filter[currency] | Валюта — точное значение |
filter[status] | Статус — точное значение |
filter[created_at] | Создано — период: [0] — с, [1] — по (Y-m-d) |
sort[] | Сортировка, - — по убыванию: id, -id |
with[] | Подгрузить связи: creator.profile, updater.profile, company, stock |
page | Номер страницы, с 1 |
page-size | Записей на странице, не больше 20 |
GET /company/trade/hold?sort[0]=id&sort[1]=-idОтвет · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].id | integer | ID |
data[].creator_id | integer | Создатель |
data[].updater_id | integer | Обновитель |
data[].company_id | integer | Компания |
data[].stock_id | integer | Склад |
data[].sale_id | null | Продажа |
data[].full_name | string | ФИО |
data[].date | string | Дата |
data[].comment | string | Комментарий |
data[].currency | string | Валюта |
data[].amount | integer | Сумма |
data[].status | string | Статус |
data[].created_at | string | Создано |
data[].updated_at | string | Обновлено |
{
"data": [
{
"id": 1,
"creator_id": 2,
"updater_id": 2,
"company_id": 1,
"stock_id": 1,
"sale_id": null,
"full_name": "Full name 1",
"date": "2026-09-30",
"comment": "Comment 1",
"currency": "uzs",
"amount": 5000,
"status": "in_progress",
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59"
}
],
"links": {
"first": "https://api.wasyt.uz/company/trade/hold?page=1",
"last": "https://api.wasyt.uz/company/trade/hold?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [],
"path": "https://api.wasyt.uz/company/trade/hold",
"per_page": 20,
"to": 1,
"total": 1
}
}Детали отложки
/company/trade/hold/{model}Одна отложка: покупатель, касса, склад, дата, статус и сумма.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID |
creator_id | integer | Создатель |
updater_id | integer | Обновитель |
company_id | integer | Компания |
stock_id | integer | Склад |
sale_id | null | Продажа |
full_name | string | ФИО |
date | string | Дата |
comment | string | Комментарий |
currency | string | Валюта |
amount | integer | Сумма |
status | string | Статус |
created_at | string | Создано |
updated_at | string | Обновлено |
{
"id": 1,
"creator_id": 2,
"updater_id": 2,
"company_id": 1,
"stock_id": 1,
"sale_id": null,
"full_name": "Full name 1",
"date": "2026-09-30",
"comment": "Comment 1",
"currency": "uzs",
"amount": 5000,
"status": "in_progress",
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59"
}Создать отложку
/company/trade/holdРезервирует товары и комплекты под покупателя full_name в валюте продажи компании: остаток сразу уменьшается на складе, черновик чека cheque на кассе очищается. Нужна хотя бы одна строка; товар, продаваемый только в комплекте, отдельно отложить нельзя.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
cashbox_id | integer | Да | Касса. ID существующей записи, доступной пользователю |
stock_id | integer | Да | Склад. ID существующей записи, доступной пользователю |
full_name | string | Да | ФИО. Макс. 100 символов |
date | string (date) | Нет | Дата. Формат Y-m-d. Не раньше текущей даты |
comment | string | Нет | Комментарий. Макс. 1000 символов |
cheque | integer | Да | Чек. Не меньше 1. Не больше 3 |
products | object[] | Нет | Продукты. Макс. 100 элементов |
products[].product_id | integer | Да | Продукт. Без повторов |
products[].quantity | number | Да | Количество. До 8 знаков после запятой. Не меньше 0.00000001 |
bundles | object[] | Нет | Комплекты. Макс. 100 элементов |
bundles[].bundle_id | integer | Да | Комплект |
bundles[].quantity | integer | Нет | Количество. Не меньше 1. Не больше 1000 |
bundles[].price | number | Нет | Цена. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99 |
{
"cashbox_id": 2,
"stock_id": 1,
"full_name": "Full name 3",
"date": "2026-09-30",
"comment": "Comment 3",
"cheque": 1,
"products": [
{
"product_id": 1,
"quantity": 1
},
{
"product_id": 2,
"quantity": 2
}
]
}curl -X POST "https://api.wasyt.uz/company/trade/hold" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"cashbox_id":2,"stock_id":1,"full_name":"Full name 3","date":"2026-09-30","comment":"Comment 3","cheque":1,"products":[{"product_id":1,"quantity":1},{"product_id":2,"quantity":2}]}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
stock_id | integer | Склад |
full_name | string | ФИО |
date | string | Дата |
comment | string | Комментарий |
currency | string | Валюта |
updated_at | string | Обновлено |
created_at | string | Создано |
updater_id | integer | Обновитель |
creator_id | integer | Создатель |
company_id | integer | Компания |
id | integer | ID |
amount | integer | Сумма |
{
"stock_id": 1,
"full_name": "Full name 3",
"date": "2026-09-30",
"comment": "Comment 3",
"currency": "uzs",
"updated_at": "2026-09-30 12:54:08",
"created_at": "2026-09-30 12:54:08",
"updater_id": 2,
"creator_id": 2,
"company_id": 1,
"id": 2,
"amount": 4801100
}
