Jelajahi Sumber

사은품관련 업체/브랜 조건 추가

eskim 5 tahun lalu
induk
melakukan
6c094b05e3

+ 38 - 12
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -1075,6 +1075,13 @@
 		/* TsfGoods.getFreeGoodsList */
 		SELECT Z.*
 		FROM (
+		      WITH TAB_GOODS AS (
+		          SELECT GOODS_CD
+		               , SUPPLY_COMP_CD
+		               , BRAND_CD
+		          FROM TB_GOODS
+		          WHERE GOODS_CD = #{goodsCd}
+		      )
 		      SELECT  A.FREEGIFT_SQ
 		            , B.FREEGIFT_SECTION_SQ
 		            , C.FREEGIFT_VAL_SQ
@@ -1085,29 +1092,48 @@
 		            , F.GOODS_NM            -- 사은품 명
 		            , C.ITEM_QTY            -- 사은품 지급 수량
 		            , C.LEFT_QTY            -- 잔여수량
-		            , D.TARGET_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 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 > 0    -- 사은품 잔여수량
+		                                   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'
-		      INNER JOIN TB_FREEGIFT_GOODS D ON A.FREEGIFT_SQ = D.FREEGIFT_SQ
-		                                   AND D.GOODS_GB  IN ( 'G800_10',  'G800_20')
-		                                   AND D.TARGET_GB = 'G260_10'
-		                                   AND D.DEL_YN = 'N'
-		                                   AND D.TARGET_VAL = #{goodsCd}
+		      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}
+		                                          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 E.TARGET_VAL IS NULL
+		      AND NULLIF(E.TARGET_VAL,'') IS NULL
 		      AND A.DEL_YN = 'N'
 		      ORDER BY A.FREEGIFT_SQ, B.FREEGIFT_SECTION_SQ, C.FREEGIFT_VAL_SQ
 		) Z