📋 出券設定

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

1. 頁面概述

本頁面用於管理電子券活動的出券(發券)設定,當會員符合設定的條件(如消費滿額、持有特定卡種等)時,系統會自動發放電子券至會員帳戶中。頁面提供查詢現有出券設定及新增出券活動的功能,管理者可設定活動期間、適用卡種、滿額門檻、發券數量等條件。

2. 主要功能說明

🔍
查詢按鈕 查詢

📋 功能說明

執行篩選條件查詢,依據使用者輸入的條件篩選出券設定列表。可不帶入任何條件,查詢全部資料。

出券設定查詢畫面

▲ 出券設定查詢畫面

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

DB欄位 欄位名稱 資料類型 說明 必填
cActionCode 活動編號 文字 模糊搜尋活動編號
格式: T2XXXX
例:T25028、T26004
cActionName 活動名稱 文字 模糊搜尋活動名稱
最多顯示30字,超過顯示...
例:滿2000打9折、春季特惠活動
cEventCode 電子券代碼 文字 輸入電子券代碼進行查詢(票證活動代號)
格式: Y0XX
例:Y031、Y148、Y149
cSponsorCode 付款廠商代號 文字
varchar(10)
輸入付款廠商代號進行篩選
例:1234、6674、6681
cActionFrom
cActionTo
有效期間 日期區間 選擇活動期間範圍進行篩選
起始日期不得大於結束日期
格式:YYYY/MM/DD ~ YYYY/MM/DD
例:2026/01/01 ~ 2026/12/31
-
(查詢條件)
行銷折價券抵用設定 下拉選單 篩選電子券的商品折抵規則設定狀態
選項:全部、已設定、未設定
列表顯示:1/1 已設定0/1 未設定
說明:此為前端查詢條件,依據 tblWriteOffSettings 是否有對應資料判定

📤 執行結果

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

💡 注意事項

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

📋 功能說明

開啟新增出券設定對話框,建立新的電子券活動設定。

出券設定新增畫面

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

新增出券設定介面(上半部)

▲ 出券設定新增畫面 (圖2)

新增出券設定介面(下半部)

▲ 出券設定新增畫面 (圖3)

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

