📋 電子券設定/維護

📝 文件版本 v1.0
📅 建立日期 2026-01-19
👤 撰寫者 Abby
🔄 最後更新 2026-01-27
📌 附註: 本文件為「電子券管理 / 電子券設定」頁面的按鈕功能詳細規格,所有 UI 互動應遵循此規格實作。如有異動需求,請更新本文件並通知相關人員。

1. 頁面概述

本頁面用於建立券種本身(定義這是什麼券),包含券種名稱、代碼、金額、有效期間、折扣等基本資訊設定,建立完成後可於「出券設定」頁面設定發券規則。

2. 主要功能說明

🔍
查詢按鈕 查詢

📋 功能說明

依據使用者輸入的篩選條件,查詢符合條件的電子券列表資料。可不帶入任何條件,查詢全部資料。

電子券設定查詢畫面

▲ 電子券設定查詢畫面

⚙️ 查詢欄位說明 (tblProduct + 關聯表)

DB欄位 欄位名稱 資料類型 說明 必填
cproductName 電子券名稱 文字 模糊搜尋電子券名稱
例:新年折價券、春季特惠券、滿500折100
cproductNo 電子券代碼 文字 模糊搜尋電子券代碼
格式:[券種代碼][流水號]
例:Y001、I002、C003
ceffDateFrom
ceffDateTo
有效期間 日期區間 篩選有效期間範圍
起始日期不得大於結束日期
格式:YYYY/MM/DD ~ YYYY/MM/DD
ccardType
(tblCard)
券種 下拉式選單 篩選券種類型
預設:全部(-1)
選項來源:TblCard 資料表(關聯 TblVendor、TblParameter)
格式:[廠商名稱]/[卡片名稱]/[卡片類型]
卡種類型:Y=Y卡(代理券)、Z=Z卡(儲值卡)、I=I卡(實體卡)、J=J卡(APP賣禮物卡)、L=L卡(禮物卡)、C=C卡、K=K卡(禮物券)
cproductBu
(tblProductBu)
使用場域 下拉式選單 篩選使用場域(依系統設定的使用場域)
預設:全部(0)
選項來源:TblBusinessUnit 資料表(CName 欄位)
cavailableStatus 上架狀態 下拉式選單 篩選上架狀態
預設:全部(-1)
選項:-1=全部、0=未上架、1=已上架

📤 執行結果

  • 成功:顯示符合條件的電子券列表,包含分頁資訊
  • 無資料:顯示空白列表與「查無資料」提示
  • 失敗:顯示錯誤訊息,並保留原有查詢結果

💡 注意事項

  • 若未填寫任何篩選條件,將查詢所有電子券資料
  • 查詢結果預設每頁顯示 10 筆資料
  • 查詢結果依照建立時間由新到舊排序
新增按鈕 新增

📋 功能說明

開啟新增電子券視窗,填寫電子券相關資訊後建立新的電子券商品。

電子券設定新增畫面

▲ 電子券設定新增畫面(圖1)

新增電子券介面

▲ 新增電子券介面(圖2)

⚙️ 新增欄位說明 (tblProduct + 關聯表)

