Ver Fonte

1. 주문 임시 커밋

card007 há 5 anos atrás
pai
commit
47f22d3fbb

+ 55 - 8
src/main/java/com/style24/core/biz/dao/TscOrderChangeDao.java

@@ -196,17 +196,64 @@ public interface TscOrderChangeDao {
 	 */
 	int saveRefundAccount(Order order);
 
-}
-
-
-
-
-
-
-
+	/**
+	 * 주문상세정보 생성
+	 *
+	 * @param Order - 주문 정보
+	 * @return int
+	 * @author card007
+	 * @since 2021. 01. 25
+	 */
+	int createOrderDetailForExchange(Order order);
 
+	/**
+	 * 주문상세정보 이력 생성
+	 *
+	 * @param Order - 주문 정보
+	 * @return int
+	 * @author card007
+	 * @since 2021. 01. 25
+	 */
+	int createOrderDetailHstForExchange(Order order);
 
+	/**
+	 * 주문상세단품정보 생성
+	 *
+	 * @param Order - 주문 정보
+	 * @return int
+	 * @author card007
+	 * @since 2021. 01. 25
+	 */
+	int createOrderDetailItemForExchange(Order order);
 
+	/**
+	 * 주문상세단품정보 이력 생성
+	 *
+	 * @param Order - 주문 정보
+	 * @return int
+	 * @author card007
+	 * @since 2021. 01. 25
+	 */
+	int createOrderDetailItemHstForExchange(Order order);
 
+	/**
+	 * 주문배송주소 등록
+	 *
+	 * @param Order - 주문 정보
+	 * @return int
+	 * @author card007
+	 * @since 2021. 01. 26
+	 */
+	int createDeliveryAddr(Order order);
 
+	/**
+	 * 교환상품옵션재고정보 등록
+	 *
+	 * @param Order - 주문 정보
+	 * @return
+	 * @author card007
+	 * @since 2021. 01. 28
+	 */
+	int createSellQtyForExchange(OrderChange orderChange);
 
+}

+ 0 - 50
src/main/java/com/style24/core/biz/dao/TscOrderDao.java

@@ -349,54 +349,4 @@ public interface TscOrderDao {
 	 */
 	void updateOrderChange(Order order);
 
-	/**
-	 * 주문상세정보 생성
-	 *
-	 * @param Order - 주문 정보
-	 * @return int
-	 * @author card007
-	 * @since 2021. 01. 25
-	 */
-	int createOrderDetailForExchange(Order order);
-
-	/**
-	 * 주문상세정보 생성
-	 *
-	 * @param Order - 주문 정보
-	 * @return int
-	 * @author card007
-	 * @since 2021. 01. 25
-	 */
-	int createOrderDetailHstForExchange(Order order);
-
-	/**
-	 * 주문상세정보 생성
-	 *
-	 * @param Order - 주문 정보
-	 * @return int
-	 * @author card007
-	 * @since 2021. 01. 25
-	 */
-	int createOrderDetailItemForExchange(Order order);
-
-	/**
-	 * 주문상세정보 생성
-	 *
-	 * @param Order - 주문 정보
-	 * @return int
-	 * @author card007
-	 * @since 2021. 01. 25
-	 */
-	int createOrderDetailItemHstForExchange(Order order);
-
-	/**
-	 * 주문배송주소 등록
-	 *
-	 * @param Order - 주문 정보
-	 * @return int
-	 * @author card007
-	 * @since 2021. 01. 26
-	 */
-	int createDeliveryAddr(Order order);
-
 }

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

