[FIX] 領藥單:核銷改由出貨finalize、B660回傳批價單號

- handlePickupVerify:移除掃碼驗證當下核銷領藥碼(usage_count++/used),
  改由實際出貨 MQTT finalize 核銷;未取貨(逾時/取消)時領藥碼維持 active 可再掃,
  修正「掃了未確定取貨、再掃顯示已領」問題。
- B660 回應新增 pricing_slip_no(批價單號),供機台確認領藥畫面備註欄顯示。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
twsystem1004 2026-06-24 03:01:58 +00:00
parent 1a1518c611
commit 9a6036d184

View File

@ -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 finalizeTransactionService::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;
}