[FIX] 修復所有 E2E 模組測試的標題定位器以及將測試帳號還原為 admin 權限
All checks were successful
ERP-Deploy-Demo / deploy-demo (push) Successful in 55s

This commit is contained in:
2026-03-09 16:53:06 +08:00
parent 2437aa2672
commit 197df3bec4
23 changed files with 593 additions and 89 deletions

View File

@@ -33,20 +33,23 @@ class PurchaseReturnService
$purchaseReturn = PurchaseReturn::create($data);
$itemsToInsert = [];
foreach ($data['items'] as $itemData) {
$amount = $itemData['quantity_returned'] * $itemData['unit_price'];
$totalAmount += $amount;
$prItem = new PurchaseReturnItem([
$itemsToInsert[] = [
'purchase_return_id' => $purchaseReturn->id,
'product_id' => $itemData['product_id'],
'quantity_returned' => $itemData['quantity_returned'],
'unit_price' => $itemData['unit_price'],
'total_amount' => $amount,
'batch_number' => $itemData['batch_number'] ?? null,
]);
$purchaseReturn->items()->save($prItem);
'created_at' => now(),
'updated_at' => now(),
];
}
PurchaseReturnItem::insert($itemsToInsert);
// 更新總計 (這裡假定不含額外稅金邏輯,或是由前端帶入 tax_amount)
$taxAmount = $data['tax_amount'] ?? 0;
@@ -87,19 +90,23 @@ class PurchaseReturnService
$purchaseReturn->items()->delete();
$totalAmount = 0;
$itemsToInsert = [];
foreach ($data['items'] as $itemData) {
$amount = $itemData['quantity_returned'] * $itemData['unit_price'];
$totalAmount += $amount;
$prItem = new PurchaseReturnItem([
$itemsToInsert[] = [
'purchase_return_id' => $purchaseReturn->id,
'product_id' => $itemData['product_id'],
'quantity_returned' => $itemData['quantity_returned'],
'unit_price' => $itemData['unit_price'],
'total_amount' => $amount,
'batch_number' => $itemData['batch_number'] ?? null,
]);
$purchaseReturn->items()->save($prItem);
'created_at' => now(),
'updated_at' => now(),
];
}
PurchaseReturnItem::insert($itemsToInsert);
$taxAmount = $purchaseReturn->tax_amount;
$purchaseReturn->update([
@@ -117,11 +124,14 @@ class PurchaseReturnService
*/
public function submit(PurchaseReturn $purchaseReturn)
{
if ($purchaseReturn->status !== PurchaseReturn::STATUS_DRAFT) {
throw new Exception('只有草稿狀態的退回單可以提交。');
}
return DB::transaction(function () use ($purchaseReturn) {
// 加上 lockForUpdate() 防止併發提交
$purchaseReturn = PurchaseReturn::lockForUpdate()->find($purchaseReturn->id);
if ($purchaseReturn->status !== PurchaseReturn::STATUS_DRAFT) {
throw new Exception('只有草稿狀態的退回單可以提交。');
}
// 1. 儲存狀態,避免觸發自動修改紀錄 (合併行為)
$purchaseReturn->status = PurchaseReturn::STATUS_COMPLETED;
$purchaseReturn->saveQuietly();