Pārlūkot izejas kodu

Merge branch 'develop' into jsshin

jsshin 5 gadi atpakaļ
vecāks
revīzija
a6fb586413

+ 17 - 17
src/main/java/com/style24/core/biz/service/TscOrderChangeService.java

@@ -524,23 +524,23 @@ public class TscOrderChangeService {
 		}
 
 		// 5. WMS 취소 처리
-		List<Order> wmsList = new ArrayList<>();
-		for (int i = 0; i < ordDtlNoList.size(); i++) {
-			int chgQty = ordCanChgQtyList.get(i);
-
-			Order wms = new Order();
-			wms.setOrdNo(ordNo);
-			wms.setOrdDtlNo(ordDtlNoList.get(i));
-			wms.setChgQty(chgQty);
-
-			if (chgQty > 0) {
-				wmsList.add(wms);
-			}
-		}
-
-		if (wmsList.size() > 0) {
-			wmsService.updateWmsCancel(wmsList);
-		}
+		// List<Order> wmsList = new ArrayList<>();
+		// for (int i = 0; i < ordDtlNoList.size(); i++) {
+		// 	int chgQty = ordCanChgQtyList.get(i);
+		//
+		// 	Order wms = new Order();
+		// 	wms.setOrdNo(ordNo);
+		// 	wms.setOrdDtlNo(ordDtlNoList.get(i));
+		// 	wms.setChgQty(chgQty);
+		//
+		// 	if (chgQty > 0) {
+		// 		wmsList.add(wms);
+		// 	}
+		// }
+		//
+		// if (wmsList.size() > 0) {
+		// 	wmsService.updateWmsCancel(wmsList);
+		// }
 
 		// 6. PG 취소 처리
 		for (Payment pg : pgList) {

+ 51 - 0
src/main/java/com/style24/core/biz/service/TscOrderService.java

@@ -1,5 +1,6 @@
 package com.style24.core.biz.service;
 
+import java.nio.charset.StandardCharsets;
 import java.text.NumberFormat;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -29,6 +30,11 @@ import com.usafe.guarantee.InsuranceInfo;
 import com.usafe.guarantee.InsuranceManager;
 
 import lombok.extern.slf4j.Slf4j;
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.SecretKeySpec;
 
 /**
  * 주문관리 Service
@@ -2312,6 +2318,51 @@ public class TscOrderService {
 
 		return "SUCCESS";
 	}
+
+	public String encodeStr(String str) throws Exception {
+		byte[] SECRET_KEY = { 115, 51, 117, 70, 49, 65, 107, 125, 43, 118, 48, 65, 38, 57, 77, 67, 74, 120, 90, 87, 78, 80, 101, 102 };
+		SecretKeySpec KEYSPEC = new SecretKeySpec(SECRET_KEY, "DESede");
+
+		String result = null;
+		Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
+		cipher.init(1, KEYSPEC);
+		byte[] plainText = str.getBytes(StandardCharsets.UTF_8);
+		byte[] cipherText = cipher.doFinal(plainText);
+		result = (new BASE64Encoder()).encode(cipherText);
+		return result;
+	}
+
+	public String decodeStr(String str) throws Exception {
+		byte[] SECRET_KEY = { 115, 51, 117, 70, 49, 65, 107, 125, 43, 118, 48, 65, 38, 57, 77, 67, 74, 120, 90, 87, 78, 80, 101, 102 };
+		SecretKeySpec KEYSPEC = new SecretKeySpec(SECRET_KEY, "DESede");
+
+		String result = null;
+		Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
+		cipher.init(2, KEYSPEC);
+		byte[] base64bytes = (new BASE64Decoder()).decodeBuffer(str);
+		byte[] decryptedText = cipher.doFinal(base64bytes);
+		result = new String(decryptedText, StandardCharsets.UTF_8);
+		result = result.trim();
+		return result;
+	}
+
+	public String simpleEncode(String strVal) {
+		String result = strVal;
+		result = result.replaceAll("=", "%3D");
+		result = result.replaceAll("&", "%26");
+		result = result.replaceAll("%", "%25");
+		result = result.replaceAll(" ", "%20");
+		return result;
+	}
+
+	public String simpleDecode(String strVal) {
+		String result = strVal;
+		result = result.replaceAll("%3D", "=");
+		result = result.replaceAll("%26", "&");
+		result = result.replaceAll("%25", "%");
+		result = result.replaceAll("%20", " ");
+		return result;
+	}
 }
 
 

+ 1 - 0
src/main/java/com/style24/persistence/domain/Order.java

@@ -550,6 +550,7 @@ public class Order extends TscBaseDomain {
 	private Integer reviewSq;
 	private String selfGoodsYn;
 	private String brandNm;
+	private String brandGroupNm;
 	private String expiredSoon;
 	private int purchaseConfirmDay;
 	private String giftLimitDt;

+ 57 - 34
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -23,10 +23,10 @@
 		    ON O.ORD_NO = OD.ORD_NO
 		 INNER JOIN TB_GOODS G1
 		    ON OD.GOODS_CD = G1.GOODS_CD
-		 INNER JOIN TB_PAYMENT P
+		  LEFT OUTER JOIN TB_PAYMENT P
 		    ON O.ORD_NO = P.ORD_NO
 		   AND P.PAY_GB = 'O'
-		   AND P.PAY_STAT IN ('G016_00', 'G016_30')
+		   AND P.PAY_STAT IN ('G016_30')
 		 INNER JOIN TB_DELIVERY_ADDR DA
 		    ON OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
 		<if test="(chgStat != null and chgStat != '') or (chgGb != null and chgGb != '')">
@@ -47,6 +47,7 @@
 		    ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
 		</if>
 	 	 WHERE 1=1
+	 	   AND OD.ORD_DTL_STAT <![CDATA[<>]]> 'G013_00'
 		<if test='siteCd != null and siteCd != ""'>
 		   AND O.SITE_CD = #{siteCd}
 		</if>
@@ -94,6 +95,9 @@
 		   AND OD.AGENT_ORDER_ID = #{condition}
 			</if>
 		</if>
+		<if test='pgGb != null and pgGb != ""'>
+		   AND P.PG_GB = #{pgGb}
+		</if>
 		<if test='payMeans != null and payMeans != ""'>
 		   AND P.PAY_MEANS = #{payMeans}
 		</if>
@@ -169,6 +173,7 @@
 		                 , A.ORD_DTL_NO
 			             , A.ORD_NM
 			             , A.CUST_NO
+			             , A.CUST_ID
 			             , A.VENDOR_ID
 			             , A.FRONT_GB
 			             , A.ORD_DT
@@ -219,6 +224,9 @@
 			                     , ODI.ORD_DTL_ITEM_SQ
 			                     , O.ORD_NM
 			                     , O.CUST_NO
+			                     , (SELECT X.CUST_ID
+			                        FROM   TB_CUSTOMER X
+			                        WHERE  X.CUST_NO = O.CUST_NO) AS CUST_ID
 			                     , OD.VENDOR_ID
 			                     , O.FRONT_GB
 			                     , DATE_FORMAT(O.ORD_DT,'%Y%m%d%H%i%S') AS ORD_DT
@@ -281,10 +289,10 @@
 			                    ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO
 	                         INNER JOIN TB_GOODS G2
 	                            ON ODI.ITEM_CD = G2.GOODS_CD
-			                 INNER JOIN TB_PAYMENT P
+			                  LEFT OUTER JOIN TB_PAYMENT P
 			                    ON O.ORD_NO = P.ORD_NO
 			                   AND P.PAY_GB = 'O'
-			                   AND P.PAY_STAT IN ('G016_00', 'G016_30')
+			                   AND P.PAY_STAT IN ('G016_30')
 			                 INNER JOIN TB_DELIVERY_ADDR DA
 			                    ON OD.DELV_ADDR_SQ = DA.DELV_ADDR_SQ
 			<if test="(chgStat != null and chgStat != '') or (chgGb != null and chgGb != '')">
@@ -301,6 +309,7 @@
 			                    ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
 			</if>
 			                 WHERE 1=1
+			                   AND OD.ORD_DTL_STAT <![CDATA[<>]]> 'G013_00'
 			<if test='siteCd != null and siteCd != ""'>
 			                   AND O.SITE_CD = #{siteCd}
 			</if>
@@ -369,6 +378,9 @@
 			<if test='goodsNm != null and goodsNm != ""'>
 			                   AND G1.GOODS_NM = #{goodsNm}
 			</if>
+			<if test='pgGb != null and pgGb != ""'>
+			                   AND P.PG_GB = #{pgGb}
+			</if>
 			<if test='payMeans != null and payMeans != ""'>
 			                   AND P.PAY_MEANS = #{payMeans}
 			</if>
@@ -420,6 +432,7 @@
 			                   , A.ORD_DTL_NO
 			                   , A.ORD_NM
 			                   , A.CUST_NO
+			                   , A.CUST_ID
 			                   , A.VENDOR_ID
 			                   , A.FRONT_GB
 			                   , A.ORD_DT
@@ -852,13 +865,14 @@
 		            ELSE P.CARD_NM
 		        END                                           CARD_NM
 		     , P.PG_TRADE_NO
+		     , P.VA_NO
 		     , DATE_FORMAT(P.PAY_DT, '%Y%m%d%H%i%S')      AS PAY_DT
 		     , P.PAY_STAT
 		     , FN_GET_CODE_NM('G016', P.PAY_STAT)         AS PAY_STAT_NM
 		     , P.PAY_AMT
 		     , P.PG_CPN_AMT
 		     , P.NPAY_PNT_AMT
-		     , DATE_FORMAT(P.VA_DEADLINE, '%Y%m%d%H%i%S') AS VA_DEADLINE
+		     , DATE_FORMAT(P.VA_DEADLINE, '%Y-%m-%d %H:%i:%S') AS VA_DEADLINE
 		     , CARD_MIPS
 		     , CARD_TYPE
 		     , CASH_AUTH_NO
@@ -968,27 +982,33 @@
 	<!-- 주문상세 > 환불정보 -->
 	<select id="getOrderRefundInfo" parameterType="Order" resultType="Order">
 		/* order.getOrderRefundInfo */
-		SELECT P.PAY_MEANS
-			 , FN_GET_CODE_NM('G014', P.PAY_MEANS)   AS PAY_MEANS_NM
-			 , P.CARD_NM
-			 , R.RA_BANK
-			 , CASE WHEN PAY_MEANS = 'G014_20' || PAY_MEANS = 'G014_10'
+		SELECT R.ORD_CHG_SQ
+		     , P.PAY_MEANS
+		     , FN_GET_CODE_NM('G014', P.PAY_MEANS)   AS PAY_MEANS_NM
+		     , P.CARD_NM
+		     , R.RA_BANK
+		     , CASE WHEN PAY_MEANS = 'G014_20' || PAY_MEANS = 'G014_10'
 						THEN FN_GET_CODE_NM('G940', R.RA_BANK)
 					ELSE P.CARD_NM
-			   END                                      CARD_NM
-			 , R.RA_NO
-			 , R.RA_NM
-			 , R.REFUND_AMT
-			 , DATE_FORMAT(P.UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
-			 , (SELECT USER_NM
+		       END                                      CARD_NM
+		     , R.RA_NO
+		     , R.RA_NM
+		     , R.REFUND_AMT
+		     , DATE_FORMAT(P.UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
+		     , (SELECT USER_ID
 				  FROM TB_USER X
 				 WHERE X.USER_NO = P.UPD_NO
-			   )                                     AS UPD_NM
+		       )                                     AS USER_ID
+		     , (SELECT CUST_ID
+				  FROM TB_CUSTOMER X
+				 WHERE X.CUST_NO = P.UPD_NO
+		       )                                     AS CUST_ID
 		  FROM TB_REFUND R
-		  INNER JOIN TB_PAYMENT P
-		  ON R.ORD_CHG_SQ = P.ORD_CHG_SQ
+		 INNER JOIN TB_PAYMENT P
+		  ON R.ORD_NO = P.ORD_NO
 		 WHERE 1 = 1
 		   AND R.ORD_NO = #{ordNo}
+		   AND P.PAY_STAT NOT IN ('G016_98', 'G016_99')
 		 ORDER BY R.REG_DT DESC
 	</select>
 
@@ -1282,21 +1302,24 @@
 	<select id="getOrderDetailHistoryList" parameterType="Order" resultType="Order">
 		/* order.getOrderDetailHistoryList */
 		SELECT DATE_FORMAT(ODH.UPD_DT, '%Y%m%d%H%i%S')    AS UPD_DT
-			 , (SELECT Z.USER_ID
-				  FROM TB_USER Z
-				 WHERE Z.USER_NO = ODH.UPD_NO)            AS UPD_ID
-			 , FN_GET_CODE_NM('G013', ODH.ORD_DTL_STAT)   AS ORD_DTL_STAT_NM
-			 , ODH.ORD_QTY
-			 , ODH.CNCL_RTN_QTY
-			 , ODH.DELV_LOC_CD
-			 , ODH.INVOICE_NO
-			 , ODH.SHIP_COMP_CD
-			 , (SELECT SHIP_COMP_NM
-				  FROM TB_SHIP_COMPANY Z
-				 WHERE Z.SHIP_COMP_CD = ODH.SHIP_COMP_CD) AS SHIP_COMP_NM
+		     , (SELECT Z.USER_ID
+		          FROM TB_USER Z
+		         WHERE Z.USER_NO = ODH.UPD_NO)            AS USER_ID
+		     , (SELECT Z.CUST_ID
+		          FROM TB_CUSTOMER Z
+		         WHERE Z.CUST_NO = ODH.UPD_NO)            AS CUST_ID
+		     , FN_GET_CODE_NM('G013', ODH.ORD_DTL_STAT)   AS ORD_DTL_STAT_NM
+		     , ODH.ORD_QTY
+		     , ODH.CNCL_RTN_QTY
+		     , ODH.DELV_LOC_CD
+		     , ODH.INVOICE_NO
+		     , ODH.SHIP_COMP_CD
+		     , (SELECT SHIP_COMP_NM
+		          FROM TB_SHIP_COMPANY Z
+		         WHERE Z.SHIP_COMP_CD = ODH.SHIP_COMP_CD) AS SHIP_COMP_NM
 		  FROM TB_ORDER_DETAIL_HST ODH
 		 WHERE 1 = 1
-		   AND ODH.ORD_DTL_NO = #{ordDtlNo}
+		   AND ODH.ORD_DTL_NO =  #{ordDtlNo} /**P*/
 		 ORDER BY ODH.REG_DT DESC
 	</select>
 
@@ -1338,7 +1361,7 @@
 		            SELECT 1                   AS DISP_ORD
 		                 , CD.GOODS_CPN_SQ     AS CPN_SQ
 		                 , CD.GOODS_CPN_DC_AMT AS CPN_DC_AMT
-		                 , '상품쿠폰'              AS CPN_TYPE
+		                 , '상품쿠폰'             AS CPN_TYPE
 		                 , CD.GOODS_CD         AS TARGET_CD1
 		                 , CD.ORD_DTL_NO       AS TARGET_CD2
 		                 , CD.ORD_NO
@@ -1348,7 +1371,7 @@
 		            SELECT 2                  AS DISP_ORD
 		                 , CD.CART_CPN_SQ     AS CPN_SQ
 		                 , CD.CART_CPN_DC_AMT AS CPN_DC_AMT
-		                 , '장바구니쿠폰'           AS CPN_TYPE
+		                 , '장바구니쿠폰'          AS CPN_TYPE
 		                 , CD.GOODS_CD        AS TARGET_CD1
 		                 , CD.ORD_DTL_NO      AS TARGET_CD2
 		                 , CD.ORD_NO

+ 158 - 154
src/main/java/com/style24/persistence/mybatis/shop/TscOrderChange.xml

@@ -5,155 +5,163 @@
 	<!-- 취소,반품,교환 대상목록 조회 -->
 	<select id="getCancelRequestTargetList" parameterType="Order" resultType="Order">
 		/* OrderChange.getCancelRequestTargetList */
-		SELECT Z.*
-		  FROM (
-			SELECT OD.ORD_NO
-				 , OD.ORD_DTL_NO
-				 , OD.ORD_DTL_STAT
-				 , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)  AS ORD_DTL_STAT_NM
-				 , CASE WHEN OD.ORD_DTL_STAT IN ('G013_20', 'G013_30', 'G013_40')
-							THEN 'Y'
-						ELSE 'N'
-				   END                                         ALL_CAN_YN
-				 , G1.GOODS_CD
-				 , G1.GOODS_NM
-				 , G1.GOODS_TYPE
-				 , FN_GET_CODE_NM('G056', G1.GOODS_TYPE)    AS GOODS_TYPE_NM
-				 , ODI.ORD_DTL_ITEM_SQ
-				 , G2.GOODS_CD                              AS ITEM_CD
-				 , G2.GOODS_NM                              AS ITEM_NM
-				 , ODI.OPT_CD
-				 , ODI.OPT_CD1
-				 , ODI.OPT_CD2
-				 , ODI.ITEM_QTY
-				 , OD.ORD_QTY
-				 , OD.CNCL_RTN_QTY
-				 , CASE WHEN OCD.ORD_REQ_CHG_QTY IS NULL
-							THEN 0
-						ELSE OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY
-				   END                                         ORD_REQ_CHG_QTY
-				 , ODI.ITEM_PRICE
-				 , ODI.OPT_ADD_PRICE
-				 , ODI.ORD_AMT
-				 , ODI.CNCL_RTN_AMT
-				 , ODI.CPN1_DC_AMT
-				 , ODI.TMTB1_DC_AMT
-				 , ODI.TMTB2_DC_AMT
-				 , ODI.GOODS_CPN_DC_AMT
-				 , ODI.CART_CPN_DC_AMT
-				 , ODI.PNT_DC_AMT
-				 , ODI.PRE_PNT_DC_AMT
-				 , ODI.GFCD_USE_AMT
-				 , ODI.REAL_ORD_AMT
-				 , DF.DELV_FEE
-				 , OD.SUPPLY_COMP_CD
-				 , FN_GET_SUPPLY_COMP_NM(OD.SUPPLY_COMP_CD) AS SUPPLY_COMP_NM
-				 , DF.DELV_FEE_CD
-				 , DFP.MIN_ORD_AMT
-				 , DFP.DELV_FEE                             AS ORG_DELV_FEE
-				 , DFP.RTN_DELV_FEE
-				 , DFP.DELV_FEE + DFP.RTN_DELV_FEE          AS EXC_DELV_FEE
-				 , X.CHG_QTY                                AS ORD_CAN_CHG_QTY
-			     , X.OPT_CD2                                AS ORD_CHG_OPT
-				 , VS.OPT_CD2S
-				 , VS.CURR_STOCK_QTYS
-				 , DL.RTN_LOC_NM
-				 , DL.RTN_LOC_ZIPCODE
-				 , DL.RTN_LOC_BASE_ADDR
-				 , DL.RTN_LOC_DTL_ADDR
-				 , DL.RTN_LOC_TELNO
-				 , G1.SELF_GOODS_YN
-			  FROM TB_ORDER_DETAIL OD
-			 INNER JOIN TB_GOODS G1
-			    ON OD.GOODS_CD = G1.GOODS_CD
-			 INNER JOIN TB_ORDER_DETAIL_ITEM ODI
-			    ON OD.ORD_NO = ODI.ORD_NO
-			   AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-			 INNER JOIN TB_GOODS G2
-			    ON ODI.ITEM_CD = G2.GOODS_CD
-			  LEFT OUTER JOIN (
-				  SELECT OD.ORD_DTL_NO
-					   , SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
-					FROM TB_ORDER_CHANGE_DETAIL OCD
-				   INNER JOIN TB_ORDER_DETAIL OD
-					  ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
-				   WHERE 1 = 1
-					 AND OD.ORD_NO = #{ordNo}
-					 AND OCD.DEL_YN = 'N'
-					 AND OCD.CHG_STAT IN ('G685_20', 'G685_21','G685_30', 'G685_31', 'G685_32', 'G685_33', 'G685_34', 'G685_50', 'G685_51')
-				   GROUP BY OCD.ORD_DTL_NO
-			  ) OCD
-				ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
-			  LEFT OUTER JOIN (
-				  SELECT X.DELV_FEE_CD
-					   , SUM(X.DELV_FEE) AS DELV_FEE
-					FROM TB_DELIVERY_FEE X
-				   WHERE 1 = 1
-					 AND X.ORD_NO = #{ordNo}
-					 AND X.DELV_FEE_GB = 'G018_10'
-				   GROUP BY X.DELV_FEE_CD
-			  ) DF
-				ON OD.DELV_FEE_CD = DF.DELV_FEE_CD
-			  LEFT OUTER JOIN TB_DELV_FEE_POLICY DFP
-				ON OD.DELV_FEE_CD = DFP.DELV_FEE_CD
-			   AND DFP.USE_YN = 'Y'
-			  LEFT OUTER JOIN (
-				  SELECT TDL.DELV_LOC_CD
-					   , TDL.RTN_LOC_NM
-					   , TDL.RTN_LOC_TELNO
-					   , TDL.RTN_LOC_ZIPCODE
-					   , TDL.RTN_LOC_BASE_ADDR
-					   , TDL.RTN_LOC_DTL_ADDR
-					FROM TB_DELIVERY_LOC TDL
-				   INNER JOIN TB_SUPPLY_COMPANY TSC
-					  ON TDL.SUPPLY_COMP_CD = TSC.SUPPLY_COMP_CD
-			  ) DL
-				ON OD.DELV_LOC_CD = DL.DELV_LOC_CD
-			  LEFT OUTER JOIN (
-				  SELECT GOODS_CD
-					   , OPT_CD1
-					   , GROUP_CONCAT(OPT_CD2 ORDER BY DISP_ORD DESC, OPT_CD2 SEPARATOR ',')        AS OPT_CD2S
-					   , GROUP_CONCAT(CURR_STOCK_QTY ORDER BY DISP_ORD DESC, OPT_CD2 SEPARATOR ',') AS CURR_STOCK_QTYS
-					FROM VW_STOCK
-				   WHERE GOODS_CD IN (SELECT ITEM_CD FROM TB_ORDER_DETAIL_ITEM WHERE ORD_NO = #{ordNo})
-					 AND (CURR_STOCK_QTY - BASE_STOCK_QTY) > 0
-				   GROUP BY GOODS_CD, OPT_CD1
-			  ) VS
-				ON ODI.ITEM_CD = VS.GOODS_CD
-			   AND ODI.OPT_CD1 = VS.OPT_CD1
-			  LEFT OUTER JOIN (
-			      SELECT OCD.ORD_DTL_NO
-			           , OCD.CHG_QTY
-			           , ODI.OPT_CD2
-			        FROM TB_ORDER_CHANGE_DETAIL OCD
-			       INNER JOIN TB_ORDER_DETAIL_ITEM ODI
-			          ON OCD.ORD_DTL_NO = ODI.ORD_DTL_NO
-			       WHERE OCD.DEL_YN = 'N'
-			         AND OCD.ORD_CHG_SQ = #{ordChgSq}
-			  ) X
-				ON OD.ORD_DTL_NO = X.ORD_DTL_NO
-			 WHERE 1 = 1
-		<if test="ordDtlStatArr != null and ordDtlStatArr != ''">
-			   AND OD. ORD_DTL_STAT IN
-			<foreach collection="ordDtlStatArr" item="item" index="index"  open="(" close=")" separator=",">
-				#{item}
-			</foreach>
-		</if>
-		<if test="ordDtlNoArr != null and ordDtlNoArr != ''">
-			   AND OD. ORD_DTL_NO IN
-			<foreach collection="ordDtlNoArr" item="item" index="index"  open="(" close=")" separator=",">
-				#{item}
-			</foreach>
-		</if>
-			   AND OD.ORD_NO = #{ordNo}
-		) Z
-		 GROUP BY Z.ORD_NO, Z.ORD_DTL_NO, Z.ORD_DTL_STAT, Z.ORD_DTL_STAT_NM, Z.ALL_CAN_YN, Z.GOODS_CD, Z.GOODS_NM, Z.GOODS_TYPE, Z.GOODS_TYPE_NM
-				, Z.ORD_DTL_ITEM_SQ, Z.ITEM_CD, Z.ITEM_NM, Z.OPT_CD, Z.OPT_CD1, Z.OPT_CD2, Z.ITEM_QTY, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.ORD_REQ_CHG_QTY
-				, Z.ITEM_PRICE, Z.OPT_ADD_PRICE, Z.ORD_AMT, Z.CNCL_RTN_AMT, Z.CPN1_DC_AMT, Z.TMTB1_DC_AMT, Z.TMTB2_DC_AMT, Z.GOODS_CPN_DC_AMT
-				, Z.CART_CPN_DC_AMT, Z.PNT_DC_AMT, Z.PRE_PNT_DC_AMT, Z.GFCD_USE_AMT, Z.REAL_ORD_AMT, Z.DELV_FEE, Z.SUPPLY_COMP_CD, Z.SUPPLY_COMP_NM
-				, Z.DELV_FEE_CD, Z.MIN_ORD_AMT, Z.ORG_DELV_FEE, Z.RTN_DELV_FEE, Z.EXC_DELV_FEE, Z.ORD_CAN_CHG_QTY, Z.ORD_CHG_OPT, Z.OPT_CD2S, Z.CURR_STOCK_QTYS
-				, Z.RTN_LOC_NM, Z.RTN_LOC_ZIPCODE, Z.RTN_LOC_BASE_ADDR, Z.RTN_LOC_DTL_ADDR, Z.RTN_LOC_TELNO, Z.SELF_GOODS_YN
-		 ORDER BY Z.DELV_FEE_CD, Z.ORD_NO, Z.ORD_DTL_NO
+		SELECT Y.*
+		FROM (
+		    SELECT Z.*
+		         , DF.DELV_FEE
+		      FROM (
+		        SELECT OD.ORD_NO
+		             , OD.ORD_DTL_NO
+		             , OD.ORD_DTL_STAT
+		             , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)  AS ORD_DTL_STAT_NM
+		             , CASE WHEN OD.ORD_DTL_STAT IN ('G013_20', 'G013_30', 'G013_40')
+								THEN 'Y'
+							ELSE 'N'
+		               END                                         ALL_CAN_YN
+		             , G1.GOODS_CD
+		             , G1.GOODS_NM
+		             , G1.GOODS_TYPE
+		             , FN_GET_CODE_NM('G056', G1.GOODS_TYPE)    AS GOODS_TYPE_NM
+		             , ODI.ORD_DTL_ITEM_SQ
+		             , G2.GOODS_CD                              AS ITEM_CD
+		             , G2.GOODS_NM                              AS ITEM_NM
+		             , ODI.OPT_CD
+		             , ODI.OPT_CD1
+		             , ODI.OPT_CD2
+		             , ODI.ITEM_QTY
+		             , OD.ORD_QTY
+		             , OD.CNCL_RTN_QTY
+		             , CASE WHEN OCD.ORD_REQ_CHG_QTY IS NULL
+								THEN 0
+							ELSE OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY
+					   END                                         ORD_REQ_CHG_QTY
+		             , ODI.ITEM_PRICE
+		             , ODI.OPT_ADD_PRICE
+		             , ODI.ORD_AMT
+		             , ODI.CNCL_RTN_AMT
+		             , ODI.CPN1_DC_AMT
+		             , ODI.TMTB1_DC_AMT
+		             , ODI.TMTB2_DC_AMT
+		             , ODI.GOODS_CPN_DC_AMT
+		             , ODI.CART_CPN_DC_AMT
+		             , ODI.PNT_DC_AMT
+		             , ODI.PRE_PNT_DC_AMT
+		             , ODI.GFCD_USE_AMT
+		             , ODI.REAL_ORD_AMT
+		             , OD.SUPPLY_COMP_CD
+		             , FN_GET_SUPPLY_COMP_NM(OD.SUPPLY_COMP_CD) AS SUPPLY_COMP_NM
+		             , DFP.MIN_ORD_AMT
+		             , DFP.DELV_FEE                             AS ORG_DELV_FEE
+		             , DFP.RTN_DELV_FEE
+		             , DFP.DELV_FEE + DFP.RTN_DELV_FEE          AS EXC_DELV_FEE
+		             , X.CHG_QTY                                AS ORD_CAN_CHG_QTY
+		             , X.OPT_CD2                                AS ORD_CHG_OPT
+		             , VS.OPT_CD2S
+		             , VS.CURR_STOCK_QTYS
+		             , DL.RTN_LOC_NM
+		             , DL.RTN_LOC_ZIPCODE
+		             , DL.RTN_LOC_BASE_ADDR
+		             , DL.RTN_LOC_DTL_ADDR
+		             , DL.RTN_LOC_TELNO
+		             , G1.SELF_GOODS_YN
+		             , CASE WHEN G1.SELF_GOODS_YN = 'Y'
+		                    THEN 'WMS'
+		                    ELSE OD.DELV_FEE_CD
+		                     END DELV_FEE_CD
+				  FROM TB_ORDER_DETAIL OD
+				 INNER JOIN TB_GOODS G1
+				    ON OD.GOODS_CD = G1.GOODS_CD
+				 INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+				    ON OD.ORD_NO = ODI.ORD_NO
+				   AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+				 INNER JOIN TB_GOODS G2
+				    ON ODI.ITEM_CD = G2.GOODS_CD
+				  LEFT OUTER JOIN (
+					  SELECT OD.ORD_DTL_NO
+						   , SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
+						FROM TB_ORDER_CHANGE_DETAIL OCD
+					   INNER JOIN TB_ORDER_DETAIL OD
+						  ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+					   WHERE 1 = 1
+						 AND OD.ORD_NO = #{ordNo}
+						 AND OCD.DEL_YN = 'N'
+						 AND OCD.CHG_STAT IN ('G685_20', 'G685_21','G685_30', 'G685_31', 'G685_32', 'G685_33', 'G685_34', 'G685_50', 'G685_51')
+					   GROUP BY OCD.ORD_DTL_NO
+				  ) OCD
+					ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+				  LEFT OUTER JOIN TB_DELV_FEE_POLICY DFP
+					ON OD.DELV_FEE_CD = DFP.DELV_FEE_CD
+				   AND DFP.USE_YN = 'Y'
+				  LEFT OUTER JOIN (
+					  SELECT TDL.DELV_LOC_CD
+						   , TDL.RTN_LOC_NM
+						   , TDL.RTN_LOC_TELNO
+						   , TDL.RTN_LOC_ZIPCODE
+						   , TDL.RTN_LOC_BASE_ADDR
+						   , TDL.RTN_LOC_DTL_ADDR
+						FROM TB_DELIVERY_LOC TDL
+					   INNER JOIN TB_SUPPLY_COMPANY TSC
+						  ON TDL.SUPPLY_COMP_CD = TSC.SUPPLY_COMP_CD
+				  ) DL
+					ON OD.DELV_LOC_CD = DL.DELV_LOC_CD
+				  LEFT OUTER JOIN (
+					  SELECT GOODS_CD
+						   , OPT_CD1
+						   , GROUP_CONCAT(OPT_CD2 ORDER BY DISP_ORD DESC, OPT_CD2 SEPARATOR ',')        AS OPT_CD2S
+						   , GROUP_CONCAT(CURR_STOCK_QTY ORDER BY DISP_ORD DESC, OPT_CD2 SEPARATOR ',') AS CURR_STOCK_QTYS
+						FROM VW_STOCK
+					   WHERE GOODS_CD IN (SELECT ITEM_CD FROM TB_ORDER_DETAIL_ITEM WHERE ORD_NO = #{ordNo})
+						 AND (CURR_STOCK_QTY - BASE_STOCK_QTY) > 0
+					   GROUP BY GOODS_CD
+					       , OPT_CD1
+				  ) VS
+					ON ODI.ITEM_CD = VS.GOODS_CD
+				   AND ODI.OPT_CD1 = VS.OPT_CD1
+				  LEFT OUTER JOIN (
+				      SELECT OCD.ORD_DTL_NO
+				           , OCD.CHG_QTY
+				           , ODI.OPT_CD2
+				        FROM TB_ORDER_CHANGE_DETAIL OCD
+				       INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+				          ON OCD.ORD_DTL_NO = ODI.ORD_DTL_NO
+				       WHERE OCD.DEL_YN = 'N'
+				         AND OCD.ORD_CHG_SQ = #{ordChgSq}
+				  ) X
+					ON OD.ORD_DTL_NO = X.ORD_DTL_NO
+				 WHERE 1 = 1
+			<if test="ordDtlStatArr != null and ordDtlStatArr != ''">
+				   AND OD. ORD_DTL_STAT IN
+				<foreach collection="ordDtlStatArr" item="item" index="index"  open="(" close=")" separator=",">
+					#{item}
+				</foreach>
+			</if>
+			<if test="ordDtlNoArr != null and ordDtlNoArr != ''">
+				   AND OD. ORD_DTL_NO IN
+				<foreach collection="ordDtlNoArr" item="item" index="index"  open="(" close=")" separator=",">
+					#{item}
+				</foreach>
+			</if>
+				   AND OD.ORD_NO = #{ordNo}
+				   AND OD.DELV_FEE_CD = #{delvFeeCd}
+			) Z
+			LEFT OUTER JOIN (
+			    SELECT X.DELV_FEE_CD
+			         , SUM(X.DELV_FEE) AS DELV_FEE
+			      FROM TB_DELIVERY_FEE X
+			     WHERE 1 = 1
+			       AND X.ORD_NO = #{ordNo}
+			       AND X.DELV_FEE_GB = 'G018_10'
+			     GROUP BY X.DELV_FEE_CD
+			) DF
+			ON Z.DELV_FEE_CD = DF.DELV_FEE_CD
+		) Y
+		 GROUP BY Y.ORD_NO, Y.ORD_DTL_NO, Y.ORD_DTL_STAT, Y.ORD_DTL_STAT_NM, Y.ALL_CAN_YN, Y.GOODS_CD, Y.GOODS_NM, Y.GOODS_TYPE, Y.GOODS_TYPE_NM
+				, Y.ORD_DTL_ITEM_SQ, Y.ITEM_CD, Y.ITEM_NM, Y.OPT_CD, Y.OPT_CD1, Y.OPT_CD2, Y.ITEM_QTY, Y.ORD_QTY, Y.CNCL_RTN_QTY, Y.ORD_REQ_CHG_QTY
+				, Y.ITEM_PRICE, Y.OPT_ADD_PRICE, Y.ORD_AMT, Y.CNCL_RTN_AMT, Y.CPN1_DC_AMT, Y.TMTB1_DC_AMT, Y.TMTB2_DC_AMT, Y.GOODS_CPN_DC_AMT
+				, Y.CART_CPN_DC_AMT, Y.PNT_DC_AMT, Y.PRE_PNT_DC_AMT, Y.GFCD_USE_AMT, Y.REAL_ORD_AMT, Y.DELV_FEE, Y.SUPPLY_COMP_CD, Y.SUPPLY_COMP_NM
+				, Y.DELV_FEE_CD, Y.MIN_ORD_AMT, Y.ORG_DELV_FEE, Y.RTN_DELV_FEE, Y.EXC_DELV_FEE, Y.ORD_CAN_CHG_QTY, Y.ORD_CHG_OPT, Y.OPT_CD2S, Y.CURR_STOCK_QTYS
+				, Y.RTN_LOC_NM, Y.RTN_LOC_ZIPCODE, Y.RTN_LOC_BASE_ADDR, Y.RTN_LOC_DTL_ADDR, Y.RTN_LOC_TELNO, Y.SELF_GOODS_YN
+		 ORDER BY Y.DELV_FEE_CD, Y.ORD_NO, Y.ORD_DTL_NO
 	</select>
 	
 	<!-- 주문변경신청목록 조회 (취소, 반품, 교환) -->
@@ -219,11 +227,7 @@
 		UPDATE TB_ORDER_DETAIL_ITEM ODI
 		 INNER JOIN TB_ORDER_DETAIL OD
 			ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-		   SET ODI.ORD_DTL_STAT     = CASE WHEN OD.ORD_QTY > (OD.CNCL_RTN_QTY + #{ordCanChgQty})
-											   THEN ODI.ORD_DTL_STAT
-										   ELSE #{ordDtlStat}
-									  END
-			 , ODI.CNCL_RTN_AMT     = ODI.CNCL_RTN_AMT + #{cnclRtnAmt}
+		   SET ODI.CNCL_RTN_AMT     = ODI.CNCL_RTN_AMT + #{cnclRtnAmt}
 			 , ODI.CPN1_DC_AMT      = ODI.CPN1_DC_AMT - #{cpn1DcAmt}
 			 , ODI.TMTB1_DC_AMT     = ODI.TMTB1_DC_AMT - #{tmtb1DcAmt}
 			 , ODI.TMTB2_DC_AMT     = ODI.TMTB2_DC_AMT - #{tmtb2DcAmt}