瀏覽代碼

주문서개발중

jsh77b 5 年之前
父節點
當前提交
7c0224c45d
共有 1 個文件被更改,包括 280 次插入153 次删除
  1. 280 153
      src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

+ 280 - 153
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -1657,6 +1657,7 @@
 		  FROM TB_CUSTOMER CU
 		 WHERE 1=1
 		   AND CU.CUST_NO = #{custNo}
+		 LIMIT 1
 	</select>
 	
 	<!-- 배송지정보 조회 -->
@@ -1748,8 +1749,8 @@
 		     , CP.MAX_DC_AMT
 		     , CP.BUY_LIMIT_AMT 
 		     , CASE WHEN CP.DC_WAY = 'G240_11' 
-		            THEN (((CURR_PRCE + ADD_PRICE) * GOODS_QTY) * CP.DC_PVAL) / 100 
-		            ELSE CP.DC_PVAL
+		            THEN (((Z.CURR_PRCE + Z.ADD_PRICE) * Z.GOODS_QTY) * CP.DC_PVAL) / 100 
+		            ELSE CP.DC_PVAL * Z.GOODS_QTY
 		            END  PC_CURR_PRICE
 		FROM   TB_COUPON CP
 		INNER  JOIN TB_COUPON_CUST_GBN CGB