DB欄位 欄位名稱 資料類型 說明 必填
cproductNo 電子券代碼 文字輸入框 系統自動產生的電子券代碼(新增時唯讀,不需手動輸入)
格式:[券種代碼][流水號]
例:Y001、I002、C003
產生邏輯:由 GetProductNo() API 根據券種取得最後流水號並 +1
cproductName 電子券名稱 文字輸入框 輸入電子券名稱
最長 20 字元
例:全聯折扣券、滿500折100
ccardId
(tblCard)
券種 下拉式選單 選擇券種類型
儲存後不可修改
選項來源:TblCard 資料表 + TblParameter(Ccodetype='ccard_type')
例:依系統設定的卡種,如 Y卡、I卡、C卡、K卡等
cproductType 電子券類型 下拉式選單 選擇電子券的折扣類型(當券種=Y卡時顯示並必填)
選項:
1:折價額
2:折數
3:折至指定面額
4:結算額的N%
儲存後不可修改
條件必填
ceffDateFrom
ceffDateTo
有效期間 日期區間 選擇電子券可使用的期間
起始日期 ≤ 結束日期
最大日期:9999-12-31
可勾選「長期活動」取消結束日限制
※ Y卡不可選擇長期活動
多個欄位
(TblProductByAmt)
金額 複合欄位
(一對多)
依據電子券類型設定不同的金額欄位(來自關聯表 TblProductByAmt)
可設定多筆金額區間記錄,包含:
• ceffDateFrom / ceffDateTo(區間日期)
• cprepaidAmtLowLimit(下限金額 / 折數 / %數)
• cprepaidAmtUpLimit(上限金額 / 折數 / %數)
欄位標籤根據電子券類型動態改變:
- 類型1(折價額)/類型3(折至指定面額):顯示「下限金額/上限金額」
- 類型2(折數):顯示「折數(0.0-10.0)」
- 類型4(結算額N%):顯示「%數(0-100)」
條件必填
cpriceSale
(CardType='J')
商品面額 數字輸入框 輸入禮物卡的面額(僅當 CardType = 'J' 時顯示)
例:500、1000、3000
條件必填
cproductCost
(CardType='J')
商品售價 數字輸入框 輸入禮物卡的售價(僅當 CardType = 'J' 時顯示)
例:500、1000、3000
條件必填
cBoxBookCount 設定箱(盒數) 數字輸入框
(唯讀)
設定一箱內含的盒數
整數,需大於0
例:10(代表1箱=10盒)
cBookPieceCount 設定盒(張數) 數字輸入框
(唯讀)
設定一盒內含的張數
整數,需大於0
例:50(代表1盒=50張)
cisInvoice 是否開發票 單選按鈕
(唯讀)
選擇此電子券是否需開立發票
選項:是 / 否
預設:否
cdescription 商品說明 多行文字輸入框 輸入電子券的商品說明
字數限制:2000字內
例:本券適用全館商品折扣,部分特價品除外
cCardPrecautions 票券注意事項 多行文字輸入框 輸入票券使用注意事項
字數限制:2000字內
例:本券不得兌換現金、不找零、使用期限至2026/12/31
cproductImg 上傳圖片 檔案上傳 上傳電子券的商品圖片
圖片格式:JPG、PNG檔
建議尺寸長寬比:1:1,檔案大小:勿超過 100 kB
多個欄位
(TblProductByItem)
銷售適用期間 複合欄位
(一對多)
設定電子券的銷售期間(來自關聯表 TblProductByItem)
可設定多筆銷售期間記錄,包含:
• citemEffDateFrom(開始時間)
• citemEffDateTo(結束時間)
• citemNo(項目編號)

【新增按鈕功能】
• 驗證:結束時間不可早於開始時間
• 檢查:新增時間區間不可與現有列表時間重疊
• 新增成功後清空輸入欄位
• 已開始的區間不可刪除
cPayCountSetting 可銷售倍數設定 數字輸入框 設定可銷售的數量倍數
整數,需大於0
例:5(代表只能購買5的倍數:5張、10張、15張...)
cNdayNoRefund
cNday
銷售日+N日後不可自行退款 複合欄位 設定退款限制規則
• cNdayNoRefund(是否啟用:true/false)
• cNday(天數:整數)
例:勾選並設定7,表示購買後7天內可退款,超過則不可自行退款
多個欄位
(TblProductBu)
適用場域
(可兌換品牌BU)
多選核取方塊
(一對多)
選擇電子券適用的兌換場域
選項為:□ 全部 □ 全聯福利中心 □ 大全聯
※ 選擇「全部」時會清空其他已勾選項目
多個欄位
(TblProductBu)
出券場域
(可販售的通路)
多選核取方塊
(一對多)
設定可販售此電子券的通路場域
選項為:□ 全聯pos □ 全聯支付APP □ 全聯2B企業網站 □ 宜睿 □ 精誠

📤 執行結果

  • 成功:顯示成功訊息「執行成功」,關閉視窗,重新載入列表
  • 失敗:顯示錯誤訊息,保留表單內容供使用者修改

💡 注意事項

  • 電子券代碼由系統自動產生,格式為 [券種代碼][流水號](如 Y001、I002)
  • 券種選擇後無法修改,請謹慎選擇
  • 電子券類型選擇後無法修改
  • Y卡類型不支援「長期活動」選項
  • 金額設定需依據電子券類型填寫對應欄位
  • 設定箱(盒數)和設定盒(張數)用於票券庫存管理
  • 商品說明和票券注意事項會顯示於前台供消費者查閱
