Sfoglia il codice sorgente

즉시할인쿠폰 적용가 쿼리 수정

eskim 5 anni fa
parent
commit
33377d3922

+ 41 - 9
src/main/java/com/style24/persistence/mybatis/shop/TsbGoods.xml

@@ -507,6 +507,12 @@
 		            ELSE
 		            ELSE
 		                 (CASE WHEN IFNULL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} END)
 		                 (CASE WHEN IFNULL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} END)
 		            END)  )AS MO_CURR_PRICE
 		            END)  )AS MO_CURR_PRICE
+		       , MIN(CURR_PRICE - 
+		           ( CASE WHEN DC_WAY = 'G240_10' THEN
+		                 (CASE WHEN IFNULL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> DC_MVAL THEN MAX_DC_AMT ELSE DC_AVAL END)
+		            ELSE
+		                 (CASE WHEN IFNULL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((CURR_PRICE * DC_AVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((CURR_PRICE * DC_AVAL / 100) / #{pointUnit}) * #{pointUnit} END)
+		            END)  )AS APP_CURR_PRICE
 		       , STAFF_CURR_PRICE
 		       , STAFF_CURR_PRICE
 		       , MIN(STAFF_CURR_PRICE - 
 		       , MIN(STAFF_CURR_PRICE - 
 		           ( CASE WHEN DC_WAY = 'V' THEN
 		           ( CASE WHEN DC_WAY = 'V' THEN
@@ -520,19 +526,26 @@
 		            ELSE
 		            ELSE
 		                 (CASE WHEN IFNULL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((STAFF_CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((STAFF_CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} END)
 		                 (CASE WHEN IFNULL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((STAFF_CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((STAFF_CURR_PRICE * DC_MVAL / 100) / #{pointUnit}) * #{pointUnit} END)
 		            END)  )AS STAFF_MO_CURR_PRICE
 		            END)  )AS STAFF_MO_CURR_PRICE
+		       , MIN(STAFF_CURR_PRICE - 
+		           ( CASE WHEN DC_WAY = 'G240_10' THEN
+		                 (CASE WHEN IFNULL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> DC_MVAL THEN MAX_DC_AMT ELSE DC_AVAL END)
+		            ELSE
+		                 (CASE WHEN IFNULL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((STAFF_CURR_PRICE * DC_AVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((STAFF_CURR_PRICE * DC_AVAL / 100) / #{pointUnit}) * #{pointUnit} END)
+		            END)  )AS STAFF_APP_CURR_PRICE
 		FROM   (
 		FROM   (
 		        SELECT CP.CPN_ID
 		        SELECT CP.CPN_ID
 		             , CP.CPN_NM
 		             , CP.CPN_NM
 		             , CP.DC_WAY                                              /*할인방식*/
 		             , CP.DC_WAY                                              /*할인방식*/
 		             , CP.DC_PVAL                                             /*PC 할인값*/
 		             , CP.DC_PVAL                                             /*PC 할인값*/
 		             , CP.DC_MVAL                                             /*MO 할인값*/
 		             , CP.DC_MVAL                                             /*MO 할인값*/
+		             , CP.DC_AVAL                                             /*APP 할인값*/
 		             , CP.MAX_DC_AMT                                          /*최대할인금액*/
 		             , CP.MAX_DC_AMT                                          /*최대할인금액*/
 		             , CP.CURR_PRICE                                          /*전체 판매가*/
 		             , CP.CURR_PRICE                                          /*전체 판매가*/
 		             , CP.CURR_PRICE_YN
 		             , CP.CURR_PRICE_YN
-		             , CP.STAFF_CURR_PRICE                                          /*임직원판매가*/
+		             , CP.STAFF_CURR_PRICE                                    /*임직원판매가*/
 		             , CP.STAFF_CURR_PRICE_YN
 		             , CP.STAFF_CURR_PRICE_YN
 		             , CP.AVAIL_EDDT
 		             , CP.AVAIL_EDDT
-		             , CP.USABLE_CUST_GB AS CUST_GB
+		             -- , CP.USABLE_CUST_GB AS CUST_GB
 		             , CP.GOODS_CD
 		             , CP.GOODS_CD
 		        FROM   (
 		        FROM   (
 		                SELECT CP.CPN_ID    /*쿠폰ID*/
 		                SELECT CP.CPN_ID    /*쿠폰ID*/
@@ -540,6 +553,7 @@
 		                     , CP.DC_WAY    /*할인방식*/
 		                     , CP.DC_WAY    /*할인방식*/
 		                     , CP.DC_PVAL   /*PC할인값*/
 		                     , CP.DC_PVAL   /*PC할인값*/
 		                     , CP.DC_MVAL   /*모바일할인값*/
 		                     , CP.DC_MVAL   /*모바일할인값*/
+		                     , CP.DC_AVAL   /*APP할인값*/
 		                     , CP.MAX_DC_AMT  /*최대할인금액*/
 		                     , CP.MAX_DC_AMT  /*최대할인금액*/
 		                     , G.CURR_PRICE  /*현재판매가*/
 		                     , G.CURR_PRICE  /*현재판매가*/
 		                     , CASE WHEN BUY_LIMIT_AMT <![CDATA[<=]]> G.CURR_PRICE THEN 'Y'
 		                     , CASE WHEN BUY_LIMIT_AMT <![CDATA[<=]]> G.CURR_PRICE THEN 'Y'
@@ -550,17 +564,25 @@
 		                            ELSE 'N'
 		                            ELSE 'N'
 		                            END AS STAFF_CURR_PRICE_YN
 		                            END AS STAFF_CURR_PRICE_YN
 		                     , IF (CP.PD_GB = 'D', DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S'), CP.AVAIL_EDDT) AS AVAIL_EDDT  
 		                     , IF (CP.PD_GB = 'D', DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S'), CP.AVAIL_EDDT) AS AVAIL_EDDT  
-		                     , CP.USABLE_CUST_GB   /*쿠폰사용이 가능한 고객(G100_00:전체, G100_10:일반회원, G100_20:임직원)*/
+		                     -- , CP.USABLE_CUST_GB   /*쿠폰사용이 가능한 고객(G100_00:전체, G100_10:일반회원, G100_20:임직원)*/
 		                     , G.GOODS_CD
 		                     , G.GOODS_CD
 		                FROM   TB_GOODS G
 		                FROM   TB_GOODS G
 		                     , TB_COUPON CP
 		                     , TB_COUPON CP
-		                WHERE  CP.SITE_CD = '10'
+		                WHERE  CP.SITE_CD = 'G000_10'
 		                AND    NOW() <![CDATA[<=]]> IF (CP.PD_GB = 'D', DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S'), CP.AVAIL_EDDT)
 		                AND    NOW() <![CDATA[<=]]> 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    NOW() BETWEEN CP.DOWN_STDT AND CP.DOWN_EDDT
 		                AND    CP.DN_GB = 'G058_10' /* 자동다운로드(결제시)다운로드*/
 		                AND    CP.DN_GB = 'G058_10' /* 자동다운로드(결제시)다운로드*/
 		                AND    CP.CPN_TYPE = 'G230_10' /*즉시할인쿠폰*/
 		                AND    CP.CPN_TYPE = 'G230_10' /*즉시할인쿠폰*/
-		                AND    CP.USABLE_CUST_GB  = #{usableCustGb}
-		                AND    CP.USABLE_CUST_GRADE  = 'G100_00' /* 사용가능고객등급이 일반만*/
+		                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 <![CDATA[<=]]> G.CURR_PRICE  /*최소주문금액*/
 		                AND    CP.BUY_LIMIT_AMT <![CDATA[<=]]> G.CURR_PRICE  /*최소주문금액*/
 		                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    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   (
 		                AND   (
@@ -573,8 +595,7 @@
 		                                                   AND REF_VAL = G.GOODS_CD
 		                                                   AND REF_VAL = G.GOODS_CD
 		                                                   ) > 0
 		                                                   ) > 0
 		                        ) 
 		                        ) 
-		                        /*OR*/ /* 적용대상:카테고리*/
-		                        /*
+		                        OR /* 적용대상:카테고리*/
 		                        (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
 		                        (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
 		                                                   WHERE CPN_ID = CP.CPN_ID
 		                                                   WHERE CPN_ID = CP.CPN_ID
 		                                                   AND CPN_TARGET = 'G260_11' 
 		                                                   AND CPN_TARGET = 'G260_11' 
@@ -630,7 +651,6 @@
 		                                                                  )
 		                                                                  )
 		                                                  ) >0
 		                                                  ) >0
 		                        ) 
 		                        ) 
-		                        */
 		                        OR /* 적용대상:브랜드*/
 		                        OR /* 적용대상:브랜드*/
 		                        (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
 		                        (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1) FROM TB_COUPON_REFVAL
 		                                                   WHERE CPN_ID = CP.CPN_ID
 		                                                   WHERE CPN_ID = CP.CPN_ID
@@ -685,9 +705,11 @@
 		   , CURR_PRICE
 		   , CURR_PRICE
 		   , PC_CURR_PRICE
 		   , PC_CURR_PRICE
 		   , MO_CURR_PRICE
 		   , MO_CURR_PRICE
+		   , APP_CURR_PRICE
 		   , STAFF_CURR_PRICE
 		   , STAFF_CURR_PRICE
 		   , STAFF_PC_CURR_PRICE
 		   , STAFF_PC_CURR_PRICE
 		   , STAFF_MO_CURR_PRICE
 		   , STAFF_MO_CURR_PRICE
+		   , STAFF_APP_CURR_PRICE
 		   )
 		   )
 		    <include refid="getGoodsBenefitList_sql"/>
 		    <include refid="getGoodsBenefitList_sql"/>
 	</insert>
 	</insert>
@@ -701,9 +723,11 @@
 		       , CURR_PRICE
 		       , CURR_PRICE
 		       , PC_CURR_PRICE
 		       , PC_CURR_PRICE
 		       , MO_CURR_PRICE
 		       , MO_CURR_PRICE
+		       , APP_CURR_PRICE
 		       , STAFF_CURR_PRICE
 		       , STAFF_CURR_PRICE
 		       , STAFF_PC_CURR_PRICE
 		       , STAFF_PC_CURR_PRICE
 		       , STAFF_MO_CURR_PRICE
 		       , STAFF_MO_CURR_PRICE
+		       , STAFF_APP_CURR_PRICE
 		       , REG_DT
 		       , REG_DT
 		  )
 		  )
 		  (
 		  (
@@ -720,16 +744,20 @@
 		    <if test="usableCustGb != null and usableCustGb == 'G100_00'">
 		    <if test="usableCustGb != null and usableCustGb == 'G100_00'">
 		   , PC_CURR_PRICE = B.PC_CURR_PRICE
 		   , PC_CURR_PRICE = B.PC_CURR_PRICE
 		   , MO_CURR_PRICE = B.MO_CURR_PRICE
 		   , MO_CURR_PRICE = B.MO_CURR_PRICE
+		   , APP_CURR_PRICE = B.APP_CURR_PRICE
 		   , STAFF_PC_CURR_PRICE = B.STAFF_PC_CURR_PRICE
 		   , STAFF_PC_CURR_PRICE = B.STAFF_PC_CURR_PRICE
 		   , STAFF_MO_CURR_PRICE = B.STAFF_MO_CURR_PRICE
 		   , STAFF_MO_CURR_PRICE = B.STAFF_MO_CURR_PRICE
+		   , STAFF_APP_CURR_PRICE = B.STAFF_APP_CURR_PRICE
 		    </if>
 		    </if>
 		    <if test="usableCustGb != null and usableCustGb == 'G100_10'">
 		    <if test="usableCustGb != null and usableCustGb == 'G100_10'">
 		   , PC_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.PC_CURR_PRICE >= B.PC_CURR_PRICE, B.PC_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.PC_CURR_PRICE)
 		   , PC_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.PC_CURR_PRICE >= B.PC_CURR_PRICE, B.PC_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.PC_CURR_PRICE)
 		   , MO_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.MO_CURR_PRICE >= B.MO_CURR_PRICE, B.MO_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.MO_CURR_PRICE)
 		   , MO_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.MO_CURR_PRICE >= B.MO_CURR_PRICE, B.MO_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.MO_CURR_PRICE)
+		   , APP_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.APP_CURR_PRICE >= B.APP_CURR_PRICE, B.APP_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.APP_CURR_PRICE)
 		    </if>
 		    </if>
 		    <if test="usableCustGb != null and usableCustGb == 'G100_20'">
 		    <if test="usableCustGb != null and usableCustGb == 'G100_20'">
 		   , STAFF_PC_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_PC_CURR_PRICE >= B.STAFF_PC_CURR_PRICE, B.STAFF_PC_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_PC_CURR_PRICE)
 		   , STAFF_PC_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_PC_CURR_PRICE >= B.STAFF_PC_CURR_PRICE, B.STAFF_PC_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_PC_CURR_PRICE)
 		   , STAFF_MO_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_MO_CURR_PRICE >= B.STAFF_MO_CURR_PRICE, B.STAFF_MO_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_MO_CURR_PRICE)
 		   , STAFF_MO_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_MO_CURR_PRICE >= B.STAFF_MO_CURR_PRICE, B.STAFF_MO_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_MO_CURR_PRICE)
+		   , STAFF_APP_CURR_PRICE = IF (TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_APP_CURR_PRICE >= B.STAFF_APP_CURR_PRICE, B.STAFF_APP_CURR_PRICE, TB_GOODS_BENEFIT_PRICE_TEMP.STAFF_APP_CURR_PRICE)
 		    </if>
 		    </if>
 	</update>
 	</update>
 	
 	
@@ -748,9 +776,11 @@
 		    , CURR_PRICE
 		    , CURR_PRICE
 		    , PC_CURR_PRICE
 		    , PC_CURR_PRICE
 		    , MO_CURR_PRICE
 		    , MO_CURR_PRICE
+		    , APP_CURR_PRICE
 		    , STAFF_CURR_PRICE
 		    , STAFF_CURR_PRICE
 		    , STAFF_PC_CURR_PRICE
 		    , STAFF_PC_CURR_PRICE
 		    , STAFF_MO_CURR_PRICE
 		    , STAFF_MO_CURR_PRICE
+		    , STAFF_APP_CURR_PRICE
 		    , REG_DT
 		    , REG_DT
 		    )
 		    )
 		SELECT GOODS_CD
 		SELECT GOODS_CD
@@ -758,9 +788,11 @@
 		     , CURR_PRICE
 		     , CURR_PRICE
 		     , PC_CURR_PRICE
 		     , PC_CURR_PRICE
 		     , MO_CURR_PRICE
 		     , MO_CURR_PRICE
+		     , APP_CURR_PRICE
 		     , STAFF_CURR_PRICE
 		     , STAFF_CURR_PRICE
 		     , STAFF_PC_CURR_PRICE
 		     , STAFF_PC_CURR_PRICE
 		     , STAFF_MO_CURR_PRICE
 		     , STAFF_MO_CURR_PRICE
+		     , STAFF_APP_CURR_PRICE
 		     , NOW()
 		     , NOW()
 		FROM TB_GOODS_BENEFIT_PRICE_TEMP
 		FROM TB_GOODS_BENEFIT_PRICE_TEMP
 	</insert>
 	</insert>