Ragdoll POS 結帳流程完整知識庫。涵蓋從銷售員登入、商品掃描、加購/贈品/點加金選擇、 10 個折扣計算器管道、付款到發票列印的每個步驟的詳細程式碼邏輯、Store 架構與資料結構定義。 以下情況必須參考此文件再動手: - 撰寫結帳流程相關的 E2E 測試(Playwright)或整合測試 - 新增或修改任何促銷計算器(discount calculator)邏輯 - 處理 /checkout 或 /summary 頁面的功能開發或 bug 修復 - 修改加購(addon)、贈品(freebie)、點加金(point promotion)相關邏輯 - 處理發票開立、付款流程、錢櫃等硬體整合 - 理解 OfflineSaleLocalRecord 的組裝過程 - 修改折扣計算的執行順序或計算邏輯
結帳流程入口:next/app/checkout/page.tsx(左右分欄佈局)
付款頁面入口:next/app/summary/page.tsx
[Step 1] 銷售員輸入員工編號登入
↓
[Step 2] 顧客電話號碼登入(會員登入,可選)
↓
[Step 3] 掃描/輸入商品條碼(可掃 100+ 件商品,支援累加)
↓
[Step 4] 點擊小計 → 開啟加購/贈品/點加金對話框
↓
[Step 5] 選擇加購/贈品/點加金 → 點擊「確認選擇」
觸發 10 個折扣計算器管道
↓
[Step 6] 促銷結算對話框(優惠券、點數折抵、折扣碼)
每次變更重新觸發計算器管道
↓
[Step 7] 確認後跳轉 /summary → 選擇付款方式(現金/信用卡)
↓
[Step 8] 點擊完成結帳
建立 offline_sale → 開立發票 → 開錢櫃 → 清除購物車
參見 references/01-login.md(Step 1-2):
saler-login.tsx 員工驗證邏輯與 Store actions參見 references/02-scan-items.md(Step 3):
useBindFocus 焦點鎖定機制(POS 連續掃碼核心)scanItem 完整流程、會員價即時同步機制adjustItemPrice)稽核規則、normalItems / adjustPriceItems 合併策略參見 references/03-addon-gift-dialog.md(Step 4-5):
handleSubtotalClick 進入驗證條件handleAddonGiftConfirm 完整執行序列(分組加入 Store → 重置 → 觸發計算 → 開啟對話框)參見 references/04-promotion-summary-dialog.md(Step 6):
參見 references/05-payment-and-checkout.md(Step 7-8):
/summary 頁面進入保護與佈局CheckoutButton.handleCheckout 完整 7 步執行序列CheckoutDiscountIterate 迭代資料結構saleTotal / total / discount)[會] / [定] / [指] / [加] / [贈])ragdollAPI IPC 呼叫清單與說明use-credit-card.ts)