jsh77b пре 5 година
родитељ
комит
7f3272e1b3

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

@@ -16,7 +16,7 @@ import com.style24.persistence.domain.OrderChange;
 public interface TscOrderChangeDao {
 	
 	/**
-	 * 주문상세 > 주문취소신청 > 주문취소,반품,교환 대상목록
+	 * 취소,반품,교환 대상목록 조회
 	 *
 	 * @param Order - 주문 정보
 	 * @return
@@ -24,59 +24,59 @@ public interface TscOrderChangeDao {
 	 * @since 2020. 12. 16
 	 */
 	List<Order> getCancelRequestTargetList(Order order);
-		
+	
 	/**
-	 * 주문상세 > 주문취소신청 > 주문변경정보 등록
+	 * 주문상세단품정보 수정
 	 *
 	 * @param Order - 주문 정보
 	 * @return
 	 * @author jsh77b
 	 * @since 2020. 12. 22
 	 */
-	int createOrderChange(OrderChange orderChange);
+	int updateOrderDetailItem(Order order);
 	
 	/**
-	 * 주문상세 > 주문취소신청 > 주문상세단품정보 수정
+	 * 주문상세단품이력정보 등록
 	 *
 	 * @param Order - 주문 정보
 	 * @return
 	 * @author jsh77b
 	 * @since 2020. 12. 22
 	 */
-	int updateOrderDetailItem(Order order);
+	int createOrderDetailItemHst(Order order);
 	
 	/**
-	 * 주문세 > 주문취소신청 > 주문상세단품정보 이력 등록
+	 * 상품옵션재고정보 등록
 	 *
 	 * @param Order - 주문 정보
 	 * @return
 	 * @author jsh77b
-	 * @since 2020. 12. 22
+	 * @since 2021. 01. 22
 	 */
-	int createOrderDetailItemHst(Order order);
+	int createSellQty(OrderChange orderChange);
 	
 	/**
-	 * 주문상세 > 주문취소신청 > 상품옵션 재고 원복
+	 * 주문변경정보 등록
 	 *
 	 * @param Order - 주문 정보
 	 * @return
 	 * @author jsh77b
-	 * @since 2021. 01. 08
+	 * @since 2020. 12. 22
 	 */
-	int updateOptionQty(Order order);
+	int createOrderChange(OrderChange orderChange);
 	
 	/**
-	 * 주문상세 > 주문취소신청 > 주문상세정보(취소,반품) 이력 등록
+	 * 주문변경상세정보 등록
 	 *
-	 * @param Order - 주문 정보
+	 * @param OrderChange - 주문 변경 정보
 	 * @return
 	 * @author jsh77b
 	 * @since 2020. 12. 22
 	 */
-	int createOrderDetailHstCnclRtn(Order order);
+	int createOrderChangeDetail(OrderChange orderChange);
 	
 	/**
-	 * 주문상세 > 주문취소신청 > 주문상세정보 수정
+	 * 주문상세정보 수정
 	 *
 	 * @param Order - 주문 정보
 	 * @return
@@ -86,17 +86,17 @@ public interface TscOrderChangeDao {
 	int updateOrderDetail(Order order);
 	
 	/**
-	 * 주문상세 > 주문취소신청 > 주문변경정보상세 등록
+	 * 주문상세이력정보 (취소,반품) 등록
 	 *
-	 * @param OrderChange - 주문 변경 정보
+	 * @param Order - 주문 정보
 	 * @return
 	 * @author jsh77b
 	 * @since 2020. 12. 22
 	 */
-	int createOrderChangeDetail(OrderChange orderChange);
+	int createOrderDetailHstCnclRtn(Order order);
 	
 	/**
-	 * 주문상세 > 주문취소신청 > 주문환불금액정보 등록
+	 * 주문환불금액정보(PG) 등록
 	 *
 	 * @param Order - 주문 정보
 	 * @return
@@ -106,7 +106,7 @@ public interface TscOrderChangeDao {
 	int createPayment(Order order);
 	
 	/**
-	 * 주문상세 > 주문취소신청 > 주문환불정보 등록
+	 * 주문환불정보 등록
 	 *
 	 * @param Order - 주문 정보
 	 * @return
@@ -116,7 +116,7 @@ public interface TscOrderChangeDao {
 	int createRefund(Order order);
 	
 	/**
-	 * 주문상세 > 주문취소신청 > 주문추가배송금액 등록
+	 * 주문추가배송금액 등록
 	 *
 	 * @param Order - 주문 정보
 	 * @return
@@ -126,7 +126,7 @@ public interface TscOrderChangeDao {
 	int createDeliveryFee(Order order);
 	
 	/**
-	 * 주문상세 > 주문취소신청 > 주문사은품전체취소
+	 * 주문사은품전체취소
 	 *
 	 * @param Order - 주문 정보
 	 * @return

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

@@ -103,20 +103,136 @@ public class TscOrderChangeService {
 	 * @author jsh77b
 	 * @since 2021. 01. 19
 	 */
+	@SuppressWarnings("unchecked")
 	@Transactional("shopTxnManager")
 	public GagaMap cnclReq(GagaMap mav, int userNo) {
 		
 		// 1. 세션회원조회
 		//userNo = userNo;
 		
-		// 2. 취소요정정보목록
-		//List<Order> cancelReqList		 	= (List<Order>) mav.get("cancelReqList");			//주문 취소 신청 목록
-		//List<Order> cancelOrderRefundList 	= (List<Order>) mav.get("cancelOrderRefundList");	//주문 환불 금액 목록
-		//List<Order> cancelDelvRefundList 	= (List<Order>) mav.get("cancelDelvRefundList");	//주문 환불 배송 금액 목록
+		// 2. 변경요정정보목록
+		List<Order> cancelReqList		 	= (List<Order>) mav.get("cnclRtnList");				// 변경요청 목록
+		List<Order> cancelOrderRefundList 	= (List<Order>) mav.get("cancelOrderRefundList");	// 변경환불금액 목록 (주문상세단품 단위)
+		List<Order> cancelDelvRefundList 	= (List<Order>) mav.get("cancelDelvRefundList");	// 변경환불배송금액 목록 (DELV_FEE_CD 단위)
+				
+		// 3. 변경신청정보
+		int ordNo 			= Integer.parseInt(mav.getString("ordNo").toString());				// 주문번호
+		String chgReason 	= mav.getString("chgReason").toString();							// 변경사유
+		String chgMemo 		= mav.getString("chgMemo").toString();								// 변경메모
+		String chgGb		= TscConstants.OrderChangeGb.CANCEL.value(); 						// 취소요청
 		
-		// 2. 주문변경정보등록 (TB_ORDER_CHAGNE) (등록)
+		// 4. 주문상세단품정보등록,변경 (단품단위)
+		List<Order> cancelOrderDetailList = new ArrayList<Order>();
 		
-		// 3. 주문변경상세정보등록 (TB_ORDER_CHANGE_DETAIL) (등록)
+		for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
+			Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
+			cancelOrderRefundPo.setRegNo(userNo);
+			cancelOrderRefundPo.setUpdNo(userNo);
+
+			// 4.1 취소수량이 존재하면 주문상세단품정보 수정 및 주문상세단품이력정보 등록
+			if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {				
+				// 4.4 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
+				Boolean temp = false;
+				if (cancelOrderDetailList.size() > 0) {
+					for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
+						if (cancelOrderRefundPo.getOrdDtlNo() == cancelOrderDetailList.get(j).getOrdDtlNo()) {
+							temp = true;
+						}
+					}
+				}
+				
+				// 4.5 주문상세단위 데이타 저장(주문상세 단위)
+				if (!temp) {
+					cancelOrderDetailList.add(cancelOrderRefundPo);
+				}
+			}
+		}
+		
+		// 2021.01.21 DELV_FEE 배송번호 단위로 TB_ORDER_CHANGE 생성
+		// 4. 주문변경정보, 주문정보, 환불정보 (업체코드 & 배송정책코드)
+		for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
+			
+			Order obj = cancelDelvRefundList.get(i);
+			
+			// 취소금액이 있을때 처리
+			if (obj.getCnclRtnAmt() > 0) {
+			
+				// 5.1 주문변경 기본정보 등록 
+				OrderChange orderChange = new OrderChange();
+				orderChange.setOrdNo(ordNo);
+				orderChange.setChgGb(chgGb);
+				orderChange.setChgReason(chgReason);
+				orderChange.setChgMemo(chgMemo);
+				orderChange.setAddPayCost(0);
+				orderChange.setAddPayAmt(0);
+				orderChange.setRegNo(userNo);
+				orderChange.setUpdNo(userNo);
+				
+				// 5.2 주문변경 추가정보 등록
+				String chgerNm 			= mav.getString("chgerNm").toString();		// 변경자
+				String chgerPhnno 		= mav.getString("chgerPhnno").toString();	// 변경핸드폰번호
+				String chgerTelno 		= mav.getString("chgerTelno").toString();	// 변경전화번호
+				String chgerEmail 		= mav.getString("chgerEmail").toString();	// 변경이메일
+				
+				orderChange.setChgerNm(chgerNm);
+				orderChange.setChgerPhnno(chgerPhnno);
+				orderChange.setChgerTelno(chgerTelno);
+				orderChange.setChgerEmail(chgerEmail);
+				orderChange.setChgerRtnMemo("");
+				
+				orderChangeDao.createOrderChange(orderChange);
+				
+				// 5.3 주문상세단위 취소정보
+				for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
+					Order vo = cancelOrderRefundList.get(j);
+					vo.setRegNo(userNo);
+					vo.setUpdNo(userNo);
+					vo.setOrdDtlStat(TscConstants.OrderChangeStat.CANCEL.value()); 					// 취소신청
+					
+					// 5.3.0 DEVL_FEE_CD 단위로 주문상세 정보 처리
+					if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
+						
+						// 5.3.1 주문변경상세정보 이력등록
+						orderChangeDao.createOrderDetailHstCnclRtn(vo);
+						
+						// * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음 주문상세단위로 수정
+						// 5.3 주문변경상세정보 등록
+						OrderChange changeDetailPo = new OrderChange();
+						changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
+						changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
+						changeDetailPo.setChgQty(vo.getOrdCanChgQty());
+						changeDetailPo.setChgStat(TscConstants.OrderChangeStat.CANCEL.value()); 	// 취소신청
+						changeDetailPo.setRegNo(userNo);
+						changeDetailPo.setUpdNo(userNo);
+						
+						orderChangeDao.createOrderChangeDetail(changeDetailPo);
+					}
+				}
+				
+				// 5.4 환불금액 등록
+				Order refundOrder = new Order();
+				refundOrder.setOrdNo(ordNo);
+				refundOrder.setPaySq(0);
+				refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
+				refundOrder.setRegNo(userNo);
+				
+				refundOrder.setRefundAmt(Integer.parseInt(mav.get("spanRefundAmt").toString()));
+				refundOrder.setRfCpn1Amt(Integer.parseInt(mav.get("spanCpn1DcAmt").toString()));
+				refundOrder.setRfTmtb1Amt(Integer.parseInt(mav.get("spanTmtb1DcAmt").toString()));
+				refundOrder.setRfTmtb2Amt(Integer.parseInt(mav.get("spanTmtb2DcAmt").toString()));
+				refundOrder.setRfGoodsCpnAmt(Integer.parseInt(mav.get("spanGoodsCpnDcAmt").toString()));
+				refundOrder.setRfCartCpnAmt(Integer.parseInt(mav.get("spanCartCpnDcAmt").toString()));
+				refundOrder.setRfPntAmt(Integer.parseInt(mav.get("spanPntDcAmt").toString()));
+				refundOrder.setRfPrePntAmt(Integer.parseInt(mav.get("spanPrePntDcAmt").toString()));
+				refundOrder.setRfGfcdUseAmt(Integer.parseInt(mav.get("spanGfcdUseAmt").toString()));
+				
+				refundOrder.setRaNo(mav.get("accountNo").toString());
+				refundOrder.setRaNm(mav.get("accountNm").toString());
+				refundOrder.setRaBank(mav.get("bankCd").toString());
+				
+				orderChangeDao.createRefund(refundOrder);
+			}
+		}
 		
 		return mav;
 	}