DB欄位 欄位名稱 資料類型 說明 必填
cDiscountType 出券形式 下拉選單 選擇出券產生方式
1:整批產卡:由系統批次產生券號,供後續使用
2:活動產卡:由POS系統依活動條件自動產生,符合條件時即發券
ccardId
(tblCard)
電子券類型 下拉選單 選擇電子券卡片類型
下拉選單顯示已設定的卡種
例:Y卡、I卡、C卡
cEventCode 電子券代碼 下拉選單 選擇要發放的電子券商品(票證活動代號)
下拉選單顯示系統已建立的電子券清單
例:滿2000打9折、全館85折、春季特惠
cProductQty
(tblDiscountByProduct)
張數 數字 輸入發放張數(符合條件時單次發放數量)
預設值:1
例:1、2、5
cMemberType 會員別限制 下拉選單 選擇適用的會員類型
-1:請選擇:預設值,未設定時
0:全部(不限):所有會員皆可領取,無限制
1:福利卡(含PXPAY會員/VIP):僅限福利卡會員可領取
2:PXPAY會員:僅限PXPAY會員可領取
3:VIP會員:僅限VIP會員可領取
cCarrierType 載體類型 下拉選單 選擇電子券載體形式
1:紙本:列印成紙本券,可於門市使用
2:數位:儲存於APP或系統中,以電子形式使用
cType1 類型1 下拉選單 選擇出券計算方式(與「類型2」、「活動條件」搭配使用)
1:單筆:以單次交易計算,每次交易獨立判斷
2:累積:以累計金額/數量計算,可跨交易累積
範例:
單筆 + 金額 + 2000 = 單次消費滿2000元發券
單筆 + 數量 + 3 = 單次購買滿3件發券
單筆 + N% + 10 = 單次消費金額10%回饋券
累計 + 金額 + 5000 = 累計消費達5000元發券
累計 + 數量 + 10 = 累計購買滿10件發券
累計 + N% + 5 = 累計消費金額5%回饋券
cType2 類型2 下拉選單 選擇出券條件單位(與「類型1」、「活動條件」搭配使用)
1:數量:依購買數量判斷,達到指定件數即發券
2:金額:依消費金額判斷,達到指定金額即發券
範例:
單筆 + 金額 + 2000 = 單次消費滿2000元發券
單筆 + 數量 + 3 = 單次購買滿3件發券
單筆 + N% + 10 = 單次消費金額10%回饋券
累計 + 金額 + 5000 = 累計消費達5000元發券
累計 + 數量 + 10 = 累計購買滿10件發券
累計 + N% + 5 = 累計消費金額5%回饋券
cCondition 活動條件 數字 輸入發券觸發門檻值(與「類型1」、「類型2」搭配使用)
0表示無門檻,任何消費都發券
例:0、200、1111、2000
範例:
單筆 + 金額 + 0 = 每筆交易都發券(無門檻)
單筆 + 金額 + 2000 = 單筆消費滿2000元即發券
單筆 + 數量 + 3 = 單筆購買滿3件即發券
單筆 + N% + 10 = 單筆消費金額10%回饋
累計 + 金額 + 5000 = 累計消費達5000元即發券
累計 + 數量 + 10 = 累計購買滿10件即發券
累計 + N% + 5 = 累計消費金額5%回饋
cSponsorName
(tblSponsor)
付款廠商名稱 文字 輸入付款廠商名稱(選填,方便識別)
例:全聯實業、統一企業、可口可樂
cSponsorCode 付款廠商代號 文字
varchar(10)
輸入付款廠商代號(用於成本歸屬與財務結算)
例:6674、6681、1234
cActionSendType 活動總發行上限類型 下拉選單 選擇發行上限方式(與「整檔活動贈送上限」搭配,達上限後停止發券)
-1:請選擇:預設值,未設定時
0:無:不限制發行數量,可無限發券
1:金額:以總金額上限控制,達到總金額後停止發券
2:次數:以總發行次數控制,達到總次數後停止發券
範例:
無 + 0 = 無限發券
金額 + 100000 = 總發行額度10萬元
次數 + 500 = 總共只發500次
cAllActivityGiftlimit 整檔活動贈送上限 數字 輸入整個活動的總發行額度或張數(與「上限類型」搭配,單位依類型而定)
預設值:0(無上限)
範例:
無 + 0 = 無上限
金額 + 100000 = 上限金額10萬元
次數 + 500 = 上限500次
cOnePayActivityGiftlimit 單次交易贈送上限 數字 輸入單筆交易可獲得的電子券數量上限(防止單次取得過多券)
例:1(單次交易最多1張)、5(單次交易最多5張)
cSettlementType 交結結算 下拉選單 選擇電子券在交班結算時的處理方式(僅數位載體有此設定)
-1:請選擇:預設值,未設定時
1:結算歸零:交班結算時,未使用的電子券將歸零清除
2:餘額累計:交班結算時,未使用的電子券保留至下次交班
說明:此欄位僅在「會員別限制」不為「全部(不限)」且「載體類型」為「數位」時顯示。當會員為「全部(不限)」時自動停用
限制:當電子券類型(cProductType)為「結算額的N%」(值=4)時,此欄位不顯示
cActionCode 活動編號 文字 系統自動產生的活動代碼(新增時唯讀,不需手動輸入)
格式:T2+4位數字(T2XXXX)
例:T26004、T25026
cActionName 活動名稱 文字 輸入活動名稱(顯示於系統列表與報表,最多20字)
例:春季特惠活動、滿2000送100、會員日限定優惠
cActionFrom
cActionTo
活動期間 日期區間 選擇活動的有效起訖日期(起始日期不得大於結束日期)
格式:YYYY/MM/DD
例:2026/01/21 ~ 2026/02/28、 2026/01/01 ~ 2026/12/31
cActionTimefrom
cActionTimeto
活動時段 時間區間 每日可使用此活動的時間範圍
格式:HH:mm(24小時制)
說明:在活動期間內,每天只有在此時段內才可發券
例:00:00 ~ 23:59(全天)、09:00 ~ 17:00(營業時間)、18:00 ~ 22:00(晚間限定)
cFrequencyType
cFrequencyDay
限活動日 下拉選單+文字 限定特定日期才可發券(控制活動日設定)
cFrequencyType類型:
0:無設定(天天活動日)- 活動期間內每日皆可發券
1:每月N日 - 每月指定日期才發券(例如:1,15 表示每月1日和15日)
2:每周N - 每週指定星期才發券(例如:1,3,5 表示週一、週三、週五)
cFrequencyDay說明:僅當選擇「每月N日」或「每周N」時需填寫,多個日期用逗號分隔
例:每月1,15日發券 / 每週1,3,5發券
cStatus 啟用狀態 開關切換 控制此出券活動是否啟用
1:啟用 - 活動生效,符合條件時會發券
0:停用 - 活動暫停,即使符合條件也不會發券
說明:可用於臨時暫停/恢復活動,無需刪除設定
cSelfserviceType 限自助收銀 核取方塊 是否限定僅自助收銀機才可發行此電子券
0:否 - 所有收銀方式皆可發券(一般櫃台+自助收銀)
1:是 - 僅限自助收銀機才可發券(勾選時)
例:鼓勵使用自助結帳的促銷活動
cPayType
(tblDiscountByPay)
支付工具代碼 下拉選單
(可新增多筆)
限定特定支付方式才可觸發發券(一對多關係,可設定多組支付方式)
支付類型選項:
0:無限制(全部支付方式)
1:全支付(所有電子支付)
2:信用卡銀行(需搭配「支付銀行代碼」欄位)
3:票證(悠遊卡、一卡通等)
4:儲值金(PX PAY儲值金)
5:禮券(實體禮券)
6:PXPAY銀行(需搭配「支付銀行代碼」欄位)