📊
商品排序設定按鈕 排序

📋 功能說明

開啟商品排序設定視窗,透過拖曳排序或輸入排序號來設定商品在前台的顯示順序。

商品排序設定

▲ 商品排序設定

商品排序設定-加入商品按鈕

▲ 商品排序設定-加入商品按鈕

⚙️ 功能說明

  • 拖曳排序:透過滑鼠拖曳調整商品順序
  • 輸入排序號:直接輸入數字設定排序位置
  • 加入商品:點擊「加入商品」按鈕,選擇要加入排序的商品
  • 移除商品:點擊列表中的刪除按鈕移除已加入的商品

📤 執行結果

  • 成功:顯示成功訊息「執行成功」,關閉視窗,重新載入列表
  • 失敗:顯示錯誤訊息,保留視窗內容供使用者修改

💡 注意事項

  • 排序號越小越靠前,從 1 開始
  • 修改排序後需點擊「儲存」按鈕才會生效
  • 未加入排序的商品不會在前台顯示

2.4 訊息提示

✅ 成功訊息

樣式:使用 Nebular Toast 通知(NbToastrService),顯示於畫面右上角,自動消失
狀態:success(綠色)
標題:「成功」
內容:執行成功

❌ 錯誤訊息

樣式:使用 Nebular Toast 通知(NbToastrService),顯示於畫面右上角,自動消失
狀態:danger(紅色)
標題:「錯誤」
內容示例
- 欄位驗證錯誤:顯示具體欄位名稱與錯誤訊息(例:「[電子券名稱] 不可為空」)
- 業務規則錯誤:「此電子券已加入,不可重複選擇」
- 單一商品不能同時擁有包含及排除
- 請選擇項目

⚠️ 確認訊息

樣式:使用瀏覽器原生 confirm 對話框(window.confirm)
內容:是否確定刪除?
觸發時機:點擊刪除按鈕時

2.5 列表功能

  • 分頁:支援分頁顯示,預設每頁 10 筆(pageSize = 10),可調整每頁筆數
  • 排序:不支援前端排序功能,資料依 API 回傳順序顯示
  • 選取:不支援批次選取與操作
  • 匯出:不支援匯出功能
  • 權限控制:編輯、刪除按鈕依 isUpdate、isDelete 權限顯示,檢視按鈕所有使用者皆可使用

2.6 操作按鈕說明

  • 🔍 查詢按鈕:執行查詢功能。呼叫 GetList API,根據篩選條件取得電子券列表
  • ➕ 新增按鈕:開啟新增電子券對話框(NbDialogService)。權限控制:isCreate = true 時顯示,否則隱藏
  • 👁️ 檢視按鈕:以唯讀模式查看電子券詳細資料。呼叫 GetData API,所有使用者均可點擊,表單欄位設為 disabled 狀態
  • ✏️ 編輯按鈕:開啟編輯對話框修改電子券資訊。權限控制:isUpdate = true 時顯示,呼叫 SaveData API 儲存更新。注意:部分欄位如電子券代碼、券種、電子券類型可能有禁用限制(disabled)
  • 🗑️ 刪除按鈕:刪除選定的電子券資料。權限控制:isDelete = true 時顯示,點擊後顯示確認對話框(window.confirm)「是否確定刪除?」,確認後呼叫 RemoveData API

3. 列表功能與操作

3.1 列表欄位

欄位名稱 資料庫欄位 資料類型 格式 說明
上架狀態 cavailableStatus 文字 已上架/未上架 顯示電子券的上架狀態
電子券名稱 cproductName 文字 原始文字 顯示電子券的名稱
有效期間 ceffDateFrom
ceffDateTo
日期時間 yyyy/MM/dd ~ yyyy/MM/dd UTC時間轉換為本地時間顯示
銷售適用期間 cpayDateFrom
cpayDateTo
日期時間 yyyy/MM/dd ~ yyyy/MM/dd UTC時間轉換為本地時間顯示
使用場域 cproductBuNoName 文字 原始文字 顯示適用的使用場域名稱
電子券代碼 cproductNo 文字 原始文字 唯一識別碼
操作 - 按鈕組 檢視/編輯/刪除 依權限顯示對應按鈕