@@ -172,17 +288,17 @@ public class TscOrderChangeService {
 		//userNo = userNo;
 		
 		// 2. 취소요정정보목록
-		//List<Order> cancelReqList		 	= (List<Order>) mav.get("cancelReqList");			// 주문 취소 신청 목록
-		List<Order> cancelOrderRefundList 	= (List<Order>) mav.get("cancelOrderRefundList");	// 주문 환불 금액 목록 (주문상세단품 단위)
-		List<Order> cancelDelvRefundList 	= (List<Order>) mav.get("cancelDelvRefundList");	// 주문 환불 배송 금액 목록 (DELV_FEE_CD 단위)
+		List<Order> cancelReqList		 	= (List<Order>) mav.get("cnclRtnList");				// 취소요청 목록
+		List<Order> cancelOrderRefundList 	= (List<Order>) mav.get("cancelOrderRefundList");	// 취소환불금액 목록 (주문상세단품 단위)
+		List<Order> cancelDelvRefundList 	= (List<Order>) mav.get("cancelDelvRefundList");	// 취소환불배송금액 목록 (DELV_FEE_CD 단위)
 				
 		// 3. 취소신청정보
 		int ordNo 			= Integer.parseInt(mav.getString("ordNo").toString());				// 주문번호
 		String chgReason 	= mav.getString("chgReason").toString();							// 변경사유
 		String chgMemo 		= mav.getString("chgMemo").toString();								// 변경메모
 		String allCanYn		= mav.getString("allCanYn").toString();								// 무통장입금전 전체취소 여부
-		String isCustomer	= mav.getString("isCustomer").toString();							// 변경사유 (고객, 회사)
-		String chgGb		= TscConstants.OrderChangeGb.CANCEL.value(); 						// 취소요청
+		String isCustomer	= mav.getString("isCustomer").toString();							// 귀책사유 (고객, 회사)
+		String chgGb		= TscConstants.OrderChangeGb.CANCEL.value(); 						// 취소요청 (공톹코드:G680)
 		
 		// 4. 주문상세단품정보등록,변경 (단품단위)
 		List<Order> cancelOrderDetailList = new ArrayList<Order>();
@@ -194,12 +310,12 @@ public class TscOrderChangeService {
 			
 			// 2020.01.05 추후 무통장입금전 전체 취소시 분기 로직 추가 예정
 			if ("Y".equals(allCanYn)) {
-				cancelOrderRefundPo.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_BEFORE_CANCEL.value()); 	// 결제전주문취소
+				cancelOrderRefundPo.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_BEFORE_CANCEL.value()); 	// 결제전주문취소 (공통코드:G685)
 			} else {
-				cancelOrderRefundPo.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value());	// 결제후주문취소
+				cancelOrderRefundPo.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value());	// 결제후주문취소 (공통코드:G685)
 			}
 
