Skip to content

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.

MetodManzilVazifasi
GET/company/trade/inventory/statsInventarizatsiya statistikasi
GET/company/trade/inventory/categoriesSanash uchun toifalar
PATCH/company/trade/inventory/{model}/add-productsSanashga tovar qo‘shish
PATCH/company/trade/inventory/{model}/remove-productsSanashdan tovarlarni olib tashlash
GET/company/trade/inventory/{model}/comparison-sheetSolishtirma qaydnoma
PATCH/company/trade/inventory/{model}/completeTasdiqlash va qoldiqni yangilash
PATCH/company/trade/inventory/{model}/cancelInventarizatsiyani bekor qilish
GET/company/trade/inventoryInventarizatsiyalar tarixi
GET/company/trade/inventory/{model}Inventarizatsiya tafsilotlari
POST/company/trade/inventoryInventarizatsiyani boshlash

Inventarizatsiya statistikasi ​

GET/company/trade/inventory/stats

Tarix 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) ​

SarlavhaQiymatTavsif
AuthorizationBearer {token}POST /common/auth/login dan olingan token
Acceptapplication/jsonJavob JSON da
Accept-LanguageruXabarlar va nomlar tili: ru, uz, oz

Javob · 200 ​

Javob maydonlari
MaydonTuriTavsif
total_countinteger
last_completed_atstring
accuracy_percentnull
last_difference_amountsobject
last_difference_amounts.uzsinteger
last_difference_amounts.usdinteger
last_difference_amounts.eurinteger
last_difference_amounts.rubinteger
json
{
    "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 ​

GET/company/trade/inventory/categories

Qisman 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) ​

SarlavhaQiymatTavsif
AuthorizationBearer {token}POST /common/auth/login dan olingan token
Acceptapplication/jsonJavob JSON da
Accept-LanguageruXabarlar va nomlar tili: ru, uz, oz

So‘rov parametrlari ​

MaydonTuriMajburiyTavsif
stock_idintegerHaOmbor. Foydalanuvchiga ochiq mavjud yozuv ID si

Javob · 200 ​

Javob maydonlari
MaydonTuriTavsif
dataobject[]Ma'lumotlar
data[].idintegerID
data[].nameobjectNomlanish
data[].name.ozstring
data[].name.rustring
data[].name.uzstring
data[].textstringMatn
data[].parent_idintegerOta-ona
data[].products_countinteger
data[].quantityintegerMiqdori
data[].amountsobject
data[].amounts.uzsinteger
data[].amounts.usdinteger
data[].amounts.eurinteger
data[].amounts.rubinteger
totalobjectJami yozuvlar
total.products_countinteger
total.quantityintegerMiqdori
total.amountsobject
total.amounts.uzsinteger
total.amounts.usdinteger
total.amounts.eurinteger
total.amounts.rubinteger
json
{
    "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 ​

json
{
    "message": "Поле Склад обязательно для заполнения.",
    "errors": {
        "stock_id": [
            "Поле Склад обязательно для заполнения."
        ]
    }
}

Sanashga tovar qo‘shish ​

PATCH/company/trade/inventory/{model}/add-products

Davom 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) PATCH metodi POST + ?_method=PATCH parametri bilan yuboriladi.

Sarlavhalar (headers) ​

SarlavhaQiymatTavsif
AuthorizationBearer {token}POST /common/auth/login dan olingan token
Acceptapplication/jsonJavob JSON da
Accept-LanguageruXabarlar va nomlar tili: ru, uz, oz

Yo‘l parametrlari ​

ParametrTavsif
modelYozuv ID si

So‘rov tanasi ​

MaydonTuriMajburiyTavsif
products_tmpobject[]HaTovarlar. Maks. 100 ta element
products_tmp[].stock_product_idintegerHaOmbordagi mahsulot. Takrorlanmasin
products_tmp[].actual_quantitynumberHaHaqiqiy miqdor. Verguldan keyin 4 tagacha raqam. Kamida 0
json
{
    "products_tmp": [
        {
            "stock_product_id": 1,
            "actual_quantity": 10
        },
        {
            "stock_product_id": 2,
            "actual_quantity": 0.2
        }
    ]
}
bash
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
MaydonTuriTavsif
messagestringXabar
json
{
    "message": "Success"
}

Sanashdan tovarlarni olib tashlash ​

PATCH/company/trade/inventory/{model}/remove-products

Davom etayotgan inventarizatsiyadan berilgan inventarizatsiya qatori ID lariga ega qatorlarni o‘chiradi va yakunlarini qayta hisoblaydi. Faqat in_progress holati uchun.

Formadan (multipart/form-data) PATCH metodi POST + ?_method=PATCH parametri bilan yuboriladi.

Sarlavhalar (headers) ​

SarlavhaQiymatTavsif
AuthorizationBearer {token}POST /common/auth/login dan olingan token
Acceptapplication/jsonJavob JSON da
Accept-LanguageruXabarlar va nomlar tili: ru, uz, oz

