Selaa lähdekoodia

Merge branch 'card007' into develop

# Conflicts:
#	src/main/java/com/style24/core/biz/service/TscOrderChangeService.java
#	src/main/java/com/style24/persistence/mybatis/shop/TscOrderChange.xml
card007 5 vuotta sitten
vanhempi
commit
dc48a01ee0

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

@@ -0,0 +1,58 @@
+package com.style24.core.biz.dao;
+
+import java.util.List;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Order;
+import com.style24.persistence.domain.OrderChange;
+
+/**
+ * 주문관리 Dao
+ *
+ * @author card007
+ * @since 2021. 01. 25
+ */
+@ShopDs
+public interface TscOrderDao {
+	
+	/**
+	 * 주문상세정보 생성
+	 *
+	 * @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);
+
+}

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

@@ -9,8 +9,11 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.dao.TscOrderChangeDao;
+import com.style24.core.biz.dao.TscOrderDao;
 import com.style24.core.support.env.TscConstants;
+import com.style24.persistence.domain.DeliveryFee;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
 
@@ -29,6 +32,9 @@ public class TscOrderChangeService {
 	@Autowired
 	private TscOrderChangeDao orderChangeDao;
 	
+	@Autowired
+	private TscOrderDao orderDao;
+	
 	/**
 	 * 주문변경정보 (상세번호배열, 취소수량배열) 취소 목록으로 변환
 	 * @param Order
@@ -721,13 +727,165 @@ public class TscOrderChangeService {
 	 * @author jsh77b
 	 * @since 2021. 01. 19
 	 */
-	public GagaMap exchReq(List<Order> cnclRtnList) {
-		GagaMap mav = new GagaMap();
+	public GagaMap exchReq(OrderChange excReq) {
+		GagaMap result = new GagaMap();
+		result.set("status", GagaResponseStatus.FAIL.getCode());
+		
+		// 교환 기본 정보
+		int ordNo = excReq.getOrdNo();						// 주문번호
+		String isCustomer = excReq.getIsCustomer();			// 귀책사유
+		String wdGb = excReq.getWdGb();						// 회수구분 (D:직접배송, W:회수요청)
+		String chgMemo = excReq.getChgMemo();				// 교환메모
+		int addPayCost = excReq.getAddPayCost();			// 추가배송비
+		Integer regNo = excReq.getRegNo();					// 등록자번호
+		Integer updNo = excReq.getUpdNo();					// 수정자번호
+		
+		// 회수지 정보
+		String chgerNm = excReq.getChgerNm();
+		String chgerTelno = excReq.getChgerTelno();
+		String chgerPhnno = excReq.getChgerPhnno();
+		String chgerEmail = excReq.getChgerEmail();
+		String chgerZipcode = excReq.getChgerZipcode();
+		String chgerBaseAddr = excReq.getChgerBaseAddr();
+		String chgerDtlAddr = excReq.getChgerDtlAddr();
+		
+		// 교환지 정보
+		String recipNm = excReq.getRecipNm();
+		String recipTelno = excReq.getRecipTelno();
+		String recipPhnno = excReq.getRecipPhnno();
+		String recipEmail = excReq.getRecipEmail();
+		String recipZipcode = excReq.getRecipZipcode();
+		String recipBaseAddr = excReq.getRecipBaseAddr();
+		String recipDtlAddr = excReq.getRecipDtlAddr();
+		
+		// 
+		Collection<Order> excReqList = excReq.getCancelReqList();
+		
+		// 1. 재고 체크 (세트아이템 포함)
 		
+
+		// 2. 교환상품 주문 상세 등록
+		int preOrdDtlNo = 0;
+		for (Order order : excReqList) {
+			int ordDtlNo = order.getOrdDtlNo();
+
+			if (preOrdDtlNo != ordDtlNo) {
+				// 2. TB_ORDER_DETAIL 등록
+				Order ordDtl = new Order();
+				ordDtl.setOrdDtlNo(order.getOrdDtlNo());
+				ordDtl.setOrdDtlStat(TscConstants.OrderDetailStat.WITHDRAW_CONFIRM_WAIT.value());
+				ordDtl.setChgQty(order.getChgQty());
+				ordDtl.setRegNo(order.getRegNo());
+				ordDtl.setUpdNo(order.getUpdNo());
+				orderDao.createOrderDetailForExchange(ordDtl);
+
+				// 3. TB_ORDER_DETAIL_HST 등록
+				orderDao.createOrderDetailHstForExchange(ordDtl);
+				
+				preOrdDtlNo = ordDtlNo;
+			}
+
+			// 4. TB_ORDER_DETAIL_ITEM 등록
+			Order ordDtlItem = new Order();
+			ordDtlItem.setOrdDtlItemSq(order.getOrdDtlItemSq());
+			ordDtlItem.setOrdDtlNo(order.getOrdDtlNo());
+			ordDtlItem.setOrdDtlStat(TscConstants.OrderDetailStat.WITHDRAW_CONFIRM_WAIT.value());
+			ordDtlItem.setOrdChgOpt(order.getOrdChgOpt());
+			ordDtlItem.setRegNo(order.getRegNo());
+			ordDtlItem.setUpdNo(order.getUpdNo());
+			
+			orderDao.createOrderDetailItemForExchange(ordDtlItem);
+
+			// 5. TB_ORDER_DETAIL_ITEM_HST 등록
+			orderDao.createOrderDetailItemHstForExchange(ordDtlItem);
+		}
 		
-		return mav;
+		// 6. TB_ORDER_CHANGE 등록
+		OrderChange orderChange = new OrderChange();
+		orderChange.setChgGb(TscConstants.OrderChangeGb.EXCHANGE.value());
+		orderChange.setChgReason(excReq.getChgReason());
+		orderChange.setChgMemo(excReq.getChgMemo());
+		orderChange.setChgerNm(excReq.getChgerNm());
+		orderChange.setChgerPhnno(excReq.getChgerPhnno());
+		orderChange.setChgerTelno(excReq.getChgerTelno());
+		orderChange.setChgerEmail(excReq.getChgerEmail());
+		orderChange.setChgerZipcode(excReq.getChgerZipcode());
+		orderChange.setChgerBaseAddr(excReq.getChgerBaseAddr());
+		orderChange.setChgerDtlAddr(excReq.getChgerDtlAddr());
+		orderChange.setChgerRtnMemo(excReq.getChgerRtnMemo());
+		orderChange.setAddPayCost(excReq.getAddPayCost());
+		orderChange.setAddPayAmt(excReq.getAddPayAmt());
+		orderChange.setRegNo(excReq.getRegNo());
+		orderChange.setUpdNo(excReq.getUpdNo());
+		
+		orderChangeDao.createOrderChange(orderChange);
+		
+		// 생성된 ordChgSq 설정
+		excReq.setOrdChgSq(orderChange.getOrdChgSq());
+
+		// 7. TB_ORDER_CHANGE_DETAIL 등록
+		String orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE.value();
+
+		if (addPayCost > 0) {
+			orderChangeStat = TscConstants.OrderChangeStat.EXCHANGE_WAIT.value();
+		}
+
+		// 8. TB_DELIVERY_FEE 추가배송비 등록
+		
+		// 9. TB_SELL_QTY 등록
+
+
+		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+		
+		return result;
 	}
-	
+
+	/**
+	 * 교환 추가배송비 조회
+	 * @param Collection<Order>
+	 * @return Collection<DeliveryFee>
+	 * @author card007
+	 * @since 2021. 01. 26
+	 */
+	public GagaMap getAddDeliveryFeeListForExchange(OrderChange orderChange) {
+		GagaMap result = new GagaMap();
+		Collection<DeliveryFee> deliveryFeeList = new ArrayList<>();
+		List<String> delvFeeCdList = new ArrayList<>();
+		int totalDelvFee = 0;
+
+		String wdGb = orderChange.getWdGb();
+		Collection<Order> excReqList = orderChange.getCancelReqList();
+		
+		for (Order order : excReqList) {
+			String delvFeeCd = order.getDelvFeeCd();
+			
+			if (!delvFeeCdList.contains(delvFeeCd)) {
+				int delvFee = 0;
+				
+				if ("true".equals(orderChange.getIsCustomer())) {
+					delvFee = "W".equals(wdGb) ? order.getExcDelvFee() : order.getRtnDelvFee();
+				}
+				
+				DeliveryFee deliveryFee = new DeliveryFee();
+				deliveryFee.setOrdNo(orderChange.getOrdNo());
+				deliveryFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.EXCHANGE_DELIVERY_FEE.value());
+				deliveryFee.setDelvFeeCd(delvFeeCd);
+				deliveryFee.setDelvFee(delvFee);
+				deliveryFee.setRealDelvAmt(delvFee);
+				deliveryFee.setOrdChgSq(orderChange.getOrdChgSq());
+				deliveryFee.setSupplyCompCd(order.getSupplyCompCd());
+				
+				deliveryFeeList.add(deliveryFee);
+				totalDelvFee += delvFee;
+			}
+		}
+		
+		result.set("totalDelvFee", totalDelvFee);
+		result.set("deliveryFeeList", deliveryFeeList);
+		
+		return result;
+	}
+
 	/**
 	 * 교환회수
 	 * @param Order

+ 23 - 20
src/main/java/com/style24/core/support/env/TscConstants.java

@@ -59,9 +59,10 @@ public class TscConstants {
 		}
 	}
 
+	// 접촉유형
 	public enum ContactType {
 		PROMOTION("G054_100"),					// 회원-프로모션
-		CONGRATULATIONS("G054_201"),				// 회원-회원가입축하
+		CONGRATULATIONS("G054_201"),			// 회원-회원가입축하
 		CELLPHONE_AUTHENTICATION("G054_202"),	// 회원-휴대전화인증
 		PASSWORD_INFO("G054_203"), 				// 회원-고객비밀번호발송
 		QNA_INFO("G054_204"),					// 회원-1:1문의답변
@@ -71,9 +72,9 @@ public class TscConstants {
 		BANK_DEPOSIT_INFO("G054_302"),			// 주문-무통장입금안내
 		SOLDOUT_EXPECTED_INFO("G054_303"),		// 주문-결품예정안내
 		SOLDOUT_INFO("G054_304"),				// 주문-결품안내
-		CANCEL_INFO("G054_305"),					// 주문-취소안내
+		CANCEL_INFO("G054_305"),				// 주문-취소안내
 		REPAYMENT_INFO("G054_306"),				// 주문-재결제안내
-		BUY_CONFIRM("G054_307"),					// 주문-구매확정
+		BUY_CONFIRM("G054_307"),				// 주문-구매확정
 		SHIPPING_INFO("G054_401"),				// 배송-주문상품배송안내
 		EXCHANGE_SHIPPING_INFO("G054_402"),		// 배송-교환상품배송안내
 		RETURN_RECEIPT("G054_501"),				// 반품-반품접수완료
@@ -89,6 +90,7 @@ public class TscConstants {
 	// 주문상세상태
 	public enum OrderDetailStat {
 		DEPOSIT_WAIT("G013_10"),			// 입금대기
+		WITHDRAW_CONFIRM_WAIT("G013_17"),	// 회수컨펌대기
 		ORDER_WAIT_PRICE("G013_18"),		// 발주대기-가격차이
 		ORDER_WAIT_POST("G013_19"),			// 발주대기-우편번호상이
 		PAYMENT_COMPLETE("G013_20"),		// 결제완료
@@ -250,6 +252,7 @@ public class TscConstants {
 		EXCHANGE("G685_30"),				// 교환요청
 		EXCHANGE_CANCEL("G685_31"),			// 교환요청 취소
 		EXCHANGE_COMPLETE("G685_32"),		// 교환완료
+		EXCHANGE_WAIT("G685_33"),			// 교환요청대기 (추가배송비 결제 전)
 
 		RETURN("G685_40"),					// 반품요청
 		RETURN_CANCEL("G685_41"),			// 반품요청 취소
@@ -306,23 +309,23 @@ public class TscConstants {
 		}
 	}
 
-//	// 배송비구분
-//	public enum DeliveryFeeGb {
-//		ORIGIN_DELIVERY_FEE("10"),		// 원주문배송비
-//		REPAYMENT_DELIVERY_FEE("20"),	// 재결제배송비
-//		EXCHANGE_DELIVERY_FEE("30"),	// 교환배송비
-//		RETURN_DELIVERY_FEE("40");		// 반품배송비
-//
-//		private String value;
-//
-//		private DeliveryFeeGb(String value) {
-//			this.value = value;
-//		}
-//
-//		public String value() {
-//			return value;
-//		}
-//	}
+	// 배송비구분
+	public enum DeliveryFeeGb {
+		ORIGIN_DELIVERY_FEE("G018_10"),		// 원주문배송비
+		REPAYMENT_DELIVERY_FEE("G018_20"),	// 재결제배송비
+		EXCHANGE_DELIVERY_FEE("G018_30"),	// 교환배송비
+		RETURN_DELIVERY_FEE("G018_40");		// 반품배송비
+
+		private String value;
+
+		private DeliveryFeeGb(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
 //
 //	// 정산구분
 //	public enum UsacGb {

+ 34 - 0
src/main/java/com/style24/persistence/domain/DeliveryFee.java

@@ -0,0 +1,34 @@
+package com.style24.persistence.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.style24.persistence.TscBaseDomain;
+import com.style24.persistence.TscPageRequest;
+
+import lombok.Data;
+
+/**
+ * 배송비 Domain
+ * 
+ * @author card007
+ * @since 2021. 01. 26
+ */
+@SuppressWarnings("serial")
+@Data
+public class DeliveryFee extends TscBaseDomain {
+
+	private int delvFeeSq;				// 배송비일련번호
+	private int paySq;					// 결제일련번호
+	private int ordNo;					// 주문번호
+	private String delvFeeGb;			// 배송비구분(공통코드G018)
+	private String delvFeeCd;			// 배송비정책코드
+	private int delvFee;				// 배송비
+	private int delvCpnSq;				// 배송비쿠폰일련번호
+	private int delvCpnDcAmt;			// 배송비쿠폰할인금액
+	private int realDelvAmt;			// 배송비실결제금액
+	private int ordChgSq;				// 주문변경일련번호
+	private String supplyCompCd;		// 공급업체코드
+	private String delvUsacYn;			// 배송비정산여부
+	private String delvUsacDt;			// 배송비정산일시
+	private int totalDelvFee;			// 총배송비
+
+}

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

@@ -373,4 +373,6 @@ public class Order extends TscBaseDomain {
 	private String rtnLocDtlAddr;
 	private String rtnLocTelno;
 	private String rtnLocNm;
+	private String exchangeOrdDtlNo;
+	private String exchangeOrdDtlItemSq;
 }

+ 7 - 0
src/main/java/com/style24/persistence/domain/OrderChange.java

@@ -66,4 +66,11 @@ public class OrderChange extends TscBaseDomain {
 	private String recipDtlAddr;
 	private String recipPhnno;
 	private String recipTelno;
+
+	private int chgOrdDtlNo;
+	private String completeDt;
+	private String wdShipState;
+	private String wdReasonCd;
+	private String wdStateDt;
+	private String delYn;
 }

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

@@ -0,0 +1,476 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.core.biz.dao.TscOrderDao">
+
+	<!-- 주문상세정보 생성 -->
+	<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
+			 , PRODUCT_CODE
+			 , 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
+			 , DELV_ADDR_SQ
+			 , 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">
+		/* 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}
+			 , ORD_NO
+			 , #{ordDtlStat}
+			 , ITEM_CD
+			 , OPT_CD
+			 , OPT_CD1
+			 , #{ordChgOpt}
+			 , SKU_MODEL_NO
+			 , PRODUCT_NO
+			 , PRODUCT_CODE
+			 , ITEM_QTY
+			 , ITEM_PRICE
+			 , OPT_ADD_PRICE
+			 , DISP_ORD
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , 0
+			 , #{regNo}
+			 , NOW()
+			 , #{updNo}
+			 , NOW()
+		  FROM TB_ORDER_DETAIL_ITEM
+		 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>
+
+</mapper>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

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

@@ -134,13 +134,59 @@
 	         , OD.ORD_NO
 	         , OD.ORD_DTL_NO
 	</select>
+	
+	<!-- 주문상세 > 주문취소신청 > 주문변경정보 등록-->
+	<insert id="createOrderChange" parameterType="OrderChange" keyProperty="ordChgSq">
+		/* Order.createOrderChange */
+		<selectKey keyProperty="ordChgSq" resultType="int" order="AFTER">
+			SELECT LAST_INSERT_ID()
+		</selectKey>
+
+		INSERT INTO TB_ORDER_CHANGE (
+			CHG_GB
+			, CHG_REASON
+			, CHG_MEMO
+			, CHGER_NM
+			, CHGER_PHNNO
+			, CHGER_TELNO
+			, CHGER_EMAIL
+			, CHGER_ZIPCODE
+			, CHGER_BASE_ADDR
+			, CHGER_DTL_ADDR
+			, CHGER_RTN_MEMO
+			, ADD_PAY_COST
+			, ADD_PAY_AMT
+			, REG_NO
+			, REG_DT
+			, UPD_NO
+			, UPD_DT
+		) values (
+			#{chgGb}
+			 , #{chgReason}
+			 , #{chgMemo}
+			 , #{chgerNm}
+			 , #{chgerPhnno}
+			 , #{chgerTelno}
+			 , #{chgerEmail}
+			 , #{chgerZipcode}
+			 , #{chgerBaseAddr}
+			 , #{chgerDtlAddr}
+			 , #{chgerRtnMemo}
+			 , #{addPayCost}
+			 , #{addPayAmt}
+			 , #{regNo}
+			 , SYSDATE()
+			 , #{updNo}
+			 , SYSDATE()
+		)
+	</insert>
 
 	<!-- 주문상세단품정보 수정 -->
 	<update id="updateOrderDetailItem" parameterType="Order">
 		/* Order.updateOrderDetailItem */
 		UPDATE TB_ORDER_DETAIL_ITEM ODI
 		INNER  JOIN TB_ORDER_DETAIL OD
-		ON     OD.ORD_DTL_NO = OD.ORD_DTL_NO
+		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}