3.2 表單欄位

電子券類型欄位

💡 顯示條件:
  • 僅當券種 (ccardId) = Y卡 時顯示
  • 選項來源:Enum - Product / ProductType
選項值 選項名稱 說明
-1 請選擇 預設值,未選擇狀態
1 折價額 固定金額折扣(如:折抵100元)
2 折數 百分比折扣(如:打9折)
輸入範圍:0.0 ~ 10.0
3 折至指定面額 折扣至特定金額
4 結算額的N% 依結算金額百分比計算
輸入範圍:0 ~ 100
可輸入兩位小數

5.2 金額設定欄位邏輯

⚠️ 重要規則:
  • 當 cproductType = 2(折數)時:cprepaidAmtLowLimit = cprepaidAmtLowLimit
  • 當 cproductType = 4(結算額的N%)時:cprepaidAmtLowLimit = cprepaidAmtLowLimit,允許兩位小數
  • 其他類型則顯示標準的下限金額、上限金額欄位
電子券類型 顯示欄位 欄位標籤 輸入限制
折價額 (1) 下限金額、上限金額 下限金額(為顯示銷售) 整數,下限 ≤ 上限
折數 (2) 折數欄位 折數(0.0-10.0) 小數點後一位,0.0 ~ 10.0
折至指定面額 (3) 下限金額、上限金額 下限金額(為顯示銷售) 整數,下限 ≤ 上限
結算額的N% (4) 百分比欄位 %數(0-100) 允許兩位小數,0 ~ 100

5.3 長期活動選項

功能說明:勾選「長期活動」後,結束日期將設為 9999-12-31

停用條件:當券種為 Y卡 (ccardId = YcardId) 時,此選項停用

4. API 規格

按鈕名稱 啟用條件 停用條件 隱藏條件
查詢 永遠啟用 - -
新增 isCreate = true - isCreate = false
商品排序設定 永遠啟用 - -
檢視(列表) 永遠啟用 - -
編輯(列表) isUpdate = true - isUpdate = false
刪除(列表) isDelete = true
且 haveItemNo = true
isView = true isDelete = false
或 haveItemNo = false
儲存(表單) 表單驗證通過 isView = true
或表單驗證失敗
isView = true
取消(表單) 永遠啟用 - -
長期活動(勾選框) ccardId ≠ YcardId isView = true
或 ccardId = YcardId
-
電子券類型(下拉選單) ccardId = YcardId
且 isNew = true
isView = true
或 isNew = false
ccardId ≠ YcardId

7. 互動流程圖

7.1 新增電子券流程

開始 ↓ 點擊「新增」按鈕 ↓ 開啟新增表單視窗 ↓ 選擇卡種類型(ccardId) ├─ 若為Y卡 → 顯示電子券類型下拉選單(必填) └─ 若為其他卡種 → 隱藏電子券類型,顯示長期活動勾選框 ↓ 填寫基本資訊 ├─ 電子券編號(自動產生或手動輸入) ├─ 電子券名稱(必填) ├─ 有效期間(必填,起日 ≤ 迄日) └─ 若勾選長期活動 → 迄日設定為 2099/12/31 ↓ 設定金額規則 ├─ 選擇電子券類型(1=折價額, 2=折數, 3=折至指定面額, 4=結算額的N%) ├─ 設定預付款金額範圍(下限 ≤ 上限) └─ 設定折扣金額或比例 ↓ 設定適用條件 ├─ 選擇頻率類型(月、週) ├─ 設定可使用次數 ├─ 設定適用會員類型 └─ 設定適用商品範圍(大/中/小分類或特定商品) ↓ 點擊「儲存」 ↓ 前端驗證 ├─ 必填欄位檢查 ├─ 日期合理性檢查 ├─ 金額範圍檢查 └─ 長期活動限制檢查(Y卡不可設定為長期活動) ↓ API 呼叫:POST /api/Product/SaveData ↓ 後端驗證與儲存 ├─ 檢查電子券編號是否重複 ├─ 儲存至 tblProduct ├─ 儲存核銷設定至 tblWriteOffSettings └─ 儲存商品明細至相關資料表 ↓ 回傳結果 ├─ 成功 → 顯示成功訊息,刷新列表,關閉視窗 └─ 失敗 → 顯示錯誤訊息,保留表單資料 ↓ 結束

