Inventarizatsiya
Ombordagi tovarlarni qayta sanash — to‘liq (butun ombor) yoki qisman (tanlangan toifa va tovarlar). Sanash davomida ombor savdo va ko‘chirish uchun yopiq bo‘ladi; tasdiqlash ortiqchalarga Kirim, kamomadlarga Hisobdan chiqarish hujjatini yaratadi.
| Metod | Manzil | Vazifasi |
|---|---|---|
| GET | /company/trade/inventory/stats | Inventarizatsiya statistikasi |
| GET | /company/trade/inventory/categories | Sanash uchun toifalar |
| PATCH | /company/trade/inventory/{model}/add-products | Sanashga tovar qo‘shish |
| PATCH | /company/trade/inventory/{model}/remove-products | Sanashdan tovarlarni olib tashlash |
| GET | /company/trade/inventory/{model}/comparison-sheet | Solishtirma qaydnoma |
| PATCH | /company/trade/inventory/{model}/complete | Tasdiqlash va qoldiqni yangilash |
| PATCH | /company/trade/inventory/{model}/cancel | Inventarizatsiyani bekor qilish |
| GET | /company/trade/inventory | Inventarizatsiyalar tarixi |
| GET | /company/trade/inventory/{model} | Inventarizatsiya tafsilotlari |
| POST | /company/trade/inventory | Inventarizatsiyani boshlash |
Inventarizatsiya statistikasi
/company/trade/inventory/statsTarix ustidagi kartalar: jami sanashlar total_count, oxirgi yakunlangan sana last_completed_at, aniqlik accuracy_percent (barcha yakunlangan sanashlar bo‘yicha mos kelgan pozitsiyalarning tekshirilganlarga nisbati, ma’lumot bo‘lmasa null) va oxirgi sanashning valyutalar bo‘yicha pul farqi last_difference_amounts.
Sarlavhalar (headers)
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
Authorization | Bearer {token} | POST /common/auth/login dan olingan token |
Accept | application/json | Javob JSON da |
Accept-Language | ru | Xabarlar va nomlar tili: ru, uz, oz |
Javob · 200
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
total_count | integer | |
last_completed_at | string | |
accuracy_percent | null | |
last_difference_amounts | object | |
last_difference_amounts.uzs | integer | |
last_difference_amounts.usd | integer | |
last_difference_amounts.eur | integer | |
last_difference_amounts.rub | integer |
{
"total_count": 2,
"last_completed_at": "2026-09-30 12:47:59",
"accuracy_percent": null,
"last_difference_amounts": {
"uzs": 2000,
"usd": 2000,
"eur": 2000,
"rub": 2000
}
}Sanash uchun toifalar
/company/trade/inventory/categoriesQisman inventarizatsiya uchun stock_id omborining toifalar katalogi: har bir toifada nima borligi va kirim narxida qancha summaga. Ombor foydalanuvchi kompaniyasiga yoki uning filialiga tegishli bo‘lishi kerak.
Sarlavhalar (headers)
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
Authorization | Bearer {token} | POST /common/auth/login dan olingan token |
Accept | application/json | Javob JSON da |
Accept-Language | ru | Xabarlar va nomlar tili: ru, uz, oz |
So‘rov parametrlari
| Maydon | Turi | Majburiy | Tavsif |
|---|---|---|---|
stock_id | integer | Ha | Ombor. Foydalanuvchiga ochiq mavjud yozuv ID si |
Javob · 200
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
data | object[] | Ma'lumotlar |
data[].id | integer | ID |
data[].name | object | Nomlanish |
data[].name.oz | string | |
data[].name.ru | string | |
data[].name.uz | string | |
data[].text | string | Matn |
data[].parent_id | integer | Ota-ona |
data[].products_count | integer | |
data[].quantity | integer | Miqdori |
data[].amounts | object | |
data[].amounts.uzs | integer | |
data[].amounts.usd | integer | |
data[].amounts.eur | integer | |
data[].amounts.rub | integer | |
total | object | Jami yozuvlar |
total.products_count | integer | |
total.quantity | integer | Miqdori |
total.amounts | object | |
total.amounts.uzs | integer | |
total.amounts.usd | integer | |
total.amounts.eur | integer | |
total.amounts.rub | integer |
{
"data": [
{
"id": 4,
"name": {
"oz": "Category 1-1-1 oz",
"ru": "Category 1-1-1 ru",
"uz": "Category 1-1-1 uz"
},
"text": "Category 1-1-1 ru",
"parent_id": 3,
"products_count": 2,
"quantity": 3,
"amounts": {
"uzs": 1000,
"usd": 4260,
"eur": 0,
"rub": 0
}
}
],
"total": {
"products_count": 2,
"quantity": 3,
"amounts": {
"uzs": 1000,
"usd": 4260,
"eur": 0,
"rub": 0
}
}
}Xato misoli · 422
{
"message": "Поле Склад обязательно для заполнения.",
"errors": {
"stock_id": [
"Поле Склад обязательно для заполнения."
]
}
}Sanashga tovar qo‘shish
/company/trade/inventory/{model}/add-productsDavom etayotgan inventarizatsiyaga ombor pozitsiyalarini (stock_product_id — shu ombor qoldig‘i qatorining ID si) haqiqiy miqdor bilan qo‘shadi. Hisobda ham, amalda ham yo‘q tovarni qo‘shib bo‘lmaydi; bitta sanashda 10 000 tadan ko‘p pozitsiya bo‘lmaydi. Faqat in_progress holati uchun.
Formadan (
multipart/form-data)PATCHmetodiPOST+?_method=PATCHparametri bilan yuboriladi.
Sarlavhalar (headers)
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
Authorization | Bearer {token} | POST /common/auth/login dan olingan token |
Accept | application/json | Javob JSON da |
Accept-Language | ru | Xabarlar va nomlar tili: ru, uz, oz |
Yo‘l parametrlari
| Parametr | Tavsif |
|---|---|
model | Yozuv ID si |
So‘rov tanasi
| Maydon | Turi | Majburiy | Tavsif |
|---|---|---|---|
products_tmp | object[] | Ha | Tovarlar. Maks. 100 ta element |
products_tmp[].stock_product_id | integer | Ha | Ombordagi mahsulot. Takrorlanmasin |
products_tmp[].actual_quantity | number | Ha | Haqiqiy miqdor. Verguldan keyin 4 tagacha raqam. Kamida 0 |
{
"products_tmp": [
{
"stock_product_id": 1,
"actual_quantity": 10
},
{
"stock_product_id": 2,
"actual_quantity": 0.2
}
]
}curl -X PATCH "https://api.wasyt.uz/company/trade/inventory/1/add-products" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"products_tmp":[{"stock_product_id":1,"actual_quantity":10},{"stock_product_id":2,"actual_quantity":0.2}]}'Javob · 200
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
message | string | Xabar |
{
"message": "Success"
}Sanashdan tovarlarni olib tashlash
/company/trade/inventory/{model}/remove-productsDavom etayotgan inventarizatsiyadan berilgan inventarizatsiya qatori ID lariga ega qatorlarni o‘chiradi va yakunlarini qayta hisoblaydi. Faqat in_progress holati uchun.
Formadan (
multipart/form-data)PATCHmetodiPOST+?_method=PATCHparametri bilan yuboriladi.
Sarlavhalar (headers)
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
Authorization | Bearer {token} | POST /common/auth/login dan olingan token |
Accept | application/json | Javob JSON da |
Accept-Language | ru | Xabarlar va nomlar tili: ru, uz, oz |
Yo‘l parametrlari
| Parametr | Tavsif |
|---|---|
model | Yozuv ID si |
So‘rov tanasi
| Maydon | Turi | Majburiy | Tavsif |
|---|---|---|---|
products_tmp | array | Ha | Tovarlar. Maks. 100 ta element |
products_tmp[] | integer | Ha | Tovarlar. Takrorlanmasin |
{
"products_tmp": [
1
]
}curl -X PATCH "https://api.wasyt.uz/company/trade/inventory/1/remove-products" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"products_tmp":[1]}'Javob · 200
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
message | string | Xabar |
{
"message": "Success"
}Solishtirma qaydnoma
/company/trade/inventory/{model}/comparison-sheetSanashning tekshirilgan qatorlari bo‘yicha solishtirma qaydnomani Excel fayl sifatida yuklab beradi. Inventarizatsiya tasdiqlanishidan oldin ham, keyin ham mavjud.
Sarlavhalar (headers)
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
Authorization | Bearer {token} | POST /common/auth/login dan olingan token |
Accept | application/json | Javob JSON da |
Accept-Language | ru | Xabarlar va nomlar tili: ru, uz, oz |
Yo‘l parametrlari
| Parametr | Tavsif |
|---|---|
model | Yozuv ID si |
Javob · 200
Javob — fayl yoki matn, JSON emas.
Tasdiqlash va qoldiqni yangilash
/company/trade/inventory/{model}/completeSanashni bitta tranzaksiyada yakunlaydi: hisobdagi miqdorni joriy holatda qayd etadi, ortiqchalarga yetkazib beruvchisiz yakunlangan Kirim (har valyutaga bittadan) va kamomadlarga «Inventarizatsiya» belgili Hisobdan chiqarish yaratadi. Faqat tekshirilgan qatorlar hisobga olinadi; birortasi tekshirilmagan bo‘lsa yoki holat in_progress bo‘lmasa — 400 xato.
Formadan (
multipart/form-data)PATCHmetodiPOST+?_method=PATCHparametri bilan yuboriladi.
Sarlavhalar (headers)
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
Authorization | Bearer {token} | POST /common/auth/login dan olingan token |
Accept | application/json | Javob JSON da |
Accept-Language | ru | Xabarlar va nomlar tili: ru, uz, oz |
Yo‘l parametrlari
| Parametr | Tavsif |
|---|---|
model | Yozuv ID si |
Javob · 200
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
message | string | Xabar |
{
"message": "Success"
}Inventarizatsiyani bekor qilish
/company/trade/inventory/{model}/cancelSanashni canceled holatiga o‘tkazadi va qatorlarini o‘chiradi; qoldiqlar o‘zgarmaydi, ombor yana ochiladi. Faqat in_progress holati uchun.
Formadan (
multipart/form-data)PATCHmetodiPOST+?_method=PATCHparametri bilan yuboriladi.
Sarlavhalar (headers)
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
Authorization | Bearer {token} | POST /common/auth/login dan olingan token |
Accept | application/json | Javob JSON da |
Accept-Language | ru | Xabarlar va nomlar tili: ru, uz, oz |
Yo‘l parametrlari
| Parametr | Tavsif |
|---|---|
model | Yozuv ID si |
Javob · 200
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
message | string | Xabar |
{
"message": "Success"
}Inventarizatsiyalar tarixi
/company/trade/inventoryKompaniya va uning filiallari inventarizatsiyalari sahifalab va filtrlar bilan; format=excel bilan — ro‘yxatni Excel’ga eksport qilish.
Sarlavhalar (headers)
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
Authorization | Bearer {token} | POST /common/auth/login dan olingan token |
Accept | application/json | Javob JSON da |
Accept-Language | ru | Xabarlar va nomlar tili: ru, uz, oz |
So‘rov parametrlari
| Maydon | Turi | Majburiy | Tavsif |
|---|---|---|---|
format | string | Yo‘q | Javob formati: excel — ro‘yxatni JSON o‘rniga Excel fayl sifatida yuklab olish (xuddi shu filtrlar qo‘llanadi) |
filter[id] | — | Yo‘q | ID — aniq qiymat |
filter[creator_id] | — | Yo‘q | Yaratuvchi — aniq qiymat |
filter[updater_id] | — | Yo‘q | Yangilovchi — aniq qiymat |
filter[company_id] | — | Yo‘q | Kompaniya — bitta qiymat yoki ro‘yxat filter[company_id][] |
filter[stock_id] | — | Yo‘q | Ombor — aniq qiymat |
filter[responsible_id] | — | Yo‘q | Mas'ul — aniq qiymat |
filter[type] | — | Yo‘q | Turi — aniq qiymat |
filter[status] | — | Yo‘q | Status — aniq qiymat |
filter[created_at] | — | Yo‘q | Yaratilgan — davr: [0] — dan, [1] — gacha (Y-m-d) |
filter[products.product.category_id] | — | Yo‘q | Kategoriya — aniq qiymat (ichki elementlar bilan) |
filter[products.product.brand_id] | — | Yo‘q | Brend — aniq qiymat |
sort[] | — | Yo‘q | Saralash, - — kamayish bo‘yicha: id, -id |
with[] | — | Yo‘q | Bog‘liq ma’lumotlarni qo‘shish: creator.profile, updater.profile, responsible.profile, company, stock |
page | — | Yo‘q | Sahifa raqami, 1 dan |
page-size | — | Yo‘q | Sahifadagi yozuvlar soni, ko‘pi bilan 10 |
Javob · 200
Sahifalangan javob: yozuvlar data[] ichida, sahifalash links va meta da.
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
data | object[] | Ma'lumotlar |
data[].id | integer | ID |
data[].creator_id | integer | Yaratuvchi |
data[].updater_id | integer | Yangilovchi |
data[].company_id | integer | Kompaniya |
data[].stock_id | integer | Ombor |
data[].responsible_id | null | Mas'ul |
data[].type | string | Turi |
data[].status | string | Status |
data[].comment | string | Izoh |
data[].stock_quantity | integer | Ombordagi miqdor |
data[].actual_quantity | integer | Haqiqiy miqdor |
data[].quantity_diff_above | integer | Ortiqcha (soni) |
data[].quantity_diff_below | integer | Kamchilik (soni) |
data[].amounts_diff_above | object | Ortiqcha (summa) |
data[].amounts_diff_above.eur | integer | |
data[].amounts_diff_above.rub | integer | |
data[].amounts_diff_above.usd | integer | |
data[].amounts_diff_above.uzs | integer | |
data[].amounts_diff_below | object | Kamchilik (summa) |
data[].amounts_diff_below.eur | integer | |
data[].amounts_diff_below.rub | integer | |
data[].amounts_diff_below.usd | integer | |
data[].amounts_diff_below.uzs | integer | |
data[].products_count | integer | |
data[].checked_products_count | integer | |
data[].matched_products_count | integer | |
data[].completed_at | null | |
data[].created_at | string | Yaratilgan |
data[].updated_at | string | Yangilangan |
{
"data": [
{
"id": 1,
"creator_id": 2,
"updater_id": 2,
"company_id": 1,
"stock_id": 1,
"responsible_id": null,
"type": "partial",
"status": "in_progress",
"comment": "Comment 1",
"stock_quantity": 1,
"actual_quantity": 2,
"quantity_diff_above": 1,
"quantity_diff_below": 0,
"amounts_diff_above": {
"eur": 1000,
"rub": 1000,
"usd": 1000,
"uzs": 1000
},
"amounts_diff_below": {
"eur": 0,
"rub": 0,
"usd": 0,
"uzs": 0
},
"products_count": 0,
"checked_products_count": 0,
"matched_products_count": 0,
"completed_at": null,
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59"
},
{
"id": 2,
"creator_id": 2,
"updater_id": 2,
"company_id": 1,
"stock_id": 1,
"responsible_id": null,
"type": "partial",
"status": "completed",
"comment": "Comment 2",
"stock_quantity": 3,
"actual_quantity": 5,
"quantity_diff_above": 2,
"quantity_diff_below": 0,
"amounts_diff_above": {
"eur": 2000,
"rub": 2000,
"usd": 2000,
"uzs": 2000
},
"amounts_diff_below": {
"eur": 0,
"rub": 0,
"usd": 0,
"uzs": 0
},
"products_count": 0,
"checked_products_count": 0,
"matched_products_count": 0,
"completed_at": "2026-09-30 12:47:59",
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59"
}
],
"links": {
"first": "https://api.wasyt.uz/company/trade/inventory?page=1",
"last": "https://api.wasyt.uz/company/trade/inventory?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [],
"path": "https://api.wasyt.uz/company/trade/inventory",
"per_page": 10,
"to": 2,
"total": 2
}
}Inventarizatsiya tafsilotlari
/company/trade/inventory/{model}Bitta inventarizatsiya: ombor, mas’ul shaxs, turi, holati, tekshirilgan pozitsiyalar hisoblagichlari va valyutalar bo‘yicha ortiqcha va kamomad summalari.
Sarlavhalar (headers)
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
Authorization | Bearer {token} | POST /common/auth/login dan olingan token |
Accept | application/json | Javob JSON da |
Accept-Language | ru | Xabarlar va nomlar tili: ru, uz, oz |
Yo‘l parametrlari
| Parametr | Tavsif |
|---|---|
model | Yozuv ID si |
So‘rov parametrlari
| Parametr | Tavsif |
|---|---|
stock_id | Ombor |
GET /company/trade/inventory/categories?stock_id=1Javob · 200
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
data | object[] | Ma'lumotlar |
data[].id | integer | ID |
data[].name | object | Nomlanish |
data[].name.oz | string | |
data[].name.ru | string | |
data[].name.uz | string | |
data[].text | string | Matn |
data[].parent_id | integer | Ota-ona |
data[].products_count | integer | |
data[].quantity | integer | Miqdori |
data[].amounts | object | |
data[].amounts.uzs | integer | |
data[].amounts.usd | integer | |
data[].amounts.eur | integer | |
data[].amounts.rub | integer | |
total | object | Jami yozuvlar |
total.products_count | integer | |
total.quantity | integer | Miqdori |
total.amounts | object | |
total.amounts.uzs | integer | |
total.amounts.usd | integer | |
total.amounts.eur | integer | |
total.amounts.rub | integer |
{
"data": [
{
"id": 4,
"name": {
"oz": "Category 1-1-1 oz",
"ru": "Category 1-1-1 ru",
"uz": "Category 1-1-1 uz"
},
"text": "Category 1-1-1 ru",
"parent_id": 3,
"products_count": 2,
"quantity": 3,
"amounts": {
"uzs": 1000,
"usd": 4260,
"eur": 0,
"rub": 0
}
}
],
"total": {
"products_count": 2,
"quantity": 3,
"amounts": {
"uzs": 1000,
"usd": 4260,
"eur": 0,
"rub": 0
}
}
}Xato misoli · 422
{
"message": "Поле Склад обязательно для заполнения.",
"errors": {
"stock_id": [
"Поле Склад обязательно для заполнения."
]
}
}Inventarizatsiyani boshlash
/company/trade/inventoryOmbor sanashini ochadi. type = full varaqni darhol butun ombor bilan to‘ldiradi, partial — tanlangan category_ids va product_ids bilan (tanlovsiz varaq bo‘sh va skaner orqali to‘ldiriladi). Sanash davomida ombor savdo va ko‘chirish uchun yopiq; mas’ul shaxs sukut bo‘yicha — ombor kompaniyasi direktori.
Sarlavhalar (headers)
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
Authorization | Bearer {token} | POST /common/auth/login dan olingan token |
Accept | application/json | Javob JSON da |
Accept-Language | ru | Xabarlar va nomlar tili: ru, uz, oz |
So‘rov tanasi
| Maydon | Turi | Majburiy | Tavsif |
|---|---|---|---|
company_id | integer | Ha | Kompaniya. Foydalanuvchiga ochiq mavjud yozuv ID si |
stock_id | integer | Ha | Ombor. Foydalanuvchiga ochiq mavjud yozuv ID si |
responsible_id | integer | Yo‘q | Mas'ul. Foydalanuvchiga ochiq mavjud yozuv ID si |
type | string | Ha | Turi. Mumkin qiymatlar: partial, full |
category_ids | array | Yo‘q | Kategoriyalar. Maks. 1000 ta element |
category_ids[] | integer | Ha | Kategoriyalar. Takrorlanmasin |
product_ids | array | Yo‘q | Tovarlar. Maks. 1000 ta element |
product_ids[] | integer | Ha | Tovarlar. Takrorlanmasin |
comment | string | Yo‘q | Izoh. Maks. 5000 belgi |
{
"company_id": 1,
"stock_id": 1,
"responsible_id": 2,
"type": "partial",
"comment": "Comment 3"
}curl -X POST "https://api.wasyt.uz/company/trade/inventory" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"company_id":1,"stock_id":1,"responsible_id":2,"type":"partial","comment":"Comment 3"}'Javob · 200
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
company_id | integer | Kompaniya |
stock_id | integer | Ombor |
responsible_id | integer | Mas'ul |
type | string | Turi |
comment | string | Izoh |
updated_at | string | Yangilangan |
created_at | string | Yaratilgan |
updater_id | integer | Yangilovchi |
amounts_diff_above | object | Ortiqcha (summa) |
amounts_diff_above.uzs | integer | |
amounts_diff_above.usd | integer | |
amounts_diff_above.eur | integer | |
amounts_diff_above.rub | integer | |
amounts_diff_below | object | Kamchilik (summa) |
amounts_diff_below.uzs | integer | |
amounts_diff_below.usd | integer | |
amounts_diff_below.eur | integer | |
amounts_diff_below.rub | integer | |
creator_id | integer | Yaratuvchi |
id | integer | ID |
{
"company_id": 1,
"stock_id": 1,
"responsible_id": 2,
"type": "partial",
"comment": "Comment 3",
"updated_at": "2026-09-30 12:54:16",
"created_at": "2026-09-30 12:54:16",
"updater_id": 2,
"amounts_diff_above": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"amounts_diff_below": {
"uzs": 0,
"usd": 0,
"eur": 0,
"rub": 0
},
"creator_id": 2,
"id": 3
}
