Prechádzať zdrojové kódy

주문상세 교환 임시 커밋

card007 5 rokov pred
rodič
commit
1945e2eb82

+ 9 - 1
src/main/java/com/style24/admin/biz/dao/TsaDeliveryDao.java

@@ -113,5 +113,13 @@ public interface TsaDeliveryDao {
 	 */	
 	Collection<Delivery> getDeliveryWithdrawDirectiveList(Delivery delivery);
 
-		
+	/**
+	 * 출고처 정보 조회
+	 * 
+	 * @param Delivery - 배송/회수지시 정보
+	 * @return Collection<Delivery>
+	 * @author card007
+	 * @since 2021. 01. 18
+	 */
+	Collection<Delivery> getDeliveryLocInfo(Delivery delivery);
 }

+ 12 - 1
src/main/java/com/style24/admin/biz/service/TsaDeliveryService.java

@@ -182,5 +182,16 @@ public class TsaDeliveryService {
 	public Collection<Delivery> getDeliveryWithdrawDirectiveList(Delivery delivery) {
 		return deliveryDao.getDeliveryWithdrawDirectiveList(delivery);
 	}
-	
+
+	/**
+	 * 출고처 정보 조회
+	 *
+	 * @param Delivery - 배송/회수지시 정보
+	 * @return Collection<Delivery>
+	 * @author card007
+	 * @since 2021. 01. 18
+	 */
+	public Collection<Delivery> getDeliveryLocInfo(Delivery delivery) {
+		return deliveryDao.getDeliveryLocInfo(delivery);
+	}
 }

+ 23 - 1
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -16,6 +16,7 @@ import org.springframework.web.servlet.ModelAndView;
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponse;
+import com.style24.admin.biz.service.TsaDeliveryService;
 import com.style24.admin.biz.service.TsaOrderChangeService;
 import com.style24.admin.biz.service.TsaOrderService;
 import com.style24.admin.biz.service.TsaRendererService;
@@ -23,6 +24,7 @@ import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.persistence.domain.Delivery;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
 
@@ -54,6 +56,9 @@ public class TsaOrderChangeController extends TsaBaseController {
 	@Autowired
 	private TsaOrderChangeService orderChangeService;
 	
+	@Autowired
+	private TsaDeliveryService deliveryService;
+	
 	/**
 	 * 취소요청 화면
 	 * 
@@ -339,6 +344,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 	public ModelAndView exchangeRequestFrom(@RequestParam(value = "ordNo") int ordNo) {
 
 		Order order = new Order();
+		Delivery delivery = new Delivery();
 		ModelAndView mav = new ModelAndView();
 
 		order.setOrdNo(ordNo);
@@ -348,7 +354,6 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[0] = TscConstants.OrderDetailStat.SHIPPING.value();
 		ordDtlStatArr[1] = TscConstants.OrderDetailStat.SHIP_COMPLETE.value();
 		ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
-		log.info("ordDtlStatArr >>> {}", ordDtlStatArr);
 		order.setOrdDtlStatArr(ordDtlStatArr);
 
 		Collection<Order> cancelRequestTargetList = orderChangeService.getCancelRequestTargetList(order);
@@ -360,11 +365,28 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.addObject("orderInfoList"				, orderInfoList);									// 주문정보
 		mav.addObject("ordNo"						, ordNo);
 		mav.addObject("orderDelvAddrInfo"			, orderService.getDeliveryAddrList(order));			// 배송정보
+		mav.addObject("deliveryLoc"					, deliveryService.getDeliveryLocInfo(delivery));	// 반송지정보
 
 		mav.setViewName("order/ExchangeRequestForm");
 
 		return mav;
 	}
+
+	/**
+	 * 교환 추가배송비 조회
+	 *
+	 * @param Order - 주문정보
+	 * @return Order
+	 * @author card007
+	 * @since 2021. 01. 19
+	 */
+	@PostMapping("/exchange/addDelvFee")
+	@ResponseBody
+	public Order getAddDelvFee(@RequestBody Collection<Order> dataList) {
+		Order order = new Order();
+		log.info("dataList >>> {}", dataList);
+		return order;
+	}
 }
 
 

+ 13 - 0
src/main/java/com/style24/persistence/domain/Delivery.java

