Приходы
Документы поступления товара на склад от поставщика. Приход создаётся в статусе waiting_for_confirmation и двигает остатки, цены и баланс поставщика только после завершения.
| Метод | Адрес | Назначение |
|---|---|---|
| PATCH | /company/trade/purchase/{model}/complete | Завершить приход |
| PATCH | /company/trade/purchase/{model}/cancel | Отменить приход |
| GET | /company/trade/purchase/{model}/products | Товары прихода |
| GET | /company/trade/purchase | Список приходов |
| GET | /company/trade/purchase/{model} | Детали прихода |
| POST | /company/trade/purchase | Создать приход |
| PUT | /company/trade/purchase/{model} | Изменить приход |
Завершить приход
/company/trade/purchase/{model}/completeПереводит приход из waiting_for_confirmation в completed: товар поступает на склад, цены продажи товаров обновляются, при указанном поставщике создаётся операция по его балансу. Для валюты, отличной от UZS, у компании должен быть установлен курс.
Из формы (
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/purchase/{model}/cancelПереводит приход в canceled. Только для прихода в статусе waiting_for_confirmation; остатки не меняются.
Из формы (
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/purchase/{model}/productsПростой список строк прихода без пагинации: название, штрихкод, приходная цена, количество и дата.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
[].name | string | Название |
[].full_text | string | Полный текст |
[].barcode | string | Штрих-код |
[].purchase_price | string | Цена при покупке |
[].quantity | string | Количество |
[].created_at | string | Создано |
[
{
"name": "Product 1",
"full_text": "Product 1",
"barcode": "0000000000001",
"purchase_price": "1000.00",
"quantity": "1.0000",
"created_at": "2026-09-30 12:47:59"
},
{
"name": "Product 1-1",
"full_text": "Product 1-1 full text",
"barcode": "0000000000011",
"purchase_price": "2000.00",
"quantity": "2.0000",
"created_at": "2026-09-30 12:47:59"
}
]Список приходов
/company/trade/purchaseПриходы с пагинацией и фильтрами. Дополнительно total за текущий месяц (month) и день (day): сумма завершённых приходов по валютам и общее количество поступивших единиц.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Параметр | Описание |
|---|---|
filter[id] | ID — точное значение |
filter[creator_id] | Создатель — точное значение |
filter[company_id] | Компания — точное значение |
filter[stock_id] | Склад — точное значение |
filter[supplier_id] | Поставщик — точное значение |
filter[inventory_id] | Инвентаризация — точное значение |
filter[name] | Название — поиск по части строки |
filter[datetime] | Дата и время — период: [0] — с, [1] — по (Y-m-d) |
filter[currency] | Валюта — точное значение |
filter[status] | Статус — точное значение |
filter[created_at] | Создано — период: [0] — с, [1] — по (Y-m-d) |
sort[] | Сортировка, - — по убыванию: id, -id |
with[] | Подгрузить связи: creator.profile, company, company.director.profile, stock, supplier, inventory |
page | Номер страницы, с 1 |
page-size | Записей на странице, не больше 20 |
GET /company/trade/purchase?sort[0]=id&sort[1]=-idОтвет · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].id | integer | ID |
data[].creator_id | integer | Создатель |
data[].company_id | integer | Компания |
data[].stock_id | integer | Склад |
data[].supplier_id | integer | Поставщик |
data[].inventory_id | null | Инвентаризация |
data[].name | string | Название |
data[].datetime | string | Дата и время |
data[].currency | string | Валюта |
data[].status | string | Статус |
data[].purchase_price | integer | Цена при покупке |
data[].sale_price | integer | Цена при продаже |
data[].created_at | string | Создано |
data[].updated_at | string | Обновлено |
data[].sale_price_uzs | integer |
{
"data": [
{
"id": 1,
"creator_id": 2,
"company_id": 1,
"stock_id": 1,
"supplier_id": 1,
"inventory_id": null,
"name": "Purchase 1",
"datetime": "2026-09-30 12:47:59",
"currency": "uzs",
"status": "waiting_for_confirmation",
"purchase_price": 5000,
"sale_price": 5900,
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"sale_price_uzs": 5900
}
],
"links": {
"first": "https://api.wasyt.uz/company/trade/purchase?page=1",
"last": "https://api.wasyt.uz/company/trade/purchase?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [],
"path": "https://api.wasyt.uz/company/trade/purchase",
"per_page": 20,
"to": 1,
"total": 1
},
"total": {
"month": {
"purchase_price": [],
"products_quantity": "0"
},
"day": {
"purchase_price": [],
"products_quantity": "0"
}
}
}Детали прихода
/company/trade/purchase/{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 | Создатель |
company_id | integer | Компания |
stock_id | integer | Склад |
supplier_id | integer | Поставщик |
inventory_id | null | Инвентаризация |
name | string | Название |
datetime | string | Дата и время |
currency | string | Валюта |
status | string | Статус |
purchase_price | integer | Цена при покупке |
sale_price | integer | Цена при продаже |
created_at | string | Создано |
updated_at | string | Обновлено |
stock | object | |
stock.id | integer | ID |
stock.creator_id | integer | Создатель |
stock.company_id | integer | Компания |
stock.name | string | Название |
stock.is_available | boolean | |
stock.created_at | string | Создано |
stock.updated_at | string | Обновлено |
stock.is_deleted | boolean | |
supplier | object | |
supplier.id | integer | ID |
supplier.creator_id | integer | Создатель |
supplier.company_id | integer | Компания |
supplier.name | string | Название |
supplier.full_name | string | ФИО |
supplier.type | string | Тип |
supplier.phone | string | Телефон |
supplier.additional_phones | array | Дополнительные телефоны |
supplier.inn | string | ИНН |
supplier.address | string | Адрес |
supplier.category | null | Категория |
supplier.currency | null | Валюта |
supplier.currencies | array | Валюты |
supplier.bank_account | null | Расчётный счёт |
supplier.mfo | null | МФО |
supplier.bank_name | null | Банк |
supplier.photo | null | |
supplier.photo_thumbs | array | |
supplier.start_balances | object | |
supplier.start_balances.eur | integer | |
supplier.start_balances.rub | integer | |
supplier.start_balances.usd | integer | |
supplier.start_balances.uzs | integer | |
supplier.start_balance_set_at | null | |
supplier.created_at | string | Создано |
supplier.updated_at | string | Обновлено |
supplier.is_deleted | boolean | |
sale_price_uzs | integer |
{
"id": 1,
"creator_id": 2,
"company_id": 1,
"stock_id": 1,
"supplier_id": 1,
"inventory_id": null,
"name": "Purchase 1",
"datetime": "2026-09-30 12:47:59",
"currency": "uzs",
"status": "waiting_for_confirmation",
"purchase_price": 5000,
"sale_price": 5900,
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"stock": {
"id": 1,
"creator_id": 2,
"company_id": 1,
"name": "Stock 1",
"is_available": true,
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"is_deleted": false
},
"supplier": {
"id": 1,
"creator_id": 2,
"company_id": 1,
"name": "Supplier 1",
"full_name": "Full name 1",
"type": "person",
"phone": "998000000001",
"additional_phones": [
"998000000011",
"998000000012"
],
"inn": "000000001",
"address": "Address 1",
"category": null,
"currency": null,
"currencies": [],
"bank_account": null,
"mfo": null,
"bank_name": null,
"photo": null,
"photo_thumbs": [],
"start_balances": {
"eur": 0,
"rub": 0,
"usd": 0,
"uzs": 1000
},
"start_balance_set_at": null,
"created_at": "2026-09-30 12:47:58",
"updated_at": "2026-09-30 12:47:58",
"is_deleted": false
},
"sale_price_uzs": 5900
}Создать приход
/company/trade/purchaseСоздаёт приход в статусе waiting_for_confirmation со строками товаров; остатки меняются только после завершения. Цена продажи строки не ниже приходной, валюта должна совпадать с валютой расчётов поставщика, дата — не старше месяца и не в будущем. Без name номер присваивается автоматически; is_last_step должен быть true.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_id | integer | Да | Компания. ID существующей записи, доступной пользователю |
stock_id | integer | Да | Склад. ID существующей записи, доступной пользователю |
supplier_id | integer | Нет | Поставщик. ID существующей записи, доступной пользователю |
name | string | Нет | Название. Макс. 255 символов |
datetime | string (date) | Нет | Дата и время. Формат Y-m-d H:i:s. Не раньше текущей даты. Не позже текущей даты |
currency | string | Да | Валюта. Допустимые значения: uzs, usd, eur, rub |
products | object[] | Да | Продукты. Макс. 5000 элементов |
products[].id | integer | Нет | ID |
products[].product_id | integer | Да | Продукт. Без повторов |
products[].purchase_price | number | Да | Цена при покупке. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99 |
products[].sale_price | number | Да | Цена при продаже. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99. ≥ products[].purchase_price |
products[].quantity | number | Да | Количество. До 4 знаков после запятой. Не меньше 0.0001 |
is_last_step | boolean | Нет | Должно быть true |
{
"company_id": 1,
"stock_id": 1,
"supplier_id": 1,
"name": "Purchase 3",
"datetime": "2026-09-30 12:54:27",
"currency": "uzs",
"products": [
{
"product_id": 1,
"purchase_price": 3000,
"sale_price": 3900,
"quantity": 3
},
{
"product_id": 2,
"purchase_price": 4000,
"sale_price": 5600,
"quantity": 4
},
{
"product_id": 3,
"purchase_price": 1,
"sale_price": 2,
"quantity": 3
}
],
"is_last_step": 1
}curl -X POST "https://api.wasyt.uz/company/trade/purchase" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"company_id":1,"stock_id":1,"supplier_id":1,"name":"Purchase 3","datetime":"2026-09-30 12:54:27","currency":"uzs","products":[{"product_id":1,"purchase_price":3000,"sale_price":3900,"quantity":3},{"product_id":2,"purchase_price":4000,"sale_price":5600,"quantity":4},{"product_id":3,"purchase_price":1,"sale_price":2,"quantity":3}],"is_last_step":1}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
company_id | integer | Компания |
stock_id | integer | Склад |
supplier_id | integer | Поставщик |
name | string | Название |
datetime | string | Дата и время |
currency | string | Валюта |
updated_at | string | Обновлено |
created_at | string | Создано |
creator_id | integer | Создатель |
id | integer | ID |
purchase_price | integer | Цена при покупке |
sale_price | integer | Цена при продаже |
sale_price_uzs | integer |
{
"company_id": 1,
"stock_id": 1,
"supplier_id": 1,
"name": "Purchase 3",
"datetime": "2026-09-30 12:54:27",
"currency": "uzs",
"updated_at": "2026-09-30 12:54:27",
"created_at": "2026-09-30 12:54:27",
"creator_id": 2,
"id": 130,
"purchase_price": 25003,
"sale_price": 34106,
"sale_price_uzs": 34106
}Пример ошибки · 422
{
"message": "Допустимые значения для Валюта: uzs, usd, rub.",
"errors": {
"currency": [
"Допустимые значения для Валюта: uzs, usd, rub."
]
}
}Изменить приход
/company/trade/purchase/{model}Полностью перезаписывает приход и его строки теми же правилами, что при создании. Разрешено только в статусе waiting_for_confirmation; пустое name сохраняет прежний номер.
Из формы (
multipart/form-data) методPUTотправляется какPOSTс параметром?_method=PUT.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
company_id | integer | Да | Компания. ID существующей записи, доступной пользователю |
stock_id | integer | Да | Склад. ID существующей записи, доступной пользователю |
supplier_id | integer | Нет | Поставщик. ID существующей записи, доступной пользователю |
name | string | Нет | Название. Макс. 255 символов |
datetime | string (date) | Нет | Дата и время. Формат Y-m-d H:i:s. Не раньше текущей даты. Не позже текущей даты |
currency | string | Да | Валюта. Допустимые значения: uzs, usd, eur, rub |
products | object[] | Да | Продукты. Макс. 5000 элементов |
products[].id | integer | Нет | ID |
products[].product_id | integer | Да | Продукт. Без повторов |
products[].purchase_price | number | Да | Цена при покупке. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99 |
products[].sale_price | number | Да | Цена при продаже. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99. ≥ products[].purchase_price |
products[].quantity | number | Да | Количество. До 4 знаков после запятой. Не меньше 0.0001 |
is_last_step | boolean | Нет | Должно быть true |
{
"company_id": 1,
"stock_id": 1,
"supplier_id": 1,
"name": "Purchase 1",
"datetime": "2026-09-30 12:54:31",
"currency": "uzs",
"products": [
{
"id": 1,
"product_id": 1,
"purchase_price": 1000,
"sale_price": 1100,
"quantity": 1
},
{
"id": 2,
"product_id": 2,
"purchase_price": 2000,
"sale_price": 2400,
"quantity": 2
}
],
"is_last_step": 1
}curl -X PUT "https://api.wasyt.uz/company/trade/purchase/1" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"company_id":1,"stock_id":1,"supplier_id":1,"name":"Purchase 1","datetime":"2026-09-30 12:54:31","currency":"uzs","products":[{"id":1,"product_id":1,"purchase_price":1000,"sale_price":1100,"quantity":1},{"id":2,"product_id":2,"purchase_price":2000,"sale_price":2400,"quantity":2}],"is_last_step":1}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID |
creator_id | integer | Создатель |
company_id | integer | Компания |
stock_id | integer | Склад |
supplier_id | integer | Поставщик |
inventory_id | null | Инвентаризация |
name | string | Название |
datetime | string | Дата и время |
currency | string | Валюта |
status | string | Статус |
purchase_price | integer | Цена при покупке |
sale_price | integer | Цена при продаже |
created_at | string | Создано |
updated_at | string | Обновлено |
sale_price_uzs | integer |
{
"id": 1,
"creator_id": 2,
"company_id": 1,
"stock_id": 1,
"supplier_id": 1,
"inventory_id": null,
"name": "Purchase 1",
"datetime": "2026-09-30 12:54:31",
"currency": "uzs",
"status": "waiting_for_confirmation",
"purchase_price": 5000,
"sale_price": 5900,
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:54:31",
"sale_price_uzs": 5900
}