@@ -1759,87 +1760,95 @@
 		ON     CP.CPN_ID = CGR.CPN_ID
 		AND    CGR.USABLE_CUST_GRADE IN ('G110_40', 'G110_50')
 		INNER  JOIN (
-			SELECT CR.CPN_ID
-			     , GD.GOODS_CD
-			     , GD.CURR_PRICE
-			     , GD.ADD_PRICE
-			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
-			FROM   TB_COUPON_REFVAL CR
-			INNER  JOIN GOODS_DATA GD
-			ON     CR.REF_VAL = GD.GOODS_CD
-			WHERE  1=1
-			AND    CR.CPN_TARGET = 'G260_10' -- 상품
-			AND    CR.DEL_YN = 'N'
-			UNION
-			SELECT CR.CPN_ID
-			     , GD.GOODS_CD
-			     , GD.CURR_PRICE
-			     , GD.ADD_PRICE
-			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
-			FROM   (
-				SELECT C4.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   TB_CATE_4SRCH C4
-				LEFT   OUTER JOIN (
-					SELECT 1 AS X
-					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
-				ON     1=1
-				WHERE  1=1
-				AND    C4.SITE_CD = 'G000_10'
-				AND    C4.CATE_TYPE = 'G031_10'
-				ORDER  BY LEAF_CATE_NO 
-				     , CATE_LVL
-			) C4SRCH
-			INNER  JOIN TB_COUPON_REFVAL CR
-			ON     C4SRCH.CATE_NO = CR.REF_VAL
-			INNER  JOIN TB_CATE_GOODS CG
-			ON     C4SRCH.LEAF_CATE_NO = CG.CATE_NO
-			INNER  JOIN GOODS_DATA GD
-			ON     CG.GOODS_CD = GD.GOODS_CD
-			WHERE  C4SRCH.CATE_NO IS NOT NULL
-			AND    CR.CPN_TARGET = 'G260_11' -- 카테고리
-			AND    CR.DEL_YN = 'N'
-			UNION
-			SELECT CR1.CPN_ID
-			     , GD.GOODS_CD
-			     , GD.CURR_PRICE
-			     , GD.ADD_PRICE
-			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
-			FROM   GOODS_DATA GD
-			INNER  JOIN TB_COUPON_REFVAL CR1 
-			ON     GD.SUPPLY_COMP_CD = CR1.REF_VAL
-			AND    CR1.CPN_TARGET = 'G260_12' -- 브랜드
-			AND    CR1.DEL_YN = 'N'
-			INNER  JOIN TB_COUPON_REFVAL CR2 
-			ON     GD.SUPPLY_COMP_CD = CR2.REF_VAL
-			AND    CR2.CPN_TARGET = 'G260_13' -- 공급업체
-			AND    CR2.DEL_YN = 'N'
+				SELECT X.*
+				FROM (
+					SELECT CR.CPN_ID
+					     , GD.GOODS_CD
+					     , GD.CURR_PRICE
+					     , GD.ADD_PRICE
+					     , GD.GOODS_QTY
+					     , GD.GOODS_TYPE
+					FROM   TB_COUPON_REFVAL CR
+					INNER  JOIN GOODS_DATA GD
+					ON     CR.REF_VAL = GD.GOODS_CD
+					WHERE  1=1
+					AND    CR.CPN_TARGET = 'G260_10' -- 상품
+					AND    CR.DEL_YN = 'N'
+					UNION
+					SELECT CR.CPN_ID
+					     , GD.GOODS_CD
+					     , GD.CURR_PRICE
+					     , GD.ADD_PRICE
+					     , GD.GOODS_QTY
+					     , GD.GOODS_TYPE
+					FROM   (
+						SELECT C4.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   TB_CATE_4SRCH C4
+						LEFT   OUTER JOIN (
+							SELECT 1 AS X
+							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
+						ON     1=1
+						WHERE  1=1
+						AND    C4.SITE_CD = 'G000_10'
+						AND    C4.CATE_TYPE = 'G031_10'
+						ORDER  BY LEAF_CATE_NO 
+						     , CATE_LVL
+					) C4SRCH
+					INNER  JOIN TB_COUPON_REFVAL CR
+					ON     C4SRCH.CATE_NO = CR.REF_VAL
+					INNER  JOIN TB_CATE_GOODS CG
+					ON     C4SRCH.LEAF_CATE_NO = CG.CATE_NO
+					INNER  JOIN GOODS_DATA GD
+					ON     CG.GOODS_CD = GD.GOODS_CD
+					WHERE  C4SRCH.CATE_NO IS NOT NULL
+					AND    CR.CPN_TARGET = 'G260_11' -- 카테고리
+					AND    CR.DEL_YN = 'N'
+					UNION
+					SELECT CR1.CPN_ID
+					     , GD.GOODS_CD
+					     , GD.CURR_PRICE
+					     , GD.ADD_PRICE
+					     , GD.GOODS_QTY
+					     , GD.GOODS_TYPE
+					FROM   GOODS_DATA GD
+					INNER  JOIN TB_COUPON_REFVAL CR1 
+					ON     GD.SUPPLY_COMP_CD = CR1.REF_VAL
+					AND    CR1.CPN_TARGET = 'G260_12' -- 브랜드
+					AND    CR1.DEL_YN = 'N'
+					INNER  JOIN TB_COUPON_REFVAL CR2 
+					ON     GD.SUPPLY_COMP_CD = CR2.REF_VAL
+					AND    CR2.CPN_TARGET = 'G260_13' -- 공급업체
+					AND    CR2.DEL_YN = 'N'
+				) X
+				LEFT  OUTER JOIN TB_COUPON_REFVAL CR
+				ON    X.CPN_ID = CR.CPN_ID
+				AND   X.GOODS_CD = CR.REF_VAL 
+				AND   CR.CPN_TARGET = 'G260_14' -- 제외상품
+				AND   CR.DEL_YN = 'N'
 		) Z
 		ON     Z.CPN_ID = CP.CPN_ID
 		WHERE  1=1
-		AND    CP.SITE_CD = '10'
+		AND    CP.SITE_CD = '10' -- 자사몰
 		AND    CP.CPN_TYPE = 'G230_10' -- 즉시할인
 		AND    CP.DOWN_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
 		AND    CP.DOWN_EDDT > CURRENT_TIMESTAMP
@@ -1897,92 +1906,210 @@
 		ON     CP.CPN_ID = CGR.CPN_ID
 		AND    CGR.USABLE_CUST_GRADE IN ('G110_40', 'G110_50')
 		INNER  JOIN (
-			SELECT CR.CPN_ID
-			     , GD.GOODS_CD
-			     , GD.CURR_PRICE
-			     , GD.ADD_PRICE
-			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
-			FROM   TB_COUPON_REFVAL CR
-			INNER  JOIN GOODS_DATA GD
-			ON     CR.REF_VAL = GD.GOODS_CD
+				SELECT X.*
+				FROM (
+					SELECT CR.CPN_ID
+					     , GD.GOODS_CD
+					     , GD.CURR_PRICE
+					     , GD.ADD_PRICE
+					     , GD.GOODS_QTY
+					     , GD.GOODS_TYPE
+					FROM   TB_COUPON_REFVAL CR
+					INNER  JOIN GOODS_DATA GD
+					ON     CR.REF_VAL = GD.GOODS_CD
+					WHERE  1=1
+					AND    CR.CPN_TARGET = 'G260_10' -- 상품
+					AND    CR.DEL_YN = 'N'
+					UNION
+					SELECT CR.CPN_ID
+					     , GD.GOODS_CD
+					     , GD.CURR_PRICE
+					     , GD.ADD_PRICE
+					     , GD.GOODS_QTY
+					     , GD.GOODS_TYPE
+					FROM   (
+						SELECT C4.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   TB_CATE_4SRCH C4
+						LEFT   OUTER JOIN (
+							SELECT 1 AS X
+							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
+						ON     1=1
+						WHERE  1=1
+						AND    C4.SITE_CD = 'G000_10'
+						AND    C4.CATE_TYPE = 'G031_10'
+						ORDER  BY LEAF_CATE_NO 
+						     , CATE_LVL
+					) C4SRCH
+					INNER  JOIN TB_COUPON_REFVAL CR
+					ON     C4SRCH.CATE_NO = CR.REF_VAL
+					INNER  JOIN TB_CATE_GOODS CG
+					ON     C4SRCH.LEAF_CATE_NO = CG.CATE_NO
+					INNER  JOIN GOODS_DATA GD
+					ON     CG.GOODS_CD = GD.GOODS_CD
+					WHERE  C4SRCH.CATE_NO IS NOT NULL
+					AND    CR.CPN_TARGET = 'G260_11' -- 카테고리
+					AND    CR.DEL_YN = 'N'
+					UNION
+					SELECT CR1.CPN_ID
+					     , GD.GOODS_CD
+					     , GD.CURR_PRICE
+					     , GD.ADD_PRICE
+					     , GD.GOODS_QTY
+					     , GD.GOODS_TYPE
+					FROM   GOODS_DATA GD
+					INNER  JOIN TB_COUPON_REFVAL CR1 
+					ON     GD.SUPPLY_COMP_CD = CR1.REF_VAL
+					AND    CR1.CPN_TARGET = 'G260_12' -- 브랜드
+					AND    CR1.DEL_YN = 'N'
+					INNER  JOIN TB_COUPON_REFVAL CR2 
+					ON     GD.SUPPLY_COMP_CD = CR2.REF_VAL
+					AND    CR2.CPN_TARGET = 'G260_13' -- 공급업체
+					AND    CR2.DEL_YN = 'N'
+				) X
+				LEFT  OUTER JOIN TB_COUPON_REFVAL CR
+				ON    X.CPN_ID = CR.CPN_ID
+				AND   X.GOODS_CD = CR.REF_VAL 
+				AND   CR.CPN_TARGET = 'G260_14' -- 제외상품
+				AND   CR.DEL_YN = 'N'
+		) Z
+		ON     Z.CPN_ID = CP.CPN_ID
+		INNER  JOIN TB_CUST_COUPON CCP
+		ON     CP.CPN_ID = CCP.CPN_ID
+		WHERE  1=1
+		AND    CP.SITE_CD = '10'
+		AND    CP.CPN_TYPE IN ('G230_11', 'G230_20') -- 상품쿠폰, 장바구니쿠폰
+		AND    CP.DOWN_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
+		AND    CP.DOWN_EDDT > CURRENT_TIMESTAMP
+	</select>
+	
+	<!-- 사은품 : 1차조건 적용된 사음품 정보, 상품 금액 조회 -->
+	<select id="getFreeGiftGoodsApplyAmt" parameterType="Order" resultType="Order">
+		/* TsfOrder.getFreeGiftGoodsApplyAmt */
+		WITH GOODS_DATA AS (
+			SELECT CA.GOODS_CD
+			     , G.SUPPLY_COMP_CD
+			     , G.BRAND_CD
+			     , CA.GOODS_QTY 
+			     , G.CURR_PRICE
+			     , OP.ADD_PRICE 
+			     , G.GOODS_TYPE
+			FROM   TB_CART CA
+			INNER  JOIN TB_CART_DETAIL CD
+			ON     CA.CART_SQ = CD.CART_SQ
+			INNER  JOIN TB_GOODS G
+			ON     CA.GOODS_CD = G.GOODS_CD
+			LEFT   OUTER JOIN TB_OPTION OP
+			ON     G.GOODS_CD = OP.GOODS_CD
+			AND    CD.OPT_CD = OP.OPT_CD
 			WHERE  1=1
-			AND    CR.CPN_TARGET = 'G260_10' -- 상품
-			AND    CR.DEL_YN = 'N'
-			UNION
-			SELECT CR.CPN_ID
+			AND    G.GOODS_STAT = 'G008_90' -- 승인완료
+			AND    G.SELF_GOODS_YN = 'Y' -- 자사상품
+			AND    CA.CUST_NO = 0 -- 고객번호
+		)
+		SELECT FGG.FREEGIFT_SQ
+		     , SUM(IFNULL((FGG.CURR_PRICE + FGG.ADD_PRICE) * FGG.GOODS_QTY,0)) FREEGIFT_AMT
+		FROM   TB_FREEGIFT FG
+		INNER  JOIN (
+			SELECT FGG.FREEGIFT_SQ
 			     , GD.GOODS_CD
 			     , GD.CURR_PRICE
 			     , GD.ADD_PRICE
 			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
-			FROM   (
-				SELECT C4.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   TB_CATE_4SRCH C4
-				LEFT   OUTER JOIN (
-					SELECT 1 AS X
-					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
-				ON     1=1
-				WHERE  1=1
-				AND    C4.SITE_CD = 'G000_10'
-				AND    C4.CATE_TYPE = 'G031_10'
-				ORDER  BY LEAF_CATE_NO 
-				     , CATE_LVL
-			) C4SRCH
-			INNER  JOIN TB_COUPON_REFVAL CR
-			ON     C4SRCH.CATE_NO = CR.REF_VAL
-			INNER  JOIN TB_CATE_GOODS CG
-			ON     C4SRCH.LEAF_CATE_NO = CG.CATE_NO
+			FROM   TB_FREEGIFT_GOODS FGG
 			INNER  JOIN GOODS_DATA GD
-			ON     CG.GOODS_CD = GD.GOODS_CD
-			WHERE  C4SRCH.CATE_NO IS NOT NULL
-			AND    CR.CPN_TARGET = 'G260_11' -- 카테고리
-			AND    CR.DEL_YN = 'N'
+			ON     FGG.TARGET_VAL = GD.BRAND_CD
+			WHERE  1=1
+			AND    FGG.GOODS_GB = 'G800_20' -- 적용상품
+			AND    FGG.TARGET_GB= 'G260_10' -- 상품
+			AND    FGG.DEL_YN = 'N'
 			UNION
-			SELECT CR1.CPN_ID
+			SELECT FGG1.FREEGIFT_SQ
 			     , GD.GOODS_CD
 			     , GD.CURR_PRICE
 			     , GD.ADD_PRICE
 			     , GD.GOODS_QTY
-			     , GD.GOODS_TYPE
 			FROM   GOODS_DATA GD
-			INNER  JOIN TB_COUPON_REFVAL CR1 
-			ON     GD.SUPPLY_COMP_CD = CR1.REF_VAL
-			AND    CR1.CPN_TARGET = 'G260_12' -- 브랜드
-			AND    CR1.DEL_YN = 'N'
-			INNER  JOIN TB_COUPON_REFVAL CR2 
-			ON     GD.SUPPLY_COMP_CD = CR2.REF_VAL
-			AND    CR2.CPN_TARGET = 'G260_13' -- 공급업체
-			AND    CR2.DEL_YN = 'N'
-		) Z
-		ON     Z.CPN_ID = CP.CPN_ID
-		INNER  JOIN TB_CUST_COUPON CCP
-		ON     CP.CPN_ID = CCP.CPN_ID
+			INNER  JOIN TB_FREEGIFT_GOODS FGG1
+			ON     GD.SUPPLY_COMP_CD = FGG1.TARGET_VAL
+			AND    FGG1.GOODS_GB = 'G800_20' -- 적용상품
+			AND    FGG1.TARGET_GB= 'G260_12' -- 공급처
+			AND    FGG1.DEL_YN = 'N'
+			INNER  JOIN TB_FREEGIFT_GOODS FGG2
+			ON     GD.BRAND_CD = FGG2.TARGET_VAL
+			AND    FGG2.GOODS_GB = 'G800_20' -- 적용상품
+			AND    FGG2.TARGET_GB= 'G260_11' -- 브랜드
+			AND    FGG2.DEL_YN = 'N'
+		) FGG
+		ON     FG.FREEGIFT_SQ = FGG.FREEGIFT_SQ 
+		LEFT   OUTER JOIN TB_FREEGIFT_GOODS NOT_APPLY_GOODS
+		ON     FGG.FREEGIFT_SQ = NOT_APPLY_GOODS.FREEGIFT_SQ
+		AND    FGG.GOODS_CD = NOT_APPLY_GOODS.TARGET_VAL 
+		AND    NOT_APPLY_GOODS.TARGET_GB = 'G800_30'
 		WHERE  1=1
-		AND    CP.SITE_CD = '10'
-		AND    CP.CPN_TYPE IN ('G230_11', 'G230_20') -- 상품쿠폰, 장바구니쿠폰
-		AND    CP.DOWN_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
-		AND    CP.DOWN_EDDT > CURRENT_TIMESTAMP
+		AND    NOT_APPLY_GOODS.FREEGIFT_SQ IS NULL
+		AND    FG.DEL_YN = 'N'
+		AND    FG.SELF_YN = 'Y'
+		AND    FG.FREEGIFT_STAT = 'G232_11' -- 진행
+		AND    FG.FREEGIFT_STDT <![CDATA[<]]> CURRENT_TIMESTAMP 
+		AND    FG.FREEGIFT_EDDT > CURRENT_TIMESTAMP
+		GROUP  BY FGG.FREEGIFT_SQ
+	</select>
+	
+	<!-- 사은품 : 2차조건 적용된 사은품상품금액 구간정보조회 -->
+	<select id="getFreeGiftGoodsApplyAmt" parameterType="Order" resultType="Order">
+		/* TsfOrder.getFreeGiftGoodsApplyAmt */
+		SELECT FGS.FREEGIFT_SECTION_SQ
+		     , FGS.FREEGIFT_SQ
+		     , FGS.SECTION_GB
+		     , FGS.SECTION_VAL
+		FROM   TB_FREEGIFT_SECTION FGS
+		WHERE  1=1
+		AND    FGS.DEL_YN = 'N'
+		<if test="freegiftSqArr != null and freegiftSqArr ==''">
+		AND    FGS.FREEGIFT_SQ IN
+			<foreach collection="freegiftSqArr" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+	</select>
+	
+	<!-- 사은품 : 3차조건 적용된 구간정보의 사은품정보조회 -->
+	<select id="getFreeGiftGoodsApplyAmt" parameterType="Order" resultType="Order">
+		/* TsfOrder.getFreeGiftGoodsApplyAmt */
+		SELECT FGV.FREEGIFT_SECTION_SQ 
+		     , FGV.FREEGIFT_SQ 
+		     , FGV.USE_POINT
+		     , FGV.ITEM_QTY
+		     , FGV.ITEM_CD
+		FROM   TB_FREEGIFT_VAL FGV
+		WHERE  1=1
+		AND    FGV.DEL_YN = 'N'
+		<if test="freegiftSectionSqArr != null and freegiftSectionSqArr ==''">
+		AND    FGV.FREEGIFT_SECTION_SQ IN (
+			<foreach collection="freegiftSectionSqArr" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
 	</select>
 
 </mapper>