Kirim tovarlari
Kirim qatorlari va ularni to‘ldirish vositalari: Excel’dan import (oddiy va nomenklatura yaratadigan to‘liq) hamda yuk xati rasmini AI orqali tanish. Import faqat faylni tahlil qilib, kirim formasi uchun qatorlarni qaytaradi.
| Metod | Manzil | Vazifasi |
|---|---|---|
| POST | /company/trade/purchase-product/import | Excel’dan tovar importi |
| POST | /company/trade/purchase-product/full-import | Excel’dan to‘liq import |
| POST | /company/trade/purchase-product/ai-import | Yuk xatini rasmdan tanish |
| GET | /company/trade/purchase-product/download-example | Import uchun shablon |
| GET | /company/trade/purchase-product/download-full-example | To‘liq import shabloni |
| GET | /company/trade/purchase-product | Kirim tovarlari ro‘yxati |
| GET | /company/trade/purchase-product/{model} | Kirim qatori |
Excel’dan tovar importi
/company/trade/purchase-product/importFaylni shablon bo‘yicha tahlil qiladi (500 qatorgacha): tovar to‘liq nomi bo‘yicha qidiriladi, har bir qatorda miqdor, kirim narxi va ustama (foiz yoki summa) tekshiriladi. Kirim formasi uchun products qaytaradi; xatolar katakni ko‘rsatadi. Hech narsa saqlamaydi.
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 |
|---|---|---|---|
file | file | Ha | Fayl. Formatlar: xlsx. Maks. 1024 KB |
{
"company_id": 1
}curl -X POST "https://api.wasyt.uz/company/trade/purchase-product/import" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"company_id":1}'Javob · 200
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
products | object[] | Mahsulotlar |
products[].product_id | integer | Mahsulot |
products[].name | string | Nomlanish |
products[].quantity | integer | Miqdori |
products[].purchase_price | integer | Sotib olish narxi |
products[].markup_percent | integer | Ustama % |
products[].markup_fixed | integer | Ustama |
{
"products": [
{
"product_id": 3,
"name": "Product 2",
"quantity": 2,
"purchase_price": 1500,
"markup_percent": 15,
"markup_fixed": 0
}
]
}Xato misoli · 422
{
"message": "Ошибка в ячейке D2 (Изменение значения поля markup percent запрещает присутствие markup fixed.) (and 1 more error)",
"errors": {
"file": [
"Ошибка в ячейке D2 (Изменение значения поля markup percent запрещает присутствие markup fixed.)",
"Ошибка в ячейке E2 (Изменение значения поля markup fixed запрещает присутствие markup percent.)"
]
}
}Excel’dan to‘liq import
/company/trade/purchase-product/full-importTo‘liq shablon faylini tahlil qiladi (1000 qatorgacha): tovar avval shtrix-kod, keyin nom bo‘yicha qidiriladi; yetishmayotgan toifa, brend va tovarlar yaratiladi, bo‘sh shtrix-kod generatsiya qilinadi. Kirim formasi uchun products qaytaradi — kirimning o‘zi yaratilmaydi.
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 |
|---|---|---|---|
file | file | Ha | Fayl. Formatlar: xlsx. Maks. 1024 KB |
{
"company_id": 1
}curl -X POST "https://api.wasyt.uz/company/trade/purchase-product/full-import" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"company_id":1}'Javob · 200
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
products | object[] | Mahsulotlar |
products[].product_id | integer | Mahsulot |
products[].name | string | Nomlanish |
products[].category_id | integer | Kategoriya |
products[].category | string | Kategoriya |
products[].brand_id | integer | Brend |
products[].brand | string | Brend |
products[].unit_id | integer | O'lchov birligi |
products[].unit | string | |
products[].barcode | string | Shtrix kod |
products[].quantity | integer | Miqdori |
products[].purchase_price | integer | Sotib olish narxi |
products[].markup_percent | integer | Ustama % |
products[].markup_fixed | integer | Ustama |
{
"products": [
{
"product_id": 3,
"name": "Product 2",
"category_id": 5,
"category": "Category 1-1-2 ru",
"brand_id": 1,
"brand": "Brand 1",
"unit_id": 2,
"unit": "Unit 2 ru",
"barcode": "0000000000002",
"quantity": 2,
"purchase_price": 1500,
"markup_percent": 15,
"markup_fixed": 0
},
{
"product_id": 90,
"name": "Product 3",
"category_id": 3,
"category": "Category 1-1 ru",
"brand_id": 1,
"brand": "Brand 1",
"unit_id": 50,
"unit": "Шт",
"barcode": "4780000000017",
"quantity": 5,
"purchase_price": 1000,
"markup_percent": 0,
"markup_fixed": 500
}
]
}Xato misoli · 422
{
"message": "Ошибка в ячейке D2 (Выбранная запись не существует или была удалена)",
"errors": {
"file": [
"Ошибка в ячейке D2 (Выбранная запись не существует или была удалена)"
]
}
}Yuk xatini rasmdan tanish
/company/trade/purchase-product/ai-importAI yetkazib beruvchi yuk xati rasmini (jpg/png, 8 MB gacha) o‘qiydi va products qaytaradi: nomi, miqdori, kirim narxi va katalogdagi mos tovar (shtrix-kod yoki nom bo‘yicha). Topilmagan qatorlar product_id = null va matched = false bilan keladi; tovarlar yaratilmaydi. Pozitsiyalar tanilmasa — 400 xato.
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 |
|---|---|---|---|
file | file | Ha | Fayl. Formatlar: jpg, jpeg, png. Maks. 8192 KB |
{
"company_id": 1
}curl -X POST "https://api.wasyt.uz/company/trade/purchase-product/ai-import" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"company_id":1}'Javob · 200
Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
products | object[] | Mahsulotlar |
products[].product_id | integer | Mahsulot |
products[].name | string | Nomlanish |
products[].quantity | integer | Miqdori |
products[].purchase_price | integer | Sotib olish narxi |
products[].matched | boolean |
{
"products": [
{
"product_id": 3,
"name": "Product 2",
"quantity": 3,
"purchase_price": 1500,
"matched": true
}
]
}Import uchun shablon
/company/trade/purchase-product/download-exampleKirim tovarlarini oddiy import qilish uchun Excel fayl namunasini yuklab beradi.
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 — fayl yoki matn, JSON emas.
To‘liq import shabloni
/company/trade/purchase-product/download-full-exampleNomenklatura yaratadigan to‘liq import uchun Excel fayl namunasini yuklab beradi.
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 — fayl yoki matn, JSON emas.
Kirim tovarlari ro‘yxati
/company/trade/purchase-productKirim qatorlari sahifalab va filtrlar bilan; format=excel bilan — Excel’ga eksport.
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[company_id] | — | Yo‘q | Kompaniya — bitta qiymat yoki ro‘yxat filter[company_id][] |
filter[purchase_id] | — | Yo‘q | Joylash — aniq qiymat |
filter[product_id] | — | Yo‘q | Mahsulot — aniq qiymat |
filter[quantity] | — | Yo‘q | Miqdori — oraliq: [0] — dan, [1] — gacha |
filter[actual_quantity] | — | Yo‘q | Haqiqiy miqdor — oraliq: [0] — dan, [1] — gacha |
filter[created_at] | — | Yo‘q | Yaratilgan — davr: [0] — dan, [1] — gacha (Y-m-d) |
filter[product.category_id] | — | Yo‘q | Kategoriya — aniq qiymat (ichki elementlar bilan) |
filter[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: company, purchase, purchase.stock, purchase.supplier, product, product.parent, product.category.ancestors, product.brand, product.unit |
page | — | Yo‘q | Sahifa raqami, 1 dan |
page-size | — | Yo‘q | Sahifadagi yozuvlar soni, ko‘pi bilan 50 |
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[].company_id | integer | Kompaniya |
data[].purchase_id | integer | Joylash |
data[].product_id | integer | Mahsulot |
data[].purchase_price | number | Sotib olish narxi |
data[].sale_price | number | Sotish narxi |
data[].quantity | integer | Miqdori |
data[].actual_quantity | integer | Haqiqiy miqdor |
data[].created_at | string | Yaratilgan |
data[].updated_at | string | Yangilangan |
data[].currency | string | Valyuta |
data[].purchase_price_uzs | integer | |
data[].sale_price_uzs | integer | |
data[].purchase_price_usd | number | |
data[].sale_price_usd | number | |
data[].purchase_price_eur | number | |
data[].sale_price_eur | number | |
data[].purchase_price_rub | number | |
data[].sale_price_rub | number |
{
"data": [
{
"id": 120,
"company_id": 1,
"purchase_id": 139,
"product_id": 1,
"purchase_price": 8.5,
"sale_price": 10.12,
"quantity": 1,
"actual_quantity": 0,
"created_at": "2026-09-30 12:54:37",
"updated_at": "2026-09-30 12:54:37",
"currency": "usd",
"purchase_price_uzs": 8500,
"sale_price_uzs": 10120,
"purchase_price_usd": 8.5,
"sale_price_usd": 10.12,
"purchase_price_eur": 8.5,
"sale_price_eur": 10.12,
"purchase_price_rub": 8.5,
"sale_price_rub": 10.12
}
],
"links": {
"first": "https://api.wasyt.uz/company/trade/purchase-product?page=1",
"last": "https://api.wasyt.uz/company/trade/purchase-product?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [],
"path": "https://api.wasyt.uz/company/trade/purchase-product",
"per_page": 50,
"to": 1,
"total": 1
}
}Kirim qatori
/company/trade/purchase-product/{model}Kirimning bitta qatori: tovar, miqdor, kirim va sotuv narxi.
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 |
|---|---|---|
id | integer | ID |
company_id | integer | Kompaniya |
purchase_id | integer | Joylash |
product_id | integer | Mahsulot |
purchase_price | integer | Sotib olish narxi |
sale_price | integer | Sotish narxi |
quantity | integer | Miqdori |
actual_quantity | integer | Haqiqiy miqdor |
created_at | string | Yaratilgan |
updated_at | string | Yangilangan |
currency | string | Valyuta |
purchase_price_uzs | integer | |
sale_price_uzs | integer | |
purchase_price_usd | integer | |
sale_price_usd | number | |
purchase_price_eur | integer | |
sale_price_eur | number | |
purchase_price_rub | integer | |
sale_price_rub | number |
{
"id": 1,
"company_id": 1,
"purchase_id": 1,
"product_id": 1,
"purchase_price": 1000,
"sale_price": 1100,
"quantity": 1,
"actual_quantity": 1,
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"currency": "uzs",
"purchase_price_uzs": 1000,
"sale_price_uzs": 1100,
"purchase_price_usd": 1,
"sale_price_usd": 1.1,
"purchase_price_eur": 1,
"sale_price_eur": 1.1,
"purchase_price_rub": 1,
"sale_price_rub": 1.1
}