關聯性:與「支付銀行代碼」欄位搭配使用。當選擇類型2或6時,必須在「支付銀行代碼」中指定銀行
UI顯示:下方顯示已設定的支付方式清單表格,欄位包含「支付方式」、「銀行」、「操作」
資料儲存:寫入 tblDiscountByPay 資料表(cDiscountNo 關聯到主活動)
cBankCode
(tblDiscountByPay)
支付銀行代碼 下拉選單 當支付方式為銀行類型時,指定銀行代碼
使用時機:
僅當「支付工具代碼」選擇以下類型時才需填寫:
• 2:信用卡銀行
• 6:PXPAY銀行

銀行代碼:從 tblBankCode 資料表選擇(如:822=中國信託、812=台北富邦等)

關聯性:與「支付工具代碼」欄位搭配使用,組成完整的支付方式限制條件
資料儲存:與 cPayType 同筆記錄寫入 tblDiscountByPay
-
(前端控制)
限定門市發行 核取方塊 控制是否啟用門市限制功能
0:不勾選 - 所有門市皆可發券,不限制特定門市
1:勾選 - 啟用門市限制,只有在「單店發行上限」設定的門市才可發券

關聯性:控制「單店發行上限」欄位是否生效。勾選後,必須在「單店發行上限」中設定至少一個門市
說明:此為前端 UI 控制欄位,用於啟用/停用門市限制功能,不寫入資料庫
cUpperlimitType
cStoreId
cUpperValue
(tblDiscountByStore)
單店發行上限 下拉選單+數字
(可設定多筆)
為不同門市個別設定發行上限(一對多關係,可為多個門市分別設定)
前提條件:需先勾選「限定門市發行」核取方塊才能設定

設定方式:
1. 選擇「單店發行上限類型」(cUpperlimitType)
2. 選擇「店號」(cStoreId)- 從下拉選單選擇門市
3. 輸入「上限值」(cUpperValue)
4. 點擊「新增」將此門市設定加入清單
5. 重複步驟 1-4 可為其他門市設定不同上限

cUpperlimitType(上限類型):
-1:請選擇 - 預設值,未設定時
0:無 - 不限制該門市發行量
1:金額(發行總額) - 以總發行金額上限控制(單位:元)
2:次數 - 以總發行張數控制(單位:張)

