diff --git a/app/Http/Controllers/Api/V1/App/MachineController.php b/app/Http/Controllers/Api/V1/App/MachineController.php index 0c08126..6a8053b 100644 --- a/app/Http/Controllers/Api/V1/App/MachineController.php +++ b/app/Http/Controllers/Api/V1/App/MachineController.php @@ -761,16 +761,14 @@ class MachineController extends Controller ], 409); } - // 標記碼已領(usage_count++;達上限轉 used)——僅領藥單,避免動到既有單貨道核銷流程 - $pickupCode->usage_count = (int) $pickupCode->usage_count + 1; - $pickupCode->used_at = $pickupCode->used_at ?? now(); - if ($pickupCode->usage_count >= (int) $pickupCode->usage_limit) { - $pickupCode->status = 'used'; - } - $pickupCode->save(); + // 不在「驗證/掃碼」當下核銷領藥碼。核銷統一改由機台實際出貨後的 + // MQTT finalize(TransactionService::finalizePharmacyDispense)標記為 used, + // 這樣顧客掃碼後若未按「確定取貨」(逾時/取消、未出貨),領藥碼仍維持 active 可再次掃碼領取。 + // (原本在此處 usage_count++/轉 used 會在尚未取貨時就把碼鎖死,導致再掃顯示「已領」。) $data['order_type'] = \App\Models\Transaction\Order::TYPE_PHARMACY_PICKUP; $data['order_no'] = $order->order_no; + $data['pricing_slip_no'] = $order->pricing_slip_no ?? ''; // 批價單號(藥師批價依據);機台「確認領藥」畫面備註欄顯示 $data['items'] = $items; // [{slot_no, product_id, product_name, qty}, ...] $data['status'] = $pickupCode->status; }