From f06353d5427c7b06445caf19184e338851b58af6 Mon Sep 17 00:00:00 2001 From: sky121113 Date: Thu, 7 May 2026 14:40:48 +0800 Subject: [PATCH] feat: change default machine inventory sorting to stock fill rate (ascending) --- app/Http/Controllers/Admin/WarehouseController.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Admin/WarehouseController.php b/app/Http/Controllers/Admin/WarehouseController.php index b2117a2..7783b5e 100644 --- a/app/Http/Controllers/Admin/WarehouseController.php +++ b/app/Http/Controllers/Admin/WarehouseController.php @@ -573,7 +573,8 @@ class WarehouseController extends Controller { $query = Machine::with(['slots' => fn($q) => $q->with('product:id,name,image_url')->orderByRaw('CAST(slot_no AS UNSIGNED) ASC')]) ->withCount('slots as total_slots') - ->withSum('slots as total_stock', 'stock'); + ->withSum('slots as total_stock', 'stock') + ->withSum('slots as total_capacity', 'max_stock'); if ($search = $request->input('search')) { $query->where(function ($q) use ($search) { @@ -582,7 +583,9 @@ class WarehouseController extends Controller }); } - $machines = $query->orderBy('name') + // 預設按庫存率由低到高排序 (補貨優先),在庫存率相同時再按名稱排序 + $machines = $query->orderByRaw('CASE WHEN total_capacity > 0 THEN (total_stock / total_capacity) ELSE 1 END ASC') + ->orderBy('name') ->paginate($request->input('per_page', 10)) ->withQueryString();