@@ -695,7 +695,7 @@ public class TscOrderChangeService {
 		deliveryAddr.setRegNo(regNo);
 		deliveryAddr.setUpdNo(updNo);
 		
-		orderDao.createDeliveryAddr(deliveryAddr);
+		orderChangeDao.createDeliveryAddr(deliveryAddr);
 		
 		// 생성된 delvAddrSq 등록
 		int delvAddrSq = deliveryAddr.getDelvAddrSq();
@@ -772,8 +772,8 @@ public class TscOrderChangeService {
 				ordDtl.setDelvAddrSq(delvAddrSq);
 				ordDtl.setRegNo(regNo);
 				ordDtl.setUpdNo(updNo);
-				
-				orderDao.createOrderDetailForExchange(ordDtl);
+
+				orderChangeDao.createOrderDetailForExchange(ordDtl);
 
 				// 생성된 ordDtlNo 설정
 				exchangeOrdDtlNo = ordDtl.getExchangeOrdDtlNo();
@@ -781,7 +781,7 @@ public class TscOrderChangeService {
 				log.info("############# exchangeOrdDtlNo >>> {} ##############", exchangeOrdDtlNo);
 
 				// 6. TB_ORDER_DETAIL_HST 등록
-				orderDao.createOrderDetailHstForExchange(ordDtl);
+				orderChangeDao.createOrderDetailHstForExchange(ordDtl);
 
 				// 7. TB_ORDER_CHANGE_DETAIL 등록
 				OrderChange orderChangeDetail = new OrderChange();
@@ -806,11 +806,11 @@ public class TscOrderChangeService {
 			ordDtlItem.setOrdChgOpt(ordChgOpt);
 			ordDtlItem.setRegNo(regNo);
 			ordDtlItem.setUpdNo(updNo);
-			
-			orderDao.createOrderDetailItemForExchange(ordDtlItem);
+
+			orderChangeDao.createOrderDetailItemForExchange(ordDtlItem);
 
 			// 9. TB_ORDER_DETAIL_ITEM_HST 등록
-			orderDao.createOrderDetailItemHstForExchange(ordDtlItem);
+			orderChangeDao.createOrderDetailItemHstForExchange(ordDtlItem);
 		}
 
 		// 10. TB_SELL_QTY 등록
@@ -819,7 +819,7 @@ public class TscOrderChangeService {
 		sellQty.setRegNo(regNo);
 		sellQty.setOrdChgSq(ordChgSq);
 		
-		orderChangeDao.createSellQty(sellQty);
+		orderChangeDao.createSellQtyForExchange(sellQty);
 		
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
 		

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

@@ -131,6 +131,9 @@ public class Order extends TscBaseDomain {
 	private String itemCd;
 	private String goodsNum;
 	private String supplyGoodsCd;
+	private String optCd2s;
+	private int currStockQty;
+	private String currStockQtys;
 	
 	private int totDcAmt;
 	private String dateGbn;

+ 0 - 492
src/main/java/com/style24/persistence/mybatis/shop/TscOrder.xml

@@ -1578,498 +1578,6 @@
 		WHERE  ORD_CHG_SQ 		= #{ordChgSq}
 	</update>
 
-	<!-- 주문상세정보 생성 -->
-	<insert id="createOrderDetailForExchange" parameterType="Order">
-		/* order.createOrderDetailForExchange */
-		<selectKey keyProperty="exchangeOrdDtlNo" resultType="int" order="AFTER">
-			SELECT LAST_INSERT_ID()
-		</selectKey>
-
-		INSERT INTO TB_ORDER_DETAIL (
-			ORD_NO
-		  , ORD_EXCH_GB
-		  , ORD_DTL_STAT
-		  , ORG_ORD_DTL_NO
-		  , SUPPLY_COMP_CD
-		  , GOODS_CD
-		  , PRODUCT_NO
-		  , PRODUCT_CODE
-		  , FORMAL_GB
-		  , GOODS_TYPE
-		  , LIST_PRICE
-		  , CURR_PRICE
-		  , DC_RATE
-		  , OPT_ADD_PRICE
-		  , ORD_QTY
-		  , ORD_AMT
-		  , CNCL_RTN_QTY
-		  , CNCL_RTN_AMT
-		  , CPN1_CPN_SQ
-		  , CPN1_DC_AMT
-		  , TMTB1_SQ
-		  , TMTB1_DC_AMT
-		  , TMTB2_SQ
-		  , TMTB2_DC_AMT
-		  , GOODS_CPN_SQ
-		  , GOODS_CPN_DC_AMT
-		  , CART_CPN_SQ
-		  , CART_CPN_DC_AMT
-		  , BURDEN_RATE
-		  , PNT_DC_AMT
-		  , PRE_PNT_DC_AMT
-		  , SAVE_PNT_AMT
-		  , REAL_ORD_AMT
-		  , GFCD_USE_AMT
-		  , VENDOR_ID
-		  , EXTMALL_ID
-		  , AGENT_ORDER_ID
-		  , EXTMALL_ORDER_ID
-		  , CHANGABLE_YN
-		  , CHANGE_FEE_FREE_YN
-		  , RETURNABLE_YN
-		  , RETURN_FEE_FREE_YN
-		  , SOLDOUT_YN
-		  , SOLDOUT_MEMO
-		  , SOLDOUT_REG_NO
-		  , SOLDOUT_REG_DT
-		  , DELV_ADDR_SQ
-		  , DELV_FEE_CD
-		  , SHOT_DELV_YN
-		  , GIFT_PACK_YN
-		  , MAKE_GOODS_YN
-		  , ENTRY_NO
-		  , DELV_LOC_CD
-		  , DELV_ASSIGN_DT
-		  , DELV_ASSIGN_STAT
-		  , DSTRBT_NOTE
-		  , DELV_STDT
-		  , DELV_EDDT
-		  , SHIP_COMP_CD
-		  , INVOICE_NO
-		  , INVOICE_SEND_YN
-		  , SELL_STORE_CD
-		  , SELL_FEE_RATE
-		  , AF_LINK_CD
-		  , ITHR_CD
-		  , CONTENTS_LOC
-		  , PLAN_DTL_SQ
-		  , SOCIAL_SQ
-		  , REG_NO
-		  , REG_DT
-		  , UPD_NO
-		  , UPD_DT
-		)
-		SELECT ORD_NO
-			 , 'E'
-			 , #{ordDtlStat}
-			 , ORD_DTL_NO
-			 , SUPPLY_COMP_CD
-			 , GOODS_CD
-			 , PRODUCT_NO -- X
-			 , PRODUCT_CODE -- X
-			 , FORMAL_GB
-			 , GOODS_TYPE
-			 , LIST_PRICE
-			 , CURR_PRICE
-			 , DC_RATE
-			 , OPT_ADD_PRICE
-			 , #{chgQty}
-			 , 0
-			 , 0
-			 , 0
-			 , CPN1_CPN_SQ
-			 , 0
-			 , TMTB1_SQ
-			 , 0
-			 , TMTB2_SQ
-			 , 0
-			 , GOODS_CPN_SQ
-			 , 0
-			 , CART_CPN_SQ
-			 , 0
-			 , BURDEN_RATE
-			 , 0
-			 , 0
-			 , 0
-			 , 0
-			 , 0
-			 , VENDOR_ID
-			 , EXTMALL_ID
-			 , AGENT_ORDER_ID
-			 , EXTMALL_ORDER_ID
-			 , CHANGABLE_YN
-			 , CHANGE_FEE_FREE_YN
-			 , RETURNABLE_YN
-			 , RETURN_FEE_FREE_YN
-			 , SOLDOUT_YN
-			 , SOLDOUT_MEMO
-			 , SOLDOUT_REG_NO
-			 , SOLDOUT_REG_DT
-			 , #{delvAddrSq}
-			 , DELV_FEE_CD
-			 , SHOT_DELV_YN
-			 , GIFT_PACK_YN
-			 , MAKE_GOODS_YN
-			 , ENTRY_NO
-			 , NULL
-			 , NULL
-			 , 'P'
-			 , NULL
-			 , NULL
-			 , NULL
-			 , NULL
-			 , NULL
-			 , 'N'
-			 , SELL_STORE_CD
-			 , SELL_FEE_RATE
-			 , AF_LINK_CD
-			 , ITHR_CD
-			 , CONTENTS_LOC
-			 , PLAN_DTL_SQ
-			 , SOCIAL_SQ
-			 , #{regNo}
-			 , NOW()
-			 , #{updNo}
-			 , NOW()
-		  FROM TB_ORDER_DETAIL
-		 WHERE ORD_DTL_NO = #{ordDtlNo}
-	</insert>
-
-	<!-- 주문상세정보 이력 생성 -->
-	<insert id="createOrderDetailHstForExchange" parameterType="Order">
-		/* order.createOrderDetailHstForExchange */
-		INSERT INTO TB_ORDER_DETAIL_HST (
-			ORD_DTL_NO
-		  , ORD_NO
-		  , ORD_EXCH_GB
-		  , ORD_DTL_STAT
-		  , ORG_ORD_DTL_NO
-		  , SUPPLY_COMP_CD
-		  , GOODS_CD
-		  , PRODUCT_NO
-		  , PRODUCT_CODE
-		  , FORMAL_GB
-		  , GOODS_TYPE
-		  , LIST_PRICE
-		  , CURR_PRICE
-		  , DC_RATE
-		  , OPT_ADD_PRICE
-		  , ORD_QTY
-		  , ORD_AMT
-		  , CNCL_RTN_QTY
-		  , CNCL_RTN_AMT
-		  , CPN1_CPN_SQ
-		  , CPN1_DC_AMT
-		  , TMTB1_SQ
-		  , TMTB1_DC_AMT
-		  , TMTB2_SQ
-		  , TMTB2_DC_AMT
-		  , GOODS_CPN_SQ
-		  , GOODS_CPN_DC_AMT
-		  , CART_CPN_SQ
-		  , CART_CPN_DC_AMT
-		  , BURDEN_RATE
-		  , PNT_DC_AMT
-		  , PRE_PNT_DC_AMT
-		  , SAVE_PNT_AMT
-		  , REAL_ORD_AMT
-		  , GFCD_USE_AMT
-		  , VENDOR_ID
-		  , EXTMALL_ID
-		  , AGENT_ORDER_ID
-		  , EXTMALL_ORDER_ID
-		  , CHANGABLE_YN
-		  , CHANGE_FEE_FREE_YN
-		  , RETURNABLE_YN
-		  , RETURN_FEE_FREE_YN
-		  , SOLDOUT_YN
-		  , SOLDOUT_MEMO
-		  , SOLDOUT_REG_NO
-		  , SOLDOUT_REG_DT
-		  , DELV_ADDR_SQ
-		  , DELV_FEE_CD
-		  , SHOT_DELV_YN
-		  , GIFT_PACK_YN
-		  , MAKE_GOODS_YN
-		  , ENTRY_NO
-		  , DELV_LOC_CD
-		  , DELV_ASSIGN_DT
-		  , DELV_ASSIGN_STAT
-		  , DSTRBT_NOTE
-		  , DELV_STDT
-		  , DELV_EDDT
-		  , SHIP_COMP_CD
-		  , INVOICE_NO
-		  , INVOICE_SEND_YN
-		  , SELL_STORE_CD
-		  , SELL_FEE_RATE
-		  , AF_LINK_CD
-		  , ITHR_CD
-		  , CONTENTS_LOC
-		  , PLAN_DTL_SQ
-		  , SOCIAL_SQ
-		  , REG_NO
-		  , REG_DT
-		  , UPD_NO
-		  , UPD_DT
-		)
-		SELECT ORD_DTL_NO
-			 , ORD_NO
-			 , ORD_EXCH_GB
-			 , ORD_DTL_STAT
-			 , ORG_ORD_DTL_NO
-			 , SUPPLY_COMP_CD
-			 , GOODS_CD
-			 , PRODUCT_NO
-			 , PRODUCT_CODE
-			 , FORMAL_GB
-			 , GOODS_TYPE
-			 , LIST_PRICE
-			 , CURR_PRICE
-			 , DC_RATE
-			 , OPT_ADD_PRICE
-			 , ORD_QTY
-			 , ORD_AMT
-			 , CNCL_RTN_QTY
-			 , CNCL_RTN_AMT
-			 , CPN1_CPN_SQ
-			 , CPN1_DC_AMT
-			 , TMTB1_SQ
-			 , TMTB1_DC_AMT
-			 , TMTB2_SQ
-			 , TMTB2_DC_AMT
-			 , GOODS_CPN_SQ
-			 , GOODS_CPN_DC_AMT
-			 , CART_CPN_SQ
-			 , CART_CPN_DC_AMT
-			 , BURDEN_RATE
-			 , PNT_DC_AMT
-			 , PRE_PNT_DC_AMT
-			 , SAVE_PNT_AMT
-			 , REAL_ORD_AMT
-			 , GFCD_USE_AMT
-			 , VENDOR_ID
-			 , EXTMALL_ID
-			 , AGENT_ORDER_ID
-			 , EXTMALL_ORDER_ID
-			 , CHANGABLE_YN
-			 , CHANGE_FEE_FREE_YN
-			 , RETURNABLE_YN
-			 , RETURN_FEE_FREE_YN
-			 , SOLDOUT_YN
-			 , SOLDOUT_MEMO
-			 , SOLDOUT_REG_NO
-			 , SOLDOUT_REG_DT
-			 , DELV_ADDR_SQ
-			 , DELV_FEE_CD
-			 , SHOT_DELV_YN
-			 , GIFT_PACK_YN
-			 , MAKE_GOODS_YN
-			 , ENTRY_NO
-			 , DELV_LOC_CD
-			 , DELV_ASSIGN_DT
-			 , DELV_ASSIGN_STAT
-			 , DSTRBT_NOTE
-			 , DELV_STDT
-			 , DELV_EDDT
-			 , SHIP_COMP_CD
-			 , INVOICE_NO
-			 , INVOICE_SEND_YN
-			 , SELL_STORE_CD
-			 , SELL_FEE_RATE
-			 , AF_LINK_CD
-			 , ITHR_CD
-			 , CONTENTS_LOC
-			 , PLAN_DTL_SQ
-			 , SOCIAL_SQ
-			 , #{regNo}
-			 , NOW()
-			 , #{updNo}
-			 , NOW()
-		  FROM TB_ORDER_DETAIL
-		 WHERE ORD_DTL_NO = #{exchangeOrdDtlNo} 
-	</insert>
-
-	<!-- 주문상세단품정보 생성 -->
-	<insert id="createOrderDetailItemForExchange" parameterType="Order" keyProperty="exchangeOrdDtlItemSq">
-		/* order.createOrderDetailItemForExchange */
-		<selectKey keyProperty="exchangeOrdDtlItemSq" resultType="int" order="AFTER">
-			SELECT LAST_INSERT_ID()
-		</selectKey>
-
-		INSERT INTO TB_ORDER_DETAIL_ITEM (
-			ORD_DTL_NO
-		  , ORD_NO
-		  , ORD_DTL_STAT
-		  , ITEM_CD
-		  , OPT_CD
-		  , OPT_CD1
-		  , OPT_CD2
-		  , SKU_MODEL_NO
-		  , PRODUCT_NO
-		  , PRODUCT_CODE
-		  , ITEM_QTY
-		  , ITEM_PRICE
-		  , OPT_ADD_PRICE
-		  , DISP_ORD
-		  , ORD_AMT
-		  , CNCL_RTN_AMT
-		  , CPN1_DC_AMT
-		  , TMTB1_DC_AMT
-		  , TMTB2_DC_AMT
-		  , GOODS_CPN_DC_AMT
-		  , CART_CPN_DC_AMT
-		  , PNT_DC_AMT
-		  , PRE_PNT_DC_AMT
-		  , SAVE_PNT_AMT
-		  , REAL_ORD_AMT
-		  , GFCD_USE_AMT
-		  , REG_NO
-		  , REG_DT
-		  , UPD_NO
-		  , UPD_DT
-		)
-		SELECT #{ordDtlNo}
-			 , ODI.ORD_NO
-			 , #{ordDtlStat}
-			 , ODI.ITEM_CD
-			 , OP.OPT_CD
-			 , OP.OPT_CD1
-			 , OP.OPT_CD2
-			 , OP.SKU_MODEL_NO
-			 , OP.PRODUCT_NO
-			 , OP.PRODUCT_CODE
-			 , ODI.ITEM_QTY
-			 , ODI.ITEM_PRICE
-			 , ODI.OPT_ADD_PRICE
-			 , ODI.DISP_ORD
-			 , 0
-			 , 0
-			 , 0
-			 , 0
-			 , 0
-			 , 0
-			 , 0
-			 , 0
-			 , 0
-			 , 0
-			 , 0
-			 , 0
-			 , #{regNo}
-			 , NOW()
-			 , #{updNo}
-			 , NOW()
-		  FROM TB_ORDER_DETAIL_ITEM ODI
-		 INNER JOIN TB_GOODS G
-		    ON ODI.ITEM_CD = G.GOODS_CD
-		 INNER JOIN TB_OPTION OP
-		    ON G.GOODS_CD = OP.GOODS_CD
-		   AND ODI.OPT_CD1 = OP.OPT_CD1
-		   AND OP.OPT_CD2 = #{ordChgOpt}
-		 WHERE ORD_DTL_ITEM_SQ = #{ordDtlItemSq}
-	</insert>
-
-	<!-- 주문상세단품정보 이력 생성 -->
-	<insert id="createOrderDetailItemHstForExchange" parameterType="Order">
-		/* order.createOrderDetailItemHstForExchange */
-		INSERT INTO TB_ORDER_DETAIL_ITEM_HST (
-			ORD_DTL_ITEM_SQ
-		  , ORD_DTL_NO
-		  , ORD_NO
-		  , ORD_DTL_STAT
-		  , ITEM_CD
-		  , OPT_CD
-		  , OPT_CD1
-		  , OPT_CD2
-		  , SKU_MODEL_NO
-		  , PRODUCT_NO
-		  , PRODUCT_CODE
-		  , ITEM_QTY
-		  , ITEM_PRICE
-		  , OPT_ADD_PRICE
-		  , DISP_ORD
-		  , ORD_AMT
-		  , CNCL_RTN_AMT
-		  , CPN1_DC_AMT
-		  , TMTB1_DC_AMT
-		  , TMTB2_DC_AMT
-		  , GOODS_CPN_DC_AMT
-		  , CART_CPN_DC_AMT
-		  , PNT_DC_AMT
-		  , PRE_PNT_DC_AMT
-		  , SAVE_PNT_AMT
-		  , REAL_ORD_AMT
-		  , GFCD_USE_AMT
-		  , REG_NO
-		  , REG_DT
-		  , UPD_NO
-		  , UPD_DT
-		)
-		SELECT ORD_DTL_ITEM_SQ
-			 , ORD_DTL_NO
-			 , ORD_NO
-			 , ORD_DTL_STAT
-			 , ITEM_CD
-			 , OPT_CD
-			 , OPT_CD1
-			 , OPT_CD2
-			 , SKU_MODEL_NO
-			 , PRODUCT_NO
-			 , PRODUCT_CODE
-			 , ITEM_QTY
-			 , ITEM_PRICE
-			 , OPT_ADD_PRICE
-			 , DISP_ORD
-			 , ORD_AMT
-			 , CNCL_RTN_AMT
-			 , CPN1_DC_AMT
-			 , TMTB1_DC_AMT
-			 , TMTB2_DC_AMT
-			 , GOODS_CPN_DC_AMT
-			 , CART_CPN_DC_AMT
-			 , PNT_DC_AMT
-			 , PRE_PNT_DC_AMT
-			 , SAVE_PNT_AMT
-			 , REAL_ORD_AMT
-			 , GFCD_USE_AMT
-			 , REG_NO
-			 , REG_DT
-			 , UPD_NO
-			 , UPD_DT
-		  FROM TB_ORDER_DETAIL_ITEM
-		 WHERE ORD_DTL_ITEM_SQ = #{exchangeOrdDtlItemSq} 
-	</insert>
-	
-	<!-- 주문배송주소 등록 -->
-	<insert id="createDeliveryAddr" parameterType="Order" keyProperty="delvAddrSq">
-		/* order.createDeliveryAddr */
-		INSERT INTO TB_DELIVERY_ADDR (
-			RECIP_NM
-		  , RECIP_PHNNO
-		  , RECIP_TELNO
-		  , RECIP_ZIPCODE
-		  , RECIP_BASE_ADDR
-		  , RECIP_DTL_ADDR
-		  , DELV_MEMO
-		  , REG_NO
-		  , REG_DT
-		  , UPD_NO
-		  , UPD_DT
-		) VALUES (
-			#{recipNm}
-		  , #{recipPhnno}
-		  , #{recipTelno}
-		  , #{recipZipcode}
-		  , #{recipBaseAddr}
-		  , #{recipDtlAddr}
-		  , #{delvMemo}
-		  , #{regNo}
-		  , NOW()
-		  , #{updNo}
-		  , NOW()
-		)
-	</insert>
-
 </mapper>
 
 

+ 529 - 1
src/main/java/com/style24/persistence/mybatis/shop/TscOrderChange.xml

@@ -381,6 +381,7 @@
 			, ORD_DTL_NO
 			, CHG_QTY
 			, CHG_STAT
+			, CHG_ORD_DTL_NO
 			, COMPLETE_DT
 			, REG_NO
 			, REG_DT
@@ -391,7 +392,8 @@
 			, #{ordDtlNo}
 			, #{chgQty}
 			, #{chgStat}
-			, NOW()
+			, #{chgOrdDtlNo}
+			, NULL
 			, #{regNo}
 			, NOW()
 			, #{updNo}
@@ -1031,6 +1033,532 @@
 		AND    OD.ORD_NO = #{ordNo}
 	</insert>
 
+	<!-- 주문상세정보 생성 -->
+	<insert id="createOrderDetailForExchange" parameterType="Order">
+		/* order.createOrderDetailForExchange */
+		<selectKey keyProperty="exchangeOrdDtlNo" resultType="int" order="AFTER">
+			SELECT LAST_INSERT_ID()
+		</selectKey>
+
+		INSERT INTO TB_ORDER_DETAIL (
+		ORD_NO
+		, ORD_EXCH_GB
+		, ORD_DTL_STAT
+		, ORG_ORD_DTL_NO
+		, SUPPLY_COMP_CD
+		, GOODS_CD
+		, PRODUCT_NO
+		, PRODUCT_CODE
+		, FORMAL_GB
+		, GOODS_TYPE
+		, LIST_PRICE
+		, CURR_PRICE
+		, DC_RATE
+		, OPT_ADD_PRICE
+		, ORD_QTY
+		, ORD_AMT
+		, CNCL_RTN_QTY
+		, CNCL_RTN_AMT
+		, CPN1_CPN_SQ
+		, CPN1_DC_AMT
+		, TMTB1_SQ
+		, TMTB1_DC_AMT
+		, TMTB2_SQ
+		, TMTB2_DC_AMT
+		, GOODS_CPN_SQ
+		, GOODS_CPN_DC_AMT
+		, CART_CPN_SQ
+		, CART_CPN_DC_AMT
+		, BURDEN_RATE
+		, PNT_DC_AMT
+		, PRE_PNT_DC_AMT
+		, SAVE_PNT_AMT
+		, REAL_ORD_AMT
+		, GFCD_USE_AMT
+		, VENDOR_ID
+		, EXTMALL_ID
+		, AGENT_ORDER_ID
+		, EXTMALL_ORDER_ID
+		, CHANGABLE_YN
+		, CHANGE_FEE_FREE_YN
+		, RETURNABLE_YN
+		, RETURN_FEE_FREE_YN
+		, SOLDOUT_YN
+		, SOLDOUT_MEMO
+		, SOLDOUT_REG_NO
+		, SOLDOUT_REG_DT
+		, DELV_ADDR_SQ
+		, DELV_FEE_CD
+		, SHOT_DELV_YN
+		, GIFT_PACK_YN
+		, MAKE_GOODS_YN
+		, ENTRY_NO
+		, DELV_LOC_CD
+		, DELV_ASSIGN_DT
+		, DELV_ASSIGN_STAT
+		, DSTRBT_NOTE
+		, DELV_STDT
+		, DELV_EDDT
+		, SHIP_COMP_CD
+		, INVOICE_NO
+		, INVOICE_SEND_YN
+		, SELL_STORE_CD
+		, SELL_FEE_RATE
+		, AF_LINK_CD
+		, ITHR_CD
+		, CONTENTS_LOC
+		, PLAN_DTL_SQ
+		, SOCIAL_SQ
+		, REG_NO
+		, REG_DT
+		, UPD_NO
+		, UPD_DT
+		)
+		SELECT ORD_NO
+		, 'E'
+		, #{ordDtlStat}
+		, ORD_DTL_NO
+		, SUPPLY_COMP_CD
+		, GOODS_CD
+		, PRODUCT_NO -- X
+		, PRODUCT_CODE -- X
+		, FORMAL_GB
+		, GOODS_TYPE
+		, LIST_PRICE
+		, CURR_PRICE
+		, DC_RATE
+		, OPT_ADD_PRICE
+		, #{chgQty}
+		, 0
+		, 0
+		, 0
+		, CPN1_CPN_SQ
+		, 0
+		, TMTB1_SQ
+		, 0
+		, TMTB2_SQ
+		, 0
+		, GOODS_CPN_SQ
+		, 0
+		, CART_CPN_SQ
+		, 0
+		, BURDEN_RATE
+		, 0
+		, 0
+		, 0
+		, 0
+		, 0
+		, VENDOR_ID
+		, EXTMALL_ID
+		, AGENT_ORDER_ID
+		, EXTMALL_ORDER_ID
+		, CHANGABLE_YN
+		, CHANGE_FEE_FREE_YN
+		, RETURNABLE_YN
+		, RETURN_FEE_FREE_YN
+		, SOLDOUT_YN
+		, SOLDOUT_MEMO
+		, SOLDOUT_REG_NO
+		, SOLDOUT_REG_DT
+		, #{delvAddrSq}
+		, DELV_FEE_CD
+		, SHOT_DELV_YN
+		, GIFT_PACK_YN
+		, MAKE_GOODS_YN
+		, ENTRY_NO
+		, NULL
+		, NULL
+		, 'P'
+		, NULL
+		, NULL
+		, NULL
+		, NULL
+		, NULL
+		, 'N'
+		, SELL_STORE_CD
+		, SELL_FEE_RATE
+		, AF_LINK_CD
+		, ITHR_CD
+		, CONTENTS_LOC
+		, PLAN_DTL_SQ
+		, SOCIAL_SQ
+		, #{regNo}
+		, NOW()
+		, #{updNo}
+		, NOW()
+		FROM TB_ORDER_DETAIL
+		WHERE ORD_DTL_NO = #{ordDtlNo}
+	</insert>
+
+	<!-- 주문상세정보 이력 생성 -->
+	<insert id="createOrderDetailHstForExchange" parameterType="Order">
+		/* order.createOrderDetailHstForExchange */
+		INSERT INTO TB_ORDER_DETAIL_HST (
+			ORD_DTL_NO
+		  , ORD_NO
+		  , ORD_EXCH_GB
+		  , ORD_DTL_STAT
+		  , ORG_ORD_DTL_NO
+		  , SUPPLY_COMP_CD
+		  , GOODS_CD
+		  , PRODUCT_NO
+		  , PRODUCT_CODE
+		  , FORMAL_GB
+		  , GOODS_TYPE
+		  , LIST_PRICE
+		  , CURR_PRICE
+		  , DC_RATE
+		  , OPT_ADD_PRICE
+		  , ORD_QTY
+		  , ORD_AMT
+		  , CNCL_RTN_QTY
+		  , CNCL_RTN_AMT
+		  , CPN1_CPN_SQ
+		  , CPN1_DC_AMT
+		  , TMTB1_SQ
+		  , TMTB1_DC_AMT
+		  , TMTB2_SQ
+		  , TMTB2_DC_AMT
+		  , GOODS_CPN_SQ
+		  , GOODS_CPN_DC_AMT
+		  , CART_CPN_SQ
+		  , CART_CPN_DC_AMT
+		  , BURDEN_RATE
+		  , PNT_DC_AMT
+		  , PRE_PNT_DC_AMT
+		  , SAVE_PNT_AMT
+		  , REAL_ORD_AMT
+		  , GFCD_USE_AMT
+		  , VENDOR_ID
+		  , EXTMALL_ID
+		  , AGENT_ORDER_ID
+		  , EXTMALL_ORDER_ID
+		  , CHANGABLE_YN
+		  , CHANGE_FEE_FREE_YN
+		  , RETURNABLE_YN
+		  , RETURN_FEE_FREE_YN
+		  , SOLDOUT_YN
+		  , SOLDOUT_MEMO
+		  , SOLDOUT_REG_NO
+		  , SOLDOUT_REG_DT
+		  , DELV_ADDR_SQ
+		  , DELV_FEE_CD
+		  , SHOT_DELV_YN
+		  , GIFT_PACK_YN
+		  , MAKE_GOODS_YN
+		  , ENTRY_NO
+		  , DELV_LOC_CD
+		  , DELV_ASSIGN_DT
+		  , DELV_ASSIGN_STAT
+		  , DSTRBT_NOTE
+		  , DELV_STDT
+		  , DELV_EDDT
+		  , SHIP_COMP_CD
+		  , INVOICE_NO
+		  , INVOICE_SEND_YN
+		  , SELL_STORE_CD
+		  , SELL_FEE_RATE
+		  , AF_LINK_CD
+		  , ITHR_CD
+		  , CONTENTS_LOC
+		  , PLAN_DTL_SQ
+		  , SOCIAL_SQ
+		  , REG_NO
+		  , REG_DT
+		  , UPD_NO
+		  , UPD_DT
+		)
+		SELECT ORD_DTL_NO
+			 , ORD_NO
+			 , ORD_EXCH_GB
+			 , ORD_DTL_STAT
+			 , ORG_ORD_DTL_NO
+			 , SUPPLY_COMP_CD
+			 , GOODS_CD
+			 , PRODUCT_NO
+			 , PRODUCT_CODE
+			 , FORMAL_GB
+			 , GOODS_TYPE
+			 , LIST_PRICE
+			 , CURR_PRICE
+			 , DC_RATE
+			 , OPT_ADD_PRICE
+			 , ORD_QTY
+			 , ORD_AMT
+			 , CNCL_RTN_QTY
+			 , CNCL_RTN_AMT
+			 , CPN1_CPN_SQ
+			 , CPN1_DC_AMT
+			 , TMTB1_SQ
+			 , TMTB1_DC_AMT
+			 , TMTB2_SQ
+			 , TMTB2_DC_AMT
+			 , GOODS_CPN_SQ
+			 , GOODS_CPN_DC_AMT
+			 , CART_CPN_SQ
+			 , CART_CPN_DC_AMT
+			 , BURDEN_RATE
+			 , PNT_DC_AMT
+			 , PRE_PNT_DC_AMT
+			 , SAVE_PNT_AMT
+			 , REAL_ORD_AMT
+			 , GFCD_USE_AMT
+			 , VENDOR_ID
+			 , EXTMALL_ID
+			 , AGENT_ORDER_ID
+			 , EXTMALL_ORDER_ID
+			 , CHANGABLE_YN
+			 , CHANGE_FEE_FREE_YN
+			 , RETURNABLE_YN
+			 , RETURN_FEE_FREE_YN
+			 , SOLDOUT_YN
+			 , SOLDOUT_MEMO
+			 , SOLDOUT_REG_NO
+			 , SOLDOUT_REG_DT
+			 , DELV_ADDR_SQ
+			 , DELV_FEE_CD
+			 , SHOT_DELV_YN
+			 , GIFT_PACK_YN
+			 , MAKE_GOODS_YN
+			 , ENTRY_NO
+			 , DELV_LOC_CD
+			 , DELV_ASSIGN_DT
+			 , DELV_ASSIGN_STAT
+			 , DSTRBT_NOTE
+			 , DELV_STDT
+			 , DELV_EDDT
+			 , SHIP_COMP_CD
+			 , INVOICE_NO
+			 , INVOICE_SEND_YN
+			 , SELL_STORE_CD
+			 , SELL_FEE_RATE
+			 , AF_LINK_CD
+			 , ITHR_CD
+			 , CONTENTS_LOC
+			 , PLAN_DTL_SQ
+			 , SOCIAL_SQ
+			 , #{regNo}
+			 , NOW()
+			 , #{updNo}
+			 , NOW()
+		  FROM TB_ORDER_DETAIL
+		 WHERE ORD_DTL_NO = #{exchangeOrdDtlNo} 
+	</insert>
+
+	<!-- 주문상세단품정보 생성 -->
+	<insert id="createOrderDetailItemForExchange" parameterType="Order" keyProperty="exchangeOrdDtlItemSq">
+		/* order.createOrderDetailItemForExchange */
+		<selectKey keyProperty="exchangeOrdDtlItemSq" resultType="int" order="AFTER">
+			SELECT LAST_INSERT_ID()
+		</selectKey>
+
+		INSERT INTO TB_ORDER_DETAIL_ITEM (
+		ORD_DTL_NO
+		, ORD_NO
+		, ORD_DTL_STAT
+		, ITEM_CD
+		, OPT_CD
+		, OPT_CD1
+		, OPT_CD2
+		, SKU_MODEL_NO
+		, PRODUCT_NO
+		, PRODUCT_CODE
+		, ITEM_QTY
+		, ITEM_PRICE
+		, OPT_ADD_PRICE
+		, DISP_ORD
+		, ORD_AMT
+		, CNCL_RTN_AMT
+		, CPN1_DC_AMT
+		, TMTB1_DC_AMT
+		, TMTB2_DC_AMT
+		, GOODS_CPN_DC_AMT
+		, CART_CPN_DC_AMT
+		, PNT_DC_AMT
+		, PRE_PNT_DC_AMT
+		, SAVE_PNT_AMT
+		, REAL_ORD_AMT
+		, GFCD_USE_AMT
+		, REG_NO
+		, REG_DT
+		, UPD_NO
+		, UPD_DT
+		)
+		SELECT #{ordDtlNo}
+		, ODI.ORD_NO
+		, #{ordDtlStat}
+		, ODI.ITEM_CD
+		, OP.OPT_CD
+		, OP.OPT_CD1
+		, OP.OPT_CD2
+		, OP.SKU_MODEL_NO
+		, OP.PRODUCT_NO
+		, OP.PRODUCT_CODE
+		, ODI.ITEM_QTY
+		, ODI.ITEM_PRICE
+		, ODI.OPT_ADD_PRICE
+		, ODI.DISP_ORD
+		, 0
+		, 0
+		, 0
+		, 0
+		, 0
+		, 0
+		, 0
+		, 0
+		, 0
+		, 0
+		, 0
+		, 0
+		, #{regNo}
+		, NOW()
+		, #{updNo}
+		, NOW()
+		FROM TB_ORDER_DETAIL_ITEM ODI
+		INNER JOIN TB_GOODS G
+		ON ODI.ITEM_CD = G.GOODS_CD
+		INNER JOIN TB_OPTION OP
+		ON G.GOODS_CD = OP.GOODS_CD
+		AND ODI.OPT_CD1 = OP.OPT_CD1
+		AND OP.OPT_CD2 = #{ordChgOpt}
+		WHERE ORD_DTL_ITEM_SQ = #{ordDtlItemSq}
+	</insert>
+
+	<!-- 주문상세단품정보 이력 생성 -->
+	<insert id="createOrderDetailItemHstForExchange" parameterType="Order">
+		/* order.createOrderDetailItemHstForExchange */
+		INSERT INTO TB_ORDER_DETAIL_ITEM_HST (
+			ORD_DTL_ITEM_SQ
+		  , ORD_DTL_NO
+		  , ORD_NO
+		  , ORD_DTL_STAT
+		  , ITEM_CD
+		  , OPT_CD
+		  , OPT_CD1
+		  , OPT_CD2
+		  , SKU_MODEL_NO
+		  , PRODUCT_NO
+		  , PRODUCT_CODE
+		  , ITEM_QTY
+		  , ITEM_PRICE
+		  , OPT_ADD_PRICE
+		  , DISP_ORD
+		  , ORD_AMT
+		  , CNCL_RTN_AMT
+		  , CPN1_DC_AMT
+		  , TMTB1_DC_AMT
+		  , TMTB2_DC_AMT
+		  , GOODS_CPN_DC_AMT
+		  , CART_CPN_DC_AMT
+		  , PNT_DC_AMT
+		  , PRE_PNT_DC_AMT
+		  , SAVE_PNT_AMT
+		  , REAL_ORD_AMT
+		  , GFCD_USE_AMT
+		  , REG_NO
+		  , REG_DT
+		  , UPD_NO
+		  , UPD_DT
+		)
+		SELECT ORD_DTL_ITEM_SQ
+			 , ORD_DTL_NO
+			 , ORD_NO
+			 , ORD_DTL_STAT
+			 , ITEM_CD
+			 , OPT_CD
+			 , OPT_CD1
+			 , OPT_CD2
+			 , SKU_MODEL_NO
+			 , PRODUCT_NO
+			 , PRODUCT_CODE
+			 , ITEM_QTY
+			 , ITEM_PRICE
+			 , OPT_ADD_PRICE
+			 , DISP_ORD
+			 , ORD_AMT
+			 , CNCL_RTN_AMT
+			 , CPN1_DC_AMT
+			 , TMTB1_DC_AMT
+			 , TMTB2_DC_AMT
+			 , GOODS_CPN_DC_AMT
+			 , CART_CPN_DC_AMT
+			 , PNT_DC_AMT
+			 , PRE_PNT_DC_AMT
+			 , SAVE_PNT_AMT
+			 , REAL_ORD_AMT
+			 , GFCD_USE_AMT
+			 , REG_NO
+			 , REG_DT
+			 , UPD_NO
+			 , UPD_DT
+		  FROM TB_ORDER_DETAIL_ITEM
+		 WHERE ORD_DTL_ITEM_SQ = #{exchangeOrdDtlItemSq} 
+	</insert>
+
+	<!-- 주문배송주소 등록 -->
+	<insert id="createDeliveryAddr" parameterType="Order" keyProperty="delvAddrSq">
+		/* order.createDeliveryAddr */
+		INSERT INTO TB_DELIVERY_ADDR (
+			RECIP_NM
+		  , RECIP_PHNNO
+		  , RECIP_TELNO
+		  , RECIP_ZIPCODE
+		  , RECIP_BASE_ADDR
+		  , RECIP_DTL_ADDR
+		  , DELV_MEMO
+		  , REG_NO
+		  , REG_DT
+		  , UPD_NO
+		  , UPD_DT
+		) VALUES (
+			#{recipNm}
+		  , #{recipPhnno}
+		  , #{recipTelno}
+		  , #{recipZipcode}
+		  , #{recipBaseAddr}
+		  , #{recipDtlAddr}
+		  , #{delvMemo}
+		  , #{regNo}
+		  , NOW()
+		  , #{updNo}
+		  , NOW()
+		)
+	</insert>
+
+	<!-- 교환상품옵션재고정보 등록 -->
+	<update id="createSellQtyForExchange" parameterType="OrderChange">
+		/* OrderChange.createSellQtyForExchange */
+		INSERT INTO TB_SELL_QTY (
+			GOODS_CD
+			, OPT_CD
+			, SELL_GB
+			, ORD_DTL_NO
+			, ORD_CHG_SQ
+			, AGENT_ORDER_ID
+			, EXTMALL_ORDER_ID
+			, SELL_QTY
+			, REG_NO
+			, REG_DT
+		) 
+		SELECT ODI.ITEM_CD 
+		     , ODI.OPT_CD
+		     , #{sellGb}
+		     , ODI.ORD_DTL_NO
+		     , OCD.ORD_CHG_SQ
+		     , OD.AGENT_ORDER_ID 
+		     , OD.EXTMALL_ORDER_ID 
+		     , OCD.CHG_QTY * ODI.ITEM_QTY AS SELL_QTY
+		     , #{regNo}
+		     , NOW()
+		FROM   TB_ORDER_CHANGE_DETAIL OCD
+		INNER  JOIN TB_ORDER_DETAIL_ITEM ODI
+		ON     OCD.CHG_ORD_DTL_NO = ODI.ORD_DTL_NO
+		INNER  JOIN TB_ORDER_DETAIL OD
+		ON     OCD.CHG_ORD_DTL_NO = OD.ORD_DTL_NO
+		WHERE  1=1
+		AND    ORD_CHG_SQ = #{ordChgSq}
+	</update>
+
 </mapper>