Yo‘l parametrlari ​

ParametrTavsif
modelYozuv ID si

So‘rov tanasi ​

MaydonTuriMajburiyTavsif
products_tmparrayHaTovarlar. Maks. 100 ta element
products_tmp[]integerHaTovarlar. Takrorlanmasin
json
{
    "products_tmp": [
        1
    ]
}
bash
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
MaydonTuriTavsif
messagestringXabar
json
{
    "message": "Success"
}

Solishtirma qaydnoma ​

GET/company/trade/inventory/{model}/comparison-sheet

Sanashning tekshirilgan qatorlari bo‘yicha solishtirma qaydnomani Excel fayl sifatida yuklab beradi. Inventarizatsiya tasdiqlanishidan oldin ham, keyin ham mavjud.

Sarlavhalar (headers) ​

SarlavhaQiymatTavsif
AuthorizationBearer {token}POST /common/auth/login dan olingan token
Acceptapplication/jsonJavob JSON da
Accept-LanguageruXabarlar va nomlar tili: ru, uz, oz

Yo‘l parametrlari ​

ParametrTavsif
modelYozuv ID si

Javob · 200 ​

Javob — fayl yoki matn, JSON emas.

Tasdiqlash va qoldiqni yangilash ​

PATCH/company/trade/inventory/{model}/complete

Sanashni 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) PATCH metodi POST + ?_method=PATCH parametri bilan yuboriladi.

Sarlavhalar (headers) ​

SarlavhaQiymatTavsif
AuthorizationBearer {token}POST /common/auth/login dan olingan token
Acceptapplication/jsonJavob JSON da
Accept-LanguageruXabarlar va nomlar tili: ru, uz, oz

Yo‘l parametrlari ​

ParametrTavsif
modelYozuv ID si

Javob · 200 ​

Javob maydonlari
MaydonTuriTavsif
messagestringXabar
json
{
    "message": "Success"
}

Inventarizatsiyani bekor qilish ​

PATCH/company/trade/inventory/{model}/cancel

Sanashni canceled holatiga o‘tkazadi va qatorlarini o‘chiradi; qoldiqlar o‘zgarmaydi, ombor yana ochiladi. Faqat in_progress holati uchun.

Formadan (multipart/form-data) PATCH metodi POST + ?_method=PATCH parametri bilan yuboriladi.

Sarlavhalar (headers) ​

SarlavhaQiymatTavsif
AuthorizationBearer {token}POST /common/auth/login dan olingan token
Acceptapplication/jsonJavob JSON da
Accept-LanguageruXabarlar va nomlar tili: ru, uz, oz

Yo‘l parametrlari ​

ParametrTavsif
modelYozuv ID si

Javob · 200 ​

Javob maydonlari
MaydonTuriTavsif
messagestringXabar
json
{
    "message": "Success"
}

Inventarizatsiyalar tarixi ​

GET/company/trade/inventory

Kompaniya va uning filiallari inventarizatsiyalari sahifalab va filtrlar bilan; format=excel bilan — ro‘yxatni Excel’ga eksport qilish.

Sarlavhalar (headers) ​

SarlavhaQiymatTavsif
AuthorizationBearer {token}POST /common/auth/login dan olingan token
Acceptapplication/jsonJavob JSON da
Accept-LanguageruXabarlar va nomlar tili: ru, uz, oz

So‘rov parametrlari ​

MaydonTuriMajburiyTavsif
formatstringYo‘qJavob formati: excel — ro‘yxatni JSON o‘rniga Excel fayl sifatida yuklab olish (xuddi shu filtrlar qo‘llanadi)
filter[id]—Yo‘qID — aniq qiymat
filter[creator_id]—Yo‘qYaratuvchi — aniq qiymat
filter[updater_id]—Yo‘qYangilovchi — aniq qiymat
filter[company_id]—Yo‘qKompaniya — bitta qiymat yoki ro‘yxat filter[company_id][]
filter[stock_id]—Yo‘qOmbor — aniq qiymat
filter[responsible_id]—Yo‘qMas'ul — aniq qiymat
filter[type]—Yo‘qTuri — aniq qiymat
filter[status]—Yo‘qStatus — aniq qiymat
filter[created_at]—Yo‘qYaratilgan — davr: [0] — dan, [1] — gacha (Y-m-d)
filter[products.product.category_id]—Yo‘qKategoriya — aniq qiymat (ichki elementlar bilan)
filter[products.product.brand_id]—Yo‘qBrend — aniq qiymat
sort[]—Yo‘qSaralash, - — kamayish bo‘yicha: id, -id
with[]—Yo‘qBog‘liq ma’lumotlarni qo‘shish: creator.profile, updater.profile, responsible.profile, company, stock
page—Yo‘qSahifa raqami, 1 dan
page-size—Yo‘qSahifadagi yozuvlar soni, ko‘pi bilan 10

Javob · 200 ​

