fix(inventory): 修復 Controller 語法錯誤並補齊操作記錄

This commit is contained in:
2026-02-04 13:25:49 +08:00
parent a8b88b3375
commit f4f597e96d
3 changed files with 38 additions and 62 deletions

View File

@@ -179,52 +179,10 @@ class AdjustDocController extends Controller
]);
}
public function update(Request $request, InventoryAdjustDoc $doc)
public function destroy(InventoryAdjustDoc $doc)
{
if ($doc->status !== 'draft') {
return redirect()->back()->with('error', '只能修改草稿狀態的單據');
}
// 提交 (items 更新 或 過帳)
if ($request->input('action') === 'post') {
$this->adjustService->post($doc, auth()->id());
// 記錄活動
activity()
->performedOn($doc)
->causedBy(auth()->user())
->event('posted')
->withProperties([
'attributes' => ['status' => 'posted'],
'old' => ['status' => 'draft'],
'snapshot' => [
'doc_no' => $doc->doc_no,
'warehouse_name' => $doc->warehouse?->name,
]
])
->log('posted');
return redirect()->route('inventory.adjust.index')
->with('success', '盤調單已過帳生效');
}
// 僅儲存資料
$validated = $request->validate([
'items' => 'array',
'items.*.product_id' => 'required|exists:products,id',
'items.*.adjust_qty' => 'required|numeric', // 可以是負數
'items.*.batch_number' => 'nullable|string',
'items.*.notes' => 'nullable|string',
]);
if ($request->has('items')) {
$this->adjustService->updateItems($doc, $validated['items']);
}
// 更新表頭
$doc->update($request->only(['reason', 'remarks']));
return redirect()->back()->with('success', '儲存成功');
return redirect()->back()->with('error', '只能刪除草稿狀態的單據');
}
// 記錄活動

View File

@@ -183,21 +183,10 @@ class CountDocController extends Controller
return redirect()->back()->with('success', '暫存成功');
}
public function reopen(InventoryCountDoc $doc)
public function destroy(InventoryCountDoc $doc)
{
if ($doc->status !== 'completed') {
return redirect()->back()->with('error', '只有已核准的盤點單可以取消核准');
}
// TODO: Move logic to Service if complex
$doc->update([
'status' => 'counting', // Revert to counting (draft)
'completed_at' => null,
'completed_by' => null,
]);
return redirect()->route('inventory.count.show', [$doc->id])
->with('success', '已取消核准,單據回復為盤點中狀態');
if ($doc->status === 'completed') {
return redirect()->back()->with('error', '已完成的盤點單無法刪除');
}
// 記錄活動

View File

@@ -226,6 +226,20 @@ class TransferOrderController extends Controller
$order->update($request->only(['remarks']));
// 記錄暫存活動
activity()
->performedOn($order)
->causedBy(auth()->user())
->event('updated')
->withProperties([
'snapshot' => [
'doc_no' => $order->doc_no,
'from_warehouse_name' => $order->fromWarehouse?->name,
'to_warehouse_name' => $order->toWarehouse?->name,
]
])
->log('updated_items');
return redirect()->back()->with('success', '儲存成功');
}
@@ -234,6 +248,21 @@ class TransferOrderController extends Controller
if ($order->status !== 'draft') {
return redirect()->back()->with('error', '只能刪除草稿狀態的單據');
}
// 記錄活動
activity()
->performedOn($order)
->causedBy(auth()->user())
->event('deleted')
->withProperties([
'snapshot' => [
'doc_no' => $order->doc_no,
'from_warehouse_name' => $order->fromWarehouse?->name,
'to_warehouse_name' => $order->toWarehouse?->name,
]
])
->log('deleted');
$order->items()->delete();
$order->delete();