|
|
@@ -1073,6 +1073,103 @@
|
|
|
<!-- 상품의 사은품 목록 -->
|
|
|
<select id="getFreeGoodsList" parameterType="Goods" resultType="Freegift">
|
|
|
/* TsfGoods.getFreeGoodsList */
|
|
|
+ WITH TAB_GOODS AS (
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , SUPPLY_COMP_CD
|
|
|
+ , BRAND_CD
|
|
|
+ FROM TB_GOODS
|
|
|
+ WHERE GOODS_CD = #{goodsCd}
|
|
|
+ )
|
|
|
+ , TAB_FREEGIFT AS (
|
|
|
+ SELECT A.FREEGIFT_SQ
|
|
|
+ , B.FREEGIFT_SECTION_SQ
|
|
|
+ , A.ALL_YN -- 모두지급
|
|
|
+ , B.SECTION_GB -- G810_10|수량, G810_11|금액
|
|
|
+ , B.SECTION_VAL
|
|
|
+ , D.GOODS_CD
|
|
|
+ FROM TB_FREEGIFT A
|
|
|
+ INNER JOIN TB_FREEGIFT_SECTION B ON A.FREEGIFT_SQ = B.FREEGIFT_SQ
|
|
|
+ AND B.DEL_YN = 'N'
|
|
|
+ INNER JOIN (SELECT D.FREEGIFT_SQ
|
|
|
+ , G.GOODS_CD
|
|
|
+ FROM TAB_GOODS G
|
|
|
+ INNER JOIN TB_FREEGIFT_GOODS D ON G.GOODS_CD = D.TARGET_VAL
|
|
|
+ AND D.GOODS_GB IN ('G800_10', 'G800_20')
|
|
|
+ AND D.TARGET_GB = 'G260_10' -- 상품코드
|
|
|
+ AND D.DEL_YN = 'N'
|
|
|
+ UNION
|
|
|
+ SELECT S.FREEGIFT_SQ
|
|
|
+ , G.GOODS_CD
|
|
|
+ FROM TAB_GOODS G
|
|
|
+ INNER JOIN TB_FREEGIFT_GOODS S ON G.SUPPLY_COMP_CD = S.TARGET_VAL
|
|
|
+ AND S.GOODS_GB IN ('G800_10', 'G800_20')
|
|
|
+ AND S.TARGET_GB = 'G260_13' -- 공급업체코드
|
|
|
+ AND S.DEL_YN = 'N'
|
|
|
+ UNION
|
|
|
+ SELECT SB.FREEGIFT_SQ
|
|
|
+ , G.GOODS_CD
|
|
|
+ FROM TAB_GOODS G
|
|
|
+ INNER JOIN TB_FREEGIFT_GOODS SB ON G.BRAND_CD = SB.TARGET_VAL
|
|
|
+ AND SB.GOODS_GB IN ('G800_10', 'G800_20')
|
|
|
+ AND SB.TARGET_GB = 'G260_12' -- 브랜드코드
|
|
|
+ AND SB.DEL_YN = 'N'
|
|
|
+ ) D ON A.FREEGIFT_SQ = D.FREEGIFT_SQ
|
|
|
+ LEFT OUTER JOIN TB_FREEGIFT_GOODS E ON A.FREEGIFT_SQ = E.FREEGIFT_SQ
|
|
|
+ AND E.GOODS_GB = 'G800_30'
|
|
|
+ AND E.TARGET_GB = 'G260_10'
|
|
|
+ AND E.DEL_YN = 'N'
|
|
|
+ AND E.TARGET_VAL = #{goodsCd}
|
|
|
+ WHERE NOW() BETWEEN A.FREEGIFT_STAT AND A.FREEGIFT_EDDT
|
|
|
+ AND A.FREEGIFT_STAT = 'G232_11'
|
|
|
+ AND NULLIF(E.TARGET_VAL, '') IS NULL
|
|
|
+ AND A.DEL_YN = 'N'
|
|
|
+ ORDER BY A.FREEGIFT_SQ, B.FREEGIFT_SECTION_SQ
|
|
|
+ )
|
|
|
+ , TAB_FREEGOODS AS (
|
|
|
+ SELECT B.ALL_YN
|
|
|
+ , C.FREEGIFT_SQ
|
|
|
+ , C.FREEGIFT_SECTION_SQ
|
|
|
+ , C.FREEGIFT_VAL_SQ
|
|
|
+ , F.GOODS_NM
|
|
|
+ , C.ITEM_QTY
|
|
|
+ , CASE WHEN B.ALL_YN = 'Y' THEN 1
|
|
|
+ ELSE (RANK() OVER (PARTITION BY B.ALL_YN , C.FREEGIFT_SQ, C.FREEGIFT_SECTION_SQ
|
|
|
+ ORDER BY C.FREEGIFT_SQ , C.FREEGIFT_SECTION_SQ , C.FREEGIFT_VAL_SQ))
|
|
|
+ END AS ROWNUM
|
|
|
+ FROM TAB_FREEGIFT B
|
|
|
+ INNER JOIN TB_FREEGIFT_VAL C ON B.FREEGIFT_SQ = C.FREEGIFT_SQ
|
|
|
+ AND B.FREEGIFT_SECTION_SQ = C.FREEGIFT_SECTION_SQ
|
|
|
+ AND C.DEL_YN = 'N'
|
|
|
+ AND C.LEFT_QTY - C.ITEM_QTY > 0 -- 사은품 잔여수량
|
|
|
+ INNER JOIN TB_FREE_GOODS F ON F.PRODUCT_NO = C.PRODUCT_NO
|
|
|
+ AND F.USE_YN = 'Y'
|
|
|
+ )
|
|
|
+ SELECT Z.*
|
|
|
+ FROM (
|
|
|
+ SELECT F.FREEGIFT_SQ
|
|
|
+ , F.FREEGIFT_SECTION_SQ
|
|
|
+ , F.ALL_YN -- 모두지급
|
|
|
+ , F.SECTION_GB -- G810_10|수량, G810_11|금액
|
|
|
+ , F.SECTION_VAL
|
|
|
+ , FG.GOODS_NM
|
|
|
+ , GROUP_CONCAT(CONCAT(FG.GOODS_NM,':',FG.ITEM_QTY)) AS FREE_GOODS
|
|
|
+ -- , RANK() OVER (PARTITION BY F.FREEGIFT_SQ , F.FREEGIFT_SECTION_SQ ORDER BY FG.FREEGIFT_VAL_SQ ) AS RNUM
|
|
|
+ FROM TAB_FREEGIFT F
|
|
|
+ INNER JOIN TAB_FREEGOODS FG ON F.FREEGIFT_SQ = FG.FREEGIFT_SQ
|
|
|
+ AND F.FREEGIFT_SECTION_SQ = F.FREEGIFT_SECTION_SQ
|
|
|
+ AND FG.ROWNUM = 1
|
|
|
+ GROUP BY F.FREEGIFT_SQ , F.FREEGIFT_SECTION_SQ , F.ALL_YN , F.SECTION_GB , F.SECTION_VAL
|
|
|
+ ORDER BY F.FREEGIFT_SQ, F.FREEGIFT_SECTION_SQ
|
|
|
+ ) Z
|
|
|
+ WHERE 1 = 1
|
|
|
+ <if test="maxRownum != null and maxRownum > 0">
|
|
|
+ LIMIT #{maxRownum}
|
|
|
+ </if>
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!-- 상품의 사은품 목록 -->
|
|
|
+ <select id="getFreeGoodsList_org" parameterType="Goods" resultType="Freegift">
|
|
|
+ /* TsfGoods.getFreeGoodsList_org */
|
|
|
SELECT Z.*
|
|
|
FROM (
|
|
|
WITH TAB_GOODS AS (
|