|
|
@@ -0,0 +1,161 @@
|
|
|
+DROP FUNCTION IF EXISTS FN_IS_GOODS_COUPON;
|
|
|
+DELIMITER $$
|
|
|
+create FUNCTION FN_IS_GOODS_COUPON
|
|
|
+ (I_FRONT_GB VARCHAR(20)
|
|
|
+ ,I_GOODS_CD VARCHAR(20)
|
|
|
+ ,I_CURR_PRICE int
|
|
|
+ ) RETURNS CHAR(1)
|
|
|
+/******************************************************************************
|
|
|
+/*
|
|
|
+/* Module : 상품쿠폰 존재여부
|
|
|
+/* Program Name : FN_IS_GOODS_COUPON
|
|
|
+/* Description : 상품의 최대로 할인 받는 쿠폰정보 조회한다.
|
|
|
+/*
|
|
|
+/* Input : i_front_gb => 프론트구분(P:PC, M:모바일)
|
|
|
+/* i_goods_cd => 상품코드
|
|
|
+/* i_curr_price => 현재판매가
|
|
|
+/* OutPut : 쿠폰정보
|
|
|
+/*
|
|
|
+/* Program History
|
|
|
+/*
|
|
|
+/*----------------------------------------------------------------------------
|
|
|
+/* Date CSR NO. Name Description
|
|
|
+/*----------------------------------------------------------------------------
|
|
|
+/* 2021-02-24 eskim Initial Release
|
|
|
+/******************************************************************************/
|
|
|
+BEGIN
|
|
|
+ DECLARE O_RET_VALUE VARCHAR(1);
|
|
|
+
|
|
|
+ SELECT CASE WHEN (
|
|
|
+ SELECT COUNT(*)
|
|
|
+ FROM TB_GOODS G
|
|
|
+ , TB_COUPON CP
|
|
|
+ WHERE CP.SITE_CD = 'G000_10' -- 전시사이트
|
|
|
+ AND G.GOODS_CD = I_GOODS_CD
|
|
|
+ AND CP.CPN_STAT = 'G232_11' -- 쿠폰인 진행중인 쿠폰만
|
|
|
+ AND CP.DOWN_ABL_YN = 'Y' -- 상품상세 다운로드 가능여부
|
|
|
+ AND NOW() <= IF (CP.PD_GB = 'D', DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S'), CP.AVAIL_EDDT)
|
|
|
+ AND NOW() BETWEEN CP.DOWN_STDT AND CP.DOWN_EDDT
|
|
|
+ AND CP.CPN_TYPE IN ('G230_11', 'G230_30') /* 상품쿠폰,배송비 쿠폰*/
|
|
|
+ AND (SELECT COUNT(1)
|
|
|
+ FROM TB_COUPON_CUST_GBN
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
+ AND USABLE_CUST_GB IN ('G100_10') /*사용가능고객구분 일반회원*/
|
|
|
+ ) >= 1
|
|
|
+ AND (SELECT COUNT(1)
|
|
|
+ FROM TB_COUPON_CUST_GRADE
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
+ AND USABLE_CUST_GRADE IN ('G110_10', 'G110_20', 'G110_30', 'G110_40', 'G110_50' ) /*전체고객*/
|
|
|
+ ) = 5
|
|
|
+ AND CP.BUY_LIMIT_AMT <= I_CURR_PRICE /*최소주문금액*/
|
|
|
+ AND (CASE WHEN I_FRONT_GB = 'P' THEN DC_PVAL
|
|
|
+ WHEN I_FRONT_GB = 'M' THEN DC_MVAL
|
|
|
+ ELSE DC_AVAL END) > 0 /* APP은 추후 사용여부 확인해야함 */
|
|
|
+ AND IF (CP.TOT_PUB_LIMIT_QTY = 0, 9999999999,CP.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1) FROM TB_CUST_COUPON WHERE CPN_ID = CP.CPN_ID) /*총발행제한수*/
|
|
|
+ AND (
|
|
|
+ (CP.APPLY_SCOPE = 'A' )
|
|
|
+ OR /* 적용대상:상품*/
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
+ AND CPN_TARGET = 'G260_10'
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ AND REF_VAL = G.GOODS_CD
|
|
|
+ ) > 0
|
|
|
+ )
|
|
|
+ OR /* 적용대상:카테고리*/
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
+ AND CPN_TARGET = 'G260_11'
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
|
|
|
+ AND IFNULL(REF_BRAND_CD,G.BRAND_CD) = G.BRAND_CD
|
|
|
+ AND REF_VAL IN (SELECT DISTINCT X.CATE_NO
|
|
|
+ FROM
|
|
|
+ (SELECT LEAF_CATE_NO
|
|
|
+ , CATE_LVL
|
|
|
+ , CATE_NO
|
|
|
+ FROM (
|
|
|
+ SELECT LEAF_CATE_NO ,
|
|
|
+ CASE WHEN X = 1 THEN 'CATE1_NO' -- 컬럼과 매핑(컬럼명)
|
|
|
+ WHEN X = 2 THEN 'CATE2_NO'
|
|
|
+ WHEN X = 3 THEN 'CATE3_NO'
|
|
|
+ WHEN X = 4 THEN 'CATE4_NO'
|
|
|
+ ELSE 'CATE5_NO'
|
|
|
+ END CATE_LVL,
|
|
|
+ CASE WHEN X = 1 THEN CATE1_NO -- 컬럼과 매핑(컬럼 데이터)
|
|
|
+ WHEN X = 2 THEN CATE2_NO
|
|
|
+ WHEN X = 3 THEN CATE3_NO
|
|
|
+ WHEN X = 4 THEN CATE4_NO
|
|
|
+ ELSE CATE5_NO
|
|
|
+ END CATE_NO
|
|
|
+ FROM (
|
|
|
+ ( SELECT LEAF_CATE_NO
|
|
|
+ , CATE1_NO
|
|
|
+ , CATE2_NO
|
|
|
+ , CATE3_NO
|
|
|
+ , CATE4_NO
|
|
|
+ , CATE5_NO
|
|
|
+ FROM TB_CATE_4SRCH
|
|
|
+ WHERE SITE_CD = 'G000_10'
|
|
|
+ AND CATE_TYPE = 'G031_10') A, -- 상품타입
|
|
|
+ (SELECT 1 AS X -- UNPIVOT 컬럼 수 만큼 선언
|
|
|
+ UNION ALL SELECT 2 AS X
|
|
|
+ UNION ALL SELECT 3 AS X
|
|
|
+ UNION ALL SELECT 4 AS X
|
|
|
+ UNION ALL SELECT 5 AS X
|
|
|
+ ) B
|
|
|
+ )
|
|
|
+ ORDER BY LEAF_CATE_NO, CATE_LVL
|
|
|
+ ) K
|
|
|
+ WHERE CATE_NO IS NOT NULL
|
|
|
+ ) X,
|
|
|
+ (
|
|
|
+ SELECT A.CATE_NO, A.GOODS_CD
|
|
|
+ FROM TB_CATE_GOODS A
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ ) Y
|
|
|
+ WHERE X.LEAF_CATE_NO = Y.CATE_NO
|
|
|
+ )
|
|
|
+ ) >0
|
|
|
+ )
|
|
|
+ OR /* 적용대상:브랜드*/
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
+ AND CPN_TARGET = 'G260_12'
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ AND REF_VAL = G.BRAND_CD
|
|
|
+ AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
|
|
|
+ ) >0
|
|
|
+ )
|
|
|
+ OR /* 적용대상:공급업체*/
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
+ AND CPN_TARGET = 'G260_13'
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ AND REF_VAL = G.SUPPLY_COMP_CD
|
|
|
+ /*AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB*/
|
|
|
+ ) >0
|
|
|
+ )
|
|
|
+ )
|
|
|
+ AND NOT EXISTS (
|
|
|
+ SELECT 1
|
|
|
+ FROM TB_COUPON_REFVAL SCPR
|
|
|
+ WHERE SCPR.CPN_ID = CP.CPN_ID
|
|
|
+ AND SCPR.REF_VAL = G.GOODS_CD
|
|
|
+ AND SCPR.DEL_YN = 'N' /*삭제안된넘*/
|
|
|
+ AND SCPR.CPN_TARGET = '40' /* 제외상품*/
|
|
|
+ )
|
|
|
+ AND NOT EXISTS (
|
|
|
+ SELECT 1
|
|
|
+ FROM TB_COUPON_BAN_GOODS
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
+ AND DEL_YN = 'N'
|
|
|
+ )
|
|
|
+ ) > 0
|
|
|
+ THEN 'Y' ELSE 'N' END AS COUPON_YN
|
|
|
+ INTO O_RET_VALUE
|
|
|
+ ;
|
|
|
+
|
|
|
+ RETURN O_RET_VALUE;
|
|
|
+END $$
|
|
|
+DELIMITER ;
|