Просмотр исходного кода

취소신청, 취소완료 개발중

jsh77b 5 лет назад
Родитель
Сommit
1747a61009

+ 41 - 9
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -4,7 +4,6 @@ import java.util.Collection;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -17,7 +16,6 @@ import org.springframework.web.servlet.ModelAndView;
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponse;
 import com.gagaframework.web.rest.server.GagaResponseStatus;
-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;
@@ -27,7 +25,6 @@ import com.style24.core.biz.service.TscOrderChangeService;
 import com.style24.core.biz.service.TscOrderRefundService;
 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;
 
@@ -71,13 +68,48 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 * @author jsh77b
 	 * @since 2020. 12. 22
 	 */
-	@GetMapping("/cancel/request/form")
-	public ModelAndView cancelRequestFrom(@RequestParam(value = "ordNo") int ordNo) {
+	@GetMapping("/cncl/req/form")
+	public ModelAndView cnclReqForm(@RequestParam(value = "ordNo") int ordNo) {
+
+		Order order = new Order();
+		ModelAndView mav = new ModelAndView();
+		order.setOrdNo(ordNo);
+				
+		// 취소가능 주문상세상탭값 설정
+		String[] ordDtlStatArr = new String[4];
+		ordDtlStatArr[0] = TscConstants.OrderDetailStat.DEPOSIT_WAIT.value();
+		ordDtlStatArr[1] = TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value();
+		ordDtlStatArr[2] = TscConstants.OrderDetailStat.GOODS_PREPARE.value();
+		ordDtlStatArr[3] = TscConstants.OrderDetailStat.DELIVERY_PREPARE.value();
+		order.setOrdDtlStatArr(ordDtlStatArr);
+
+		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G686"));				// 취소사유
+		mav.addObject("cancelRequestTargetList"		, coreOrderChangeService.getCancelRequestTargetList(order));	// 취소요청대상목록
+		mav.addObject("orderInfoList"				, orderService.getOrderInfoList(order));						// 주문정보
+		mav.addObject("ordNo"						, ordNo);														// 주문번호
+
+		mav.setViewName("order/cnclReqForm");
+		
+		return mav;
+	}
+	
+	/**
+	 * 취소요청 화면 (관리자)
+	 * 
+	 * @param ordNo - 주문번호
+	 * @param cncWait - 취소대기요청 구분
+	 * @return ModelAndView
+	 * @author jsh77b
+	 * @since 2020. 12. 22
+	 */
+	@GetMapping("/cncl/req/view/form")
+	public ModelAndView cnclReqViewForm(@RequestParam(value = "ordNo") int ordNo ,@RequestParam(value = "ordChgSq") int ordChgSq) {
 
 		Order order = new Order();
 		ModelAndView mav = new ModelAndView();
 		
 		order.setOrdNo(ordNo);
+		order.setOrdChgSq(ordChgSq);
 		
 		// 취소가능 주문상세상탭값 설정
 		String[] ordDtlStatArr = new String[4];
@@ -90,9 +122,9 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G686"));				// 취소사유
 		mav.addObject("cancelRequestTargetList"		, coreOrderChangeService.getCancelRequestTargetList(order));	// 취소요청대상목록
 		mav.addObject("orderInfoList"				, orderService.getOrderInfoList(order));						// 주문정보
-		mav.addObject("ordNo"						, ordNo);														// 주문번호
+		mav.addObject("ordNo"						, ordChgSq);														// 주문번호
 
-		mav.setViewName("order/CancelRequestForm");
+		mav.setViewName("order/cnclReqViewForm");
 		
 		return mav;
 	}
@@ -235,7 +267,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 * @author jsh77b
 	 * @since 2020. 12. 22
 	 */
-	@GetMapping("/return/request/form")
+	@GetMapping("/rtn/req/form")
 	public ModelAndView returnRequestFrom(@RequestParam(value = "ordNo") int ordNo) {
 
 		Order order = new Order();
@@ -304,7 +336,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		// 4. 주문변경 회수지정보 추가
 		mav.set("chgerNm"		, rtnReq.getChgerNm());				// 변경자명
 		mav.set("chgerEmail"	, rtnReq.getChgerEmail());			// 변경자이메일주소
-		mav.set("chgerZipNo"	, rtnReq.getChgerZipNo());			// 회수지우편번호
+		mav.set("chgerZipcode"	, rtnReq.getChgerZipcode());		// 회수지우편번호
 		mav.set("chgerBaseAddr"	, rtnReq.getChgerBaseAddr());		// 회수지기본주소
 		mav.set("chgerDtlAddr"	, rtnReq.getChgerDtlAddr());		// 회수지상세주소
 		mav.set("chgerPhnno"	, rtnReq.getChgerPhnno());			// 변경자핸드폰번호

+ 7 - 7
src/main/java/com/style24/persistence/mybatis/shop/TsaOrder.xml

@@ -613,7 +613,7 @@
 		     , Z.RECIP_NM
 		     , Z.RECIP_PHNNO
 		     , Z.RECIP_TELNO
-		     , Z.RECIP_ZIP_NO
+		     , Z.RECIP_ZIPCODE
 		     , Z.RECIP_BASE_ADDR
 		     , Z.RECIP_DTL_ADDR
 		     , Z.ORD_EMAIL
@@ -632,7 +632,7 @@
 			     , DA.RECIP_NM 
 			     , DA.RECIP_PHNNO 
 			     , DA.RECIP_TELNO 
-			     , DA.RECIP_ZIP_NO 
+			     , DA.RECIP_ZIPCODE 
 			     , DA.RECIP_BASE_ADDR
 			     , DA.RECIP_DTL_ADDR
 			     , O.ORD_EMAIL
@@ -720,7 +720,7 @@
 		     , OC.CHG_MEMO
 		     , OC.CHGER_NM
 		     , OC.CHGER_PHNNO 
-		     , OC.CHGER_ZIP_NO
+		     , OC.CHGER_ZIPCODE
 		     , OC.CHGER_BASE_ADDR
 		     , OC.CHGER_DTL_ADDR
 		     , OC.WD_INVOICE_SEND_YN
@@ -831,7 +831,7 @@
 		     , O.ORD_PHNNO 
 		     , DA.RECIP_NM 
 		     , DA.RECIP_PHNNO 
-		     , DA.RECIP_ZIP_NO 
+		     , DA.RECIP_ZIPCODE 
 		     , DA.RECIP_BASE_ADDR 
 		     , DA.RECIP_DTL_ADDR 
 		     , G2.SUPPLY_GOODS_CD
@@ -1115,7 +1115,7 @@
 		     , O.ORD_PHNNO 
 		     , DA.RECIP_NM 
 		     , DA.RECIP_PHNNO 
-		     , DA.RECIP_ZIP_NO 
+		     , DA.RECIP_ZIPCODE 
 		     , DA.RECIP_BASE_ADDR 
 		     , DA.RECIP_DTL_ADDR 
 		     , G2.SUPPLY_GOODS_CD
@@ -1545,7 +1545,7 @@
 		SET    RECIP_NM        	= #{recipNm}
 		     , RECIP_PHNNO     	= #{recipPhnno}
 		     , RECIP_TELNO     	= #{recipTelno}
-		     , RECIP_ZIP_NO    	= #{recipZipNo}
+		     , RECIP_ZIPCODE    = #{recipZipcode}
 		     , RECIP_BASE_ADDR 	= #{recipBaseAddr}
 		     , RECIP_DTL_ADDR  	= #{recipDtlAddr}
 		     , DELV_MEMO       	= #{delvMemo}
@@ -1558,7 +1558,7 @@
 	<update id="updateOrderChange" parameterType="Order">
 		/* order.updateOrderChange : 반품/교환 > 회수지 정보 수정 */
 		UPDATE TB_ORDER_CHANGE
-		SET    CHGER_ZIP_NO    	= #{chgerZipNo}
+		SET    CHGER_ZIPCODE    = #{chgerZipCode}
 		     , CHGER_BASE_ADDR 	= #{chgerBaseAddr}
 		     , CHGER_DTL_ADDR  	= #{chgerDtlAddr}
 		     , UPD_NO          	= #{updNo}

+ 2 - 2
src/main/webapp/WEB-INF/views/order/CancelRequestForm.html

@@ -888,7 +888,7 @@ var fnChangeChgReason = function(reasonCd){
 }
 
 // 취소신청/완료
-var fnCnclComplete = function (reqGbn) {
+var fnCnclReq = function (reqGbn) {
 	
 	var temp 		= false;
 	var ordDtlStat	= cancelRequestTargetList[0].ordDtlStat; 
@@ -962,7 +962,7 @@ var fnCnclComplete = function (reqGbn) {
 		,"isCustomer" 		: isCustomer
 		,"chgerNm"			: chgerNm
 		,"chgerEmail"		: chgerEmail
-		,"chgerZipNo"		: ""
+		,"chgerZipcode"		: ""
 		,"chgerBaseAddr"	: ""
 		,"chgerDtlAddr"		: ""
 		,"chgerPhnno"		: chgerPhnno

+ 1054 - 0
src/main/webapp/WEB-INF/views/order/CnclReqForm.html

@@ -0,0 +1,1054 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : CancelRequestForm.html
+ * @desc    : 취소요청 화면
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2019 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.12.12   jsh77b       최초 작성
+ *******************************************************************************
+ -->
+<div class="modalPopup" data-width="1400" data-height="600">
+	<div class="panelStyle">
+		<div class="panelTitle">
+			<h2>취소요청</h2>
+			<button type="button" class="close" onclick="uifnPopupClose('popupCancelRequestForm');"><i class="fa fa-times"></i></button>
+		</div>
+			
+		<div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
+			<form id="cancelRequestFrm" name="cancelRequestFrm" action="/orderChange/cancel" method="post" target="hdFrameForOrderCancel">
+				<input type="hidden" name="ordNo" th:value="${ordNo}"/>
+				<input type="hidden" name="chgReason" value=""/>
+				<input type="hidden" name="chgReasonDesc" value=""/>
+				
+				<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="gridDelvCdList" style="width:100%; height: 140px;" class="ag-theme-balham"></div>
+				
+				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
+					<button type="button" class="btn btn-success" onclick="fnCnclReq('req');">취소신청</button>
+					<button type="button" class="btn btn-success" onclick="fnCnclReq('complete');">취소완료</button>
+				</div>
+				
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:160px;" />
+						<col style="width:320px;" />
+						<col style="width:160px;" />
+						<col />
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>취소사유 <i class="star"></i></th>
+							<td>
+								<select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
+									<option value="">[선택하세요]</option>
+									<option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}:${oneData.cdNm}|" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+								</select>
+							</td>
+							<th>귀책사유</th>
+							<td><span id="imputeReason"></span></td>
+						</tr>
+						<tr>
+							<th>요청메모</th>
+							<td colspan="3">
+								<textarea id="chgMemo" name="chgMemo" style="height:80px;" placeholder="취소사유를 300자내외로 작성해 주세요"></textarea>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				
+				<h4>환불예정금액</h4>
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:20%;"/>
+						<col style="width:30%;"/>
+						<col style="width:20%;"/>
+						<col style="width:30%;"/>
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>총 결제 금액</th>
+							<td colspan="3"><span id="spanPayAmt"></span>원 (상품 실결제 금액 : <span id="spanSumRealOrdAmt"></span>원, 배송금액 : <span id="spanSumDeliveryFee"></span>원) </td>
+						</tr>
+						<tr>
+							<th>주문 상품 금액</th>
+							<td><span id="spanOrdAmt"></span>원</td>
+							<th>취소 상품 금액</th>
+							<td><span id="spanCnclRtnAmt"></span>원</td>
+						</tr>
+						<tr>
+							<th>취소 사용 포인트</th>
+							<td colspan="3"><span id="spanTotPntDcAmt"></span>원 (고객 포인트 : <span id="spanPntDcAmt"></span>원 + 상품 선포인트 : <span id="spanPrePntDcAmt"></span>원) </td>
+						</tr>
+						<tr>
+							<th>취소 사용 쿠폰금액</th>
+							<td colspan="3"><span id="spanCpnDcAmt"></span>원 (즉시할인쿠폰 : <span id="spanCpn1DcAmt"></span>원 + 상품쿠폰 : <span id="spanGoodsCpnDcAmt"></span>원 + 장바구니쿠폰 : <span id="spanCartCpnDcAmt"></span>원)</td>
+						</tr>
+						<tr>
+							<th>취소 다다익선 금액</th>
+							<td colspan="3"><span id="spanTmtbDcAmt"></span>원 (수량할인 : <span id="spanTmtb1DcAmt"></span>원 + 금액할인 : <span id="spanTmtb2DcAmt"></span>원)</td>
+						</tr>
+						
+						<tr>
+							<th>취소 고객 상품권 금액</th>
+							<td colspan="3"><span id="spanGfcdUseAmt"></span>원</td>
+						</tr>
+						
+						<tr>
+							<th>취소 상품 실결제 금액</th>
+							<td><span id="spanRealCnclRtnAmt"></span>원</td>
+							<th>추가 배송 금액</th>
+							<td><span id="spanTotDeliveryFee"></span>원 </td>
+						</tr>
+						
+						<tr>
+							<th>환불 금액 합계</th>
+							<td colspan="3"><span id="spanRefundAmt"></span>원</td>
+						</tr>
+					</tbody>
+				</table>
+				
+				<div id="wrapRefundAccount" style="width:50%;">
+					<h4>환불계좌정보</h4>
+					<button type="button" id="btnSaveAccount" class="btn btnRight btn-base btn-sm" style="margin-left:10px;" onclick="fnCreateOrderRfAccount();">등록</button>
+					<div id="gridRefundAccountInfo" style="height: 150px;" class="ag-theme-balham"></div>
+				</div>
+				
+			</form>
+		</div>
+	</div>
+</div>
+
+<!-- data -->
+<script th:inline="javascript">
+/*<![CDATA[*/
+var cancelRequestTargetList = [[${cancelRequestTargetList}]];				// 취소대상목록
+var ordNo 					= [[${ordNo}]];									// 주문번호
+var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
+var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
+
+var temp1 = true;
+var temp2 = false;
+
+// 1. 주문정보(반품대상)
+var columnCancelReqList = [
+	{
+		headerName	: "주문상세정보",
+		children	: [
+			{headerName: "주문번호"		, field: "ordNo"			, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "주문상세"		, field: "ordDtlNo"			, width: 80		, cellClass: 'text-center'},
+			{headerName: "주문상세"		, field: "ordDtlStat"		, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "주문상세상태"		, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품코드"		, field: "goodsCd"			, width: 100	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2}
+		]
+	},
+	{
+		headerName	: "주문상세단품정보",
+		children	: [
+			{headerName: "단품번호"		, field: "ordDtlItemSq"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "단품코드"		, field: "itemCd"			, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "단품명"			, field: "itemNm"			, width: 200	, cellClass: 'text-center', hide: temp2},
+			{headerName: "옵션1"			, field: "optCd1"			, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "옵션2"			, field: "optCd2"			, width: 80		, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "단품수량"		
+				, field			: "itemQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "단품금액"		
+				, field			: "itemPrice"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "단품옵션금액"		
+				, field			: "optAddPrice"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문상세수량",
+		children	: [
+			{
+				headerName		: "주문"		
+				, field			: "ordQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소/요청"		
+				, field			: "cnclRtnQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
+					return cnclRtnReqQty;
+				}
+			},
+			{
+				headerName		: "취소/반품"		
+				, field			: "ordCanChgQty"			
+				, width			: 100		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					var ordQty 			= parseInt(params.data.ordQty);
+					var cnclRtnQty 		= parseInt(params.data.cnclRtnQty);
+					var ordReqChgQty 	= parseInt(params.data.ordReqChgQty);
+					var ordCanChgQty 	= ordQty - (cnclRtnQty +  ordReqChgQty);
+					
+					var strVal 			= "";
+					strVal += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
+					
+					for (i=0 ; i<=ordCanChgQty ; i++) {
+						if (i == params.data.ordCanChgQty) {
+							strVal += "	<option value='"+i+"' selected>"+i+"</option>";
+						} else {
+							strVal += "	<option value='"+i+"'>"+i+"</option>";
+						}
+					}
+				
+					strVal += "</select>";
+					return strVal;
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문단품금액",
+		children	: [
+			{
+				headerName		: "주문"
+				, field			: "ordAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소"		
+				, field			: "cnclRtnAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "즉시할인"		
+				, field			: "cpn1DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "다다익선1"		
+				, field			: "tmtb1DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "다다익선2"		
+				, field			: "tmtb2DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "상품쿠폰"		
+				, field			: "goodsCpnDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "장바구니쿠폰"		
+				, field			: "cartCpnDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "포인트"		
+				, field			: "pntDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "선포인트"		
+				, field			: "prePntDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "상품권"		
+				, field			: "gfcdUseAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "실결제금액"		
+				, field			: "realOrdAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문배송비정보",
+		children	: [
+			{
+				headerName		: "배송비"		
+				, field			: "delvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "무료배송비"		
+				, field			: "minOrdAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "기본배송비"		
+				, field			: "orgDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "반품배송비"		
+				, field			: "rtnDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "교환배송비"		
+				, field			: "excDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
+		]
+	}
+];
+var gridOptionsCancelReqList = gagaAgGrid.getGridOptions(columnCancelReqList);
+
+// Add on options
+gridOptionsCancelReqList.suppressRowClickSelection = true;
+gridOptionsCancelReqList.rowSelection = 'multiple';
+
+// 2. 취소정보(환불정보)
+var columnCancelReqToBeList = [
+	{
+		headerName	: "주문상세정보",
+		children	: [
+			{headerName: "주문번호"		, field: "ordNo"			, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "주문상세"		, field: "ordDtlNo"			, width: 80		, cellClass: 'text-center'},
+			{headerName: "주문상세"		, field: "ordDtlStat"		, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "주문상세상태"		, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품코드"		, field: "goodsCd"			, width: 100	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2}
+		]
+	},
+	{
+		headerName	: "주문상세단품정보",
+		children	: [
+			{headerName: "단품번호"		, field: "ordDtlItemSq"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "단품코드"		, field: "itemCd"			, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "단품명"			, field: "itemNm"			, width: 200	, cellClass: 'text-center', hide: temp2},
+			{headerName: "칼라코드"		, field: "optCd1"			, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "사이즈코드"		, field: "optCd2"			, width: 80		, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "단품수량"		
+				, field			: "itemQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "단품금액"		
+				, field			: "itemPrice"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "단품옵션금액"		
+				, field			: "optAddPrice"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문상세수량",
+		children	: [
+			{
+				headerName		: "주문"		
+				, field			: "ordQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소/요청"		
+				, field			: "cnclRtnQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
+					return cnclRtnReqQty;
+				}
+			},
+			{
+				headerName		: "취소/반품"		
+				, field			: "ordCanChgQty"			
+				, width			: 100		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문단품금액",
+		children	: [
+			{
+				headerName		: "주문"
+				, field			: "ordAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소"		
+				, field			: "cnclRtnAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "즉시할인"		
+				, field			: "cpn1DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "다다익선1"		
+				, field			: "tmtb1DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "다다익선2"		
+				, field			: "tmtb2DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "상품쿠폰"		
+				, field			: "goodsCpnDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "장바구니쿠폰"		
+				, field			: "cartCpnDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "포인트"		
+				, field			: "pntDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "선포인트"		
+				, field			: "prePntDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "상품권"		
+				, field			: "gfcdUseAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "환불금액"		
+				, field			: "realOrdAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문배송비정보",
+		children	: [
+			{
+				headerName		: "배송비"		
+				, field			: "delvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "무료배송비"		
+				, field			: "minOrdAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "기본배송비"		
+				, field			: "orgDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "반품배송비"		
+				, field			: "rtnDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "교환배송비"		
+				, field			: "excDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
+		]
+	}
+];
+var gridOptionsCancelReqToBeList = gagaAgGrid.getGridOptions(columnCancelReqToBeList);
+
+// 3. 배송비정보(환불정보)
+var columnDelvCdList = [
+	{
+		headerName	: "배송코드기준금액",
+		children	: [
+			{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "주문"
+				, field			: "ordAmt"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소"		
+				, field			: "cnclRtnAmt"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "환불"		
+				, field			: "realOrdAmt"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "배송비정보",
+		children	: [
+			{
+				headerName		: "배송비"		
+				, field			: "delvFee"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "무료배송비"		
+				, field			: "minOrdAmt"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "기본배송비"		
+				, field			: "orgDelvFee"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "반품배송비"		
+				, field			: "rtnDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "교환배송비"		
+				, field			: "excDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "추가배송비여부"		, field: "addDelvFeeYn"		, width: 140	, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "추가배송비"		
+				, field			: "addDelvFee"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
+		]
+	}
+];
+var gridOptionsDelvCdList = gagaAgGrid.getGridOptions(columnDelvCdList);
+
+// 4. 무통장 계좌정보
+var columnDefsRefundAccountInfo = [
+	{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: false, checkboxSelection: true, filter: false},
+	{headerName: "은행명"		, field: "bankNm"		, width: 140	, cellClass: 'text-center'},
+	{headerName: "은행코드"	, field: "bankCd"		, width: 120	, cellClass: 'text-center', hidden:true},
+	{headerName: "계좌번호"	, field: "accountNo"	, width: 150	, cellClass: 'text-center'},
+	{headerName: "예금주"		, field: "accountNm"	, width: 120	, cellClass: 'text-center'},
+	{headerName: "기본"		, field: "defaultYn"	, width: 100	, cellClass: 'text-center'}
+];
+
+var gridOptionsRefundAccountInfo = gagaAgGrid.getGridOptions(columnDefsRefundAccountInfo);
+</script>
+
+<script>
+// 현재 사유는 고객 입니다.
+var isCustomer = true;
+
+// 취소정보계산
+var fnCalculateRefundAmt = function (obj) {
+	// 취소정보담은목록
+	var cancelRequestTargetToBeList = [];
+
+	if (obj != null) {
+		for (i=0 ; i<cancelRequestTargetList.length ; i++) {
+			var orDtlNo 		= $(obj).attr("ordDtlNo");
+			var ordCanChgQty 	= $(obj).val();
+			
+			if (cancelRequestTargetList[i].ordDtlNo == orDtlNo) {
+				cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
+			}
+		}
+		// 주문정보 다시 셋팅 (체크해봐야할문제)
+		gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
+	}
+	
+	if (cancelRequestTargetList.length == 0) {
+		alert("요청 대상정보가 존재 하지 않습니다.");
+		uifnPopupClose('popupCancelRequestForm');
+		return false;
+	}
+	
+	// 환불금액계산호출
+	var jsonData = JSON.stringify(cancelRequestTargetList);
+	gagajf.ajaxJsonSubmit(
+		'/orderChange/cancel/refundAmt'
+		, jsonData
+		, function(result) {
+			gridOptionsCancelReqToBeList.api.setRowData(result.cancelOrderRefundList);
+			gridOptionsDelvCdList.api.setRowData(result.cancelDelvRefundList);
+			
+			$("#spanPayAmt").text(result.spanPayAmt.addComma());					//총 결제 금액
+			$("#spanSumRealOrdAmt").text(result.spanSumRealOrdAmt.addComma());		//상품 실결제 금액
+			$("#spanSumDeliveryFee").text(result.spanSumDeliveryFee.addComma());	//배송금액
+			
+			$("#spanOrdAmt").text(result.spanOrdAmt.addComma());					//주문 상품 금액
+			$("#spanCnclRtnAmt").text(result.spanCnclRtnAmt.addComma());			//취소 상품 금액
+			
+			$("#spanTotPntDcAmt").text(result.spanTotPntDcAmt.addComma());			//취소 사용 포인트
+			$("#spanPntDcAmt").text(result.spanPntDcAmt.addComma());				//고객 포인트
+			$("#spanPrePntDcAmt").text(result.spanPrePntDcAmt.addComma());			//상품 선포인트
+			
+			$("#spanCpnDcAmt").text(result.spanCpnDcAmt.addComma());				//취소 사용 쿠폰금액
+			$("#spanCpn1DcAmt").text(result.spanCpn1DcAmt.addComma());				//즉시할인쿠폰
+			$("#spanGoodsCpnDcAmt").text(result.spanGoodsCpnDcAmt.addComma());		//상품쿠폰
+			$("#spanCartCpnDcAmt").text(result.spanCartCpnDcAmt.addComma());		//장바구니쿠폰
+			
+			$("#spanTmtbDcAmt").text(result.spanTmtbDcAmt.addComma());				//취소 다다익선 금액
+			$("#spanTmtb1DcAmt").text(result.spanTmtb1DcAmt.addComma());			//수량할인
+			$("#spanTmtb2DcAmt").text(result.spanTmtb2DcAmt.addComma());			//금액할인
+			
+			$("#spanGfcdUseAmt").text(result.spanGfcdUseAmt.addComma());			//취소 고객 상품권 금액
+			
+			$("#spanRealCnclRtnAmt").text(result.spanRealCnclRtnAmt.addComma());	//취소 상품 실결제 금액
+			$("#spanTotDeliveryFee").text(result.spanTotDeliveryFee.addComma());	//취소 환불 배송 금액
+			
+			$("#spanTotRtnDelvFee").text(result.spanTotRtnDelvFee.addComma());		//반품 환불 배송 금액
+			$("#spanTotExcDelvFee").text(result.spanTotExcDelvFee.addComma());		//교환 환불 배송 금액
+			
+			if (result.spanRealCnclRtnAmt > 0) {
+				// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
+				if (isCustomer) {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee) - result.spanTotDeliveryFee;
+				} 
+				// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
+				else {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee);
+				}
+			}
+			
+			$("#spanRefundAmt").text(result.spanRefundAmt.addComma());				//환불 금액 합계
+		}
+	);
+}
+
+//  사유
+var fnChangeChgReason = function(reasonCd){
+	var arrReasonCd = reasonCd.split(":");
+	var customerReasonArr = ['G686_10'];
+
+	isCustomer = false;
+	
+	// 취소, 반품, 교환 사유 판단
+	for (i=0 ; i<customerReasonArr.length ; i++) {
+		if (customerReasonArr[i] == arrReasonCd[0]) {
+			isCustomer = true;
+		}
+	}
+	
+	// 귀책사유설정 회사, 고객
+	if (isCustomer) {
+		$("#imputeReason").text("고객");
+	} else {
+		$("#imputeReason").text("회사");
+	}
+
+	$('#cancelRequestFrm input[name=chgReason]').val(arrReasonCd[0]);
+	$('#cancelRequestFrm input[name=chgReasonDesc]').val(arrReasonCd[1]);
+
+	fnCalculateRefundAmt();			//환불예정금액 계산.
+}
+
+// 취소신청/완료
+var fnCnclReq = function (reqGbn) {
+	
+	var temp 		= false;
+	var ordDtlStat	= cancelRequestTargetList[0].ordDtlStat; 
+	var allCanYn 	= "N";
+	
+	// 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();
+	
+	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 	= orderInfoList[0].ordNm;
+	var chgerEmail 	= orderInfoList[0].ordEmail;
+	var chgerPhnno 	= orderInfoList[0].ordPhnno;
+	var chgerTelno 	= orderInfoList[0].ordTelno;
+	
+	var jsonObj = {
+		"ordNo"				: $('#cancelRequestFrm input[name=ordNo]').val()
+		,"chgReason" 		: $('#cancelRequestFrm input[name=chgReason]').val()
+		,"chgMemo"			: $('#chgMemo').val()
+		,"cancelReqList" 	: cancelRequestTargetList
+		,"accountNo" 		: accountNo
+		,"accountNm" 		: accountNm
+		,"bankCd" 			: bankCd
+		,"allCanYn" 		: allCanYn
+		,"isCustomer" 		: isCustomer
+		,"chgerNm"			: chgerNm
+		,"chgerEmail"		: chgerEmail
+		,"chgerZipcode"		: ""
+		,"chgerBaseAddr"	: ""
+		,"chgerDtlAddr"		: ""
+		,"chgerPhnno"		: chgerPhnno
+		,"chgerTelno"		: chgerTelno
+	}
+	
+	// 6. 취소신청, 취소완료 여부 체크
+	// 취소완료
+	if (reqGbn == "complete") {
+		cnclUrl = '/orderChange/cnclComplete/';
+	}
+	// 취소신청
+	else if (reqGbn == "req") {
+		cnclUrl = '/orderChange/cnclReq/';
+	}
+	// 취소신청 완료
+	else if (reqGbn == "reqComplete"){
+		cnclUrl = '/orderChange/cnclReqComplete/';
+	}
+
+	// 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
+	var jsonData = JSON.stringify(jsonObj);
+	
+	mcxDialog.confirm('취소요청하시겠습니까?', {
+		cancelBtnText		: "취소",
+		sureBtnClick		: function(){
+			// 취소 실행
+			gagajf.ajaxJsonSubmit(
+				cnclUrl
+				, jsonData
+				, function() {
+					uifnPopupClose('popupOrderDetail');
+					fnReOpenOrderDetailPopup();
+					uifnPopupClose('popupCancelRequestForm');
+				}
+			);
+		}
+	});
+}
+
+// 환불계좌 등록
+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) {
+		}
+	)
+};
+
+$(document).ready(function() {
+	// 1. 그리드생성
+	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsCancelReqList);			// 주문정보
+	gagaAgGrid.createGrid('gridOrderCancelRequestToBeList'	, gridOptionsCancelReqToBeList);		// 취소정보
+	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비정보
+	gagaAgGrid.createGrid('gridRefundAccountInfo'			, gridOptionsRefundAccountInfo);		// 환불계좌정보
+	
+	// 2. 그리드 데이타 싱크작업
+	gridOptionsCancelReqList.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();
+	}
+});
+</script>
+</html>
+
+
+
+
+

+ 1054 - 0
src/main/webapp/WEB-INF/views/order/CnclReqViewForm.html

@@ -0,0 +1,1054 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : CancelRequestForm.html
+ * @desc    : 취소요청 화면
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2019 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.12.12   jsh77b       최초 작성
+ *******************************************************************************
+ -->
+<div class="modalPopup" data-width="1400" data-height="600">
+	<div class="panelStyle">
+		<div class="panelTitle">
+			<h2>취소요청</h2>
+			<button type="button" class="close" onclick="uifnPopupClose('popupCancelRequestForm');"><i class="fa fa-times"></i></button>
+		</div>
+			
+		<div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
+			<form id="cancelRequestFrm" name="cancelRequestFrm" action="/orderChange/cancel" method="post" target="hdFrameForOrderCancel">
+				<input type="hidden" name="ordNo" th:value="${ordNo}"/>
+				<input type="hidden" name="chgReason" value=""/>
+				<input type="hidden" name="chgReasonDesc" value=""/>
+				
+				<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="gridDelvCdList" style="width:100%; height: 140px;" class="ag-theme-balham"></div>
+				
+				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
+					<button type="button" class="btn btn-success" onclick="fnCnclReq('req');">취소신청</button>
+					<button type="button" class="btn btn-success" onclick="fnCnclReq('complete');">취소완료</button>
+				</div>
+				
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:160px;" />
+						<col style="width:320px;" />
+						<col style="width:160px;" />
+						<col />
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>취소사유 <i class="star"></i></th>
+							<td>
+								<select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
+									<option value="">[선택하세요]</option>
+									<option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}:${oneData.cdNm}|" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+								</select>
+							</td>
+							<th>귀책사유</th>
+							<td><span id="imputeReason"></span></td>
+						</tr>
+						<tr>
+							<th>요청메모</th>
+							<td colspan="3">
+								<textarea id="chgMemo" name="chgMemo" style="height:80px;" placeholder="취소사유를 300자내외로 작성해 주세요"></textarea>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				
+				<h4>환불예정금액</h4>
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:20%;"/>
+						<col style="width:30%;"/>
+						<col style="width:20%;"/>
+						<col style="width:30%;"/>
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>총 결제 금액</th>
+							<td colspan="3"><span id="spanPayAmt"></span>원 (상품 실결제 금액 : <span id="spanSumRealOrdAmt"></span>원, 배송금액 : <span id="spanSumDeliveryFee"></span>원) </td>
+						</tr>
+						<tr>
+							<th>주문 상품 금액</th>
+							<td><span id="spanOrdAmt"></span>원</td>
+							<th>취소 상품 금액</th>
+							<td><span id="spanCnclRtnAmt"></span>원</td>
+						</tr>
+						<tr>
+							<th>취소 사용 포인트</th>
+							<td colspan="3"><span id="spanTotPntDcAmt"></span>원 (고객 포인트 : <span id="spanPntDcAmt"></span>원 + 상품 선포인트 : <span id="spanPrePntDcAmt"></span>원) </td>
+						</tr>
+						<tr>
+							<th>취소 사용 쿠폰금액</th>
+							<td colspan="3"><span id="spanCpnDcAmt"></span>원 (즉시할인쿠폰 : <span id="spanCpn1DcAmt"></span>원 + 상품쿠폰 : <span id="spanGoodsCpnDcAmt"></span>원 + 장바구니쿠폰 : <span id="spanCartCpnDcAmt"></span>원)</td>
+						</tr>
+						<tr>
+							<th>취소 다다익선 금액</th>
+							<td colspan="3"><span id="spanTmtbDcAmt"></span>원 (수량할인 : <span id="spanTmtb1DcAmt"></span>원 + 금액할인 : <span id="spanTmtb2DcAmt"></span>원)</td>
+						</tr>
+						
+						<tr>
+							<th>취소 고객 상품권 금액</th>
+							<td colspan="3"><span id="spanGfcdUseAmt"></span>원</td>
+						</tr>
+						
+						<tr>
+							<th>취소 상품 실결제 금액</th>
+							<td><span id="spanRealCnclRtnAmt"></span>원</td>
+							<th>추가 배송 금액</th>
+							<td><span id="spanTotDeliveryFee"></span>원 </td>
+						</tr>
+						
+						<tr>
+							<th>환불 금액 합계</th>
+							<td colspan="3"><span id="spanRefundAmt"></span>원</td>
+						</tr>
+					</tbody>
+				</table>
+				
+				<div id="wrapRefundAccount" style="width:50%;">
+					<h4>환불계좌정보</h4>
+					<button type="button" id="btnSaveAccount" class="btn btnRight btn-base btn-sm" style="margin-left:10px;" onclick="fnCreateOrderRfAccount();">등록</button>
+					<div id="gridRefundAccountInfo" style="height: 150px;" class="ag-theme-balham"></div>
+				</div>
+				
+			</form>
+		</div>
+	</div>
+</div>
+
+<!-- data -->
+<script th:inline="javascript">
+/*<![CDATA[*/
+var cancelRequestTargetList = [[${cancelRequestTargetList}]];				// 취소대상목록
+var ordNo 					= [[${ordNo}]];									// 주문번호
+var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
+var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
+
+var temp1 = true;
+var temp2 = false;
+
+// 1. 주문정보(반품대상)
+var columnCancelReqList = [
+	{
+		headerName	: "주문상세정보",
+		children	: [
+			{headerName: "주문번호"		, field: "ordNo"			, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "주문상세"		, field: "ordDtlNo"			, width: 80		, cellClass: 'text-center'},
+			{headerName: "주문상세"		, field: "ordDtlStat"		, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "주문상세상태"		, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품코드"		, field: "goodsCd"			, width: 100	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2}
+		]
+	},
+	{
+		headerName	: "주문상세단품정보",
+		children	: [
+			{headerName: "단품번호"		, field: "ordDtlItemSq"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "단품코드"		, field: "itemCd"			, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "단품명"			, field: "itemNm"			, width: 200	, cellClass: 'text-center', hide: temp2},
+			{headerName: "옵션1"			, field: "optCd1"			, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "옵션2"			, field: "optCd2"			, width: 80		, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "단품수량"		
+				, field			: "itemQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "단품금액"		
+				, field			: "itemPrice"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "단품옵션금액"		
+				, field			: "optAddPrice"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문상세수량",
+		children	: [
+			{
+				headerName		: "주문"		
+				, field			: "ordQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소/요청"		
+				, field			: "cnclRtnQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
+					return cnclRtnReqQty;
+				}
+			},
+			{
+				headerName		: "취소/반품"		
+				, field			: "ordCanChgQty"			
+				, width			: 100		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					var ordQty 			= parseInt(params.data.ordQty);
+					var cnclRtnQty 		= parseInt(params.data.cnclRtnQty);
+					var ordReqChgQty 	= parseInt(params.data.ordReqChgQty);
+					var ordCanChgQty 	= ordQty - (cnclRtnQty +  ordReqChgQty);
+					
+					var strVal 			= "";
+					strVal += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
+					
+					for (i=0 ; i<=ordCanChgQty ; i++) {
+						if (i == params.data.ordCanChgQty) {
+							strVal += "	<option value='"+i+"' selected>"+i+"</option>";
+						} else {
+							strVal += "	<option value='"+i+"'>"+i+"</option>";
+						}
+					}
+				
+					strVal += "</select>";
+					return strVal;
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문단품금액",
+		children	: [
+			{
+				headerName		: "주문"
+				, field			: "ordAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소"		
+				, field			: "cnclRtnAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "즉시할인"		
+				, field			: "cpn1DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "다다익선1"		
+				, field			: "tmtb1DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "다다익선2"		
+				, field			: "tmtb2DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "상품쿠폰"		
+				, field			: "goodsCpnDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "장바구니쿠폰"		
+				, field			: "cartCpnDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "포인트"		
+				, field			: "pntDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "선포인트"		
+				, field			: "prePntDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "상품권"		
+				, field			: "gfcdUseAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "실결제금액"		
+				, field			: "realOrdAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문배송비정보",
+		children	: [
+			{
+				headerName		: "배송비"		
+				, field			: "delvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "무료배송비"		
+				, field			: "minOrdAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "기본배송비"		
+				, field			: "orgDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "반품배송비"		
+				, field			: "rtnDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "교환배송비"		
+				, field			: "excDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
+		]
+	}
+];
+var gridOptionsCancelReqList = gagaAgGrid.getGridOptions(columnCancelReqList);
+
+// Add on options
+gridOptionsCancelReqList.suppressRowClickSelection = true;
+gridOptionsCancelReqList.rowSelection = 'multiple';
+
+// 2. 취소정보(환불정보)
+var columnCancelReqToBeList = [
+	{
+		headerName	: "주문상세정보",
+		children	: [
+			{headerName: "주문번호"		, field: "ordNo"			, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "주문상세"		, field: "ordDtlNo"			, width: 80		, cellClass: 'text-center'},
+			{headerName: "주문상세"		, field: "ordDtlStat"		, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "주문상세상태"		, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품코드"		, field: "goodsCd"			, width: 100	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-center', hide: temp1},
+			{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2}
+		]
+	},
+	{
+		headerName	: "주문상세단품정보",
+		children	: [
+			{headerName: "단품번호"		, field: "ordDtlItemSq"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "단품코드"		, field: "itemCd"			, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "단품명"			, field: "itemNm"			, width: 200	, cellClass: 'text-center', hide: temp2},
+			{headerName: "칼라코드"		, field: "optCd1"			, width: 80		, cellClass: 'text-center', hide: temp1},
+			{headerName: "사이즈코드"		, field: "optCd2"			, width: 80		, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "단품수량"		
+				, field			: "itemQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "단품금액"		
+				, field			: "itemPrice"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "단품옵션금액"		
+				, field			: "optAddPrice"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문상세수량",
+		children	: [
+			{
+				headerName		: "주문"		
+				, field			: "ordQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소/요청"		
+				, field			: "cnclRtnQty"			
+				, width			: 80		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
+					return cnclRtnReqQty;
+				}
+			},
+			{
+				headerName		: "취소/반품"		
+				, field			: "ordCanChgQty"			
+				, width			: 100		
+				, cellClass		: 'text-center'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문단품금액",
+		children	: [
+			{
+				headerName		: "주문"
+				, field			: "ordAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소"		
+				, field			: "cnclRtnAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "즉시할인"		
+				, field			: "cpn1DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "다다익선1"		
+				, field			: "tmtb1DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "다다익선2"		
+				, field			: "tmtb2DcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "상품쿠폰"		
+				, field			: "goodsCpnDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "장바구니쿠폰"		
+				, field			: "cartCpnDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "포인트"		
+				, field			: "pntDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "선포인트"		
+				, field			: "prePntDcAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "상품권"		
+				, field			: "gfcdUseAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "환불금액"		
+				, field			: "realOrdAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "주문배송비정보",
+		children	: [
+			{
+				headerName		: "배송비"		
+				, field			: "delvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "무료배송비"		
+				, field			: "minOrdAmt"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "기본배송비"		
+				, field			: "orgDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "반품배송비"		
+				, field			: "rtnDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "교환배송비"		
+				, field			: "excDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
+		]
+	}
+];
+var gridOptionsCancelReqToBeList = gagaAgGrid.getGridOptions(columnCancelReqToBeList);
+
+// 3. 배송비정보(환불정보)
+var columnDelvCdList = [
+	{
+		headerName	: "배송코드기준금액",
+		children	: [
+			{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "주문"
+				, field			: "ordAmt"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "취소"		
+				, field			: "cnclRtnAmt"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			},
+			{
+				headerName		: "환불"		
+				, field			: "realOrdAmt"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+			}
+		]
+	},
+	{
+		headerName	: "배송비정보",
+		children	: [
+			{
+				headerName		: "배송비"		
+				, field			: "delvFee"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "무료배송비"		
+				, field			: "minOrdAmt"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "기본배송비"		
+				, field			: "orgDelvFee"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "반품배송비"		
+				, field			: "rtnDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{
+				headerName		: "교환배송비"		
+				, field			: "excDelvFee"			
+				, width			: 80		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "추가배송비여부"		, field: "addDelvFeeYn"		, width: 140	, cellClass: 'text-center', hide: temp2},
+			{
+				headerName		: "추가배송비"		
+				, field			: "addDelvFee"			
+				, width			: 100		
+				, cellClass		: 'text-right'
+				, cellRenderer	: function (params) {
+					return params.value.addComma();
+				}
+				, hide			: temp2
+			},
+			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
+		]
+	}
+];
+var gridOptionsDelvCdList = gagaAgGrid.getGridOptions(columnDelvCdList);
+
+// 4. 무통장 계좌정보
+var columnDefsRefundAccountInfo = [
+	{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: false, checkboxSelection: true, filter: false},
+	{headerName: "은행명"		, field: "bankNm"		, width: 140	, cellClass: 'text-center'},
+	{headerName: "은행코드"	, field: "bankCd"		, width: 120	, cellClass: 'text-center', hidden:true},
+	{headerName: "계좌번호"	, field: "accountNo"	, width: 150	, cellClass: 'text-center'},
+	{headerName: "예금주"		, field: "accountNm"	, width: 120	, cellClass: 'text-center'},
+	{headerName: "기본"		, field: "defaultYn"	, width: 100	, cellClass: 'text-center'}
+];
+
+var gridOptionsRefundAccountInfo = gagaAgGrid.getGridOptions(columnDefsRefundAccountInfo);
+</script>
+
+<script>
+// 현재 사유는 고객 입니다.
+var isCustomer = true;
+
+// 취소정보계산
+var fnCalculateRefundAmt = function (obj) {
+	// 취소정보담은목록
+	var cancelRequestTargetToBeList = [];
+
+	if (obj != null) {
+		for (i=0 ; i<cancelRequestTargetList.length ; i++) {
+			var orDtlNo 		= $(obj).attr("ordDtlNo");
+			var ordCanChgQty 	= $(obj).val();
+			
+			if (cancelRequestTargetList[i].ordDtlNo == orDtlNo) {
+				cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
+			}
+		}
+		// 주문정보 다시 셋팅 (체크해봐야할문제)
+		gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
+	}
+	
+	if (cancelRequestTargetList.length == 0) {
+		alert("요청 대상정보가 존재 하지 않습니다.");
+		uifnPopupClose('popupCancelRequestForm');
+		return false;
+	}
+	
+	// 환불금액계산호출
+	var jsonData = JSON.stringify(cancelRequestTargetList);
+	gagajf.ajaxJsonSubmit(
+		'/orderChange/cancel/refundAmt'
+		, jsonData
+		, function(result) {
+			gridOptionsCancelReqToBeList.api.setRowData(result.cancelOrderRefundList);
+			gridOptionsDelvCdList.api.setRowData(result.cancelDelvRefundList);
+			
+			$("#spanPayAmt").text(result.spanPayAmt.addComma());					//총 결제 금액
+			$("#spanSumRealOrdAmt").text(result.spanSumRealOrdAmt.addComma());		//상품 실결제 금액
+			$("#spanSumDeliveryFee").text(result.spanSumDeliveryFee.addComma());	//배송금액
+			
+			$("#spanOrdAmt").text(result.spanOrdAmt.addComma());					//주문 상품 금액
+			$("#spanCnclRtnAmt").text(result.spanCnclRtnAmt.addComma());			//취소 상품 금액
+			
+			$("#spanTotPntDcAmt").text(result.spanTotPntDcAmt.addComma());			//취소 사용 포인트
+			$("#spanPntDcAmt").text(result.spanPntDcAmt.addComma());				//고객 포인트
+			$("#spanPrePntDcAmt").text(result.spanPrePntDcAmt.addComma());			//상품 선포인트
+			
+			$("#spanCpnDcAmt").text(result.spanCpnDcAmt.addComma());				//취소 사용 쿠폰금액
+			$("#spanCpn1DcAmt").text(result.spanCpn1DcAmt.addComma());				//즉시할인쿠폰
+			$("#spanGoodsCpnDcAmt").text(result.spanGoodsCpnDcAmt.addComma());		//상품쿠폰
+			$("#spanCartCpnDcAmt").text(result.spanCartCpnDcAmt.addComma());		//장바구니쿠폰
+			
+			$("#spanTmtbDcAmt").text(result.spanTmtbDcAmt.addComma());				//취소 다다익선 금액
+			$("#spanTmtb1DcAmt").text(result.spanTmtb1DcAmt.addComma());			//수량할인
+			$("#spanTmtb2DcAmt").text(result.spanTmtb2DcAmt.addComma());			//금액할인
+			
+			$("#spanGfcdUseAmt").text(result.spanGfcdUseAmt.addComma());			//취소 고객 상품권 금액
+			
+			$("#spanRealCnclRtnAmt").text(result.spanRealCnclRtnAmt.addComma());	//취소 상품 실결제 금액
+			$("#spanTotDeliveryFee").text(result.spanTotDeliveryFee.addComma());	//취소 환불 배송 금액
+			
+			$("#spanTotRtnDelvFee").text(result.spanTotRtnDelvFee.addComma());		//반품 환불 배송 금액
+			$("#spanTotExcDelvFee").text(result.spanTotExcDelvFee.addComma());		//교환 환불 배송 금액
+			
+			if (result.spanRealCnclRtnAmt > 0) {
+				// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
+				if (isCustomer) {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee) - result.spanTotDeliveryFee;
+				} 
+				// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
+				else {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee);
+				}
+			}
+			
+			$("#spanRefundAmt").text(result.spanRefundAmt.addComma());				//환불 금액 합계
+		}
+	);
+}
+
+//  사유
+var fnChangeChgReason = function(reasonCd){
+	var arrReasonCd = reasonCd.split(":");
+	var customerReasonArr = ['G686_10'];
+
+	isCustomer = false;
+	
+	// 취소, 반품, 교환 사유 판단
+	for (i=0 ; i<customerReasonArr.length ; i++) {
+		if (customerReasonArr[i] == arrReasonCd[0]) {
+			isCustomer = true;
+		}
+	}
+	
+	// 귀책사유설정 회사, 고객
+	if (isCustomer) {
+		$("#imputeReason").text("고객");
+	} else {
+		$("#imputeReason").text("회사");
+	}
+
+	$('#cancelRequestFrm input[name=chgReason]').val(arrReasonCd[0]);
+	$('#cancelRequestFrm input[name=chgReasonDesc]').val(arrReasonCd[1]);
+
+	fnCalculateRefundAmt();			//환불예정금액 계산.
+}
+
+// 취소신청/완료
+var fnCnclReq = function (reqGbn) {
+	
+	var temp 		= false;
+	var ordDtlStat	= cancelRequestTargetList[0].ordDtlStat; 
+	var allCanYn 	= "N";
+	
+	// 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();
+	
+	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 	= orderInfoList[0].ordNm;
+	var chgerEmail 	= orderInfoList[0].ordEmail;
+	var chgerPhnno 	= orderInfoList[0].ordPhnno;
+	var chgerTelno 	= orderInfoList[0].ordTelno;
+	
+	var jsonObj = {
+		"ordNo"				: $('#cancelRequestFrm input[name=ordNo]').val()
+		,"chgReason" 		: $('#cancelRequestFrm input[name=chgReason]').val()
+		,"chgMemo"			: $('#chgMemo').val()
+		,"cancelReqList" 	: cancelRequestTargetList
+		,"accountNo" 		: accountNo
+		,"accountNm" 		: accountNm
+		,"bankCd" 			: bankCd
+		,"allCanYn" 		: allCanYn
+		,"isCustomer" 		: isCustomer
+		,"chgerNm"			: chgerNm
+		,"chgerEmail"		: chgerEmail
+		,"chgerZipcode"		: ""
+		,"chgerBaseAddr"	: ""
+		,"chgerDtlAddr"		: ""
+		,"chgerPhnno"		: chgerPhnno
+		,"chgerTelno"		: chgerTelno
+	}
+	
+	// 6. 취소신청, 취소완료 여부 체크
+	// 취소완료
+	if (reqGbn == "complete") {
+		cnclUrl = '/orderChange/cnclComplete/';
+	}
+	// 취소신청
+	else if (reqGbn == "req") {
+		cnclUrl = '/orderChange/cnclReq/';
+	}
+	// 취소신청 완료
+	else if (reqGbn == "reqComplete"){
+		cnclUrl = '/orderChange/cnclReqComplete/';
+	}
+
+	// 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
+	var jsonData = JSON.stringify(jsonObj);
+	
+	mcxDialog.confirm('취소요청하시겠습니까?', {
+		cancelBtnText		: "취소",
+		sureBtnClick		: function(){
+			// 취소 실행
+			gagajf.ajaxJsonSubmit(
+				cnclUrl
+				, jsonData
+				, function() {
+					uifnPopupClose('popupOrderDetail');
+					fnReOpenOrderDetailPopup();
+					uifnPopupClose('popupCancelRequestForm');
+				}
+			);
+		}
+	});
+}
+
+// 환불계좌 등록
+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) {
+		}
+	)
+};
+
+$(document).ready(function() {
+	// 1. 그리드생성
+	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsCancelReqList);			// 주문정보
+	gagaAgGrid.createGrid('gridOrderCancelRequestToBeList'	, gridOptionsCancelReqToBeList);		// 취소정보
+	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비정보
+	gagaAgGrid.createGrid('gridRefundAccountInfo'			, gridOptionsRefundAccountInfo);		// 환불계좌정보
+	
+	// 2. 그리드 데이타 싱크작업
+	gridOptionsCancelReqList.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();
+	}
+});
+</script>
+</html>
+
+
+
+
+

+ 10 - 10
src/main/webapp/WEB-INF/views/order/OrderDetailForm.html

@@ -507,7 +507,7 @@ var columnDefsDeliveryInfo = [
 	{headerName: "전화번호"		, field: "recipTelno"		, width: 120, cellClass: 'text-left', editable: true},
 	{
 		headerName		: "우편번호"		
-		, field			: "recipZipNo"
+		, field			: "recipZipcode"
 		, width			: 220
 		, cellClass		: 'text-center'
 		, cellRenderer	: function (params) {
@@ -615,8 +615,7 @@ var columnDefsOrderChangeInfo = [
 			
 			// 취소요청, 교환요청, 반품요청 일때는 요청 정보 확인 팝업 정보
 			if (params.data.chgStat == 'G685_20' || params.data.chgStat == 'G685_30' || params.data.chgStat == 'G685_40') {
-				rtnStr = "<a href='javascript:void(0);' onclick='fnChgReqInfo(" + params.value + ");>" + params.value + "</a>";
-				//rtnStr = '<a href="javascript:void(0);" onclick="fnChgReqInfo(\'' + params.value + '\');">' + params.value + '</a>';
+				rtnStr = '<a href="javascript:void(0);" onclick="fnChgReqInfo(\'' + params.value + '\');">' + params.value + '</a>';
 			} else {
 				rtnStr = params.value;
 			}
@@ -645,7 +644,7 @@ var columnDefsOrderChangeInfo = [
 	{headerName: "변경자핸드폰"		, field: "chgerPhnno"	, width: 120	, cellClass: 'text-center', editable: true},
 	{
 		headerName		: "우편번호"		
-		, field			: "chgerZipNo"
+		, field			: "chgerZipcode"
 		, width			: 220
 		, cellClass		: 'text-center'
 		, cellRenderer	: function (params) {
@@ -996,13 +995,13 @@ var fnUpdateOrderAddr = function (rowIdx) {
 
 // 취소요청
 var fnCancelRequest = function () {
-	var actionUrl = "/orderChange/cancel/request/form?ordNo=" + ordNo;
+	var actionUrl = "/orderChange/cncl/req/form?ordNo=" + ordNo;
 	cfnOpenModalPopup(actionUrl, 'popupCancelRequestForm');
 };
 
 // 반품요청
 var fnReturnRequest = function () {
-	var actionUrl = "/orderChange/return/request/form?ordNo=" + ordNo;
+	var actionUrl = "/orderChange/rtn/req/form?ordNo=" + ordNo;
 	cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
 };
 
@@ -1012,9 +1011,10 @@ var fnExchangeRequest = function () {
 	cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
 };
 
+// 2021.01.25 추가
 // 취소요청, 교환요청, 반품요청 일때는 요청 정보 확인 팝업 정보
-var fnChgReqInfo = function () {
-	var actionUrl = "/orderChange/cancel/request/form?ordNo=" + ordNo;
+var fnChgReqInfo = function (ordChgSq) {
+	var actionUrl = "/orderChange/cncl/req/view/form?ordNo=" + ordNo + "&ordChgSq=" + ordChgSq;
 	cfnOpenModalPopup(actionUrl, 'popupCancelRequestForm');
 };
 
@@ -1393,14 +1393,14 @@ var fnOpenDaumAddr = function(idx, addrGb) {
 			// 배송지주소 수정
 			if ("ADDR" == addrGb) {
 				gridOptionsDeliveryInfo.api.gre
-				gridOptionsDeliveryInfo.api.getRowNode(idx).data.recipZipNo 		= data.zonecode;
+				gridOptionsDeliveryInfo.api.getRowNode(idx).data.recipZipcode 		= data.zonecode;
 				gridOptionsDeliveryInfo.api.getRowNode(idx).data.recipBaseAddr 		= cfnGetDaumRoadAddr(data);
 				gridOptionsDeliveryInfo.api.getRowNode(idx).data.recipDtlAddr 		= "";
 				gridOptionsDeliveryInfo.api.refreshCells();
 			}
 			// 회수지주소 수정
 			else {
-				gridOptionsOrderChangeInfo.api.getRowNode(idx).data.chgerZipNo 		= data.zonecode;
+				gridOptionsOrderChangeInfo.api.getRowNode(idx).data.chgerZipcode	= data.zonecode;
 				gridOptionsOrderChangeInfo.api.getRowNode(idx).data.chgerBaseAddr 	= cfnGetDaumRoadAddr(data);
 				gridOptionsOrderChangeInfo.api.getRowNode(idx).data.chgerDtlAddr 	= "";
 				gridOptionsOrderChangeInfo.api.refreshCells();

+ 2 - 2
src/main/webapp/WEB-INF/views/order/OrderDetailFormBack20210122.html

@@ -976,13 +976,13 @@ var fnUpdateOrderAddr = function (rowIdx) {
 
 // 취소요청
 var fnCancelRequest = function () {
-	var actionUrl = "/orderChange/cancel/request/form?ordNo=" + ordNo;
+	var actionUrl = "/orderChange/cncl/req/form?ordNo=" + ordNo;
 	cfnOpenModalPopup(actionUrl, 'popupCancelRequestForm');
 };
 
 // 반품요청
 var fnReturnRequest = function () {
-	var actionUrl = "/orderChange/return/request/form?ordNo=" + ordNo;
+	var actionUrl = "/orderChange/rtn/req/form?ordNo=" + ordNo;
 	cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
 };
 

+ 6 - 6
src/main/webapp/WEB-INF/views/order/ReturnRequestForm.html

@@ -141,7 +141,7 @@
 						<tr>
 							<th>회수지주소 <i class="star"></i></th>
 							<td colspan="3">
-								<input type="text" name ="chgerZipNo" class="w100" readonly="readonly"/>
+								<input type="text" name ="chgerZipcode" class="w100" readonly="readonly"/>
 								<button type="button" class="btn btn-info" onclick="fnOpenDaumAddr('delvLoc');">우편번호찾기</button>
 								<input type="text" name ="chgerBaseAddr" class="w300"/>
 								<input type="text" name ="chgerDtlAddr" class="w300"/>
@@ -998,7 +998,7 @@ var fnCancelRequestPartOk = function () {
 	
 	// 5. 회수지정보설정
 	var chgerNm			= $("#cancelRequestFrm input[name=chgerNm]").val();
-	var chgerZipNo		= $("#cancelRequestFrm input[name=chgerZipNo]").val();
+	var chgerZipcode	= $("#cancelRequestFrm input[name=chgerZipcode]").val();
 	var chgerBaseAddr	= $("#cancelRequestFrm input[name=chgerBaseAddr]").val();
 	var chgerDtlAddr	= $("#cancelRequestFrm input[name=chgerDtlAddr]").val();
 	
@@ -1010,7 +1010,7 @@ var fnCancelRequestPartOk = function () {
 	var chgerTelno2		= $("#cancelRequestFrm input[name=chgerTelno2]").val();
 	var chgerTelno3		= $("#cancelRequestFrm input[name=chgerTelno3]").val();
 
-	if (gagajf.isNull(chgerZipNo)) {
+	if (gagajf.isNull(chgerZipcode)) {
 		mcxDialog.alert("회수지주소를 입력하세요."); return;
 	}
 	if (gagajf.isNull(chgerBaseAddr)) {
@@ -1046,7 +1046,7 @@ var fnCancelRequestPartOk = function () {
 		,"isCustomer"		: isCustomer
 		,"chgerNm"			: chgerNm
 		,"chgerEmail"		: chgerEmail
-		,"chgerZipNo"		: chgerZipNo
+		,"chgerZipcode"		: chgerZipcode
 		,"chgerBaseAddr"	: chgerBaseAddr
 		,"chgerDtlAddr"		: chgerDtlAddr
 		,"chgerPhnno"		: chgerPhnno
@@ -1095,7 +1095,7 @@ var fnOpenDaumAddr = function() {
 	let daumZip = new daum.Postcode({
 		oncomplete: function(data) {			
 			// 우편번호와 주소 정보를 해당 필드에 넣는다.
-			$('#cancelRequestFrm input[name=chgerZipNo]').val(data.zonecode);
+			$('#cancelRequestFrm input[name=chgerZipcode]').val(data.zonecode);
 			$('#cancelRequestFrm input[name=chgerBaseAddr]').val(cfnGetDaumRoadAddr(data));
 			$('#cancelRequestFrm input[name=chgerDtlAddr]').focus();
 			
@@ -1114,7 +1114,7 @@ var fnSetChger = function(){
 	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=chgerZipcode]").val(data.recipZipcode);
 	$("#cancelRequestFrm input[name=chgerBaseAddr]").val(data.recipBaseAddr);
 	$("#cancelRequestFrm input[name=chgerDtlAddr]").val(data.recipDtlAddr);