@@ -298,4 +298,17 @@ public class Delivery extends TscBaseDomain {
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] multiOrdDtlStat = null;
+	
+	// 출고처 정보
+	private String delvAssignGrade;
+	private String stockApplRate;
+	private String delvLocZipcode;
+	private String delvLocBaseAddr;
+	private String delvLocDtlAddr;
+	private String rtnLocZipcode;
+	private String rtnLocBaseAddr;
+	private String rtnLocDtlAddr;
+	private String rtnLocTelno;
+	private String rtnLocNm;
+	private String invoicePrintType;
 }

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

@@ -367,6 +367,11 @@ public class Order extends TscBaseDomain {
 	
 	// 교환요청
 	private String ordChgOpt;
+	private String rtnLocZipcode;
+	private String rtnLocBaseAddr;
+	private String rtnLocDtlAddr;
+	private String rtnLocTelno;
+	private String rtnLocNm;
 }
 
 

+ 32 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml

@@ -401,4 +401,36 @@
 		SELECT '1' FROM DUAL
 	</select>
 	
+	<!-- 출고처 정보 조회 -->
+	<select id="getDeliveryLocInfo" parameterType="Delivery" resultType="Delivery">
+		/* TsaDelivery.getDeliveryLocInfo */
+		SELECT DELV_LOC_CD
+			 , DELV_LOC_NM
+			 , SUPPLY_COMP_CD
+			 , DELV_LOC_CLSF
+			 , DELV_ASSIGN_ORD
+			 , DELV_ASSIGN_GRADE
+			 , STOCK_APPL_RATE
+			 , DELV_FEE_RATE
+			 , DELV_LOC_ZIPCODE
+			 , DELV_LOC_BASE_ADDR
+			 , DELV_LOC_DTL_ADDR
+			 , RTN_LOC_ZIPCODE
+			 , RTN_LOC_BASE_ADDR
+			 , RTN_LOC_DTL_ADDR
+			 , RTN_LOC_TELNO
+			 , RTN_LOC_NM
+			 , INVOICE_PRINT_TYPE
+			 , USE_YN
+			 , REG_NO
+			 , REG_DT
+			 , UPD_NO
+			 , UPD_DT
+		  FROM TB_DELIVERY_LOC
+		 WHERE USE_YN = 'Y'
+		<if test="delvLocCd != null and delvLocCd != ''">
+		   AND DELV_LOC_CD = #{delvLocCd}
+		</if>
+	</select>
+	
 </mapper>

+ 18 - 18
src/main/java/com/style24/persistence/mybatis/shop/TsaOrderChange.xml

@@ -101,7 +101,7 @@
 			 WHERE GOODS_CD IN (SELECT ITEM_CD FROM TB_ORDER_DETAIL_ITEM WHERE ORD_NO = #{ordNo})
 			 GROUP BY GOODS_CD, OPT_CD1
 		) VS
-		ON     OD.GOODS_CD = VS.GOODS_CD
+		ON     ODI.ITEM_CD = VS.GOODS_CD
 		AND    ODI.OPT_CD1 = VS.OPT_CD1
 		WHERE  1=1
 		<if test="ordDtlStatArr != null and ordDtlStatArr != ''">
@@ -113,6 +113,7 @@
 		AND    OD.ORD_NO = #{ordNo}
 		GROUP  BY OD.ORD_NO
 		     , OD.ORD_DTL_NO
+		     , ODI.ORD_DTL_ITEM_SQ
 	    ORDER  BY OD.ORD_NO
 	         , OD.ORD_DTL_NO
 	</select>
@@ -153,9 +154,9 @@
 			 , #{addPayCost}
 			 , #{addPayAmt}
 			 , #{regNo}
-			 , SYSDATE()
+			 , NOW()
 			 , #{updNo}
-			 , SYSDATE()
+			 , NOW()
 		)
 	</insert>
 
@@ -181,7 +182,7 @@
 		     , ODI.REAL_ORD_AMT 	= ODI.REAL_ORD_AMT 			- #{realOrdAmt}
 		     , ODI.GFCD_USE_AMT 	= ODI.GFCD_USE_AMT 			- #{gfcdUseAmt}
 		     , ODI.UPD_NO 			= #{updNo}
-		     , ODI.UPD_DT 			= SYSDATE()
+		     , ODI.UPD_DT 			= NOW()
 		WHERE  1=1
 		AND    ODI.ORD_NO 			= #{ordNo} 
 		AND    ODI.ORD_DTL_NO 		= #{ordDtlNo} 