cStoreId(店號):門市流水號,指定要設定上限的門市
cUpperValue(上限值):該門市的上限數值(金額單位=元 / 次數單位=張)

範例:
門市A:類型=金額 + 上限=100000 → 門市A最多發行10萬元
門市B:類型=次數 + 上限=500 → 門市B最多發500張

關聯性:與「限定門市發行」核取方塊搭配使用。勾選後此設定才會生效
UI顯示:下方顯示已設定的門市清單表格,欄位包含「店號」、「門市名稱」、「上限類型」、「上限金額」、「操作」
資料儲存:每筆門市設定寫入 tblDiscountByStore 一筆記錄(cDiscountNo 關聯到主活動)
cPersonalType
cPersonalPeriodType
cPersonalPeriodlimit
發行上限類型 下拉選單+數字 設定個人領取上限的計算方式、週期和數值
cPersonalType(上限計算方式):
-1:請選擇 - 預設值,未設定時
0:無 - 不限制個人領取量
1:金額 - 以個人領取總金額上限控制
2:次數 - 以個人領取總張數控制

cPersonalPeriodType(上限計算週期):
-1:請選擇(預設值,未設定時)
0:無 - 不限制週期
1:活動期間 - 整個活動期間累計
2:月 - 每月獨立計算,每月重置
3:周 - 每週獨立計算,每週重置
4:日 - 每日獨立計算,每天重置
5:單筆 - 單次交易限制

cPersonalPeriodlimit(上限數值):
依類型而定:金額單位=元 / 數量單位=張

範例:
數量 + 日 + 3 = 每人每日最多領3張
金額 + 活動期間 + 500 = 每人整個活動最多領500元
cIsAll 全品項 下拉選單 設定此活動是否適用於全部商品(若選「是」,則商品設定區塊不提供選擇)
1:是 - 所有商品都適用此出券活動,無需另外設定商品範圍
0:否 - 需要在「商品設定」區塊中指定適用的商品分類或品項
說明:選擇「是」時,tblDiscountByCommodity 不需要設定資料;選擇「否」時,必須在商品設定區塊中新增適用商品
cDpsLevelType
cDpsLevelNo
cCommodityNo
(tblDiscountByCommodity)
商品設定 複選清單
(可新增多筆)
設定此活動發放的折價券可抵用的商品範圍(一對多關係,可設定多個分類或商品)
設定方式:
1. 點擊「查詢分類」按鈕選擇商品分類
2. 或點擊「查詢商品」按鈕選擇指定商品
3. 選擇「篩選模式」:包含(綠色)或排除(紅色)
4. 選擇後加入清單
5. 可重複新增多個分類或商品

查詢分類彈窗欄位:
• 篩選模式:下拉選單(包含/排除)
• 分類類型:下拉選單(大分類/中分類/小分類/細分類/廠商編號)
• 分類代碼:依選擇的分類類型顯示對應下拉選單
• 查詢結果:顯示符合條件的分類清單

查詢商品彈窗欄位:
• 篩選模式:下拉選單(包含/排除)
• 分類類型:下拉選單(大分類/中分類/小分類/細分類)
• 分類代碼/名稱:依選擇的類型顯示對應下拉選單
• 商品編號:文字框,輸入商品編號
• 商品名稱:文字框,輸入商品名稱
• 查詢結果:顯示符合條件的商品清單

cDpsLevelType 商品分類類型(tinyint):
0:品項 - 指定單一商品品項
1:大分類 - 選擇商品大分類(DpsLevel1,如:食品、日用品、3C電器)
2:中分類 - 選擇商品中分類(DpsLevel2,如:飲料、零食、清潔用品)
3:小分類 - 選擇商品小分類(DpsLevel3,如:碳酸飲料、餅乾、洗衣精)
4:細分類 - 選擇商品細分類(DpsLevel4,更精細的分類層級)
8:廠商編號 - 依供應商限制(Merchant,可限制特定廠商的商品)

