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,54 +179,12 @@ class AdjustDocController extends Controller
]); ]);
} }
public function update(Request $request, InventoryAdjustDoc $doc) public function destroy(InventoryAdjustDoc $doc)
{ {
if ($doc->status !== 'draft') { if ($doc->status !== 'draft') {
return redirect()->back()->with('error', '只能修改草稿狀態的單據'); 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', '儲存成功');
}
// 記錄活動 // 記錄活動
activity() activity()
->performedOn($doc) ->performedOn($doc)

View File

@@ -183,23 +183,12 @@ class CountDocController extends Controller
return redirect()->back()->with('success', '暫存成功'); return redirect()->back()->with('success', '暫存成功');
} }
public function reopen(InventoryCountDoc $doc) public function destroy(InventoryCountDoc $doc)
{ {
if ($doc->status !== 'completed') { if ($doc->status === 'completed') {
return redirect()->back()->with('error', '只有已核准的盤點單可以取消核准'); 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', '已取消核准,單據回復為盤點中狀態');
}
// 記錄活動 // 記錄活動
activity() activity()
->performedOn($doc) ->performedOn($doc)

View File

@@ -226,6 +226,20 @@ class TransferOrderController extends Controller
$order->update($request->only(['remarks'])); $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', '儲存成功'); return redirect()->back()->with('success', '儲存成功');
} }
@@ -234,6 +248,21 @@ class TransferOrderController extends Controller
if ($order->status !== 'draft') { if ($order->status !== 'draft') {
return redirect()->back()->with('error', '只能刪除草稿狀態的單據'); 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->items()->delete();
$order->delete(); $order->delete();