tsit14 5 лет назад
Родитель
Сommit
dd4bb5d0c6

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

@@ -200,7 +200,6 @@ public class TscOrderChangeService {
 	@SuppressWarnings("unchecked")
 	@Transactional("shopTxnManager")
 	public GagaMap partialCancel(GagaMap map, Integer userNo) {
-		
 		// 1. 취소요청목록 및 정보 설정
 		List<Order> cancelOrderRefundList 	= (List<Order>) map.get("cancelOrderRefundList");				// 취소환불금액 목록 (주문상세단품 단위)
 		List<Order> cancelDelvRefundList 	= (List<Order>) map.get("cancelDelvRefundList");				// 취소환불배송금액 목록 (DELV_FEE_CD 단위)
@@ -1505,7 +1504,6 @@ public class TscOrderChangeService {
 	@SuppressWarnings("unchecked")
 	@Transactional("shopTxnManager")
 	public GagaMap returnRequest(GagaMap map) {
-		
 		// 1. 변경정보목록 및 정보 설정
 		List<Order> cancelOrderRefundList 	= (List<Order>) map.get("cancelOrderRefundList");				// 취소환불금액 목록 (주문상세단품 단위)
 		List<Order> cancelDelvRefundList 	= (List<Order>) map.get("cancelDelvRefundList");				// 취소환불배송금액 목록 (DELV_FEE_CD 단위)
@@ -1553,9 +1551,12 @@ public class TscOrderChangeService {
 			if (obj.getCnclRtnAmt() > 0) {
 				// 3-1. 환불정보 설정
 				int spanRealCnclRtnAmt 		= obj.getRealOrdAmt();		// 취소금액합계
+				// int sumDeliveryFee 			= obj.getDelvFee();			// 배송비합계
+				// int spanTotDeliveryFee 		= obj.getAddDelvFee();		// 추가배송비합계 (추가배송비 처리는 환불컨펌에서 진행)
 				int spanTotRtnDelvFee 		= obj.getRtnDelvFee();		// 반품배송비합계
+				// int addDelvFee				= spanTotDeliveryFee + spanTotRtnDelvFee; //  (추가배송비 처리는 환불컨펌에서 진행)
 				int addDelvFee				= spanTotRtnDelvFee;
-				int spanRefundAmt 			= spanRealCnclRtnAmt;
+				int spanRefundAmt = spanRealCnclRtnAmt;
 
 				// 고객사유 : 환불금액계산 = 취소금액 - 추가배송비
 				if ("true".equals(isCustomer)) {
@@ -1613,17 +1614,22 @@ public class TscOrderChangeService {
 
 				orderChangeDao.createDeliveryFee(deliveryFee);
 
+				// 추가배송비 등록 (추가배송비 처리는 환불컨펌에서 진행)
+				// if (spanTotDeliveryFee > 0) {
+				// 	deliveryFee.setDelvFeeGb(TscConstants.DeliveryFeeGb.ORIGIN_DELIVERY_FEE.value());
+				// 	deliveryFee.setDelvFee(spanTotDeliveryFee);
+				// 	deliveryFee.setRealDelvAmt(spanTotDeliveryFee);
+				//
+				// 	orderChangeDao.createDeliveryFee(deliveryFee);
+				// }
+
 				// 3-4. 주문상세정보 수정
 				ordChgSq = orderChange.getOrdChgSq();
 				for (Order vo : cancelOrderDetailList) {
 					// 배송정책코드 별 주문상세 처리
 					if (obj.getDelvFeeCd().equals(vo.getDelvFeeCd())) {
 						// 3-2-1. 주문상세정보 이력등록
-<<<<<<< HEAD
-						//orderChangeDao.createOrderDetailHstCnclRtn(vo);
-=======
 						// orderChangeDao.createOrderDetailHstCnclRtn(vo);
->>>>>>> refs/remotes/origin/develop
 
 						// 3-2-2. 주문변경상세정보 및 이력 등록
 						OrderChange changeDetailPo = new OrderChange();
@@ -1639,7 +1645,7 @@ public class TscOrderChangeService {
 
 						// 3-2-3. 주문상세정보 이력 등록 (TB_ORDER_DETAIL_HST(등록))
 						vo.setOrdChgSq(ordChgSq);
-						orderChangeDao.createOrderDtlHstCancel(vo);
+						//orderChangeDao.createOrderDtlHstCancel(vo);
 					}
 				}
 
@@ -1676,6 +1682,180 @@ public class TscOrderChangeService {
 		return map;
 	}
 
+	/**
+	 * 반품신청 (ADMIN, FRONT, NPAY, EXTMALL) 
+	 * @param Order
+	 * @return Order
+	 * @author jsh77b
+	 * @since 2021. 01. 19
+	 */
+	@SuppressWarnings("unchecked")
+	@Transactional("shopTxnManager")
+	public GagaMap rtnReq(GagaMap mav, int userNo) {
+
+		// 1. 세션회원조회
+		//userNo = userNo;
+
+		// 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"));							// 주문번호
+		int ordChgSq		= Integer.parseInt(mav.getString("ordChgSq"));						// 주문변경번호
+		String chgReason 	= mav.getString("chgReason");										// 변경사유
+		String chgMemo 		= mav.getString("chgMemo");											// 변경메모
+		String allCanYn		= mav.getString("allCanYn");										// 무통장입금전 전체취소 여부
+		String isCustomer	= mav.getString("isCustomer");										// 귀책사유 (고객, 회사)
+		String chgGb		= TscConstants.OrderChangeGb.RETURN.value(); 						// 반품요청
+		String wdGb			= mav.getString("wdGb");											// 회수방법
+		String wdInvoiceNo	= mav.getString("wdInvoiceNo");										// 회수송장번호
+
+		// 4. 주문상세단품정보등록,변경 (단품단위)
+		List<Order> cancelOrderDetailList = new ArrayList<>();
+
+		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.setWdGb(wdGb);
+				orderChange.setWdInvoiceNo(wdInvoiceNo);
+				orderChange.setRegNo(userNo);
+				orderChange.setUpdNo(userNo);
+
+				// 5.2 주문변경 추가정보 등록
+				String chgerNm 			= mav.getString("chgerNm");						// 변경자
+				String chgerPhnno 		= mav.getString("chgerPhnno");					// 변경핸드폰번호
+				String chgerTelno 		= mav.getString("chgerTelno");					// 변경전화번호
+				String chgerEmail 		= mav.getString("chgerEmail");					// 변경이메일
+				String chgerZipcode 	= mav.getString("chgerZipcode");				// 변경우편번호
+				String chgerBaseAddr 	= mav.getString("chgerBaseAddr");				// 변경기본주소
+				String chgerDtlAddr 	= mav.getString("chgerDtlAddr");				// 변경상세주소
+				String chgerRtnMemo		= mav.getString("chgerRtnMemo");				// 반품메모
+
+				orderChange.setChgerNm(chgerNm);
+				orderChange.setChgerPhnno(chgerPhnno);
+				orderChange.setChgerTelno(chgerTelno);
+				orderChange.setChgerEmail(chgerEmail);
+				orderChange.setChgerRtnMemo(chgerRtnMemo);
+				orderChange.setChgerZipcode(chgerZipcode);
+				orderChange.setChgerBaseAddr(chgerBaseAddr);
+				orderChange.setChgerDtlAddr(chgerDtlAddr);
+
+				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 환불결제정보 등록 (업체별 & 배송정책별) 단위
+				// 취소, 반품 사유에 따른 추가배송비, 반품배송비를 환불금액에서 추가, 제외 할 수 있다.
+				int spanRealCnclRtnAmt 		= obj.getCnclRtnAmt();		// 취소금액합계
+				int sumDeliveryFee 			= obj.getDelvFee();			// 배송비합계
+				int spanTotDeliveryFee 		= obj.getAddDelvFee();		// 추가배송비합계
+				int spanTotRtnDelvFee 		= obj.getRtnDelvFee();		// 반품배송비합계
+				int spanRefundAmt			= 0;
+
+				// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
+				if ("true".equals(isCustomer)) {
+					spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee) - spanTotDeliveryFee - spanTotRtnDelvFee;
+				}
+				// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
+				else {
+					spanRefundAmt = (spanRealCnclRtnAmt + sumDeliveryFee);
+				}
+
+				// 5.4 환불금액 등록
+				Order refundOrder = new Order();
+				refundOrder.setOrdNo(ordNo);
+				refundOrder.setPaySq(0);
+				refundOrder.setOrdChgSq(orderChange.getOrdChgSq());
+				refundOrder.setRegNo(userNo);
+
+				// 2021.01.25 TB_REFUND 정보 등록을 위해서 분리 작업
+				refundOrder.setRefundAmt(spanRefundAmt);
+				refundOrder.setRfCpn1Amt(obj.getCpn1DcAmt());
+				refundOrder.setRfTmtb1Amt(obj.getTmtb1DcAmt());
+				refundOrder.setRfTmtb2Amt(obj.getTmtb2DcAmt());
+				refundOrder.setRfGoodsCpnAmt(obj.getGoodsCpnDcAmt());
+				refundOrder.setRfCartCpnAmt(obj.getCartCpnDcAmt());
+				refundOrder.setRfDelvCpnAmt(obj.getDelvCpnDcAmt());
+				refundOrder.setRfPntAmt(obj.getPntAmt());
+				refundOrder.setRfPrePntAmt(obj.getPrePntDcAmt());
+				refundOrder.setRfGfcdUseAmt(obj.getGfcdUseAmt());
+
+				refundOrder.setRaNo(mav.get("accountNo").toString());
+				refundOrder.setRaNm(mav.get("accountNm").toString());
+				refundOrder.setRaBank(mav.get("bankCd").toString());
+
+				orderChangeDao.createRefund(refundOrder);
+			}
+		}
+
+		return mav;
+	}
+
 	/**
 	 * 반품신청철회 (admin)
 	 * @param Order
@@ -2912,7 +3092,6 @@ public class TscOrderChangeService {
 
 		return result;
 	}
-<<<<<<< HEAD
 	
 	/**
 	 * 취소/반품 환불 사전 정보 조회
@@ -3015,7 +3194,7 @@ public class TscOrderChangeService {
 		result.set("cnclReqList"					, cnclReqList);					// 취소신청목록
 
 		return result;
-=======
+	}
 
 	/**
 	 * 환불 컨펌
@@ -3304,6 +3483,5 @@ public class TscOrderChangeService {
 	 */
 	public void partialRefund(GagaMap map, Integer userNo) {
 		
->>>>>>> refs/remotes/origin/develop
 	}
 }

+ 407 - 0
src/main/java/com/style24/persistence/mybatis/shop/TscOrderChange.xml

@@ -167,6 +167,226 @@
 		 ORDER BY Y.DELV_FEE_CD, Y.ORD_NO, Y.ORD_DTL_NO
 	</select>
 	
+	<!-- 취소,반품,교환 대상목록 조회 -->
+	<select id="getCancelRequestTargetList2" parameterType="Order" resultType="Order">
+		/* OrderChange.getCancelRequestTargetList2 */
+		SELECT Z.*
+		     , DF.DELV_FEE
+		FROM (
+		    SELECT A.ORD_NO
+		         , A.ORD_DTL_NO
+		         , A.ORD_DTL_STAT
+		         , A.ORD_DTL_STAT_NM
+		         , A.ALL_CAN_YN
+		         , A.GOODS_CD
+		         , A.GOODS_NM
+		         , A.GOODS_TYPE
+		         , A.GOODS_TYPE_NM
+		         , GROUP_CONCAT(A.ITEM_CD ORDER BY A.ORD_DTL_ITEM_SQ) AS ITEM_CD
+		         , GROUP_CONCAT(A.ITEM_NM ORDER BY A.ORD_DTL_ITEM_SQ) AS ITEM_NM
+		         , GROUP_CONCAT(A.OPT_CD ORDER BY A.ORD_DTL_ITEM_SQ) AS OPT_CD
+		         , GROUP_CONCAT(A.OPT_CD1 ORDER BY A.ORD_DTL_ITEM_SQ) AS OPT_CD1
+		         , GROUP_CONCAT(A.OPT_CD2 ORDER BY A.ORD_DTL_ITEM_SQ) AS OPT_CD2
+		         , GROUP_CONCAT(A.ITEM_QTY ORDER BY A.ORD_DTL_ITEM_SQ) AS ITEM_QTYR
+		         , A.LIST_PRICE
+		         , A.CURR_PRICE
+		         , SUM(A.OPT_ADD_PRICE) AS OPT_ADD_PRICE
+		         , A.ORD_QTY
+		         , A.CNCL_RTN_QTY
+		         , A.ORD_REQ_CHG_QTY
+		         , A.CPN1_DC_AMT
+		         , A.ORD_AMT
+		         , A.CNCL_RTN_AMT
+		         , A.TMTB1_DC_AMT
+		         , A.TMTB2_DC_AMT
+		         , A.GOODS_CPN_DC_AMT
+		         , A.CART_CPN_DC_AMT
+		         , A.PRE_PNT_DC_AMT
+		         , A.PNT_DC_AMT
+		         , A.GFCD_USE_AMT
+		         , A.REAL_ORD_AMT
+		         , A.SUPPLY_COMP_CD
+		         , A.SUPPLY_COMP_NM
+		         , A.MIN_ORD_AMT
+		         , A.ORG_DELV_FEE
+		         , A.RTN_DELV_FEE
+		         , A.EXC_DELV_FEE
+		         , A.RTN_LOC_NM
+		         , A.RTN_LOC_ZIPCODE
+		         , A.RTN_LOC_BASE_ADDR
+		         , A.RTN_LOC_DTL_ADDR
+		         , A.RTN_LOC_TELNO
+		         , A.SELF_GOODS_YN
+		         , A.DELV_FEE_CD
+		         , A.ORD_CAN_CHG_QTY
+		    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_10', 'G013_20', 'G013_30')
+		                    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
+		             , ODI.ITEM_CD
+		             , G2.GOODS_NM AS ITEM_NM
+		             , ODI.OPT_CD
+		             , ODI.OPT_CD1
+		             , ODI.OPT_CD2
+		             , ODI.ITEM_QTY
+		             , OD.LIST_PRICE 
+		             , OD.CURR_PRICE
+		             , ODI.OPT_ADD_PRICE
+		             , OD.ORD_QTY
+		             , OD.CNCL_RTN_QTY
+		             , IFNULL(OCD.ORD_REQ_CHG_QTY, 0) AS ORD_REQ_CHG_QTY
+		             , OD.CPN1_DC_AMT
+		             , OD.ORD_AMT
+		             , OD.CNCL_RTN_AMT
+		             , OD.TMTB1_DC_AMT
+		             , OD.TMTB2_DC_AMT
+		             , OD.GOODS_CPN_DC_AMT
+		             , OD.CART_CPN_DC_AMT
+		             , OD.PRE_PNT_DC_AMT
+		             , OD.PNT_DC_AMT
+		             , OD.GFCD_USE_AMT
+		             , OD.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
+		             , 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
+		             , X.CHG_QTY AS ORD_CAN_CHG_QTY
+		        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_DTL_NO = ODI.ORD_DTL_NO
+		        INNER  JOIN TB_GOODS G2
+		        ON     ODI.ITEM_CD = G2.GOODS_CD
+		        LEFT   OUTER JOIN (
+		            SELECT OCD.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_10', 'G685_11','G685_20', 'G685_21', 'G685_30', 'G685_31', 'G685_32', 'G685_33', '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 OCD.ORD_DTL_NO
+		                 , OCD.CHG_QTY
+		              FROM TB_ORDER_CHANGE_DETAIL OCD
+		             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}
+			) A
+		    GROUP  BY A.ORD_NO
+		         , A.ORD_DTL_NO
+		         , A.ORD_DTL_STAT
+		         , A.ORD_DTL_STAT_NM
+		         , A.ALL_CAN_YN
+		         , A.GOODS_CD
+		         , A.GOODS_NM
+		         , A.GOODS_TYPE
+		         , A.GOODS_TYPE_NM
+		         , A.LIST_PRICE
+		         , A.CURR_PRICE
+		         , A.ORD_QTY
+		         , A.CNCL_RTN_QTY
+		         , A.ORD_REQ_CHG_QTY
+		         , A.CPN1_DC_AMT
+		         , A.ORD_AMT
+		         , A.CNCL_RTN_AMT
+		         , A.TMTB1_DC_AMT
+		         , A.TMTB2_DC_AMT
+		         , A.GOODS_CPN_DC_AMT
+		         , A.CART_CPN_DC_AMT
+		         , A.PRE_PNT_DC_AMT
+		         , A.PNT_DC_AMT
+		         , A.GFCD_USE_AMT
+		         , A.REAL_ORD_AMT
+		         , A.SUPPLY_COMP_CD
+		         , A.SUPPLY_COMP_NM
+		         , A.MIN_ORD_AMT
+		         , A.ORG_DELV_FEE
+		         , A.RTN_DELV_FEE
+		         , A.EXC_DELV_FEE
+		         , A.RTN_LOC_NM
+		         , A.RTN_LOC_ZIPCODE
+		         , A.RTN_LOC_BASE_ADDR
+		         , A.RTN_LOC_DTL_ADDR
+		         , A.RTN_LOC_TELNO
+		         , A.SELF_GOODS_YN
+		         , A.DELV_FEE_CD
+		         , A.ORD_CAN_CHG_QTY
+		) Z
+		INNER  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
+		WHERE  Z.DELV_FEE_CD = #{delvFeeCdGrp}
+		ORDER  BY Z.DELV_FEE_CD
+		     , Z.ORD_NO
+		     , Z.ORD_DTL_NO
+	</select>
+	
 	<!-- 주문변경신청목록 조회 (취소, 반품, 교환) -->
 	<select id="getOrderChangeDetailList" parameterType="Order" resultType="Order">
 		/* order.getOrderChangeDetailList */
@@ -2904,6 +3124,193 @@
 		</where>
 	</select>
 	
+<!-- 취소/반품 환불 사전 정보 조회 -->
+	<select id="getRefundPreInfo2" parameterType="OrderChange" resultType="Order">
+		/* TscOrderChange.getRefundPreInfo2 */
+		SELECT Z.ORD_NO
+		     , Z.ORD_DTL_NO
+		     , Z.GOODS_NM
+		     , Z.GOODS_TYPE_NM
+		     , Z.ORD_DTL_STAT
+		     , Z.ORD_DTL_STAT_NM
+		     , GROUP_CONCAT(Z.ITEM_CD  ORDER BY Z.ORD_DTL_ITEM_SQ) AS ITEM_CD
+		     , GROUP_CONCAT(Z.ITEM_NM  ORDER BY Z.ORD_DTL_ITEM_SQ) AS ITEM_NM
+		     , GROUP_CONCAT(Z.OPT_CD   ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD
+		     , GROUP_CONCAT(Z.OPT_CD1  ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
+		     , GROUP_CONCAT(Z.OPT_CD2  ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
+		     , GROUP_CONCAT(Z.ITEM_QTY ORDER BY Z.ORD_DTL_ITEM_SQ) AS ITEM_QTYR
+		     , Z.CURR_PRICE
+		     , Z.ORD_QTY
+		     , Z.CNCL_RTN_QTY
+		     , SUM(OPT_ADD_PRICE) AS 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.PRE_PNT_DC_AMT
+		     , Z.PNT_DC_AMT
+		     , Z.GFCD_USE_AMT
+		     , Z.SAVE_PNT_AMT
+		     , Z.REAL_ORD_AMT
+		     , Z.DELV_FEE
+		     , Z.DELV_CPN_DC_AMT
+		     , Z.MIN_ORD_AMT
+		     , Z.ORG_DELV_FEE
+		     , Z.RTN_DELV_FEE
+		     , Z.EXC_DELV_FEE
+		     , Z.SUPPLY_COMP_CD
+		     , Z.DELV_FEE_CD
+		     , Z.PG_GB
+		     , Z.PG_TID
+		     , Z.PAY_MEANS
+		     , Z.PAY_STAT
+		     , Z.CASH_AUTH_NO
+		     , Z.DELV_YN
+		FROM (
+		    SELECT O.ORD_NO
+			     , OD.ORD_DTL_NO
+			     , OD.GOODS_CD
+			     , G1.GOODS_NM
+			     , ODI.ORD_DTL_ITEM_SQ
+			     , ODI.ITEM_CD
+			     , G2.GOODS_NM                                        AS ITEM_NM
+			     , ODI.ITEM_QTY
+			     , ODI.OPT_CD
+			     , ODI.OPT_CD1
+			     , ODI.OPT_CD2
+			     , ODI.ITEM_PRICE
+			     , OD.CURR_PRICE
+			     , OD.ORD_QTY
+			     , OD.CNCL_RTN_QTY
+			     , OCD.ORD_REQ_CHG_QTY
+			     , OD.OPT_ADD_PRICE
+			     , OD.ORD_AMT
+			     , OD.CNCL_RTN_AMT
+			     , OD.CPN1_DC_AMT
+			     , OD.TMTB1_DC_AMT
+			     , OD.TMTB2_DC_AMT
+			     , OD.GOODS_CPN_DC_AMT
+			     , OD.CART_CPN_DC_AMT
+			     , OD.PNT_DC_AMT
+			     , OD.PRE_PNT_DC_AMT
+			     , OD.SAVE_PNT_AMT
+			     , OD.GFCD_USE_AMT
+			     , OD.REAL_ORD_AMT
+			     , FN_GET_CODE_NM('G056', OD.GOODS_TYPE)              AS GOODS_TYPE_NM
+			     , OD.ORD_DTL_STAT
+			     , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)            AS ORD_DTL_STAT_NM
+			     , DF.DELV_FEE
+			     , DF.DELV_CPN_DC_AMT
+			     , 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
+			     , DFP.SUPPLY_COMP_CD
+			     , IF(G1.SELF_GOODS_YN = 'Y', 'WMS', DFP.DELV_FEE_CD) AS DELV_FEE_CD
+			     , P.PG_GB
+			     , P.PG_TID
+			     , P.PAY_MEANS
+			     , P.PAY_STAT
+			     , P.CASH_AUTH_NO
+			     , CASE WHEN NULLIF(OD.INVOICE_NO, '') IS NULL THEN 'N'
+			            ELSE 'Y'
+			        END AS DELV_YN
+			  FROM TB_ORDER O
+			 INNER JOIN TB_ORDER_DETAIL OD
+			    ON O.ORD_NO = OD.ORD_NO
+			 INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+			    ON O.ORD_NO = ODI.ORD_NO
+			   AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+			 INNER JOIN TB_GOODS G1
+			    ON OD.GOODS_CD = G1.GOODS_CD
+			 INNER JOIN TB_GOODS G2
+			    ON ODI.ITEM_CD = G2.GOODS_CD
+			 INNER JOIN TB_PAYMENT P
+			    ON P.ORD_NO = O.ORD_NO
+			   AND P.PAY_STAT IN ('G016_10', 'G016_30')
+			   AND P.PAY_GB = 'O'
+			  LEFT OUTER JOIN (SELECT OCD.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 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
+			                        , SUM(X.DELV_CPN_DC_AMT) AS DELV_CPN_DC_AMT
+			                     FROM TB_DELIVERY_FEE X
+			                    WHERE X.DELV_FEE_GB = 'G018_10'
+			                      AND X.ORD_NO = #{ordNo}
+			                    GROUP BY X.DELV_FEE_CD
+			                  ) DF
+			    ON IF(G1.SELF_GOODS_YN = 'Y', 'WMS', 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'
+			<where>
+				<choose>
+					<when test='custNo > 0'>
+			   AND O.CUST_NO = #{custNo}
+					</when>
+					<otherwise>
+			   AND O.ORD_NO = #{ordNo}
+			   AND O.ORD_NM = #{ordNm}
+			   AND O.ORD_PHNNO = #{ordPhnno}
+					</otherwise>
+				</choose>
+				<if test="ordNo != null and ordNo != ''">
+			   AND O.ORD_NO = #{ordNo}
+				</if>
+				<if test="delvFeeCd != null and delvFeeCd != ''">
+			   AND OD.DELV_FEE_CD = #{delvFeeCd}
+				</if>
+			   AND O.DISP_YN = 'Y'
+			</where>
+		) Z
+		GROUP  BY Z.ORD_NO
+		     , Z.ORD_DTL_NO
+		     , Z.GOODS_NM
+		     , Z.GOODS_TYPE_NM
+		     , Z.ORD_DTL_STAT
+		     , Z.ORD_DTL_STAT_NM
+		     , Z.CURR_PRICE
+		     , Z.ORD_QTY
+		     , Z.CNCL_RTN_QTY
+		     , 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.PRE_PNT_DC_AMT
+		     , Z.PNT_DC_AMT
+		     , Z.GFCD_USE_AMT
+		     , Z.SAVE_PNT_AMT
+		     , Z.REAL_ORD_AMT
+		     , Z.DELV_FEE
+		     , Z.DELV_CPN_DC_AMT
+		     , Z.MIN_ORD_AMT
+		     , Z.ORG_DELV_FEE
+		     , Z.RTN_DELV_FEE
+		     , Z.EXC_DELV_FEE
+		     , Z.SUPPLY_COMP_CD
+		     , Z.DELV_FEE_CD
+		     , Z.PG_GB
+		     , Z.PG_TID
+		     , Z.PAY_MEANS
+		     , Z.PAY_STAT
+		     , Z.CASH_AUTH_NO
+		     , Z.DELV_YN
+	</select>
+	
 	<!-- 결제취소 환불정보 수정 -->
 	<update id="updateRefundInfo" parameterType="Order">
 		/* TscOrderChange.updateRefundInfo */