篩選模式(cfiltertype):
1:包含 - 符合此條件的商品才可使用(綠色顯示)
2:排除 - 符合此條件的商品不可使用(紅色顯示)
注意:單一分類不能同時設定包含及排除

cDpsLevelNo:若選擇分類(1-4, 8),此為分類代碼(varchar(8));若選擇品項(0)則為 null
cCommodityNo:若選擇品項(0),此為商品流水號(int);若選擇分類則為 null
cMerchantId:若選擇廠商編號(8),此為廠商 ID(int)

說明:若「全品項」設為「是」,則此區塊不需設定。可選擇大/中/小/細分類、廠商或指定商品,也可混合設定
UI顯示:下方顯示已選擇的商品清單表格,欄位包含「全選」、「篩選模式」、「分類類型」、「代碼」、「名稱」
資料儲存:每筆商品設定寫入 tblDiscountByCommodity 一筆記錄(cDiscountNo 關聯到主活動)
cEffDatefrom
cEffDateto
(tblWriteOffSettings)
*行銷折價券抵用期間 日期區間 設定此電子券可以抵用的有效日期,需符合[行銷折價券抵用設定]裡面的[活動期間]欄位的時間
格式:dd/mm/yyyy ~ dd/mm/yyyy
例:21/01/2026 ~ 28/02/2026

📤 執行結果

  • 成功:關閉對話框,刷新列表,顯示「新增成功」訊息
  • 失敗:保留表單資料,顯示錯誤訊息

💡 注意事項

  • 活動編號由系統自動產生,格式為 T2XXXX
  • 活動期間的起始日期不得大於結束日期
  • 若選擇「限定門市發行」,必須至少設定一個門市
  • 若「全品項」選擇「否」,必須在商品設定中新增適用商品

🎨 UI 範例

新增出券設定
電子券名稱 電子券類型 張數 操作
尚無資料
活動發行設定
~
~

2.3 訊息提示

✅ 成功訊息

樣式:綠色 toast 通知,畫面右上角,3秒後自動消失
查詢完成 / 活動設定新增成功! / 活動設定更新成功! / 活動設定刪除成功!

❌ 錯誤訊息

樣式:紅色 toast 通知,畫面右上角,5秒後自動消失或手動關閉
查詢失敗,請稍後再試 / 新增失敗,請稍後再試 / 更新失敗,請稍後再試 / 刪除失敗,請稍後再試 / 顯示具體欄位錯誤

2.4 列表功能

  • 排序:支援依活動編號、活動開始時間排序
  • 分頁:每頁顯示 10/20/50 筆可選
  • 選取:不支援批次操作
  • 匯出:不支援(若需要請另行評估)

2.5 操作按鈕說明

  • 🔍 查詢按鈕:執行查詢功能。藍色背景可點擊,查詢執行中顯示載入圖示且不可點擊
  • ➕ 新增按鈕:開啟新增出券設定對話框。有權限顯示綠色背景可點擊,無權限顯示灰色不可點擊
  • 👁️ 檢視按鈕:以唯讀模式查看出券設定詳細資料。藍色文字可點擊,滑鼠移入顯示底線效果
  • ✏️ 編輯按鈕:開啟編輯對話框修改出券設定。有權限顯示綠色文字可點擊,無權限顯示灰色不可點擊
  • 🗑️ 刪除按鈕:刪除選定的出券設定(已發放電子券的活動無法刪除)。有權限且可刪除顯示紅色文字可點擊,無權限或活動已開始顯示灰色不可點擊

3. API 規格

3.1 查詢出券設定列表(對應「查詢」按鈕)

端點: POST /api/CardEventSetting/GetList 📝 描述:

查詢出券設定列表,支援多種條件篩選與分頁功能