@@ -272,7 +273,7 @@
 		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()
+		     , OP.UPD_DT = NOW()
 		WHERE  1=1
 		AND    ODI.ORD_NO 			= #{ordNo} 
 		AND    ODI.ORD_DTL_NO 		= #{ordDtlNo} 
@@ -515,11 +516,11 @@
 			, #{ordDtlNo}
 			, #{chgQty}
 			, #{chgStat}
-			, SYSDATE()
+			, NOW()
 			, #{regNo}
-			, SYSDATE()
+			, NOW()
 			, #{updNo}
-			, SYSDATE()
+			, NOW()
 		)
 	</insert>
 	
@@ -558,7 +559,7 @@
 			, UPD_DT
 		) 
 		SELECT ORD_NO
-		 	 , SYSDATE()
+		 	 , NOW()
 			 , PAY_MEANS
 			 , #{payAmt}
 			 , #{pgCpnAmt}
@@ -583,9 +584,9 @@
 			 , ESCROW_YN
 			 , #{ordChgSq}
 			 , #{regNo}
-			 , SYSDATE()
+			 , NOW()
 			 , #{updNo}
-			 , SYSDATE()
+			 , NOW()
 		FROM   TB_PAYMENT 
 		WHERE  1=1
 		AND    ORD_NO = #{ordNo}
@@ -631,7 +632,7 @@
 			, #{rfPrePntAmt}
 			, #{rfGfcdUseAmt}
 			, #{regNo}
-			, SYSDATE()
+			, NOW()
 		)
 	</insert>
 
@@ -669,9 +670,9 @@
 			, 'N'
 			, null
 			, #{regNo}
-			, SYSDATE()
+			, NOW()
 			, #{updNo}
-			, SYSDATE()
+			, NOW()
 		)
 	</insert>
 	
@@ -681,7 +682,7 @@
 		UPDATE TB_ORD_FREEGIFT_VAL
 		SET    DEL_YN= 'N'
 		     , UPD_NO = #{updNo}
-		     , UPD_DT = SYSDATE()
+		     , UPD_DT = NOW()
 		WHERE  FREEGIFT_VAL_SQ IN (
 			SELECT OFRV.FREEGIFT_VAL_SQ 
 			FROM   TB_ORD_FREEGIFT OFR
@@ -763,14 +764,13 @@
 			, 'N'
 			, 'N'
 			, #{regNo}
-			, SYSDATE()
+			, NOW()
 			, #{updNo}
-			, SYSDATE()
+			, NOW()
 		)
 	</insert>
 	
 	
-	
 </mapper>
 
 

+ 210 - 130
src/main/webapp/WEB-INF/views/order/ExchangeRequestForm.html

@@ -29,8 +29,8 @@
 				<h4>주문정보</h4>
 				<div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 
-				<h4>교환정보</h4>
-				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
+<!--				<h4>교환정보</h4>-->
+<!--				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>-->
 				
 				<h4>배송비정보</h4>
 				<div id="gridDelvCdList" style="width:100%; height: 140px;" class="ag-theme-balham"></div>
