優化門市叫貨流程:實作庫存預扣機制、鎖定自動產生的調撥單明細、修復自動販賣機貨道數量連動 Bug 及狀態同步問題
All checks were successful
ERP-Deploy-Demo / deploy-demo (push) Successful in 56s

This commit is contained in:
2026-02-25 17:32:28 +08:00
parent e3df090afd
commit 63e4f88a14
8 changed files with 469 additions and 161 deletions

View File

@@ -215,6 +215,9 @@ class TransferOrderController extends Controller
// 2. 先更新資料 (如果請求中包含 items則先執行儲存)
$itemsChanged = false;
if ($request->has('items')) {
if ($order->storeRequisition()->exists()) {
return redirect()->back()->with('error', '由叫貨單自動產生的調撥單無法修改明細');
}
$validated = $request->validate([
'items' => 'array',
'items.*.product_id' => 'required|exists:products,id',
@@ -263,6 +266,17 @@ class TransferOrderController extends Controller
return redirect()->back()->with('error', '只能刪除草稿狀態的單據');
}
// 刪除前必須先釋放預留庫存
foreach ($order->items as $item) {
$inv = Inventory::where('warehouse_id', $order->from_warehouse_id)
->where('product_id', $item->product_id)
->where('batch_number', $item->batch_number)
->first();
if ($inv) {
$inv->releaseReservedQuantity($item->quantity);
}
}
$order->items()->delete();
$order->delete();