📋 請求參數 (Request Parameters):
參數名稱 類型 說明 必填
cNo int 活動編號(TblCardAction 的主鍵)
cActionDateFrom datetime 活動開始日期(格式:yyyy-MM-ddTHH:mm:ss)
cActionDateTo datetime 活動結束日期(格式:yyyy-MM-ddTHH:mm:ss)
注意:開始日期不得大於結束日期
cOnorOff boolean 啟停用狀態(true=啟用, false=停用)
cProductId int 商品ID(用於篩選包含指定商品的活動,-1表示不篩選)
PageIndex int 頁碼(預設:1)
PageSize int 每頁筆數(預設:50)
💻 請求範例 (cURL):
curl -X POST "https://api.pxmart.com/api/CardEventSetting/GetList" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "cActionDateFrom": "2026-01-01T00:00:00",
    "cActionDateTo": "2026-12-31T23:59:59",
    "cProductId": -1,
    "PageIndex": 1,
    "PageSize": 10
  }'
✅ 回應範例 (Response - 200 OK):
{
  "StatusCode": 200,
  "Message": "查詢成功",
  "TotalItems": 50,
  "Entries": [
    {
      "cNo": 1,
      "cAllAmt": 100000.00,
      "cAllCount": 500,
      "cAmt": 5000.00,
      "cCount": 5,
      "cActionDateFrom": "2026-01-21T00:00:00",
      "cActionDateTo": "2026-02-28T23:59:59",
      "cOnorOff": true,
      "cOnorOffName": "啟用",
      "cProductNo": "P001,P002,P003"
    },
    {
      "cNo": 2,
      "cAllAmt": 50000.00,
      "cAllCount": 200,
      "cAmt": 2000.00,
      "cCount": 3,
      "cActionDateFrom": "2026-03-01T00:00:00",
      "cActionDateTo": "2026-03-31T23:59:59",
      "cOnorOff": false,
      "cOnorOffName": "停用",
      "cProductNo": "P004"
    }
  ]
}
📋 回應欄位說明:
欄位名稱 類型 說明
cNo int 活動編號(主鍵)
cAllAmt decimal 總金額卡控
cAllCount int 總數量卡控
cAmt decimal 個人金額
cCount int 個人數量卡控
cActionDateFrom datetime 活動開始日期時間
cActionDateTo datetime 活動結束日期時間
cOnorOff boolean 啟停用狀態(true=啟用, false=停用)
cOnorOffName string 啟停用狀態名稱("啟用" 或 "停用")
cProductNo string 商品編號列表(逗號分隔)
🔴 錯誤回應 (Response - 401 Unauthorized):
{
  "StatusCode": 401,
  "Message": "未授權存取",
  "Data": null
}

3.2 取得單筆出券設定資料(對應「檢視」/「編輯」按鈕)

端點: POST /api/CardEventSetting/GetData 📝 描述:

依活動編號取得單筆出券設定的完整資料

📋 請求參數 (Request Body):
參數名稱 類型 說明 必填
cNo int 活動編號(TblCardAction 主鍵)
💻 請求範例 (cURL):
curl -X POST "https://api.pxmart.com/api/CardEventSetting/GetData" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "cNo": 1
  }'
✅ 回應範例 (Response - 200 OK):
{
  "StatusCode": 200,
  "Message": "查詢成功",
  "Entries": {
    "cNo": 1,
    "cAllAmt": 100000.00,
    "cAllCount": 500,
    "cAmt": 5000.00,
    "cCount": 5,
    "cActionDateFrom": "2026-01-21T00:00:00",
    "cActionDateTo": "2026-02-28T23:59:59",
    "cOnorOff": true,
    "cOnorOffName": "啟用",
    "cProductList": [
      {
        "cProductId": 101,
        "cProductNo": "P001",
        "cProductName": "商品名稱A"
      },
      {
        "cProductId": 102,
        "cProductNo": "P002",
        "cProductName": "商品名稱B"
      }
    ]
  }
}
📋 回應欄位說明:
欄位名稱 類型 說明
cNo int 活動編號(主鍵)
cAllAmt decimal 總金額卡控
cAllCount int 總數量卡控
cAmt decimal 個人金額
cCount int 個人數量卡控
cActionDateFrom datetime 活動開始日期時間
cActionDateTo datetime 活動結束日期時間
cOnorOff boolean 啟停用狀態(true=啟用, false=停用)
cOnorOffName string 啟停用狀態名稱("啟用" 或 "停用")
cProductList array 商品列表(包含 cProductId, cProductNo, cProductName)
🔴 錯誤回應 (Response - 404 Not Found):
{
  "StatusCode": 404,
  "Message": "查無此活動編號",
  "Data": null
}