7.2 編輯電子券流程

開始 ↓ 點擊列表中的「編輯」按鈕 ↓ API 呼叫:GET /api/Product/GetData?productNo={電子券編號} ↓ 載入電子券資料 ├─ 基本資訊 ├─ 金額設定 ├─ 適用條件 └─ 核銷設定 ↓ 開啟編輯表單視窗(預填現有資料) ↓ 欄位狀態判斷 ├─ 電子券類型(cproductType) → 編輯模式下停用 ├─ 卡種類型(ccardId) → 編輯模式下停用 ├─ 若為檢視模式(isView=true) → 所有欄位停用,隱藏儲存按鈕 └─ 若已有商品綁定(haveItemNo=true) → 停用刪除按鈕 ↓ 使用者修改資料 ├─ 可修改電子券名稱 ├─ 可修改有效期間(遵循日期限制) ├─ 可修改金額設定 ├─ 可修改適用條件 └─ 可修改核銷設定 ↓ 點擊「儲存」 ↓ 前端驗證(同新增流程) ↓ API 呼叫:PUT /api/Product/SaveData ↓ 後端更新 ├─ 更新 tblProduct ├─ 更新 tblWriteOffSettings └─ 更新相關明細資料 ↓ 回傳結果 ├─ 成功 → 顯示成功訊息,刷新列表,關閉視窗 └─ 失敗 → 顯示錯誤訊息,保留表單資料 ↓ 結束

7.3 刪除電子券流程

開始 ↓ 點擊列表中的「刪除」按鈕 ↓ 前置檢查 ├─ isDelete = false → 按鈕隱藏,無法執行 ├─ haveItemNo = false → 按鈕隱藏,無法執行 └─ isView = true → 按鈕停用,無法執行 ↓ 顯示確認對話框 「確定要刪除此電子券嗎?」 ├─ 點擊「確定」 → 繼續 └─ 點擊「取消」 → 取消刪除,返回列表 ↓ API 呼叫:DELETE /api/Product/RemoveData?productNo={電子券編號} ↓ 後端檢查 ├─ 檢查是否已有商品綁定 ├─ 檢查是否已發放給會員 └─ 檢查是否已有核銷記錄 ↓ 執行刪除 ├─ 刪除 tblProduct 記錄 ├─ 刪除 tblWriteOffSettings 記錄 └─ 刪除相關明細記錄 ↓ 回傳結果 ├─ 成功 → 顯示成功訊息,刷新列表 ├─ 失敗(已有綁定) → 顯示錯誤訊息「此電子券已有商品綁定,無法刪除」 └─ 失敗(其他錯誤) → 顯示錯誤訊息 ↓ 結束

8. 訊息提示規範

8.1 成功訊息

觸發條件 訊息內容 訊息類型
新增成功 電子券新增成功! Success
編輯成功 電子券更新成功! Success
刪除成功 電子券刪除成功! Success
商品排序設定成功 商品排序設定成功! Success

8.2 錯誤訊息

觸發條件 訊息內容 處理方式
必填欄位未填寫 [欄位名稱] 為必填欄位 標示必填欄位,阻止提交
電子券編號重複 此電子券編號已存在,請使用其他編號 要求使用者修改編號
日期範圍錯誤 有效期間起日不可大於迄日 調整日期範圍
金額範圍錯誤 預付款金額下限不可大於上限 調整金額範圍
Y卡設定長期活動 Y卡類型不可設定為長期活動 取消長期活動勾選
刪除失敗(已有綁定) 此電子券已有商品綁定,無法刪除 取消刪除操作
權限不足 您沒有執行此操作的權限 按鈕隱藏或停用
API 呼叫失敗 操作失敗,請稍後再試 保留表單資料,可重試
折數輸入錯誤 折數必須介於 0.1 ~ 1.0 之間 調整折數值
資料載入失敗 無法載入電子券資料 刷新頁面或稍後再試

8.3 警告訊息