-			// 4.1 취소수량이 존재하면 주문정보 수정 및 주문변경정보 등록
+			// 4.1 취소수량이 존재하면 주문상세단품정보 수정 및 주문상세단품이력정보 등록
 			if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
 				
 				// 4.2 주문상세단품정보수정 (TB_ORDER_DETAIL_ITEM)
@@ -222,10 +338,6 @@ public class TscOrderChangeService {
 				if (!temp) {
 					cancelOrderDetailList.add(cancelOrderRefundPo);
 				}
-				
-				// TO DO LIST
-				// 4.6 상품옵션재고등록 (추가개발 TB_SELL_QTY)
-				//orderChangeDao.updateOptionQty(cancelOrderRefundPo);
 			}
 		}
 		
@@ -286,7 +398,7 @@ public class TscOrderChangeService {
 						// 5.3.2 주문변경상세정보 수정
 						orderChangeDao.updateOrderDetail(vo);
 						
-						// * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음
+						// * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음 주문상세단위로 수정
 						// 5.3 주문변경상세정보 등록
 						OrderChange changeDetailPo = new OrderChange();
 						changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
@@ -299,6 +411,9 @@ public class TscOrderChangeService {
 						orderChangeDao.createOrderChangeDetail(changeDetailPo);
 					}
 				}
+
+				// 5.31 상품재고원복 (TB_SELL_QTY 등록(취소,반품))
+				orderChangeDao.createSellQty(orderChange);
 				
 				// 5.4 환불결제정보 등록 (업체별 & 배송정책별) 단위
 				// 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
