Cargo — Ombor xodimi (WMS) BPMN diagrammasi

/api/v1/wms/ — Posilka qabul qilishdan tashuvchiga topshirish va yetkazishgacha

OMBOR XODIMI (WMS OPERATOR) A. KIRISH Boshlash Kirish phone + PIN kod Ombor aniqlash WarehouseOperator asosida avtomatik Faqat o'z ombori ko'rinadi (permission filter) B. POSILKA QABUL QILISH (Receive) Tracking code scan POST /parcels/receive/ barcode / QR scanner Tizimda bormi? Parcel topildi Status → RECEIVED_AT_WAREHOUSE current_warehouse yangilanadi Ha RECEIVED_AT_WAREHOUSE Mijozni aniqlash personal_code (Address Line 2) orqali mijoz aniqlanadi AVTOMATIK Order → PROCESSING Birinchi parcel qabul bo'lganda Order avtomatik PROCESSING ga AVTOMATIK $? Naqd to'lov qabul POST /parcels/{id}/confirm-cash/ CASH Payment OK Order → PAID To'langan yoki CARD/TRANSFER → davom personal_code tekshirish Address Line 2 = user's username Mijoz qidiriladi Yo'q Mijoz topildimi? Mijoz topilmadi Xatolik qaytariladi Yo'q Yangi Order yaratish nomi, narxi, kategoriyasi kiritiladi Ha is_over sized? L, W, H, Weight o'lchash volumetric hisoblanadi narx hisoblanadi Ha Faqat Weight kiritish narx hisoblanadi Yo'q Yangi order → davom (o'lchash va tortish) C. O'LCHASH VA TORTISH (Measure) O'lchash va tortish PATCH /parcels/{id}/measure/ actual_weight, L, W, H kiritish Tizim hisoblaydi: volumetric = (L * W * H) / 5000 chargeable = max(actual, volumetric) is_oversized tekshiruv MEASURED kg <=10% Og'irlik farqi aniqlandi Narx qayta hisoblanadi Mijozga SMS bildirishnoma >10% Admin bildirishnomasi Og'irlik farqi juda katta (>50%) Admin tekshiruvi kerak >50% OS? Oversized surcharge Narx qayta hisoblanadi Mijozga bildirishnoma Ha Davom (normal yoki oversized narx yangilangandan keyin) Balansdan yechish Wallet.balance dan avtomatik yechiladi WalletTransaction (OUT) Tranzaksiya yaratildi type=OUT, amount=narx Bal ? OK Manfiy balans Mijozga bildirishnoma: balansingiz manfiy Yetmaydi D. SIFAT TEKSHIRUVI (Quality Control) Sifat tekshiruvi POST /parcels/{id}/qc/ Jismoniy tekshirish QC PASSED O'tdi DAMAGED POST /parcels/{id}/mark-damaged/ Foto biriktirish, sabab Shikast PROHIBITED_ITEM_DETECTED POST /parcels/{id}/mark-prohibited/ Avtomatik qaytarish boshlanadi Taqiqlangan Qaytarish jarayoni POST /parcels/{id}/initiate-return/ Parcel → RETURNED Mijozga bildirishnoma Qaytarildi E. SARALASH (Sort) Posilkani saralash POST /parcels/{id}/sort/ destination_bin tayinlash SORTED Yo'nalish bo'yicha guruhlash Bir yo'nalishga ketadiganlar birga +? Yana posilka saralash Tayyor F. KONSOLIDATSIYA (Consolidate) Posilkalarni shipmentga POST /shipments/{id}/consolidate/ parcel_ids [] scan bilan ShipmentParcel yaratildi Har bir parcel → CONSOLIDATED Shipment → CONSOLIDATING CONSOLIDATED All? Yana parcel qo'shish Hammasi G. TASHUVCHIGA TOPSHIRISH (Handoff) Tashuvchiga topshirish POST /shipments/{id}/handoff/ carrier_id, departure_time Shipment statusi yangilanadi READY_FOR_DEPARTURE → IN_TRANSIT Barcha parcellar → IN_TRANSIT IN_TRANSIT Order → IN_TRANSIT Barcha parcellar shipmentda Mijozga bildirishnoma TrackingEvent yaratildi "Jo'natma yo'lga chiqdi" WebSocket yangilanish Jo'natildi H. YETKAZISH TASDIQLASH (Filial — Destination Branch) 📦 Posilka yakuniy Filialga yetdi ARRIVED_AT_DESTINATION Mijozga bildirishnoma Bal +? DM Ha Yetkazish bloklangan Mijoz to'lamaguncha topshirilmaydi POST /parcels/{id}/confirm-cash/ Yo'q Qabul qilish bloklangan To'landi Filialga kelish — oldi tasdiqi POST /parcels/{id}/pickup-confirm/ Filial (servis-markaz) dan oladi PICKUP Kuryer yetkazdi tasdiqi POST /parcels/{id}/delivery-confirm/ Imzo / foto COURIER Parcel → DELIVERED TrackingEvent yaratildi DELIVERED Barcha parcellar DELIVERED? Order → DELIVERED → 72h → COMPLETED Yakunlandi I. OMMAVIY AMALLAR (Bulk Operations) Ommaviy qabul POST /parcels/bulk-receive/ tracking_codes [] scan Ommaviy saralash POST /parcels/bulk-sort/ [{code, dest_bin}] Ommaviy status yangilash POST /parcels/bulk-status-update/ [{code, status}] Batch natijasi success: N, failed: M Xatolar ro'yxati Bulk operatsiyalar alohida, asosiy oqimdan mustaqil ishlaydi J. INVENTAR Ombor inventari ko'rish Ombor sig'imi tekshirish GET /inventory/ | GET /inventory/capacity/ — istalgan vaqtda Belgilar: Boshlash Muvaffaqiyat Xato/Qaytarish WMS amali Tizim amali Istisno Ommaviy Qaror Oqimlar: Normal Muvaffaqiyat Xato/Istisno