觸發條件 訊息內容 使用者操作
刪除確認 確定要刪除此電子券嗎?刪除後將無法復原。 確定 / 取消
取消編輯確認 尚未儲存的變更將會遺失,確定要取消嗎? 確定 / 取消
長期活動設定 設定為長期活動後,有效迄日將自動設定為 2099/12/31 確認

4. API 規格

4.1 查詢電子券列表

端點 (Endpoint): GET /api/Product/GetList 請求參數 (Request): { "cproductNo": "電子券編號(模糊查詢)", "cproductName": "電子券名稱(模糊查詢)", "cproductType": "電子券類型(1/2/3/4)", "ccardId": "卡種代碼", "ceffDateFrom": "有效起日(yyyy-MM-dd)", "ceffDateTo": "有效迄日(yyyy-MM-dd)", "page": "頁碼", "pageSize": "每頁筆數" } 回應格式 (Response): { "StatusCode": 200, "Message": "查詢成功", "Data": { "totalCount": 100, "items": [ { "cproductNo": "E001", "cproductName": "新年折價券", "cproductType": 1, "ccardName": "福利卡", "ceffDateFrom": "2024-01-01", "ceffDateTo": "2024-12-31", "haveItemNo": true } ] } }

9.2 取得單筆電子券資料

端點 (Endpoint): GET /api/Product/GetData 請求參數 (Request Query String): ?productNo=E001 回應格式 (Response): { "StatusCode": 200, "Message": "查詢成功", "Data": { "cproductNo": "E001", "cproductName": "新年折價券", "cproductType": 1, "ccardId": "YcardId", "ceffDateFrom": "2024-01-01T00:00:00Z", "ceffDateTo": "2024-12-31T23:59:59Z", "cprepaidAmtLowLimit": 100, "cprepaidAmtUpLimit": 5000, "cdiscountAmt": 50, "cfrequencyType": 1, "cuseTimes": 10, "cmemberType": "A", "writeOffSettings": { "majorCategoryIds": [1, 2], "mediumCategoryIds": [10, 20], "minorCategoryIds": [100, 200], "specificItemNos": ["ITEM001", "ITEM002"] } } }

9.3 新增/更新電子券

端點 (Endpoint): POST /api/Product/SaveData 請求參數 (Request Body): { "cproductNo": "E001", "cproductName": "新年折價券", "cproductType": 1, "ccardId": "YcardId", "ceffDateFrom": "2024-01-01T00:00:00Z", "ceffDateTo": "2024-12-31T23:59:59Z", "cprepaidAmtLowLimit": 100, "cprepaidAmtUpLimit": 5000, "cdiscountAmt": 50, "cfrequencyType": 1, "cuseTimes": 10, "cmemberType": "A", "isLongTerm": false, "writeOffSettings": { "majorCategoryIds": [1, 2], "mediumCategoryIds": [10, 20], "minorCategoryIds": [100, 200], "specificItemNos": ["ITEM001", "ITEM002"] } } 回應格式 (Response): { "StatusCode": 200, "Message": "儲存成功", "Data": { "cproductNo": "E001" } }

9.4 刪除電子券

端點 (Endpoint): DELETE /api/Product/RemoveData 請求參數 (Request Query String): ?productNo=E001 回應格式 (Response): { "StatusCode": 200, "Message": "刪除成功", "Data": null }

9.5 更新商品排序

端點 (Endpoint): POST /api/Product/UpdateSorting 請求參數 (Request Body): { "sortingList": [ { "cproductNo": "E001", "sortOrder": 1 }, { "cproductNo": "E002", "sortOrder": 2 } ] } 回應格式 (Response): { "StatusCode": 200, "Message": "排序更新成功", "Data": null }

10. 測試案例

10.1 查詢功能測試案例

測試案例編號 測試項目 測試步驟 預期結果 測試狀態
TC-Q-001 查詢全部電子券 1. 進入電子券設定頁面
2. 不填寫任何查詢條件
3. 點擊「查詢」按鈕
顯示所有電子券列表,包含所有卡種和類型 待測試
TC-Q-002 依電子券編號查詢 1. 輸入電子券編號「E001」
2. 點擊「查詢」按鈕
顯示編號為 E001 的電子券資料 待測試
TC-Q-003 依電子券名稱模糊查詢 1. 輸入電子券名稱關鍵字「新年」
2. 點擊「查詢」按鈕
顯示所有名稱包含「新年」的電子券 待測試
TC-Q-004 依卡種類型查詢 1. 選擇卡種類型「Y卡」
2. 點擊「查詢」按鈕
僅顯示 Y 卡的電子券 待測試
TC-Q-005 依有效期間查詢 1. 設定有效起日「2024-01-01」
2. 設定有效迄日「2024-12-31」
3. 點擊「查詢」按鈕
顯示有效期間在此範圍內的電子券 待測試
TC-Q-006 複合條件查詢 1. 選擇卡種「福利卡」
2. 選擇電子券類型「折價額」
3. 點擊「查詢」按鈕
顯示同時符合卡種和類型的電子券 待測試

