--- tags: mPOS,促銷 --- # 促銷 ## 限量商品 ## 促銷分類 **促銷類型 MM_type** * 買送促銷 N * 固定售價 F : plu:221082 * 折讓額 C : plu:186803 * 折扣率 D : plu:221122 * 優惠價 A : plu:199889 * 特價銷售: D : plu:220114 * ~~數量折價: M~~ * 滿額送及滿額特價: F * ~~滿額禮 A~~ * 系列別 S * 滿額贈(dm_price = 0): plu: * 滿額加購(dm_price > 0): plu: 138455 * 商品 P : plu: * 滿額贈(dm_price = 0): plu: * 滿額加購(dm_price > 0): plu: 215177 * 信用卡滿額送: C * 門號套餐: B * 門號可攜: T * 來店禮及生日禮: V 問題貨號192093延保條碼 :::danger MM_TYPE='N', 'D', 'F'也都有滿額, 差別在F是計算全購物車商品, D、F只計算此促銷的滿額 當MM_TYPE='N', 'D', 'F' MM_GROUPTYPE= M:促銷(預設), F:滿額促銷, I:加購送 ::: ```plantuml @startmindmap *[#lightgreen] MM_Type:促銷類型 '----------------- **[#lightblue]: N:買送促銷 ==== mm_grouptype="M" GROUP1QTY~GROUP6QTY 折扣群數量限制(當MM_TYPE=N); ***[#lightgreen] AMT_Type ****[#lightblue] F:固定售價 *****[#FFBBCC] 購物車處理 ******:原商品 ===== Price = VIPAMT; ******:增加促銷商品 ===== Piece = MM_AMOUNT - 商品總額(含贈品價格); ****[#lightblue] C:折讓額 *****[#FFBBCC] 購物車處理 ******:原商品 ===== Price = VIPAMT; ******:增加促銷商品 ===== Price = MM_AMOUNT * -1; ****[#lightblue] D:折扣率% *****[#FFBBCC] 購物車處理 ******:原商品 ===== Price = VIPAMT; ******:增加促銷商品 ===== Price = vipPrice*((100-MM_AMOUNT)/100)*-1; ****[#lightblue]: A:優惠價 ===== 檢查使用條件 MM.Cash_refund_type = 1 MM.Cash_refund_AMT = 1; *****[#FFBBCC] 購物車處理 ******:原商品 ===== Price = VIPAMT; ******:增加促銷商品 ===== Price = MM_AMOUNT - vipPrice; '----------------- **[#lightblue]: D:特價銷售 ==== mm_grouptype="M"; ***[#FFBBCC] 購物車處理 ****:原商品 ==== 更動商品價格 Price = MM_PLU.DM_PRICE; **** 增加促銷商品(無) '----------------- **[#lightblue]: M:數量折扣 ===== 未開放促銷類型; '----------------- **[#lightblue]: F:滿額送/滿額加購 ==== mm_grouptype="M"; ***[#lightgreen] AMT_Type ****[#lightblue]: A:不限商品 ==== 滿額禮請領使用(POS不開放); ****[#lightblue]: S:系列別 ---- ; ***** mm_plu.dm_price ******_ >0(加價) *******:小計觸發 ==== mm_plu.dm_price > 0; ******_ 0(贈送) *******:直接新增至購物車 ==== mm_plu.dm_price = 0; ****[#lightblue] P:商品 ***** mm_plu.dm_price ******_ >0(加價) *******:小計觸發 ==== mm_plu.dm_price > 0; ******_ 0(贈送) *******:直接新增至購物車 ==== mm_plu.dm_price = 0; **[#lightblue] B:門號套餐 ***[#lightgreen] AMT_Type ****[#lightblue] C:折讓額 *****[#FFBBCC] 購物車處理 ****** 加入組合商品 ******:增加促銷商品 ===== Price = MM_AMOUNT*-1(負向); '----------------- **[#lightblue] T:門號可攜 ***[#lightgreen] AMT_Type ****[#lightblue] C:折讓額 *****[#FFBBCC] 購物車處理 ****** 商品使用vipPrice ******:增加促銷商品 ===== 小計時才帶入 Price = MM_AMOUNT*-1(負向) 整單折扣金額不可=0(至少1); '----------------- **[#lightblue] V:來店禮生日禮(工作機處理) ***[#lightgreen] AMT_Type ****[#lightblue] C:來店禮 ****[#lightblue] B:生日禮 '----------------- @endmindmap ``` ## 促銷觸發 #### 滿額計算方式 1. 計算額度包含購物車所有商品(組合促銷商品也計算) 2. 進入滿額加購,加選1次滿額商品,額度計算1次減掉該商品加購門檻額度(degree_amt) ex: degree_amt = 10,000 加購商品金額1,000 加購1次額度扣掉10,000 * **AMT_Type = S(系列別)** ```plantuml @startmindmap *[#lightgreen]:MM ---- MM_Type=F; **[#lightgreen]:MM ---- AMT_Type=S; ***:MM_Plu ---- mm_grouptype; ****:累計額度 ---- adgree_amt 1~5; *****_ M ******:mm_plu.plu_No = product.prod_cate_no ---- PLU_NO欄位放商品系列別 計算滿額累計金額使用; ****:滿額可選商品 ---- degree_no 1~5(對應degree_amt); *****_ F ******:mm_plu.plu_No = product.plu_No ---- PLU_NO欄位放商品代碼 滿額可選擇商品; *****_ I ******:mm_plu.plu_No = product.plu_No ---- PLU_NO欄位放商品代碼 滿額自動加入商品; @endmindmap ``` * **AMT_Type = P(商品)** ```plantuml @startmindmap *[#lightgreen]:MM ---- MM_Type=F; **[#lightgreen]:MM ---- AMT_Type=P; ***:MM_Plu ---- mm_grouptype; ****:累計額度 ---- adgree_amt 1~5; *****_ M ******:mm_plu.plu_No = product.plu_No ---- 計算滿額累計金額使用; ****:滿額可選商品 ---- degree_no 1~5(對應degree_amt); *****_ F ******:mm_plu.plu_No = product.plu_No ---- 滿額可選擇商品; *****_ I ******:mm_plu.plu_No = product.plu_No ---- 滿額自動加入商品; @endmindmap ``` #### 觸發分類 * 選擇商品後 * 買送(N) * 特價(D) * 門號套餐 * 按小記後 * 滿額(F): 滿額加購、滿額送 * 門號可攜 #### 促銷商品查詢 ```sql= select mm.promote_name,product.plu_name,mm.mm_type,mm.amt_type,mm_amount,mm_plu.* from mm_plu inner join product on mm_plu.plu_no = product.plu_no or product.prod_cate_no = mm_plu.plu_no inner join mm on mm.promote_no = mm_plu.promote_no where 1=1 and TO_CHAR(SYSDATE, 'yyyymmdd') BETWEEN mm.b_date AND mm.e_date and PRODUCT.SALE_STATUS != '2' --NF and mm.mm_type = 'N' and mm.amt_type = 'F' and mm.mm_amount > 0 --NC and mm.mm_type = 'N' and mm.amt_type = 'C' and mm.mm_amount > 0 --ND and mm.mm_type = 'N' and mm.amt_type = 'D' and mm.mm_amount > 0 --NA and mm.mm_type = 'N' and mm.amt_type = 'A' and mm.mm_amount > 0 And MM.Cash_refund_type = 1 And MM.Cash_refund_AMT = 1 --D and mm.mm_type = 'D' --FS dm >0 and mm.mm_type = 'F' and mm.amt_type = 'S' and MM_PLU.DM_PRICE > 0 order by mm_plu.cre_date desc --------------------------------- --mmtype=F amttype=S select * from product inner join mm_plu on product.prod_cate_no = mm_plu.plu_no inner join mm on MM_PLU.PROMOTE_NO = mm.promote_no where 1=1 and mm.mm_type = 'F' and mm.amt_type = 'S' and mm_plu.mm_grouptype = 'M' and TO_CHAR(SYSDATE, 'yyyymmdd') BETWEEN mm.b_date AND mm.e_date and Nvl(Product.MT_FLAG,'N')<>'D' and PRODUCT.SALE_STATUS != '2' --mmtype=F amttype=P select * from product inner join mm_plu on product.plu_no = mm_plu.plu_no inner join mm on MM_PLU.PROMOTE_NO = mm.promote_no where 1=1 and mm.mm_type = 'F' and mm.amt_type = 'P' and mm_plu.mm_grouptype = 'M' and TO_CHAR(SYSDATE, 'yyyymmdd') BETWEEN mm.b_date AND mm.e_date and Nvl(Product.MT_FLAG,'N')<>'D' and PRODUCT.SALE_STATUS != '2' ```