Sahifalangan javob: yozuvlar data[] ichida, sahifalash links va meta da.

Javob maydonlari
MaydonTuriTavsif
dataobject[]Ma'lumotlar
data[].idintegerID
data[].creator_idintegerYaratuvchi
data[].updater_idintegerYangilovchi
data[].company_idintegerKompaniya
data[].stock_idintegerOmbor
data[].responsible_idnullMas'ul
data[].typestringTuri
data[].statusstringStatus
data[].commentstringIzoh
data[].stock_quantityintegerOmbordagi miqdor
data[].actual_quantityintegerHaqiqiy miqdor
data[].quantity_diff_aboveintegerOrtiqcha (soni)
data[].quantity_diff_belowintegerKamchilik (soni)
data[].amounts_diff_aboveobjectOrtiqcha (summa)
data[].amounts_diff_above.eurinteger
data[].amounts_diff_above.rubinteger
data[].amounts_diff_above.usdinteger
data[].amounts_diff_above.uzsinteger
data[].amounts_diff_belowobjectKamchilik (summa)
data[].amounts_diff_below.eurinteger
data[].amounts_diff_below.rubinteger
data[].amounts_diff_below.usdinteger
data[].amounts_diff_below.uzsinteger
data[].products_countinteger
data[].checked_products_countinteger
data[].matched_products_countinteger
data[].completed_atnull
data[].created_atstringYaratilgan
data[].updated_atstringYangilangan
json
{
    "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 ​

GET/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) ​

SarlavhaQiymatTavsif
AuthorizationBearer {token}POST /common/auth/login dan olingan token
Acceptapplication/jsonJavob JSON da
Accept-LanguageruXabarlar va nomlar tili: ru, uz, oz

Yo‘l parametrlari ​

ParametrTavsif
modelYozuv ID si

So‘rov parametrlari ​

ParametrTavsif
stock_idOmbor
http
GET /company/trade/inventory/categories?stock_id=1

Javob · 200 ​

Javob maydonlari
MaydonTuriTavsif
dataobject[]Ma'lumotlar
data[].idintegerID
data[].nameobjectNomlanish
data[].name.ozstring
data[].name.rustring
data[].name.uzstring
data[].textstringMatn
data[].parent_idintegerOta-ona
data[].products_countinteger
data[].quantityintegerMiqdori
data[].amountsobject
data[].amounts.uzsinteger
data[].amounts.usdinteger
data[].amounts.eurinteger
data[].amounts.rubinteger
totalobjectJami yozuvlar
total.products_countinteger
total.quantityintegerMiqdori
total.amountsobject
total.amounts.uzsinteger
total.amounts.usdinteger
total.amounts.eurinteger
total.amounts.rubinteger
json
{
    "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 ​

json
{
    "message": "Поле Склад обязательно для заполнения.",
    "errors": {
        "stock_id": [
            "Поле Склад обязательно для заполнения."
        ]
    }
}

Inventarizatsiyani boshlash ​

POST/company/trade/inventory

Ombor 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) ​

SarlavhaQiymatTavsif
AuthorizationBearer {token}POST /common/auth/login dan olingan token
Acceptapplication/jsonJavob JSON da
Accept-LanguageruXabarlar va nomlar tili: ru, uz, oz

So‘rov tanasi ​

MaydonTuriMajburiyTavsif
company_idintegerHaKompaniya. Foydalanuvchiga ochiq mavjud yozuv ID si
stock_idintegerHaOmbor. Foydalanuvchiga ochiq mavjud yozuv ID si
responsible_idintegerYo‘qMas'ul. Foydalanuvchiga ochiq mavjud yozuv ID si
typestringHaTuri. Mumkin qiymatlar: partial, full
category_idsarrayYo‘qKategoriyalar. Maks. 1000 ta element
category_ids[]integerHaKategoriyalar. Takrorlanmasin
product_idsarrayYo‘qTovarlar. Maks. 1000 ta element
product_ids[]integerHaTovarlar. Takrorlanmasin
commentstringYo‘qIzoh. Maks. 5000 belgi
json
{
    "company_id": 1,
    "stock_id": 1,
    "responsible_id": 2,
    "type": "partial",
    "comment": "Comment 3"
}
bash
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
MaydonTuriTavsif
company_idintegerKompaniya
stock_idintegerOmbor
responsible_idintegerMas'ul
typestringTuri
commentstringIzoh
updated_atstringYangilangan
created_atstringYaratilgan
updater_idintegerYangilovchi
amounts_diff_aboveobjectOrtiqcha (summa)
amounts_diff_above.uzsinteger
amounts_diff_above.usdinteger
amounts_diff_above.eurinteger
amounts_diff_above.rubinteger
amounts_diff_belowobjectKamchilik (summa)
amounts_diff_below.uzsinteger
amounts_diff_below.usdinteger
amounts_diff_below.eurinteger
amounts_diff_below.rubinteger
creator_idintegerYaratuvchi
idintegerID
json
{
    "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
}