10.2 新增功能測試案例

測試案例編號 測試項目 測試步驟 預期結果 測試狀態
TC-A-001 成功新增折價額電子券 1. 點擊「新增」按鈕
2. 填寫電子券編號「E001」
3. 填寫電子券名稱「新年折價券」
4. 選擇卡種「福利卡」
5. 選擇電子券類型「折價額」
6. 設定有效期間
7. 設定折扣金額 50 元
8. 點擊「儲存」
顯示「電子券新增成功!」,列表刷新並顯示新增的電子券 待測試
TC-A-002 新增Y卡電子券(顯示類型下拉選單) 1. 點擊「新增」按鈕
2. 選擇卡種「Y卡」
3. 確認電子券類型下拉選單顯示且為必填
電子券類型下拉選單正常顯示,長期活動勾選框隱藏 待測試
TC-A-003 新增非Y卡電子券(顯示長期活動) 1. 點擊「新增」按鈕
2. 選擇卡種「福利卡」
3. 確認長期活動勾選框顯示
長期活動勾選框正常顯示,電子券類型下拉選單隱藏 待測試
TC-A-004 勾選長期活動自動設定迄日 1. 新增福利卡電子券
2. 勾選「長期活動」
3. 檢查有效迄日
有效迄日自動設定為 2099/12/31,且欄位停用 待測試
TC-A-005 必填欄位驗證 1. 點擊「新增」按鈕
2. 不填寫任何欄位
3. 點擊「儲存」
顯示必填欄位錯誤訊息,阻止提交 待測試
TC-A-006 日期範圍驗證 1. 新增電子券
2. 設定有效起日「2024-12-31」
3. 設定有效迄日「2024-01-01」
4. 點擊「儲存」
顯示「有效期間起日不可大於迄日」錯誤訊息 待測試
TC-A-007 金額範圍驗證 1. 新增電子券
2. 設定預付款金額下限 5000
3. 設定預付款金額上限 100
4. 點擊「儲存」
顯示「預付款金額下限不可大於上限」錯誤訊息 待測試
TC-A-008 Y卡不可設定長期活動驗證 1. 嘗試透過API設定Y卡為長期活動 顯示「Y卡類型不可設定為長期活動」錯誤訊息 待測試

10.3 編輯功能測試案例

測試案例編號 測試項目 測試步驟 預期結果 測試狀態
TC-E-001 成功編輯電子券 1. 點擊列表中的「編輯」按鈕
2. 修改電子券名稱
3. 修改有效期間
4. 點擊「儲存」
顯示「電子券更新成功!」,列表刷新並顯示更新後的資料 待測試
TC-E-002 編輯模式下電子券類型停用 1. 點擊「編輯」按鈕
2. 檢查電子券類型欄位狀態
電子券類型(cproductType)欄位停用,無法修改 待測試
TC-E-003 編輯模式下卡種類型停用 1. 點擊「編輯」按鈕
2. 檢查卡種類型欄位狀態
卡種類型(ccardId)欄位停用,無法修改 待測試
TC-E-004 檢視模式下所有欄位停用 1. 以檢視權限登入(isView=true)
2. 點擊「檢視」按鈕
3. 檢查所有欄位狀態
所有欄位停用,儲存按鈕隱藏 待測試
TC-E-005 取消編輯確認 1. 編輯電子券並修改資料
2. 點擊「取消」按鈕
顯示確認對話框「尚未儲存的變更將會遺失,確定要取消嗎?」 待測試

10.4 刪除功能測試案例