3.3 新增/更新出券設定(對應對話框「確定」按鈕)

端點: POST /api/CardEventSetting/SaveData 📝 描述:

新增或更新出券設定資料。若 cNo 存在則為更新,否則為新增

📋 請求參數 (Request Body):
參數名稱 類型 說明 必填
cNo int 活動編號(更新時必填,新增時不填或填0)
cAllAmt decimal 總金額卡控
cAllCount int 總數量卡控
cAmt decimal 個人金額
cCount int 個人數量卡控
cLastAmt decimal 總量卡控金額剩餘
cLastCount int 總量卡控數剩餘
cActionDateFrom datetime 活動開始日期(格式:yyyy-MM-ddTHH:mm:ss)
cActionDateTo datetime 活動結束日期(格式:yyyy-MM-ddTHH:mm:ss)
cOnorOff boolean 啟停用狀態(true=啟用, false=停用)
cProductList array 商品列表(包含 cProductId, cProductNo, cProductName)
💻 請求範例 (cURL):
curl -X POST "https://api.pxmart.com/api/CardEventSetting/SaveData" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "cNo": 0,
    "cAllAmt": 100000.00,
    "cAllCount": 500,
    "cAmt": 5000.00,
    "cCount": 5,
    "cLastAmt": 100000.00,
    "cLastCount": 500,
    "cActionDateFrom": "2026-01-21T00:00:00",
    "cActionDateTo": "2026-02-28T23:59:59",
    "cOnorOff": true,
    "cProductList": [
      {
        "cProductId": 101,
        "cProductNo": "P001",
        "cProductName": "商品名稱A"
      },
      {
        "cProductId": 102,
        "cProductNo": "P002",
        "cProductName": "商品名稱B"
      }
    ]
  }'
✅ 回應範例 (Response - 200 OK):
{
  "StatusCode": 200,
  "Message": "儲存成功",
  "Entries": null
}
🔴 錯誤回應 (Response - 400 Bad Request):
{
  "StatusCode": 400,
  "Message": "驗證失敗",
  "Errors": [
    {
      "Field": "ActivityName",
      "Message": "活動名稱不可為空"
    },
    {
      "Field": "StartDate",
      "Message": "活動開始日期不得大於結束日期"
    }
  ]
}

3.4 刪除出券設定(對應「刪除」按鈕)

端點: POST /api/CardEventSetting/RemoveData 📝 描述:

刪除指定活動編號的出券設定資料

⚠️ 注意事項:
  • 活動已開始則無法刪除
  • 刪除動作無法復原,請謹慎操作
📋 請求參數 (Request Body):
參數名稱 類型 說明 必填
cNo int 要刪除的活動編號
cActionDateFrom datetime 活動開始日期(格式:yyyy-MM-ddTHH:mm:ss)
💻 請求範例 (cURL):
curl -X POST "https://api.pxmart.com/api/CardEventSetting/RemoveData" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "cNo": 1,
    "cActionDateFrom": "2026-01-21T00:00:00"
  }'
✅ 回應範例 (Response - 200 OK):
{
  "StatusCode": 200,
  "Message": "刪除成功",
  "Data": null
}
🔴 錯誤回應 (Response - 400 Bad Request):
{
  "StatusCode": 400,
  "Message": "活動已開始,無法刪除",
  "Data": null
}

3.5 取得商品列表(頁面初始化時自動調用,填充查詢條件的「請選擇電子券」下拉選單)

端點: POST /api/CardEventSetting/GetProductList 📝 描述:

取得禮物卡商品列表(例如:全聯禮物卡500元、1000元等),用於頁面上方查詢條件的「請選擇電子券」下拉選單。用戶可依商品篩選相關的出券活動設定。

🎯 使用時機:
  • 頁面載入時自動調用,填充查詢條件下拉選單
  • 用途:讓用戶可以查詢「哪些出券活動使用了這個商品」
  • 例如:選擇「全聯禮物卡500元」,查詢所有使用該商品的出券活動