@@ -254,15 +254,26 @@ var columnExchangeReqList = [
 				, cellClass		: "text-center"
 				, cellRenderer	: function (params) {
 					var optArr			= params.data.optCd2s.split(',');
+					var ordChgOpt = params.data.ordChgOpt;
 
 					var strVal			= '';
-					strVal += '<select class="ordChgOpt" name="ordChgOpt">';
-					strVal += '<option value="" selected>선택</option>'
+					strVal += '<select class="ordChgOpt" name="ordChgOpt" ordDtlNo="' + params.data.ordDtlNo + '" ordDtlItemSq="' + params.data.ordDtlItemSq + '" onchange="fnChangeOption(this)">';
 					
-					for (var opt in optArr) {
-						console.log(opt);
-						strVal += '<option value="' + opt + '">' + opt + '</option>'
+					if (gagajf.isNull(ordChgOpt)) {
+						strVal += '<option value="">선택</option>'
+					} else {
+						strVal += '<option value="" selected>선택</option>'
 					}
+
+					$.each(optArr, function(idx,item){
+						if (ordChgOpt == item) {
+							strVal += '<option value="' + item + '" selected>' + item + '</option>';
+						} else {
+							strVal += '<option value="' + item + '">' + item + '</option>';
+						}
+					});
+
+					return strVal;
 				}
 			},
 			{headerName: "재고수량"	, field: "currStockQty"			, width: 100			, cellClass: 'text-center', hide: temp2},
@@ -278,7 +289,7 @@ var columnExchangeReqList = [
 					var ordCanChgQty 	= ordQty - (cnclRtnQty +  ordReqChgQty);
 					
 					var strVal 			= "";
-					strVal += "<select class='ordCanChgQty' name='ordCanChgQty'>";
+					strVal += '<select class="ordCanChgQty" name="ordCanChgQty" ordDtlNo="'+params.data.ordDtlNo+'" onchange="fnChangeQty(this)">';
 					
 					for (i=0 ; i<=ordCanChgQty ; i++) {
 						if (i == params.data.ordCanChgQty) {
@@ -463,20 +474,6 @@ var gridOptionsExchangeReqList = gagaAgGrid.getGridOptions(columnExchangeReqList
 gridOptionsExchangeReqList.suppressRowClickSelection = true;
 gridOptionsExchangeReqList.rowSelection = 'multiple';
 
-gridOptionsExchangeReqList.onCellValueChanged = function(params) {
-	var colId = params.column.getId();
-	if (colId === 'ordChgOpt') {
-		var optCd2 = params.data.optCd2;
-		var stockQtyArr = params.data.currStockQtys.split(',');
-		var optCdArr = params.data.optCd2s.split(',');
-		var stockIdx = optCdArr.indexOf(optCd2);
-		var stockQty = stockQtyArr[stockIdx];
-		params.node.setDataValue('stockQty', stockQty);
-	} else if (colId === 'ordCanChgQty') {
-		console.log(params);
-	}
-}
-
 // 2. 교환정보(환불정보)
 var columnExchangeReqToBeList = [
 	{
@@ -954,75 +951,45 @@ var fnChangeChgReason = function(reasonCd){
 	fnCalculateRefundAmt();			
 }
 
-// 반품요청
+// 교환요청
 var fnExchangeRequest = function () {
 	var temp 		= false;
 	var ordDtlStat	= cancelRequestTargetList[0].ordDtlStat; 
 	var allCanYn 	= "N";
-	
-	// 1. 취소수량 체크
-	for (i=0 ; i<cancelRequestTargetList.length ; i++) {		
+
+	// 1. 교환수량 체크
+	for (i=0 ; i<cancelRequestTargetList.length ; i++) {
 		if (cancelRequestTargetList[i].ordCanChgQty > 0) {
 			temp = true;
 		}
 	}
-	
+
 	if (temp == false) {
 		mcxDialog.alert('취소 할 수량을 입력하세요.');
 		return;
 	}
-	
-	// 2. 입금대기건 && 전체취소 체크
-	if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() != $("#spanRefundAmt").text()) {
-		alert("입금대기건은 전체 취소만 가능합니다.");
-		return;
-	}
-	
-	// 2.1 전체취소 여부 적용
-	if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() == $("#spanRefundAmt").text()) {
-		allCanYn = "Y";	
-	}
-	
-	// 3. 취소사유 체크
-	var chgReason = $("#cancelRequestFrm select[name=selectChgReason]").val();
-	
+
+	// 3. 교환사유 체크
+	var chgReason = $("#exchangeRequestFrm select[name=selectChgReason]").val();
+
 	if (gagajf.isNull(chgReason)) {
 		mcxDialog.alert("취소사유를 입력하세요."); 
 		return ;
 	}
-	
-	// 4. 환불계좌 체크
-	var accountNo 	= "";
-	var accountNm 	= "";
-	var bankCd 		= "";
-	
-	// 결제타입이 무통장 입금일때 사용
-	if (payMeans == 'G014_20') {
-		var refundAccount = gridOptionsRefundAccountInfo.api.getSelectedRows();
-		
-		if (refundAccount.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-		
-		accountNo 	= refundAccount[0].accountNo;
-		accountNm 	= refundAccount[0].accountNm;
-		bankCd 		= refundAccount[0].bankCd;
-	}
-	
+
 	// 5. 회수지정보설정
-	var chgerNm			= $("#cancelRequestFrm input[name=chgerNm]").val();
-	var chgerZipNo		= $("#cancelRequestFrm input[name=chgerZipNo]").val();
-	var chgerBaseAddr	= $("#cancelRequestFrm input[name=chgerBaseAddr]").val();
-	var chgerDtlAddr	= $("#cancelRequestFrm input[name=chgerDtlAddr]").val();
+	var chgerNm			= $("#exchangeRequestFrm input[name=chgerNm]").val();
+	var chgerZipNo		= $("#exchangeRequestFrm input[name=chgerZipNo]").val();
+	var chgerBaseAddr	= $("#exchangeRequestFrm input[name=chgerBaseAddr]").val();
+	var chgerDtlAddr	= $("#exchangeRequestFrm input[name=chgerDtlAddr]").val();
 	
-	var chgerPhnno1		= $("#cancelRequestFrm select[name=chgerPhnno1]").val();
-	var chgerPhnno2		= $("#cancelRequestFrm input[name=chgerPhnno2]").val();
-	var chgerPhnno3		= $("#cancelRequestFrm input[name=chgerPhnno3]").val();
+	var chgerPhnno1		= $("#exchangeRequestFrm select[name=chgerPhnno1]").val();
+	var chgerPhnno2		= $("#exchangeRequestFrm input[name=chgerPhnno2]").val();
+	var chgerPhnno3		= $("#exchangeRequestFrm input[name=chgerPhnno3]").val();
 	
-	var chgerTelno1		= $("#cancelRequestFrm select[name=chgerTelno1]").val();
-	var chgerTelno2		= $("#cancelRequestFrm input[name=chgerTelno2]").val();
-	var chgerTelno3		= $("#cancelRequestFrm input[name=chgerTelno3]").val();
+	var chgerTelno1		= $("#exchangeRequestFrm select[name=chgerTelno1]").val();
+	var chgerTelno2		= $("#exchangeRequestFrm input[name=chgerTelno2]").val();
+	var chgerTelno3		= $("#exchangeRequestFrm input[name=chgerTelno3]").val();
 
 	if (gagajf.isNull(chgerZipNo)) {
 		mcxDialog.alert("회수지주소를 입력하세요."); return;
@@ -1043,20 +1010,54 @@ var fnExchangeRequest = function () {
 	if (gagajf.isNull(chgerPhnno3)) {
 		mcxDialog.alert("휴대전화를 입력하세요."); return;
 	}
-	
+
 	var chgerPhnno 		= chgerPhnno1 + chgerPhnno2 + chgerPhnno3;
 	var chgerTelno 		= chgerTelno1 + chgerTelno2 + chgerTelno3;
 	var chgerEmail 		= orderInfoList[0].ordEmail;
+
+	// 교환지정보 설정
+	var recipNm			= $("#exchangeRequestFrm input[name=chgerNm]").val();
+	var recipZipNo		= $("#exchangeRequestFrm input[name=chgerZipNo]").val();
+	var recipBaseAddr	= $("#exchangeRequestFrm input[name=chgerBaseAddr]").val();
+	var recipDtlAddr	= $("#exchangeRequestFrm input[name=chgerDtlAddr]").val();
+
+	var recipPhnno1		= $("#exchangeRequestFrm select[name=chgerPhnno1]").val();
+	var recipPhnno2		= $("#exchangeRequestFrm input[name=chgerPhnno2]").val();
+	var recipPhnno3		= $("#exchangeRequestFrm input[name=chgerPhnno3]").val();
+
+	var recipTelno1		= $("#exchangeRequestFrm select[name=chgerTelno1]").val();
+	var recipTelno2		= $("#exchangeRequestFrm input[name=chgerTelno2]").val();
+	var recipTelno3		= $("#exchangeRequestFrm input[name=chgerTelno3]").val();
+	
+	if (gagajf.isNull(recipZipNo)) {
+		mcxDialog.alert("교환지주소를 입력하세요."); return;
+	}
+	if (gagajf.isNull(recipBaseAddr)) {
+		mcxDialog.alert("교환지주소를 입력하세요."); return;
+	}
+	if (gagajf.isNull(recipDtlAddr)) {
+		mcxDialog.alert("교환지주소를 입력하세요."); return;
+	}
+	
+	if (gagajf.isNull(recipPhnno1)) {
+		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	}
+	if (gagajf.isNull(recipPhnno2)) {
+		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	}
+	if (gagajf.isNull(recipPhnno3)) {
+		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	}
+	
+	var recipPhnno 		= recipPhnno1 + recipPhnno2 + recipPhnno3;
+	var recipTelno 		= recipTelno1 + recipTelno2 + recipTelno3;
+	var recipEmail 		= orderInfoList[0].ordEmail;
 	
 	var jsonObj = {
-		"ordNo"				: $('#cancelRequestFrm input[name=ordNo]').val()
-		,"chgReason" 		: $('#cancelRequestFrm input[name=chgReason]').val()
+		"ordNo"				: $('#exchangeRequestFrm input[name=ordNo]').val()
+		,"chgReason" 		: $('#exchangeRequestFrm input[name=chgReason]').val()
 		,"chgMemo"			: $('#chgMemo').val()
-		,"cancelReqList" 	: cancelRequestTargetList
-		,"accountNo" 		: accountNo
-		,"accountNm" 		: accountNm
-		,"bankCd" 			: bankCd
-		,"allCanYn" 		: allCanYn
+		,"exchangeReqList" 	: cancelRequestTargetList
 		,"isCustomer"		: isCustomer
 		,"chgerNm"			: chgerNm
 		,"chgerEmail"		: chgerEmail
@@ -1065,17 +1066,24 @@ var fnExchangeRequest = function () {
 		,"chgerDtlAddr"		: chgerDtlAddr
 		,"chgerPhnno"		: chgerPhnno
 		,"chgerTelno"		: chgerTelno
+		,"recipNm"			: recipNm
+		,"recipEmail"		: recipEmail
+		,"recipZipNo"		: recipZipNo
+		,"recipBaseAddr"	: recipBaseAddr
+		,"recipDtlAddr"		: recipDtlAddr
+		,"recipPhnno"		: recipPhnno
+		,"recipTelno"		: recipTelno
 	}
 
-	// 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
+	// 주문번호, 교환사유, 교환메모, (취소, 반품, 교환 신청 정보 목록)
 	var jsonData = JSON.stringify(jsonObj);
 	
-	mcxDialog.confirm('반품요청하시겠습니까?', {
+	mcxDialog.confirm('교환요청하시겠습니까?', {
 		cancelBtnText		: "반품",
 		sureBtnClick		: function(){
-			// 취소 실행
+			// 교환 실행
 			gagajf.ajaxJsonSubmit(
-				'/orderChange/returnRequest/'
+				'/orderChange/exchangeRequest/'
 				, jsonData
 				, function() {
 					uifnPopupClose('popupOrderDetail');
@@ -1087,31 +1095,20 @@ var fnExchangeRequest = function () {
 	});
 }
 
-// 환불계좌 등록
-var fnCreateOrderRfAccount = function () {	
-	var actionUrl = "/orderChange/refund/account/create/form?ordNo=" + ordNo ;
-	cfnOpenModalPopup(actionUrl, 'popupCreateRefundAccount');
-};
-
-// 환불계좌 정보
-var fnBindOrderRfAccountInfo = function () {
-	gagaAgGrid.fetch(
-		"/orderChange/refund/account/info/list?ordNo=" + ordNo
-		, gridOptionsRefundAccountInfo
-		, null
-		, function (result) {
-		}
-	)
-};
-
 // 우편번호 DAUM을 이용한 우편번호 팝업 레이어
-var fnOpenDaumAddr = function() {
+var fnOpenDaumAddr = function(loc) {
 	let daumZip = new daum.Postcode({
-		oncomplete: function(data) {			
+		oncomplete: function(data) {
 			// 우편번호와 주소 정보를 해당 필드에 넣는다.
-			$('#cancelRequestFrm input[name=chgerZipNo]').val(data.zonecode);
-			$('#cancelRequestFrm input[name=chgerBaseAddr]').val(cfnGetDaumRoadAddr(data));
-			$('#cancelRequestFrm input[name=chgerDtlAddr]').focus();
+			if (loc == 'withdraw') {
+				$('#exchangeRequestFrm input[name=chgerZipNo]').val(data.zonecode);
+				$('#exchangeRequestFrm input[name=chgerBaseAddr]').val(cfnGetDaumRoadAddr(data));
+				$('#exchangeRequestFrm input[name=chgerDtlAddr]').focus();
+			} else if (loc == 'exchange') {
+				$('#exchangeRequestFrm input[name=recipZipNo]').val(data.zonecode);
+				$('#exchangeRequestFrm input[name=recipBaseAddr]').val(cfnGetDaumRoadAddr(data));
+				$('#exchangeRequestFrm input[name=recipDtlAddr]').focus();
+			}
 			
 			cfnCloseDaumAddr();
 		},
@@ -1121,55 +1118,138 @@ var fnOpenDaumAddr = function() {
 	cfnOpenDaumAddr(daumZip);
 }
 
-// 회수지정보 셋팅
+// 회수지정보 설정
 var fnSetChger = function(){
 	var data = orderDelvAddrInfo[0];
 	var spRecipPhnno = (data.recipPhnno != null) ? data.recipPhnno.split('-') : null;
 	var spRecipTelno = (data.recipTelno != null) ? data.recipTelno.split('-') : null;
 	
-	$("#cancelRequestFrm input[name=chgerNm]").val(data.recipNm);
-	$("#cancelRequestFrm input[name=chgerZipNo]").val(data.recipZipNo);
-	$("#cancelRequestFrm input[name=chgerBaseAddr]").val(data.recipBaseAddr);
-	$("#cancelRequestFrm input[name=chgerDtlAddr]").val(data.recipDtlAddr);
+	$("#exchangeRequestFrm input[name=chgerNm]").val(data.recipNm);
+	$("#exchangeRequestFrm input[name=chgerZipNo]").val(data.recipZipNo);
+	$("#exchangeRequestFrm input[name=chgerBaseAddr]").val(data.recipBaseAddr);
+	$("#exchangeRequestFrm input[name=chgerDtlAddr]").val(data.recipDtlAddr);
+	
+	if (spRecipPhnno) {
+		$("#exchangeRequestFrm select[name=chgerPhnno1]").val(spRecipPhnno[0]);
+		$("#exchangeRequestFrm input[name=chgerPhnno2]").val(spRecipPhnno[1]);
+		$("#exchangeRequestFrm input[name=chgerPhnno3]").val(spRecipPhnno[2]);
+	}
+	
+	if (spRecipTelno) {
+		$("#exchangeRequestFrm select[name=chgerTelno1]").val(spRecipTelno[0]);
+		$("#exchangeRequestFrm input[name=chgerTelno2]").val(spRecipTelno[1]);
+		$("#exchangeRequestFrm input[name=chgerTelno3]").val(spRecipTelno[2]);
+	}
+}
+
+// 교환지정보 설정
+var fnSetExchangeAddr = function(){
+	var data = orderDelvAddrInfo[0];
+	var spRecipPhnno = (data.recipPhnno != null) ? data.recipPhnno.split('-') : null;
+	var spRecipTelno = (data.recipTelno != null) ? data.recipTelno.split('-') : null;
+	
+	$("#exchangeRequestFrm input[name=recipNm]").val(data.recipNm);
+	$("#exchangeRequestFrm input[name=recipZipNo]").val(data.recipZipNo);
+	$("#exchangeRequestFrm input[name=recipBaseAddr]").val(data.recipBaseAddr);
+	$("#exchangeRequestFrm input[name=recipDtlAddr]").val(data.recipDtlAddr);
 	
 	if (spRecipPhnno) {
-		$("#cancelRequestFrm select[name=chgerPhnno1]").val(spRecipPhnno[0]);
-		$("#cancelRequestFrm input[name=chgerPhnno2]").val(spRecipPhnno[1]);
-		$("#cancelRequestFrm input[name=chgerPhnno3]").val(spRecipPhnno[2]);
+		$("#exchangeRequestFrm select[name=recipPhnno1]").val(spRecipPhnno[0]);
+		$("#exchangeRequestFrm input[name=recipPhnno2]").val(spRecipPhnno[1]);
+		$("#exchangeRequestFrm input[name=recipPhnno3]").val(spRecipPhnno[2]);
 	}
 	
 	if (spRecipTelno) {
-		$("#cancelRequestFrm select[name=chgerTelno1]").val(spRecipTelno[0]);
-		$("#cancelRequestFrm input[name=chgerTelno2]").val(spRecipTelno[1]);
-		$("#cancelRequestFrm input[name=chgerTelno3]").val(spRecipTelno[2]);
+		$("#exchangeRequestFrm select[name=recipTelno1]").val(spRecipTelno[0]);
+		$("#exchangeRequestFrm input[name=recipTelno2]").val(spRecipTelno[1]);
+		$("#exchangeRequestFrm input[name=recipTelno3]").val(spRecipTelno[2]);
 	}
 }
 
+// 교환옵션 변경 이벤트
+var fnChangeOption = function(param) {
+	var optCd2 = $(param).val();
+	var ordDtlNo = $(param).attr('ordDtlNo');
+	var ordDtlItemSq = $(param).attr('ordDtlItemSq');
+
+	$.each(cancelRequestTargetList, function(idx, item){
+		if (item.ordDtlNo == ordDtlNo && item.ordDtlItemSq == ordDtlItemSq) {
+			var stockQtyArr = item.currStockQtys.split(',');
+			var sizeCdArr = item.optCd2s.split(',');
+			var stockIdx = sizeCdArr.indexOf(optCd2);
+			var stockQty = stockQtyArr[stockIdx];
+			item.currStockQty = stockQty;
+			item.ordChgOpt = optCd2;
+		}
+	});
+	
+	gridOptionsExchangeReqList.api.setRowData(cancelRequestTargetList);
+}
+
+// 교환수량 변경 이벤트
+var fnChangeQty = function(param) {
+	var ordCanChgQty = $(param).val();
+	var ordDtlNo = $(param).attr('ordDtlNo');
+	var exchangeRequestTargetList = [];
+
+	$.each(cancelRequestTargetList, function(idx, item){
+		if (item.ordDtlNo == ordDtlNo) {
+			var optCd2 = gagajf.isNull(item.ordChgOpt) ? item.optCd2 : item.ordChgOpt;
+			var stockQtyArr = item.currStockQtys.split(',');
+			var sizeCdArr = item.optCd2s.split(',');
+			var stockIdx = sizeCdArr.indexOf(optCd2);
+			var stockQty = stockQtyArr[stockIdx];
+
+			if (stockQty < ordCanChgQty) {
+				mcxDialog.alert(item.itemNm + ' ' + optCd2 + '의 재고수량이 부족합니다.');
+			} else {
+				item.ordCanChgQty = ordCanChgQty;
+			}
+			
+			if (ordCanChgQty > 0) {
+				exchangeRequestTargetList.push(item);
+			}
+		} else if (item.ordCanChgQty > 0) {
+			exchangeRequestTargetList.push(item);
+		}
+	});
+
+	fnAddDelvFee(exchangeRequestTargetList);
+
+	gridOptionsExchangeReqList.api.setRowData(cancelRequestTargetList);
+}
+
+var fnAddDelvFee = function (exchangeRequestTargetList) {
+	var delvCdList = [];
+	exchangeRequestTargetList.filter(function(each) {
+		console.log(each);
+	});
+	//$.each(exchangeRequestTargetList, function(idx, item) {
+	//	if (delvCdList.filter(i => item.includes(i.supplyCompCd)).length <= 0
+	//	&& elvCdList.filter(i => item.includes(i.delvFeeCd)).length <= 0) {
+	//		delvCdList.push(item);
+	//	}
+	//});
+	//gridOptionsDelvCdList.api.setRowData(exchangeRequestTargetList);
+}
+
 $(document).ready(function() {
 	// 1. 그리드생성
 	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsExchangeReqList);			// 주문정보
-	gagaAgGrid.createGrid('gridOrderCancelRequestToBeList'	, gridOptionsExchangeReqToBeList);		// 취소정보
+	//gagaAgGrid.createGrid('gridOrderCancelRequestToBeList'	, gridOptionsExchangeReqToBeList);		// 취소정보
 	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비정보
-	//gagaAgGrid.createGrid('gridRefundAccountInfo'			, gridOptionsRefundAccountInfo);		// 환불계좌정보
 	gridOptionsExchangeReqList.api.setRowData(cancelRequestTargetList);
 	
 	// 2.1 TOTAL ROWS 없애기
 	gagaAgGrid.hideStatusBar('gridOrderCancelRequestList');
 	gagaAgGrid.hideStatusBar('gridOrderCancelRequestToBeList');
 	gagaAgGrid.hideStatusBar('gridDelvCdList');
-	//gagaAgGrid.hideStatusBar('gridRefundAccountInfo');
 	
-	// 3. 환불정보계산
-	//fnCalculateRefundAmt(null);
-	
-	// 4. 무통장입금아일때 환불계좌 그리드 숨김처리
-	if (payMeans !== 'G014_20') {
-		$('#wrapRefundAccount').addClass("off");
-		//fnBindOrderRfAccountInfo();
-	}
-	
-	// 5. 회수지정보설정
+	// 3. 회수지정보설정
 	fnSetChger();
+	
+	// 4. 교환지정보설정
+	fnSetExchangeAddr();
 });
 </script>
 </html>