測試案例編號 測試項目 測試步驟 預期結果 測試狀態
TC-D-001 成功刪除電子券 1. 點擊列表中的「刪除」按鈕
2. 在確認對話框中點擊「確定」
顯示「電子券刪除成功!」,列表刷新且該電子券不再顯示 待測試
TC-D-002 刪除已綁定商品的電子券 1. 嘗試刪除已有商品綁定的電子券(haveItemNo=true) 刪除按鈕隱藏或停用,無法執行刪除 待測試
TC-D-003 刪除確認對話框 1. 點擊「刪除」按鈕
2. 檢查確認對話框內容
顯示「確定要刪除此電子券嗎?刪除後將無法復原。」 待測試
TC-D-004 取消刪除 1. 點擊「刪除」按鈕
2. 在確認對話框中點擊「取消」
關閉對話框,不執行刪除,電子券仍存在 待測試
TC-D-005 無刪除權限 1. 以無刪除權限登入(isDelete=false)
2. 檢查刪除按鈕狀態
刪除按鈕隱藏 待測試

10.5 權限控制測試案例

測試案例編號 測試項目 測試步驟 預期結果 測試狀態
TC-P-001 無新增權限 1. 以無新增權限登入(isCreate=false)
2. 檢查新增按鈕狀態
新增按鈕隱藏 待測試
TC-P-002 無編輯權限 1. 以無編輯權限登入(isUpdate=false)
2. 檢查編輯按鈕狀態
編輯按鈕隱藏 待測試
TC-P-003 僅檢視權限 1. 以僅檢視權限登入(isView=true, 其他=false)
2. 檢查所有操作按鈕狀態
僅顯示「檢視」按鈕,「新增」「編輯」「刪除」按鈕隱藏 待測試

11. 附註

11.1 資料庫相關

  • 主要資料表:tblProduct(電子券主檔)
  • 核銷設定表:tblWriteOffSettings(核銷設定主檔)
  • 商品明細表:tblWriteOffSettingsDetail(核銷設定明細)
  • 商品資料表:tblCommodity(商品資料)
  • 重要欄位:
    • cproductNo(電子券編號,主鍵)
    • cproductName(電子券名稱)
    • cproductType(電子券類型:1=折價額, 2=折數, 3=折至指定面額, 4=結算額的N%)
    • ccardId(卡種代碼,關聯 TblCard 資料表的主鍵)
    • ceffDateFrom(有效起日,UTC 時間)
    • ceffDateTo(有效迄日,UTC 時間)
    • cprepaidAmtLowLimit(預付款金額下限)
    • cprepaidAmtUpLimit(預付款金額上限)
    • cdiscountAmt(折扣金額)
    • cfrequencyType(頻率類型:1=月, 2=週)
    • cuseTimes(可使用次數)
    • cmemberType(適用會員類型)
    • haveItemNo(是否已有商品綁定,影響刪除權限)

11.2 權限說明

  • isCreate:新增權限,控制「新增」按鈕顯示
  • isUpdate:編輯權限,控制「編輯」按鈕顯示
  • isDelete:刪除權限,控制「刪除」按鈕顯示(需同時滿足 haveItemNo=false)
  • isView:檢視權限,當為 true 時所有欄位停用,僅可查看資料

11.3 其他注意事項

  • UTC 時間轉換:前端顯示時需將 UTC 時間轉換為本地時間(+8小時),儲存時需轉回 UTC
  • 長期活動限制:Y卡類型不可設定為長期活動,長期活動的有效迄日固定為 2099/12/31
  • 編輯限制:電子券類型(cproductType)和卡種類型(ccardId)在編輯模式下不可修改
  • 刪除限制:已有商品綁定(haveItemNo=true)的電子券無法刪除
  • 電子券類型顯示邏輯:
    • Y卡:顯示電子券類型下拉選單(必填),隱藏長期活動勾選框
    • 其他卡種:隱藏電子券類型下拉選單,顯示長期活動勾選框
  • 商品排序:商品排序功能獨立於 CRUD 操作,透過專用的排序設定介面進行
  • 金額驗證:預付款金額下限必須 ≤ 上限,折數範圍為 0.1 ~ 1.0
  • 日期驗證:有效起日必須 ≤ 迄日

11.4 版本歷程

版本 日期 修改者 修改內容
v1.0 2026-01-19 Abby 初版建立