📦 商品來源:
  • 查詢 TblProduct(商品表)+ TblCard(卡片表)
  • 只顯示 CcardType = 'J' 的商品(APP 販售的禮物卡)
💻 請求範例 (cURL):
curl -X POST "https://api.pxmart.com/api/CardEventSetting/GetProductList" \
  -H "Content-Type: application/json"
✅ 回應範例 (Response - 200 OK):
[
  {
    "cProductId": 101,
    "cProductNo": "GC500",
    "cProductName": "全聯禮物卡500元"
  },
  {
    "cProductId": 102,
    "cProductNo": "GC1000",
    "cProductName": "全聯禮物卡1000元"
  },
  {
    "cProductId": 103,
    "cProductNo": "GC3000",
    "cProductName": "全聯禮物卡3000元"
  }
]

3.6 取得可用活動商品列表(點擊「新增」按鈕時調用,填充新增對話框的商品下拉選單)

端點: POST /api/CardEventSetting/GetEventDropList 📝 描述:

當用戶點擊「新增」按鈕開啟新增對話框時調用,取得尚未被使用在進行中活動的商品列表,用於彈出畫面的商品選擇下拉選單。

🎯 使用時機:
  • 點擊頁面上的「新增」按鈕時自動調用
  • 與 3.5 的差異:此 API 會過濾掉已在進行中活動的商品,避免重複設定
📌 過濾條件:
  • 只顯示 APP 販售的禮物卡(CcardType = 'J')
  • 排除已被使用在進行中活動的商品
  • 進行中活動定義:活動結束日期 > 當前時間 且 啟用狀態 = true
💻 請求範例 (cURL):
curl -X POST "https://api.pxmart.com/api/CardEventSetting/GetEventDropList" \
  -H "Content-Type: application/json"
✅ 回應範例 (Response - 200 OK):
[
  {
    "cProductId": 104,
    "cProductNo": "P004",
    "cProductName": "全聯禮物卡5000元"
  },
  {
    "cProductId": 105,
    "cProductNo": "P005",
    "cProductName": "全聯禮物卡10000元"
  }
]
📌 說明:
  • 此 API 會過濾掉已被使用在進行中活動的商品
  • 進行中活動定義:CActionDateTo > 當前時間COnorOff = true
  • 只返回 CcardType = 'J' 的禮物卡商品

4. 測試案例

4.1 查詢功能測試

測試案例 輸入 預期結果
TC-001 不輸入任何條件點擊查詢 顯示所有資料
TC-002 輸入存在的活動編號 顯示該活動資料
TC-003 輸入不存在的活動編號 顯示「查無資料」
TC-004 輸入日期區間(起>訖) 顯示「結束日期不得早於開始日期」
TC-005 輸入錯誤日期格式 顯示「日期格式錯誤」

4.2 新增功能測試

測試案例 輸入 預期結果
TC-006 填寫所有必填欄位並儲存 新增成功,列表更新
TC-007 不填寫活動名稱並儲存 顯示「請填寫活動名稱」
TC-008 輸入已存在的活動編號 顯示「活動編號已存在」
TC-009 無新增權限點擊新增按鈕 按鈕禁用,無法點擊

4.3 編輯功能測試

測試案例 輸入 預期結果
TC-010 編輯未開始的活動 可編輯所有欄位
TC-011 編輯已開始的活動 僅能編輯「行銷折價券抵用設定」
TC-012 無編輯權限點擊編輯 按鈕禁用或不顯示

4.4 刪除功能測試

測試案例 輸入 預期結果
TC-013 刪除未開始的活動並確認 刪除成功,列表更新
TC-014 刪除已開始的活動 顯示「活動已開始,無法刪除」
TC-015 刪除確認對話框點擊取消 關閉對話框,不執行刪除
TC-016 無刪除權限點擊刪除 按鈕禁用或不顯示

© 2026 全聯電子券管理系統 | 規格文件版本 1.0

此文件為內部使用,請勿外流