@@ -398,7 +513,7 @@ public class TscOrderChangeService {
 	}
 	
 	/**
-	 * 반품신청 (admin, front, 
+	 * 반품신청 (ADMIN, FRONT, NPAY, EXTMALL) 
 	 * @param Order
 	 * @return Order
 	 * @author jsh77b
@@ -411,71 +526,29 @@ public class TscOrderChangeService {
 		// 1. 세션회원조회
 		//userNo = userNo;
 		
-		// 2. 취소요정정보목록
-		//List<Order> cancelReqList		 	= (List<Order>) mav.get("cancelReqList");			// 주문 취소 신청 목록
-		List<Order> cancelOrderRefundList 	= (List<Order>) mav.get("cancelOrderRefundList");	// 주문 환불 금액 목록
-		List<Order> cancelDelvRefundList 	= (List<Order>) mav.get("cancelDelvRefundList");	// 주문 환불 배송 금액 목록
+		// 2. 변경요정정보목록
+		List<Order> cancelReqList		 	= (List<Order>) mav.get("cnclRtnList");				// 변경요청 목록
+		List<Order> cancelOrderRefundList 	= (List<Order>) mav.get("cancelOrderRefundList");	// 변경환불금액 목록 (주문상세단품 단위)
+		List<Order> cancelDelvRefundList 	= (List<Order>) mav.get("cancelDelvRefundList");	// 변경환불배송금액 목록 (DELV_FEE_CD 단위)
 				
-		// 3. 취소신청정보
+		// 3. 변경신청정보
 		int ordNo 			= Integer.parseInt(mav.getString("ordNo").toString());				// 주문번호
 		String chgReason 	= mav.getString("chgReason").toString();							// 변경사유
 		String chgMemo 		= mav.getString("chgMemo").toString();								// 변경메모
-		String allCanYn		= mav.getString("allCanYn").toString();								// 무통장입금전 전체취소 여부
-		String isCustomer	= mav.getString("isCustomer").toString();							// 변경사유 (고객, 회사)
 		String chgGb		= TscConstants.OrderChangeGb.RETURN.value(); 						// 반품요청
 		
-		// 4.1 주문변경 기본정보 등록
-		OrderChange orderChange = new OrderChange();
-		orderChange.setOrdNo(ordNo);
-		orderChange.setChgGb(chgGb);
-		orderChange.setChgReason(chgReason);
-		orderChange.setChgMemo(chgMemo);
-		orderChange.setAddPayCost(0);
-		orderChange.setAddPayAmt(0);
-		orderChange.setRegNo(userNo);
-		orderChange.setUpdNo(userNo);
-		
-		// 4.2 반품추가정보, 반품회수지 정보 등록
-		String chgerNm 			= mav.getString("chgerNm").toString();
-		String chgerPhnno 		= mav.getString("chgerPhnno").toString();
-		String chgerTelno 		= mav.getString("chgerTelno").toString();
-		String chgerEmail 		= mav.getString("chgerEmail").toString();
-		String chgerZipNo 		= mav.getString("chgerZipNo").toString();
-		String chgerBaseAddr 	= mav.getString("chgerBaseAddr").toString();
-		String chgerDtlAddr 	= mav.getString("chgerDtlAddr").toString();
-		
-		orderChange.setChgerNm(chgerNm);
-		orderChange.setChgerPhnno(chgerPhnno);
-		orderChange.setChgerTelno(chgerTelno);
-		orderChange.setChgerEmail(chgerEmail);
-		orderChange.setChgerZipNo(chgerZipNo);
-		orderChange.setChgerBaseAddr(chgerBaseAddr);
-		orderChange.setChgerDtlAddr(chgerDtlAddr);
-		orderChange.setChgerRtnMemo("");
-		
-		orderChangeDao.createOrderChange(orderChange);
-		
+		// 4. 주문상세단품정보등록,변경 (단품단위)
 		List<Order> cancelOrderDetailList = new ArrayList<Order>();
 		
-		// 4.2 주문변경 상세 단품 정보 등록 (단품단위)
 		for (int i=0 ; i<cancelOrderRefundList.size() ; i++) {
 			Order cancelOrderRefundPo = cancelOrderRefundList.get(i);
 			cancelOrderRefundPo.setRegNo(userNo);
 			cancelOrderRefundPo.setUpdNo(userNo);
-			
-			// 2020.01.05 추후 무통장입금전 전체 취소시 분기로직 추가 예정
-			if ("Y".equals(allCanYn)) {
-				cancelOrderRefundPo.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_BEFORE_CANCEL.value()); // 결제전주문취소 : 공통코드로관리예정
-			} else {
-				cancelOrderRefundPo.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_AFTER_CANCEL.value()); // 결제후주문취소 : 공통코드로관리예정
-			}
 
-			// 4.2.1 취소수량이 존재하면 주문정보 수정 및 주문변경정보 등록
-			if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {
-				
-				// 4.3 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
+			// 4.1 취소수량이 존재하면 주문상세단품정보 수정 및 주문상세단품이력정보 등록
+			if (cancelOrderRefundPo.getOrdCanChgQty() > 0) {				
+				// 4.4 주문변경 상세 단위로 데이타 등록 (ORD_DTL_NO)
 				Boolean temp = false;
-				
 				if (cancelOrderDetailList.size() > 0) {
 					for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
 						if (cancelOrderRefundPo.getOrdDtlNo() == cancelOrderDetailList.get(j).getOrdDtlNo()) {
@@ -484,143 +557,106 @@ public class TscOrderChangeService {
 					}
 				}
 				
-				// 4.4 주문상세단위 데이타 저장
+				// 4.5 주문상세단위 데이타 저장(주문상세 단위)
 				if (!temp) {
 					cancelOrderDetailList.add(cancelOrderRefundPo);
 				}
 			}
 		}
-		
-		// 5. 주문상세단위 취소 데이타 처리
-		for (int i=0 ; i<cancelOrderDetailList.size() ; i++) {			
-			Order vo = cancelOrderRefundList.get(i);
-			vo.setRegNo(userNo);
-			vo.setUpdNo(userNo);
-			
-			// 2020.01.05 추후 무통장입금전 전체 취소시 분기로직 추가 예정
-			if ("Y".equals(allCanYn)) {
-				vo.setOrdDtlStat("G013_98"); // 결제전주문취소 : 공통코드로관리예정
-			} else {
-				vo.setOrdDtlStat("G013_99"); // 결제후주문취소 : 공통코드로관리예정
-			}
-			
-			// 5.1 주문변경상세정보 이력 등록
-			orderChangeDao.createOrderDetailHstCnclRtn(vo);
-			
-			// 4.2 주문변경상세정보 수정
-			//orderChangeDao.updateOrderDetail(vo);
+
+		// 2021.01.21 DELV_FEE 배송번호 단위로 TB_ORDER_CHANGE 생성
+		// 4. 주문변경정보, 주문정보, 환불정보 (업체코드 & 배송정책코드)
+		for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
 			
-			// * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음
-			// 5.3 주문변경상세정보 등록
-			OrderChange changeDetailPo = new OrderChange();
-			changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
-			changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
-			changeDetailPo.setChgQty(vo.getOrdCanChgQty());
-			changeDetailPo.setChgStat(TscConstants.OrderChangeStat.RETURN.value()); 					// 반품요청
-			changeDetailPo.setRegNo(userNo);
-			changeDetailPo.setUpdNo(userNo);
+			Order obj = cancelDelvRefundList.get(i);
 			
-			orderChangeDao.createOrderChangeDetail(changeDetailPo);
-		}
-		
-		// To Do List
-		// 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
-		int spanRealCnclRtnAmt 		= Integer.parseInt(mav.get("spanRealCnclRtnAmt").toString());		// 취소금액합계
-		int sumDeliveryFee 			= Integer.parseInt(mav.get("sumDeliveryFee").toString());			// 배송비합계
-		int spanTotDeliveryFee 		= Integer.parseInt(mav.get("spanTotDeliveryFee").toString());		// 추가배송비합계
-		int spanTotRtnDelvFee 		= Integer.parseInt(mav.get("spanTotRtnDelvFee").toString());		// 반품배송비합계
-		int spanRefundAmt			= 0;
-		
-		// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
-		if ("true".equals(isCustomer)) {
-			spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
-			//Integer.parseInt(mav.get("spanRefundAmt").toString());
-		}
-		// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
-		else {
-			spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
-		}
-		mav.set("spanRefundAmt", spanRefundAmt);
-		
-		// 6. 환불결제 정보 등록
-		Order paymentOrder = new Order();
-		paymentOrder.setOrdNo(ordNo);
-		paymentOrder.setPayAmt(Integer.parseInt(mav.get("spanRefundAmt").toString()) * -1);
-		paymentOrder.setPayStat("G016_99");
-		paymentOrder.setOrdChgSq(orderChange.getOrdChgSq());
-		paymentOrder.setRegNo(userNo);
-		paymentOrder.setUpdNo(userNo);
-		
-		//orderChangeDao.createPayment(paymentOrder);
-		
-		// 7. 환불금액 등록
-		Order refundOrder = new Order();
-		refundOrder.setOrdNo(ordNo);
-		refundOrder.setPaySq(paymentOrder.getPaySq());
-		refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
-		refundOrder.setRegNo(userNo);
-		
-		refundOrder.setRefundAmt(Integer.parseInt(mav.get("spanRefundAmt").toString()));
-		refundOrder.setRfCpn1Amt(Integer.parseInt(mav.get("spanCpn1DcAmt").toString()));
-		refundOrder.setRfTmtb1Amt(Integer.parseInt(mav.get("spanTmtb1DcAmt").toString()));
-		refundOrder.setRfTmtb2Amt(Integer.parseInt(mav.get("spanTmtb2DcAmt").toString()));
-		refundOrder.setRfGoodsCpnAmt(Integer.parseInt(mav.get("spanGoodsCpnDcAmt").toString()));
-		refundOrder.setRfCartCpnAmt(Integer.parseInt(mav.get("spanCartCpnDcAmt").toString()));
-		refundOrder.setRfPntAmt(Integer.parseInt(mav.get("spanPntDcAmt").toString()));
-		refundOrder.setRfPrePntAmt(Integer.parseInt(mav.get("spanPrePntDcAmt").toString()));
-		refundOrder.setRfGfcdUseAmt(Integer.parseInt(mav.get("spanGfcdUseAmt").toString()));
-		
-		refundOrder.setRaNo(mav.get("accountNo").toString());
-		refundOrder.setRaNm(mav.get("accountNm").toString());
-		refundOrder.setRaBank(mav.get("bankCd").toString());
-		
-		//orderChangeDao.createRefund(refundOrder);
-		
-		// 8. 결제금액이 무료배송금액보다 작으면 배송비 신규 등록
-		for (int i=0 ; i<cancelDelvRefundList.size() ; i++) {
-			Order vo = cancelDelvRefundList.get(i);
+			// 취소금액이 있을때 처리
+			if (obj.getCnclRtnAmt() > 0) {
 			
-			if (vo.getAddDelvFee() > 0) {
-				Order delvFeeOrder = new Order();
-				
-				delvFeeOrder.setPaySq(paymentOrder.getPaySq());
-				delvFeeOrder.setOrdNo(ordNo);
-				delvFeeOrder.setDelvFeeGb("G018_10");
-				delvFeeOrder.setDelvFeeCd(vo.getDelvFeeCd());
-				delvFeeOrder.setDelvFee(vo.getAddDelvFee());
-				delvFeeOrder.setRealDelvAmt(vo.getDelvFee());
-				delvFeeOrder.setOrdChgSq(orderChange.getOrdChgSq());
-				delvFeeOrder.setSupplyCompCd(vo.getSupplyCompCd());
-				delvFeeOrder.setRegNo(userNo);
-				delvFeeOrder.setUpdNo(userNo);
-				
-				//orderChangeDao.createDeliveryFee(delvFeeOrder);
+				// 5.1 주문변경 기본정보 등록 
+				OrderChange orderChange = new OrderChange();
+				orderChange.setOrdNo(ordNo);
+				orderChange.setChgGb(chgGb);
+				orderChange.setChgReason(chgReason);
+				orderChange.setChgMemo(chgMemo);
+				orderChange.setAddPayCost(0);
+				orderChange.setAddPayAmt(0);
+				orderChange.setRegNo(userNo);
+				orderChange.setUpdNo(userNo);
+				
+				// 5.2 주문변경 추가정보 등록
+				String chgerNm 			= mav.getString("chgerNm").toString();			// 변경자
+				String chgerPhnno 		= mav.getString("chgerPhnno").toString();		// 변경핸드폰번호
+				String chgerTelno 		= mav.getString("chgerTelno").toString();		// 변경전화번호
+				String chgerEmail 		= mav.getString("chgerEmail").toString();		// 변경이메일
+				String chgerZipNo 		= mav.getString("chgerZipNo").toString();		// 변경우편번호
+				String chgerBaseAddr 	= mav.getString("chgerBaseAddr").toString();	// 변경기본주소
+				String chgerDtlAddr 	= mav.getString("chgerDtlAddr").toString();		// 변경상세주소
+				
+				orderChange.setChgerNm(chgerNm);
+				orderChange.setChgerPhnno(chgerPhnno);
+				orderChange.setChgerTelno(chgerTelno);
+				orderChange.setChgerEmail(chgerEmail);
+				orderChange.setChgerRtnMemo("");
+				orderChange.setChgerZipNo(chgerZipNo);
+				orderChange.setChgerBaseAddr(chgerBaseAddr);
+				orderChange.setChgerDtlAddr(chgerDtlAddr);
+				orderChange.setChgerRtnMemo("");
+				
+				orderChangeDao.createOrderChange(orderChange);
+				
+				// 5.3 주문상세단위 취소정보
+				for (int j=0 ; j<cancelOrderDetailList.size() ; j++) {
+					Order vo = cancelOrderRefundList.get(j);
+					vo.setRegNo(userNo);
+					vo.setUpdNo(userNo);
+					vo.setOrdDtlStat(TscConstants.OrderChangeStat.RETURN.value()); 					// 반품신청
+					
+					// 5.3.0 DEVL_FEE_CD 단위로 주문상세 정보 처리
+					if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
+						
+						// 5.3.1 주문변경상세정보 이력등록
+						orderChangeDao.createOrderDetailHstCnclRtn(vo);
+						
+						// * 주문상세단위가 아닌 주문상세단품단위로 데이타가 처리되고 있었음 주문상세단위로 수정
+						// 5.3 주문변경상세정보 등록
+						OrderChange changeDetailPo = new OrderChange();
+						changeDetailPo.setOrdChgSq(orderChange.getOrdChgSq());
+						changeDetailPo.setOrdDtlNo(vo.getOrdDtlNo());
+						changeDetailPo.setChgQty(vo.getOrdCanChgQty());
+						changeDetailPo.setChgStat(TscConstants.OrderChangeStat.RETURN.value()); 	// 반품신청
+						changeDetailPo.setRegNo(userNo);
+						changeDetailPo.setUpdNo(userNo);
+						
+						orderChangeDao.createOrderChangeDetail(changeDetailPo);
+					}
+				}
+				
+				// 5.4 환불금액 등록
+				Order refundOrder = new Order();
+				refundOrder.setOrdNo(ordNo);
+				refundOrder.setPaySq(0);
+				refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
+				refundOrder.setRegNo(userNo);
+				
+				refundOrder.setRefundAmt(Integer.parseInt(mav.get("spanRefundAmt").toString()));
+				refundOrder.setRfCpn1Amt(Integer.parseInt(mav.get("spanCpn1DcAmt").toString()));
+				refundOrder.setRfTmtb1Amt(Integer.parseInt(mav.get("spanTmtb1DcAmt").toString()));
+				refundOrder.setRfTmtb2Amt(Integer.parseInt(mav.get("spanTmtb2DcAmt").toString()));
+				refundOrder.setRfGoodsCpnAmt(Integer.parseInt(mav.get("spanGoodsCpnDcAmt").toString()));
+				refundOrder.setRfCartCpnAmt(Integer.parseInt(mav.get("spanCartCpnDcAmt").toString()));
+				refundOrder.setRfPntAmt(Integer.parseInt(mav.get("spanPntDcAmt").toString()));
+				refundOrder.setRfPrePntAmt(Integer.parseInt(mav.get("spanPrePntDcAmt").toString()));
+				refundOrder.setRfGfcdUseAmt(Integer.parseInt(mav.get("spanGfcdUseAmt").toString()));
+				
+				refundOrder.setRaNo(mav.get("accountNo").toString());
+				refundOrder.setRaNm(mav.get("accountNm").toString());
+				refundOrder.setRaBank(mav.get("bankCd").toString());
+				
+				orderChangeDao.createRefund(refundOrder);
 			}
 		}
 		
-		// To Do List
-		// 9. 포인트원복 (사용포인트, 주문상세단위)
-		
-		// To Do List
-		// 10. 쿠폰원복 (상품쿠폰, 주문상세단위) (전체취소시 장바구니쿠폰, 배송비쿠폰)
-		
-		// To Do List
-		// 11. 상품권원복
-		
-		// 12. 사은품 전체 취소 (전체취소시 적용) 추후 사은품 관련 취소 로직 개발 예정
-		Order freegiftOrder = new Order();
-		freegiftOrder.setOrdNo(ordNo);
-		freegiftOrder.setUpdNo(userNo);
-		//orderChangeDao.updateOrdFreegiftDel(freegiftOrder);
-		
-		// To Do List
-		// 13. PG 연동
-		
-		// To Do List
-		// 14. 취소 완료 알림톡 발송 에정
-		
-		//int a = 100/0;
-		
 		return mav;
 	}
 	

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

@@ -2,7 +2,7 @@
 <!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.TscOrderChangeDao">
 
-	<!-- 주문상세 > 주문취소신청 > 주문취소,반품,교환 대상목록 -->
+	<!-- 취소,반품,교환 대상목록 조회 -->
 	<select id="getCancelRequestTargetList" parameterType="Order" resultType="Order">
 		/* order.getCancelRequestTargetList */
 		SELECT OD.ORD_NO
