|
@@ -479,4 +479,235 @@
|
|
|
WHERE GOODS_CD = #{goodsCd}
|
|
WHERE GOODS_CD = #{goodsCd}
|
|
|
</update>
|
|
</update>
|
|
|
|
|
|
|
|
|
|
+ <!-- 상품 혜택가 목록 -->
|
|
|
|
|
+ <sql id="getGoodsBenefitList_sql">
|
|
|
|
|
+ SELECT GOODS_CD
|
|
|
|
|
+ , CUST_GB
|
|
|
|
|
+ , CURR_PRICE
|
|
|
|
|
+ , MIN(CURR_PRICE -
|
|
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN
|
|
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> DC_PVAL THEN MAX_DC_AMT ELSE DC_PVAL END)
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((CURR_PRICE * DC_PVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((CURR_PRICE * DC_PVAL / 100) / #{pointUnit}) * #{pointUnit} END)
|
|
|
|
|
+ END) )AS PC_PRICE
|
|
|
|
|
+ , MIN(CURR_PRICE -
|
|
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN
|
|
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> DC_MVAL THEN MAX_DC_AMT ELSE DC_MVAL END)
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ (CASE WHEN NVL(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_PRICE
|
|
|
|
|
+ , STAFF_CURR_PRICE
|
|
|
|
|
+ , MIN(STAFF_CURR_PRICE -
|
|
|
|
|
+ ( CASE WHEN DC_WAY = 'V' THEN
|
|
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> DC_PVAL THEN MAX_DC_AMT ELSE DC_PVAL END)
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> FLOOR((STAFF_CURR_PRICE * DC_PVAL / 100) / #{pointUnit}) * #{pointUnit} THEN MAX_DC_AMT ELSE FLOOR((STAFF_CURR_PRICE * DC_PVAL / 100) / #{pointUnit}) * #{pointUnit} END)
|
|
|
|
|
+ END) )AS STAFF_PC_PRICE
|
|
|
|
|
+ , MIN(STAFF_CURR_PRICE -
|
|
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN
|
|
|
|
|
+ (CASE WHEN NVL(MAX_DC_AMT, 0) >0 AND MAX_DC_AMT <![CDATA[<]]> DC_MVAL THEN MAX_DC_AMT ELSE DC_MVAL END)
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ (CASE WHEN NVL(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_PRICE
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT CP.CPN_ID
|
|
|
|
|
+ , CP.CPN_NM
|
|
|
|
|
+ , CP.DC_WAY /*할인방식*/
|
|
|
|
|
+ , CP.DC_PVAL /*PC 할인값*/
|
|
|
|
|
+ , CP.DC_MVAL /*MO 할인값*/
|
|
|
|
|
+ , CP.MAX_DC_AMT /*최대할인금액*/
|
|
|
|
|
+ , CP.CURR_PRICE /*전체 판매가*/
|
|
|
|
|
+ , CP.CURR_PRICE_YN
|
|
|
|
|
+ , CP.STAFF_CURR_PRICE /*임직원판매가*/
|
|
|
|
|
+ , CP.STAFF_CURR_PRICE_YN
|
|
|
|
|
+ , CP.AVAIL_EDDT
|
|
|
|
|
+ , CP.USABLE_CUST_GB AS CUST_GB
|
|
|
|
|
+ , CP.GOODS_CD
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT CP.CPN_ID /*쿠폰ID*/
|
|
|
|
|
+ , CP.CPN_NM /*쿠폰명*/
|
|
|
|
|
+ , CP.DC_WAY /*할인방식*/
|
|
|
|
|
+ , CP.DC_PVAL /*PC할인값*/
|
|
|
|
|
+ , CP.DC_MVAL /*모바일할인값*/
|
|
|
|
|
+ , CP.MAX_DC_AMT /*최대할인금액*/
|
|
|
|
|
+ , G.CURR_PRICE /*현재판매가*/
|
|
|
|
|
+ , CASE WHEN BUY_LIMIT_AMT <![CDATA[<=]]> G.CURR_PRICE THEN 'Y'
|
|
|
|
|
+ ELSE 'N'
|
|
|
|
|
+ END AS CURR_PRICE_YN
|
|
|
|
|
+ , G.CURR_PRICE AS STAFF_CURR_PRICE /*임직원판매가*/
|
|
|
|
|
+ , CASE WHEN BUY_LIMIT_AMT <![CDATA[<=]]> G.CURR_PRICE THEN 'Y'
|
|
|
|
|
+ ELSE 'N'
|
|
|
|
|
+ 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
|
|
|
|
|
+ , CP.USABLE_CUST_GB /*쿠폰사용이 가능한 고객(G100_00:전체, G100_10:일반회원, G100_20:임직원)*/
|
|
|
|
|
+ , G.GOODS_CD
|
|
|
|
|
+ FROM TB_GOODS G
|
|
|
|
|
+ , TB_COUPON CP
|
|
|
|
|
+ WHERE CP.SITE_CD = '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() BETWEEN CP.DOWN_STDT AND CP.DOWN_EDDT
|
|
|
|
|
+ AND CP.DN_GB = 'G058_10' /* 자동다운로드(결제시)다운로드*/
|
|
|
|
|
+ AND CP.CPN_TYPE = 'G230_10' /*즉시할인쿠폰*/
|
|
|
|
|
+ AND CP.USABLE_CUST_GB = #{usableCustGb}
|
|
|
|
|
+ AND CP.USABLE_CUST_GRADE = 'G100_00' /* 사용가능고객등급이 일반만*/
|
|
|
|
|
+ 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 (
|
|
|
|
|
+ (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 NVL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
|
|
|
|
|
+ AND NVL(REF_BRAND_CD,G.BRAND_CD) = G.BRAND_CD
|
|
|
|
|
+ AND REF_VAL IN (SELECT CATE_CD
|
|
|
|
|
+ FROM TB_CATEGORY_GOODS
|
|
|
|
|
+ WHERE GOODS_CD = 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_12' /* 적용대상:브랜드*/
|
|
|
|
|
+ AND DEL_YN = 'N'
|
|
|
|
|
+ AND REF_VAL = G.BRAND_CD
|
|
|
|
|
+ AND NVL(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 NVL(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'
|
|
|
|
|
+ )
|
|
|
|
|
+ ) CP
|
|
|
|
|
+ ) Y
|
|
|
|
|
+ GROUP BY GOODS_CD ,CURR_PRICE, STAFF_CURR_PRICE, CUST_GB
|
|
|
|
|
+ </sql>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 상품혜택가 temp 테이블 삭제 -->
|
|
|
|
|
+ <delete id="deleteGoodsBenefitPriceTemp">
|
|
|
|
|
+ /* TsbGoods.deleteGoodsBenefitPriceTemp */
|
|
|
|
|
+ TRUNCATE TABLE TB_GOODS_BENEFIT_PRICE_TEMP
|
|
|
|
|
+ </delete>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 상품혜택가 temp 적용 등록 -->
|
|
|
|
|
+ <insert id="crteateGoodsBenefitPriceTemp" parameterType="Coupon" timeout="600">
|
|
|
|
|
+ /* TsbGoods.crteateGoodsBenefitPriceTemp */
|
|
|
|
|
+ INSERT INTO TB_GOODS_BENEFIT_PRICE_TEMP (
|
|
|
|
|
+ GOODS_CD
|
|
|
|
|
+ , CUST_GB
|
|
|
|
|
+ , CURR_PRICE
|
|
|
|
|
+ , PC_CURR_PRICE
|
|
|
|
|
+ , MO_CURR_PRICE
|
|
|
|
|
+ , STAFF_CURR_PRICE
|
|
|
|
|
+ , STAFF_PC_CURR_PRICE
|
|
|
|
|
+ , STAFF_MO_CURR_PRICE
|
|
|
|
|
+ )
|
|
|
|
|
+ <include refid="getGoodsBenefitList_sql"/>
|
|
|
|
|
+ </insert>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 상품혜택가 temp 적용 변경 -->
|
|
|
|
|
+ <update id="updateGoodsBenefitPriceTemp" parameterType="Coupon" timeout="600">
|
|
|
|
|
+ /* TsbGoods.updateGoodsBenefitPriceTemp */
|
|
|
|
|
+ INSERT TB_GOODS_BENEFIT_PRICE_TEMP (
|
|
|
|
|
+ GOODS_CD
|
|
|
|
|
+ , CUST_GB
|
|
|
|
|
+ , CURR_PRICE
|
|
|
|
|
+ , PC_CURR_PRICE
|
|
|
|
|
+ , MO_CURR_PRICE
|
|
|
|
|
+ , STAFF_CURR_PRICE
|
|
|
|
|
+ , STAFF_PC_CURR_PRICE
|
|
|
|
|
+ , STAFF_MO_CURR_PRICE
|
|
|
|
|
+ , REG_DT
|
|
|
|
|
+ )
|
|
|
|
|
+ (
|
|
|
|
|
+ SELECT C.*, NOW() FROM (
|
|
|
|
|
+ SELECT (
|
|
|
|
|
+ <include refid="getGoodsBenefitList_sql"/>
|
|
|
|
|
+ ) C
|
|
|
|
|
+ ) B
|
|
|
|
|
+
|
|
|
|
|
+ )
|
|
|
|
|
+ ON DUPLICATE KEY UPDATE
|
|
|
|
|
+ REG_DT = NOW()
|
|
|
|
|
+ , CURR_PRICE = B.CURR_PRICE
|
|
|
|
|
+ , STAFF_CURR_PRICE = B.STAFF_CURR_PRICE
|
|
|
|
|
+ <if test="custGb != null and custGb == 'G100_00'">
|
|
|
|
|
+ , PC_CURR_PRICE = B.PC_CURR_PRICE
|
|
|
|
|
+ , MO_CURR_PRICE = B.MO_CURR_PRICE
|
|
|
|
|
+ , STAFF_PC_CURR_PRICE = B.STAFF_PC_CURR_PRICE
|
|
|
|
|
+ , STAFF_MO_CURR_PRICE = B.STAFF_MO_CURR_PRICE
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="custGb != null and custGb == 'G100_10'">
|
|
|
|
|
+ , PC_CURR_PRICE = CASE WHEN B.PC_CURR_PRICE <![CDATA[<=]]> PC_CURR_PRICE THEN B.PC_CURR_PRICE
|
|
|
|
|
+ ELSE PC_CURR_PRICE END
|
|
|
|
|
+ , MO_CURR_PRICE = CASE WHEN B.MO_CURR_PRICE <![CDATA[<=]]> MO_CURR_PRICE THEN B.MO_CURR_PRICE
|
|
|
|
|
+ ELSE MO_CURR_PRICE END
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="custGb != null and custGb == 'G100_20'">
|
|
|
|
|
+ , STAFF_PC_CURR_PRICE = CASE WHEN B.STAFF_PC_CURR_PRICE <![CDATA[<=]]> STAFF_PC_CURR_PRICE THEN B.STAFF_PC_CURR_PRICE
|
|
|
|
|
+ ELSE STAFF_PC_CURR_PRICE END
|
|
|
|
|
+ , STAFF_MO_CURR_PRICE = CASE WHEN B.STAFF_MO_CURR_PRICE <![CDATA[<=]]> STAFF_MO_CURR_PRICE THEN B.STAFF_MO_CURR_PRICE
|
|
|
|
|
+ ELSE STAFF_MO_CURR_PRICE END
|
|
|
|
|
+ </if>
|
|
|
|
|
+ </update>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 상품혜택가 테이블 삭제 -->
|
|
|
|
|
+ <delete id="deleteGoodsBenefitPrice">
|
|
|
|
|
+ /* TsbGoods.deleteGoodsBenefitPrice */
|
|
|
|
|
+ DELETE TB_GOODS_BENEFIT_PRICE
|
|
|
|
|
+ </delete>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 상품혜택가 생성 -->
|
|
|
|
|
+ <insert id="createGoodsBenefitPrice" timeout="300">
|
|
|
|
|
+ /* TsbGoods.createGoodsBenefitPrice */
|
|
|
|
|
+ INSERT INTO TB_GOODS_BENEFIT_PRICE
|
|
|
|
|
+ ( GOODS_CD
|
|
|
|
|
+ , CUST_GB
|
|
|
|
|
+ , CURR_PRICE
|
|
|
|
|
+ , PC_CURR_PRICE
|
|
|
|
|
+ , MO_CURR_PRICE
|
|
|
|
|
+ , STAFF_CURR_PRICE
|
|
|
|
|
+ , STAFF_PC_CURR_PRICE
|
|
|
|
|
+ , STAFF_MO_CURR_PRICE
|
|
|
|
|
+ , REG_DT
|
|
|
|
|
+ )
|
|
|
|
|
+ SELECT GOODS_CD
|
|
|
|
|
+ , CUST_GB
|
|
|
|
|
+ , CURR_PRICE
|
|
|
|
|
+ , PC_CURR_PRICE
|
|
|
|
|
+ , MO_CURR_PRICE
|
|
|
|
|
+ , STAFF_CURR_PRICE
|
|
|
|
|
+ , STAFF_PC_CURR_PRICE
|
|
|
|
|
+ , STAFF_MO_CURR_PRICE
|
|
|
|
|
+ , NOW()
|
|
|
|
|
+ FROM TB_GOODS_BENEFIT_PRICE_TEMP
|
|
|
|
|
+ </insert>
|
|
|
|
|
+
|
|
|
</mapper>
|
|
</mapper>
|