@@ -44,8 +44,8 @@
 		     , ODI.GFCD_USE_AMT
 		     , ODI.REAL_ORD_AMT
 		     , DF.DELV_FEE
-		     , DF.SUPPLY_COMP_CD
-		     , FN_GET_SUPPLY_COMP_NM(DF.SUPPLY_COMP_CD) AS SUPPLY_COMP_NM
+		     , 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
@@ -59,7 +59,7 @@
 		     , DL.RTN_LOC_BASE_ADDR
 		     , DL.RTN_LOC_DTL_ADDR
 		     , DL.RTN_LOC_TELNO
-		     , DL.SELF_YN
+		     , G1.SELF_GOODS_YN
 		FROM   TB_ORDER_DETAIL OD
 		INNER  JOIN TB_GOODS G1
 		ON     OD.GOODS_CD = G1.GOODS_CD
@@ -83,39 +83,31 @@
 		) OCD
 		ON     OD.ORD_DTL_NO = OCD.ORD_DTL_NO
 		INNER  JOIN (
-			SELECT X.SUPPLY_COMP_CD
-			     , X.DELV_FEE_CD
+			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.SUPPLY_COMP_CD
-			        , X.DELV_FEE_CD
+			GROUP  BY X.DELV_FEE_CD
 		) DF
-		ON     OD.SUPPLY_COMP_CD = DF.SUPPLY_COMP_CD 
-		AND    OD.DELV_FEE_CD = DF.DELV_FEE_CD 
+		ON     OD.DELV_FEE_CD = DF.DELV_FEE_CD  
 		INNER  JOIN TB_DELV_FEE_POLICY DFP
-		ON     DF.SUPPLY_COMP_CD  = DFP.SUPPLY_COMP_CD 
-		AND    DF.DELV_FEE_CD = DFP.DELV_FEE_CD 
+		ON     DF.DELV_FEE_CD = DFP.DELV_FEE_CD
 		AND    DFP.USE_YN = 'Y'
-		INNER  JOIN (
+		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
-			     , CASE WHEN TSC.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12')
-						THEN 'Y'
-						ELSE 'N'
-				   END AS SELF_YN
 			  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
-		INNER  JOIN (
+		LEFT   OUTER JOIN (
 			SELECT GOODS_CD
 			     , OPT_CD1
 			     , GROUP_CONCAT(OPT_CD2 ORDER BY DISP_ORD DESC, OPT_CD2 SEPARATOR ',')        AS OPT_CD2S
@@ -142,50 +134,8 @@
 	         , OD.ORD_NO
 	         , OD.ORD_DTL_NO
 	</select>
-	
-	<!-- 주문상세 > 주문취소신청 > 주문변경정보 등록-->
-	<insert id="createOrderChange" parameterType="OrderChange" keyProperty="ordChgSq">
-		/* Order.createOrderChange */
-		INSERT INTO TB_ORDER_CHANGE (
-			CHG_GB
-			, CHG_REASON
-			, CHG_MEMO
-			, CHGER_NM
-			, CHGER_PHNNO
-			, CHGER_TELNO
-			, CHGER_EMAIL
-			, CHGER_ZIP_NO
-			, 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}
-			 , #{chgerZipNo}
-			 , #{chgerBaseAddr}
-			 , #{chgerDtlAddr}
-			 , #{chgerRtnMemo}
-			 , #{addPayCost}
-			 , #{addPayAmt}
-			 , #{regNo}
-			 , SYSDATE()
-			 , #{updNo}
-			 , SYSDATE()
-		)
-	</insert>
 
-	<!-- 주문상세 > 주문취소신청 > 주문상세단품정보 수정 -->
+	<!-- 주문상세단품정보 수정 -->
 	<update id="updateOrderDetailItem" parameterType="Order">
 		/* Order.updateOrderDetailItem */
 		UPDATE TB_ORDER_DETAIL_ITEM ODI
@@ -214,7 +164,7 @@
 		AND    ODI.ORD_DTL_ITEM_SQ 	= #{ordDtlItemSq}
 	</update>
 	
-	<!-- 주문상세 > 주문취소신청 > 주문상세단품정보 이력 등록 -->
+	<!-- 주문상세단품이력정보 등록 -->
 	<insert id="createOrderDetailItemHst" parameterType="Order">
 		/* Order.createOrderDetailItemHst */
 		INSERT INTO TB_ORDER_DETAIL_ITEM_HST (
@@ -288,24 +238,151 @@
 		AND    ORD_DTL_ITEM_SQ = #{ordDtlItemSq}
 	</insert>
 	
-	<!-- 주문상세 > 주문취소신청 > 주문상세단품정보 수정 (재고수정) -->
-	<update id="updateOptionQty" parameterType="OrderChange">
-		/* Order.updateOptionQty */
-		UPDATE TB_OPTION OP
+	<!-- 상품옵션재고정보 등록 -->
+	<update id="createSellQty" parameterType="OrderChange">
+		/* Order.createSellQty */
+		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
+		     , '11'
+		     , 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
+		FROM   TB_ORDER_CHANGE_DETAIL OCD
 		INNER  JOIN TB_ORDER_DETAIL_ITEM ODI
-		ON     OP.GOODS_CD = ODI.ITEM_CD
-		AND    OP.OPT_CD1 = ODI.OPT_CD1
-		AND    OP.OPT_CD2 = ODI.OPT_CD2
-		SET    OP.CURR_STOCK_QTY = OP.CURR_STOCK_QTY + (ODI.ITEM_QTY * #{ordCanChgQty})
-		     , OP.UPD_NO = #{updNo}
-		     , OP.UPD_DT = SYSDATE()
+		ON     OCD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		INNER  JOIN TB_ORDER_DETAIL OD
+		ON     OCD.ORD_DTL_NO = OD.ORD_DTL_NO
 		WHERE  1=1
-		AND    ODI.ORD_NO 			= #{ordNo} 
-		AND    ODI.ORD_DTL_NO 		= #{ordDtlNo} 
-		AND    ODI.ORD_DTL_ITEM_SQ 	= #{ordDtlItemSq}
+		AND    ORD_CHG_SQ = #{ordChgSq}
+	</update>
+	
+	<!-- 주문변경정보 등록 -->
+	<insert id="createOrderChange" parameterType="OrderChange" keyProperty="ordChgSq">
+		/* Order.createOrderChange */
+		INSERT INTO TB_ORDER_CHANGE (
+			CHG_GB
+			, CHG_REASON
+			, CHG_MEMO
+			, CHGER_NM
+			, CHGER_PHNNO
+			, CHGER_TELNO
+			, CHGER_EMAIL
+			, CHGER_ZIP_NO
+			, 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}
+			 , #{chgerZipNo}
+			 , #{chgerBaseAddr}
+			 , #{chgerDtlAddr}
+			 , #{chgerRtnMemo}
+			 , #{addPayCost}
+			 , #{addPayAmt}
+			 , #{regNo}
+			 , SYSDATE()
+			 , #{updNo}
+			 , SYSDATE()
+		)
+	</insert>
+	
+	<!-- 주문변경상세정보 등록-->
+	<insert id="createOrderChangeDetail" parameterType="OrderChange">
+		/* Order.createOrderChangeDetail */
+		INSERT INTO TB_ORDER_CHANGE_DETAIL (
+			ORD_CHG_SQ
+			, ORD_DTL_NO
+			, CHG_QTY
+			, CHG_STAT
+			, COMPLETE_DT
+			, REG_NO
+			, REG_DT
+			, UPD_NO
+			, UPD_DT
+		) VALUES (
+			#{ordChgSq}
+			, #{ordDtlNo}
+			, #{chgQty}
+			, #{chgStat}
+			, SYSDATE()
+			, #{regNo}
+			, SYSDATE()
+			, #{updNo}
+			, SYSDATE()
+		)
+	</insert>
+	
+	<!-- 주문상세정보 수정 -->
+	<update id="updateOrderDetail" parameterType="Order">
+		/* Order.updateOrderDetail */
+		UPDATE TB_ORDER_DETAIL OD
+		INNER  JOIN (
+		SELECT ODI.ORD_DTL_NO
+		     , SUM(ODI.CNCL_RTN_AMT) 		AS CNCL_RTN_AMT
+		     , SUM(ODI.CPN1_DC_AMT) 		AS CPN1_DC_AMT
+		     , SUM(ODI.TMTB1_DC_AMT) 		AS TMTB1_DC_AMT
+		     , SUM(ODI.TMTB2_DC_AMT) 		AS TMTB2_DC_AMT 
+		     , SUM(ODI.GOODS_CPN_DC_AMT) 	AS GOODS_CPN_DC_AMT
+		     , SUM(ODI.CART_CPN_DC_AMT) 	AS CART_CPN_DC_AMT 
+		     , SUM(ODI.PNT_DC_AMT) 			AS PNT_DC_AMT 
+		     , SUM(ODI.PRE_PNT_DC_AMT) 		AS PRE_PNT_DC_AMT
+		     , SUM(ODI.SAVE_PNT_AMT) 		AS SAVE_PNT_AMT 
+		     , SUM(ODI.REAL_ORD_AMT) 		AS REAL_ORD_AMT 
+		     , SUM(ODI.GFCD_USE_AMT) 		AS GFCD_USE_AMT 
+		FROM   TB_ORDER_DETAIL_ITEM ODI
+		WHERE  ODI.ORD_NO = #{ordNo} 
+		AND    ODI.ORD_DTL_NO = #{ordDtlNo}
+		GROUP  BY ODI.ORD_DTL_NO
+		) Z
+		ON     OD.ORD_DTL_NO 			= Z.ORD_DTL_NO
+		SET    OD.ORD_DTL_STAT			= CASE WHEN OD.ORD_QTY > (OD.CNCL_RTN_QTY + #{ordCanChgQty})
+		                                       THEN OD.ORD_DTL_STAT
+		                                       ELSE #{ordDtlStat}
+		                                        END
+		     , OD.CNCL_RTN_QTY			= OD.CNCL_RTN_QTY + #{ordCanChgQty}
+		     , OD.CNCL_RTN_AMT  		= Z.CNCL_RTN_AMT
+		     , OD.CPN1_DC_AMT 			= Z.CPN1_DC_AMT
+		     , OD.TMTB1_DC_AMT 			= Z.TMTB1_DC_AMT
+		     , OD.TMTB2_DC_AMT 			= Z.TMTB2_DC_AMT
+		     , OD.GOODS_CPN_DC_AMT 		= Z.GOODS_CPN_DC_AMT
+		     , OD.CART_CPN_DC_AMT 		= Z.CART_CPN_DC_AMT
+		     , OD.PNT_DC_AMT 			= Z.PNT_DC_AMT
+		     , OD.PRE_PNT_DC_AMT 		= Z.PRE_PNT_DC_AMT
+		     , OD.SAVE_PNT_AMT 			= Z.SAVE_PNT_AMT
+		     , OD.REAL_ORD_AMT 			= Z.REAL_ORD_AMT
+		     , OD.GFCD_USE_AMT 			= Z.GFCD_USE_AMT
+		WHERE  1=1
+		AND    OD.ORD_NO = #{ordNo}
+		AND    OD.ORD_DTL_NO = #{ordDtlNo}
 	</update>
 	
-	<!-- 주문상세 > 주문취소 > 주문상세정보(취소,반품) 이력 등록-->
+	<!-- 주문상세이력정보 (취소,반품) 등록 -->
 	<insert id="createOrderDetailHstCnclRtn" parameterType="Order">
 		/* Order.createOrderDetailHstCnclRtn */
 		INSERT INTO TB_ORDER_DETAIL_HST (
@@ -478,78 +555,8 @@
 		ON    OD.ORD_DTL_NO = Z.ORD_DTL_NO
 		AND   OD.ORD_DTL_NO = #{ordDtlNo}
 	</insert>
-	
-	<!-- 주문상세 > 주문취소신청 > 주문상세정보 수정 -->
-	<update id="updateOrderDetail" parameterType="Order">
-		/* Order.updateOrderDetail */
-		UPDATE TB_ORDER_DETAIL OD
-		INNER  JOIN (
-		SELECT ODI.ORD_DTL_NO
-		     , SUM(ODI.CNCL_RTN_AMT) 		AS CNCL_RTN_AMT
-		     , SUM(ODI.CPN1_DC_AMT) 		AS CPN1_DC_AMT
-		     , SUM(ODI.TMTB1_DC_AMT) 		AS TMTB1_DC_AMT
-		     , SUM(ODI.TMTB2_DC_AMT) 		AS TMTB2_DC_AMT 
-		     , SUM(ODI.GOODS_CPN_DC_AMT) 	AS GOODS_CPN_DC_AMT
-		     , SUM(ODI.CART_CPN_DC_AMT) 	AS CART_CPN_DC_AMT 
-		     , SUM(ODI.PNT_DC_AMT) 			AS PNT_DC_AMT 
-		     , SUM(ODI.PRE_PNT_DC_AMT) 		AS PRE_PNT_DC_AMT
-		     , SUM(ODI.SAVE_PNT_AMT) 		AS SAVE_PNT_AMT 
-		     , SUM(ODI.REAL_ORD_AMT) 		AS REAL_ORD_AMT 
-		     , SUM(ODI.GFCD_USE_AMT) 		AS GFCD_USE_AMT 
-		FROM   TB_ORDER_DETAIL_ITEM ODI
-		WHERE  ODI.ORD_NO = #{ordNo} 
-		AND    ODI.ORD_DTL_NO = #{ordDtlNo}
-		GROUP  BY ODI.ORD_DTL_NO
-		) Z
-		ON     OD.ORD_DTL_NO 			= Z.ORD_DTL_NO
-		SET    OD.ORD_DTL_STAT			= CASE WHEN OD.ORD_QTY > (OD.CNCL_RTN_QTY + #{ordCanChgQty})
-		                                       THEN OD.ORD_DTL_STAT
-		                                       ELSE #{ordDtlStat}
-		                                        END
-		     , OD.CNCL_RTN_QTY			= OD.CNCL_RTN_QTY + #{ordCanChgQty}
-		     , OD.CNCL_RTN_AMT  		= Z.CNCL_RTN_AMT
-		     , OD.CPN1_DC_AMT 			= Z.CPN1_DC_AMT
-		     , OD.TMTB1_DC_AMT 			= Z.TMTB1_DC_AMT
-		     , OD.TMTB2_DC_AMT 			= Z.TMTB2_DC_AMT
-		     , OD.GOODS_CPN_DC_AMT 		= Z.GOODS_CPN_DC_AMT
-		     , OD.CART_CPN_DC_AMT 		= Z.CART_CPN_DC_AMT
-		     , OD.PNT_DC_AMT 			= Z.PNT_DC_AMT
-		     , OD.PRE_PNT_DC_AMT 		= Z.PRE_PNT_DC_AMT
-		     , OD.SAVE_PNT_AMT 			= Z.SAVE_PNT_AMT
-		     , OD.REAL_ORD_AMT 			= Z.REAL_ORD_AMT
-		     , OD.GFCD_USE_AMT 			= Z.GFCD_USE_AMT
-		WHERE  1=1
-		AND    OD.ORD_NO = #{ordNo}
-		AND    OD.ORD_DTL_NO = #{ordDtlNo}
-	</update>
-	
-	<!-- 주문상세 > 주문취소신청 > 주문변경정보상세 등록-->
-	<insert id="createOrderChangeDetail" parameterType="OrderChange">
-		/* Order.createOrderChangeDetail */
-		INSERT INTO TB_ORDER_CHANGE_DETAIL (
-			ORD_CHG_SQ
-			, ORD_DTL_NO
-			, CHG_QTY
-			, CHG_STAT
-			, COMPLETE_DT
-			, REG_NO
-			, REG_DT
-			, UPD_NO
-			, UPD_DT
-		) VALUES (
-			#{ordChgSq}
-			, #{ordDtlNo}
-			, #{chgQty}
-			, #{chgStat}
-			, SYSDATE()
-			, #{regNo}
-			, SYSDATE()
-			, #{updNo}
-			, SYSDATE()
-		)
-	</insert>
-	
-	<!-- 주문상세 > 주문취소신청 > 주문환불금액정보 등록 -->
+
+	<!-- 주문환불금액정보(PG) 등록 -->
 	<insert id="createPayment" parameterType="Order" keyProperty="paySq">
 		/* Order.createPayment */
 		INSERT INTO TB_PAYMENT (
@@ -619,7 +626,7 @@
 		AND    PAY_STAT = 'G016_30'
 	</insert>
 	
-	<!-- 주문상세 > 주문취소신청 > 주문환불정보 등록 -->
+	<!-- 주문환불정보 등록 -->
 	<insert id="createRefund" parameterType="Order">
 		/* Order.createRefund */
 		INSERT INTO TB_REFUND (
@@ -661,7 +668,7 @@
 		)
 	</insert>
 
-	<!-- 주문상세 > 주문취소신청 > 주문추가배송금액등록-->
+	<!-- 주문추가배송금액 등록 -->
 	<insert id="createDeliveryFee" parameterType="Order">
 		/* Order.createDeliveryFee */
 		INSERT INTO TB_DELIVERY_FEE ( 
@@ -701,7 +708,7 @@
 		)
 	</insert>
 	
-	<!-- 주문상세 > 주문취소신청 > 주문사은품취소 -->
+	<!-- 주문사은품전체취소 -->
 	<update id="updateOrdFreegiftDel" parameterType="Order">
 		/* Order.updateOrdFreegiftDel */
 		UPDATE TB_ORD_FREEGIFT_VAL