Pārlūkot izejas kodu

반품신청, 반품철회 개발중

jsh77b 5 gadi atpakaļ
vecāks
revīzija
3efa6c676e

+ 26 - 15
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -74,11 +74,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		Order order = new Order();
 		ModelAndView mav = new ModelAndView();
 		order.setOrdNo(ordNo);
-		
-		// 2021.01.26 변경시퀀스가 있을때 담기
-		if (ordChgSq > 0) {
-			order.setOrdChgSq(ordChgSq);
-		}
+		order.setOrdChgSq(ordChgSq);
 				
 		// 1. 취소가능 주문상세상탭값 설정
 		String[] ordDtlStatArr = new String[4];
@@ -164,7 +160,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		
 		GagaMap mav = new GagaMap();
 		
-		List<Order> cnclReqList = cnclReq.getCancelReqList(); // 취소요청정보목록
+		List<Order> cnclReqList = cnclReq.getCancelReqList(); // 변경요청정보
 		
 		// TODO
 		// @ 결품취소로직 추가
@@ -180,6 +176,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		
 		// 3. 주문변경 기본정보 설정
 		mav.set("ordNo"			, cnclReq.getOrdNo());				// 주문번호
+		mav.set("ordChgSq"		, cnclReq.getOrdChgSq());			// 주문변경번호
 		mav.set("chgReason"		, cnclReq.getChgReason());			// 변경사유
 		mav.set("chgMemo"		, cnclReq.getChgMemo());			// 변경메모
 		
@@ -198,7 +195,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		
 		mav.set("reqGbn"		, cnclReq.getReqGbn());				// 신청구분
 				
-		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL)
+		// 5. 주문변경 DB 등록
 		coreOrderChangeService.cnclComplete(mav, userNo);
 		
 		return super.ok("성공");
@@ -214,7 +211,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 * @since 2020. 12. 22
 	 */
 	@GetMapping("/rtn/req/form")
-	public ModelAndView returnRequestFrom(@RequestParam(value = "ordNo") int ordNo) {
+	public ModelAndView rtnReqForm(@RequestParam(value = "ordNo") int ordNo, @RequestParam(value = "ordChgSq") int ordChgSq) {
 
 		Order order = new Order();
 		ModelAndView mav = new ModelAndView();
@@ -228,16 +225,25 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
 		
+		// 2. 변경신청된 주문상세번호를 체크 후 있으면 해당 취소가능수량값 업데이트 
+		List<Order> cancelRequestTargetList 		= coreOrderChangeService.getCancelRequestTargetList(order);
+		List<Order> orderChangeDetailList 			= coreOrderChangeService.getOrderChangeDetailList(order);
+		Collection<Order> orderInfoList 			= orderService.getOrderInfoList(order);
+		
+		// 3. 화면으로 데이타 전송
+		// 2021.01.26 취소요청 화면, 취소요청정보확인 화면 통합
 		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G688"));				// 취소사유
-		mav.addObject("cancelRequestTargetList"		, coreOrderChangeService.getCancelRequestTargetList(order));	// 취소요청대상 목록
-		mav.addObject("orderInfoList"				, orderService.getOrderInfoList(order));						// 주문정보
+		mav.addObject("cancelRequestTargetList"		, cancelRequestTargetList);										// 취소요청대상 목록
+		mav.addObject("orderInfoList"				, orderInfoList);												// 주문정보
 		mav.addObject("ordNo"						, ordNo);														// 주문번호
+		mav.addObject("ordChgSq"					, ordChgSq);													// 주문변경번호
+		mav.addObject("orderChangeDetailList"		, orderChangeDetailList);										// 변경신청목록 (취소/반품/교환)
 		
 		mav.addObject("orderDelvRtnAddrInfo"		, orderService.getDeliveryAddrList(order));						// 배송정보
 		mav.addObject("TelExcNoList"				, rendererService.getAvailCommonCodeList("G095"));				// 전화번호국번
 		mav.addObject("PhnExcNoList"				, rendererService.getAvailCommonCodeList("G096"));				// (휴대전화)번호국번
 
-		mav.setViewName("order/ReturnRequestForm");
+		mav.setViewName("order/RtnReqForm");
 		
 		return mav;
 	}
@@ -249,9 +255,9 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 * @author jsh77b
 	 * @since 2020. 12. 29
 	 */
-	@PostMapping("/returnRequest")
+	@PostMapping("/rtnReq")
 	@ResponseBody
-	public GagaResponse orderReturnRequest(@RequestBody OrderChange rtnReq) {
+	public GagaResponse rtnReq(@RequestBody OrderChange rtnReq) {
 		
 		GagaMap mav = new GagaMap();
 		
@@ -259,7 +265,11 @@ public class TsaOrderChangeController extends TsaBaseController {
 			throw new IllegalStateException(message.getMessage("FAIL_1001"));
 		}
 
-		List<Order> cancelReqList = rtnReq.getCancelReqList(); // 취소요청정보
+		List<Order> cancelReqList = rtnReq.getCancelReqList(); // 변경요청정보
+		
+		// TODO
+		// @ 주문취소시 상태값 체크
+		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
 		
 		// 1. 세션회원조회
 		int userNo = TsaSession.getInfo().getUserNo();
@@ -269,6 +279,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		
 		// 3. 주문변경 기본정보 설정
 		mav.set("ordNo"			, rtnReq.getOrdNo());				// 주문번호
+		mav.set("ordChgSq"		, rtnReq.getOrdChgSq());			// 주문변경번호
 		mav.set("chgReason"		, rtnReq.getChgReason());			// 변경사유
 		mav.set("chgMemo"		, rtnReq.getChgMemo());				// 변경메모
 			
@@ -288,7 +299,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.set("chgerPhnno"	, rtnReq.getChgerPhnno());			// 변경자핸드폰번호
 		mav.set("chgerTelno"	, rtnReq.getChgerTelno());			// 변경자전화번호
 		
-		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
+		// 5. 주문변경 DB 등록
 		coreOrderChangeService.rtnReq(mav, userNo);
 		
 		return super.ok("성공");

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

@@ -1,403 +0,0 @@
-package com.style24.persistence.domain;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.style24.persistence.TscBaseDomain;
-
-import com.style24.persistence.TscPageRequest;
-import lombok.Data;
-
-/**
- * 주문 Domain
- *
- * @author jsh77b
- * @since 2020. 11. 16
- */
-@SuppressWarnings("serial")
-@Data
-public class Order extends TscBaseDomain {
-	
-	// 주문마스터
-	private int ordNo;
-	private String mallGb;
-	private String mallGbNm;
-	private String ordDt;
-	private String payDt;
-	private int custNo;
-	private String ordNm;
-	private String ordTelno;
-	private String siteCd;
-	private String siteCdNm;
-	private int npayOrdNo;
-	private String frontGb;
-	private String frontGbNm;
-	private String extmallNm;
-
-	// 주문상세
-	private int ordDtlNo;
-	private String ordExchGb;
-	private String ordDtlStat;
-	private int orgOrdDtlNo;
-	private String supplyCompCd;
-	private String goodsCd;
-	private String formalGb;
-	private String formalGbNm;
-	private String goodsType;
-	private int listPrice;
-	private int currPrice;
-	private double dcRate;
-	private int optAddPrice;
-	private int ordQty;
-	private int ordAmt;
-	private int cnclRtnQty;
-	private int cnclRtnAmt;
-	private int cpn1CpnSq;
-	private int cpn1DcAmt;
-	private int tmtb1Sq;
-	private int tmtb1DcAmt;
-	private int tmtb2Sq;
-	private int tmtb2DcAmt;
-	private int goodsCpnSq;
-	private int goodsCpnDcAmt;
-	private int cartCpnSq;
-	private int cartCpnDcAmt;
-	
-	private int pntDcAmt;
-	private int prePntDcAmt;
-	private int savePntAmt;
-	
-	private int realOrdAmt;
-	private String venderId;
-	private String extmallId;
-	private String agentOrderId;
-	private String extmallOrderId;
-	private String changeableYn;
-	private String changeFeeFreeYn;
-	private String returnableYn;
-	private String returnFeeFreeYn;
-	
-	private String soldoutYn;
-	private String soldoutMemo;
-	private String soldoutRegNo;
-	private String soldoutRegDt;
-	private int delvAddrSq;
-	private String shotDelvYn;
-	private String giftPackYn;
-	
-	private String delvLocCd;
-	private String delvAssigngDt;
-	private String delvAddignStat;
-	private String dstrbtMemo;
-	private String delvStdt;
-	private String delvEddt;
-	
-	private String shipCompCd;
-	private String invoiceNo;
-	private String invoiceSendYn;
-	private String sellStoreCd;
-	private double sellFeeRate;
-	
-	private String afLinkCd;
-	private String ithrCd;
-	private String contentsLoc;
-	
-	private int planDtlsq;
-	private int socialSq;
-	
-	private String condition;
-	private String[] conditions = null;
-	
-	private String stDate;
-	private String edDate;
-	private String searchDateGb;
-	private String orderNm;
-	private int custId;
-	private String orderPhnno;
-	private String vendorId;
-	private String sizeCd;
-	private String goodsNm;
-	private String payMeans;
-	private String chgStat;
-	private String recipNm;
-	private String chgGb;
-	private String wdInvoiceSendYn;
-	
-	// 상품정보
-	private String imgPath1;
-	private String sysImgNm;
-	private String brandCd;
-	private String optCd1;
-	private String optCd2;
-	private String goodsTypeNm;
-	private String brandEnm;
-	private String itemCd;
-	private String goodsNum;
-	private String supplyGoodsCd;
-	private String optCd2s;
-	private int currStockQty;
-	private String currStockQtys;
-	
-	private int totDcAmt;
-	private String dateGbn;
-	private String mallCd;
-	private String search;
-	
-	/* Multi CheckBox 항목*/
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiBrand;
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiOrdStat;
-
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] multiOrdDtlStat;
-	
-	private int sumOrdAmt;
-	private int sumOrdCnclAmt;
-	private int sumRealPayAmt;
-	private int ordNoCnt;
-	private int sumOrdQty;
-	private int sumOrdCnclQty;
-	
-	private String excelFileNm;
-	
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private int[] ordNoList;
-	
-	private String delYn;
-	private String recipPhnno;
-	private String recipTelno;
-	private String recipZipcode;
-	private String recipBaseAddr;
-	private String recipDtlAddr;
-	private String ordEmail;
-	private String delvMemo;
-	private String delvAddrEditYn;
-	private String exchGbNm;
-	
-	private String escrowYn;
-	private String payMeansNm;
-	private String cardNm;
-	private String vaBank;
-	private String pgTradeNo;
-	private String payStat;
-	private String payStatNm;
-	private int payAmt;
-	private String vaDeadLine;
-	
-	private String delvFeeGb;
-	private String delvFeeGbNm;
-	private int delvFee;
-	private String delvUsacYn;
-	private String delvUsacDt;
-	private int delvFeeSq;
-	
-	private String coundelClsf;
-	private String relGoodsCd;
-	private String questTitle;
-	private String questDt;
-	private String ansDt;
-	private int andNo;
-	
-	private int ordChgSq;
-	private String chgGbNm;
-	private String chgStatNm;
-	private String chgReason;
-	private String chgReasonNm;
-	private String chgMemo;
-	private String chgerNm;
-	private String chgerPhnno;
-	private String chgerZipcode;
-	private String chgerBaseAddr;
-	private String chgerDtlAddr;
-	private String wdInvoiceNo;
-	
-	private String supplyCompNm;
-	private String brandKnm;
-	private String ordDtlStatNm;	
-	private String ordPhnno;
-	
-	private String custGrade;
-	private String custGradeNm;
-	private String custGb;
-	private String custGbNm;
-	private String managedRsn;
-	private String managedRsnNm;
-	
-	private int itemQty;
-	private int itemPrice;
-	private String itemNm;
-	private int gfcdUseAmt;
-	
-	// Pagination
-	private TscPageRequest pageable;
-	private int pageNo = 1;
-	private int pageSize = 50;
-	private int pageUnit = 10;
-	
-	// 주문문의 1:1 응답 칼럼
-	private String counselClsfNm;
-	private String ansNo;
-	private String ansNm;
-	private String regNm;
-	private String updNm;
-	
-	// 주문메모칼럼
-	private int orderMemoSq;
-	private String memo;
-	private String orgFileNm;
-	private String sysFileNm;
-	
-	// 사은품칼럼
-	private int ordFreegiftSq;
-	private int freegiftSq;
-	private String freegiftNm;
-	private int freegiftValSq;
-	private int usePoint;
-	private int seq;
-	private String userNm;
-	
-	// 환불계좌칼럼
-	private String raBank;
-	private String raBankNm;
-	private String raNo;
-	private String raNm;
-	private String defaultYn;
-	
-	// 주문상세변경내역칼럼
-	private String userId;
-	private String updId;
-	private String shipCompNm;
-	private String shipCompId;
-	
-	// 주문쿠폰
-	private int cpnSq;
-	private int cpnId;
-	private int cpnDcAmt;
-	private String cpnType;
-	private String targetCd1;
-	private String targetCd2;
-	private String cpnNm;
-	private String dcWay;
-	private int dcPval;
-	private int dcMval;
-	private int dcAval;
-	
-	// 주문포인트
-	private int pntPrate;
-	private int pntMrate;
-	private int pntAmt;
-	private String occurGb;
-	private String occurGbNm;
-	private String occurDtlDesc;
-	
-	// 주문상품권
-	private String gfcdNm;
-	private String gfcdNo;
-	private int gfcdAmt;
-	private int chgGfcdAmt;
-	private int usGfcdAmt;
-	private int rmGfcdAmt;
-	
-	// 다다익선
-	private int tmtbSq;
-	private String tmtbNm;
-	private int tmtbDcAmt;
-	
-	// 상태변경
-	private String g20;
-	private String g30;
-	private String g40;
-	private String g50;
-	private String g55;
-	private String g60;
-	
-	// 취소요청
-	private String cncWait;
-	private int ordReqChgQty;
-	private int itemReqChgQty;
-	private int itemOrdPrice;
-	private int minOrdAmt;
-	private int orgDelvFee;
-	private String delvFeeCd;
-	private int ordCanChgQty;
-	private String allCanYn;
-	
-	private String addDelvFeeYn;
-	private int addDelvFee;
-	private int ordDtlItemSq;
-	
-	private int paySq;
-	private int refundAmt;
-	private int rfCpn1Amt;
-	private int rfTmtb1Amt;
-	private int rfTmtb2Amt;
-	private int rfGoodsCpnAmt;
-	private int rfCartCpnAmt;
-	private int rfPntAmt;
-	private int rfPrePntAmt;
-	private int rfGfcdUseAmt;
-
-	private int pgCpnAmt;
-	private int npayPntAmt;
-	private String payGb;
-	private String pgGb;
-	private String pgTid;
-	private String cardType;
-	private String cardKind;
-	private String cardBank;
-	private String cardMips;
-	private String cardPcableYn;
-	private String vaNo;
-	private String vaNm;
-	private String vaDeadline;
-	private String telecom;
-
-	private String accountNo;
-	private String accountNm;
-	private String bankCd;
-	private String bankNm;
-
-	private int realDelvAmt;
-	private int delvCpnSq;
-	private int delvCpnDcAmt;
-
-	private int chgQty;
-	private int rtnDelvFee;
-	private int excDelvFee;
-
-	private String[] ordDtlStatArr;
-	
-	// 교환요청
-	private String ordChgOpt;
-	private String rtnLocZipcode;
-	private String rtnLocBaseAddr;
-	private String rtnLocDtlAddr;
-	private String rtnLocTelno;
-	private String rtnLocNm;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 22 - 16
src/main/webapp/WEB-INF/views/order/CnclReqForm.html

@@ -33,7 +33,7 @@
 				<h4 id="h4OrderCancelRequestToBeList">취소정보</h4>
 				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 				
-				<h4 id="h4DelvCdList" >배송비정보</h4>
+				<h4 id="h4DelvCdList">배송비정보</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;">
@@ -142,13 +142,19 @@ var ordChgSq 				= [[${ordChgSq}]];								// 주문변경번호
 var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
 var orderChangeDetailList 	= [[${orderChangeDetailList}]];					// 취소/반품/교환요청 정보
 var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
-var chgReason				= orderChangeDetailList[0].chgReason;			// 변경사유코드
-var chgMemo					= orderChangeDetailList[0].chgMemo;				// 변경사유메모
+var chgReason				= "";											// 변경사유코드
+var chgMemo					= "";											// 변경사유메모
+
+// 변경요청정보 승인, 철회
+if (ordChgSq > 0) {
+	chgReason				= orderChangeDetailList[0].chgReason;			// 변경사유코드
+	chgMemo					= orderChangeDetailList[0].chgMemo;				// 변경사유메모
+}
 
 var temp1 = true;
 var temp2 = false;
 
-// 1. 주문정보(반품대상)
+// 1. 주문정보(변경요청가능대상)
 var columnCancelReqList = [
 	{
 		headerName	: "주문상세정보",
@@ -800,7 +806,7 @@ var isCustomer = true;
 
 // 취소정보계산
 var fnCalculateRefundAmt = function (obj) {
-	// 취소정보담은목록
+	// 변경신청목록
 	var cancelRequestTargetToBeList = [];
 
 	if (obj != null) {
@@ -812,7 +818,7 @@ var fnCalculateRefundAmt = function (obj) {
 				cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
 			}
 		}
-		// 주문정보 다시 셋팅 (체크해봐야할문제)
+		// 주문변경대상정보 재설정
 		gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
 	}
 	
@@ -877,19 +883,18 @@ var fnCalculateRefundAmt = function (obj) {
 
 //  사유
 var fnChangeChgReason = function(reasonCd){
-	var arrReasonCd = reasonCd.split(":");
 	var customerReasonArr = ['G686_10'];
 
 	isCustomer = false;
 	
-	// 취소, 반품, 교환 사유 판단
+	// 귀책사유체크(취소,반품,교환)
 	for (i=0 ; i<customerReasonArr.length ; i++) {
 		if (customerReasonArr[i] == reasonCd) {
 			isCustomer = true;
 		}
 	}
 	
-	// 귀책사유설정 회사, 고객
+	// 귀책사유체크(회사,고객)
 	if (isCustomer) {
 		$("#imputeReason").text("고객");
 	} else {
@@ -897,12 +902,13 @@ var fnChangeChgReason = function(reasonCd){
 	}
 
 	$('#cancelRequestFrm input[name=chgReason]').val(reasonCd);
-	fnCalculateRefundAmt();			//환불예정금액 계산.
+	
+	//환불예정금액 계산
+	fnCalculateRefundAmt();
 }
 
 // 취소신청/완료
 var fnCnclReq = function (reqGbn) {
-	
 	var temp 		= false;
 	var ordDtlStat	= cancelRequestTargetList[0].ordDtlStat;
 	var allCanYn 	= "N";
@@ -982,7 +988,7 @@ var fnCnclReq = function (reqGbn) {
 	// 취소신청승인
 	else if (reqGbn == "cnclReqComplete") {
 		confirmStr 		= "요청번호 [" + ordChgSq + "] 에 대한 취소승인 처리를 하시겠습니까?";
-		cnclUrl 		= '/orderChange/cnclReqComplete/';
+		cnclUrl 		= '/orderChange/cnclComplete/';
 	}
 	// 취소신청철회
 	else if (reqGbn == "cnclReqCancel") {
@@ -1073,7 +1079,7 @@ $(document).ready(function() {
 		fnBindOrderRfAccountInfo();
 	}
 	
-	// 5. 취소신청, 취소완료, 취소승인 버튼 제어
+	// 5. 취소신청, 취소완료, 취소승인, 취소철회 버튼 제어
 	if (ordChgSq > 0) {
 		$("#cnclReqBtn").css("display", "none");
 		$("#cnclCompleteBtn").css("display", "none");
@@ -1084,11 +1090,11 @@ $(document).ready(function() {
 	
 	// 6. 취소사유 선택
 	if (ordChgSq > 0) {
-		$("select[name='selectChgReason']").val(orderChangeDetailList[0].chgReason);			// 변경사유코드
+		$("select[name='selectChgReason']").val(chgReason);										// 변경사유코드
 		$("select[name='selectChgReason']").attr("disabled", "true");							// 변경사유 비활성화
-		$("#chgMemo").text(orderChangeDetailList[0].chgMemo);									// 변경사유메모
+		$("#chgMemo").text(chgMemo);															// 변경사유메모
 		$("#chgMemo").attr("disabled", "true");													// 변경사유메모 비활성화
-		fnChangeChgReason(orderChangeDetailList[0].chgReason);									// 귀책사유
+		fnChangeChgReason(chgReason);															// 귀책사유
 	}
 	
 	// debug mode 해제

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

@@ -956,7 +956,7 @@ $(document).ready(function () {
 	});
 	// 반품요청
 	$('#btnReturn').on('click', function () {
-		fnReturnRequest(ordNo, 'N');
+		fnReturnRequest();
 	});
 	// 교환요청
 	$('#btnExchange').on('click', function () {
@@ -1015,11 +1015,16 @@ var fnCancelRequest = function (ordChgSq) {
 	cfnOpenModalPopup(actionUrl, 'popupCancelRequestForm');
 };
 
-
-
 // 반품요청
-var fnReturnRequest = function () {
-	var actionUrl = "/orderChange/rtn/req/form?ordNo=" + ordNo;
+var fnReturnRequest = function (ordChgSq) {
+	
+	// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
+	if (ordChgSq == null) {
+		ordChgSq = 0;
+	}
+	
+	var actionUrl = "/orderChange/rtn/req/form?ordNo=" + ordNo + "&ordChgSq=" + ordChgSq;
+	
 	cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
 };
 

+ 186 - 105
src/main/webapp/WEB-INF/views/order/ReturnRequestForm.html → src/main/webapp/WEB-INF/views/order/RtnReqForm.html

@@ -23,20 +23,23 @@
 		<div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
 			<form id="cancelRequestFrm" name="cancelRequestFrm" action="/orderChange/return" method="post" target="hdFrameForOrderCancel">
 				<input type="hidden" name="ordNo" th:value="${ordNo}"/>
+				<input type="hidden" name="ordChgSq" th:value="${ordChgSq}"/>
 				<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>
+				<h4 id="h4OrderCancelRequestToBeList">반품정보</h4>
 				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 				
-				<h4>배송비정보</h4>
+				<h4 id="h4DelvCdList">배송비정보</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" id="btnCancelRequestPartOk" onclick="fnCancelRequestPartOk();">요청</button>
+					<button type="button" class="btn btn-success" id="rtnReqBtn" onclick="fnCnclReq('rtnReq');">반품신청</button>
+					<button type="button" class="btn btn-success" id="rtnReqCancelBtn" onclick="fnCnclReq('rtnReqCancel');">반품철회</button>
+					<button type="button" class="btn btn-success" id="rtnReqCancelBtn" onclick="fnCnclReq('rtnReqComplete');">반품승인</button>
 				</div>
 				
 				<table class="frmStyle">
@@ -52,7 +55,7 @@
 							<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>
+									<option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}|" th:text="|${oneData.cdNm}|"></option>
 								</select>
 							</td>
 							<th>귀책사유</th>
@@ -186,14 +189,24 @@
 /*<![CDATA[*/
 var cancelRequestTargetList = [[${cancelRequestTargetList}]];				// 취소대상목록
 var ordNo 					= [[${ordNo}]];									// 주문번호
+var ordChgSq 				= [[${ordChgSq}]];								// 주문변경번호
 var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
-var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
 var orderDelvRtnAddrInfo	= [[${orderDelvRtnAddrInfo}]];					// 회수지정보
+var orderChangeDetailList 	= [[${orderChangeDetailList}]];					// 취소/반품/교환요청 정보
+var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
+var chgReason				= "";											// 변경사유코드
+var chgMemo					= "";											// 변경사유메모
+
+// 변경요청정보 승인, 철회
+if (ordChgSq > 0) {
+	chgReason				= orderChangeDetailList[0].chgReason;			// 변경사유코드
+	chgMemo					= orderChangeDetailList[0].chgMemo;				// 변경사유메모
+}
 
 var temp1 = true;
 var temp2 = false;
 
-// 1. 주문정보(반품대상)
+// 1. 주문정보(변경요청가능대상)
 var columnCancelReqList = [
 	{
 		headerName	: "주문상세정보",
@@ -275,21 +288,29 @@ var columnCancelReqList = [
 					var ordQty 			= parseInt(params.data.ordQty);
 					var cnclRtnQty 		= parseInt(params.data.cnclRtnQty);
 					var ordReqChgQty 	= parseInt(params.data.ordReqChgQty);
+					var ordCanChgQty 	= parseInt(params.value);
 					var ordCanChgQty 	= ordQty - (cnclRtnQty +  ordReqChgQty);
+					var rtnStr 			= "";
 					
-					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>";
+					// 취소신청가능수량있으면 수량만 표시 (취소,반품,교환 신청정보 처리)
+					if (ordChgSq > 0) {
+						rtnStr 			= ordCanChgQty;
+					} else {
+						ordCanChgQty 	= ordQty - (cnclRtnQty +  ordReqChgQty);
+						
+						rtnStr += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
+						
+						for (i=0 ; i<=ordCanChgQty ; i++) {
+							if (i == params.data.ordCanChgQty) {
+								rtnStr += "	<option value='"+i+"' selected>"+i+"</option>";
+							} else {
+								rtnStr += "	<option value='"+i+"'>"+i+"</option>";
+							}
 						}
+					
+						rtnStr += "</select>";
 					}
-				
-					strVal += "</select>";
-					return strVal;
+					return rtnStr;
 				}
 			}
 		]
@@ -837,7 +858,7 @@ var isCustomer = true;
 
 // 취소정보계산
 var fnCalculateRefundAmt = function (obj) {
-	// 취소정보담은목록
+	// 변경신청목록
 	var cancelRequestTargetToBeList = [];
 
 	if (obj != null) {
@@ -849,7 +870,7 @@ var fnCalculateRefundAmt = function (obj) {
 				cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
 			}
 		}
-		// 주문정보 다시 셋팅 (체크해봐야할문제)
+		// 주문변경대상정보 재설정
 		gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
 	}
 	
@@ -914,126 +935,162 @@ var fnCalculateRefundAmt = function (obj) {
 
 //  사유
 var fnChangeChgReason = function(reasonCd){
-	var arrReasonCd = reasonCd.split(":");
 	var customerReasonArr = ['G688_10', 'G688_11', 'G688_12', 'G688_13', 'G688_15' , 'G688_21', 'G688_30'];
 
 	isCustomer = false;
 	
-	// 취소, 반품, 교환 사유 판단
+	// 귀책사유체크(취소,반품,교환)
 	for (i=0 ; i<customerReasonArr.length ; i++) {
-		if (customerReasonArr[i] == arrReasonCd[0]) {
+		if (customerReasonArr[i] == reasonCd) {
 			isCustomer = true;
 		}
 	}
 	
-	// 귀책사유설정 회사, 고객
+	// 귀책사유체크(회사,고객)
 	if (isCustomer) {
 		$("#imputeReason").text("고객");
 	} else {
 		$("#imputeReason").text("회사");
 	}
 
-	$('#cancelRequestFrm input[name=chgReason]').val(arrReasonCd[0]);
-	$('#cancelRequestFrm input[name=chgReasonDesc]').val(arrReasonCd[1]);
+	$('#cancelRequestFrm input[name=chgReason]').val(reasonCd);
 	
-	//환불예정금액 계산.
-	fnCalculateRefundAmt();			
+	//환불예정금액 계산
+	fnCalculateRefundAmt();
 }
 
 // 반품요청
-var fnCancelRequestPartOk = function () {
-	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;
-		}
-	}
+var fnCnclReq = function (reqGbn) {
+	var temp 			= false;
+	var ordDtlStat		= cancelRequestTargetList[0].ordDtlStat; 
+	var allCanYn 		= "N";
 	
-	if (temp == false) {
-		mcxDialog.alert('취소 할 수량을 입력하세요.');
-		return;
-	}
+	var accountNo 		= "";
+	var accountNm 		= "";
+	var bankCd 			= "";
 	
-	// 2. 입금대기건 && 전체취소 체크
-	if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() != $("#spanRefundAmt").text()) {
-		alert("입금대기건은 전체 취소만 가능합니다.");
-		return;
-	}
+	var chgerNm			= "";
+	var chgerZipcode	= "";
+	var chgerBaseAddr	= "";
+	var chgerDtlAddr	= "";
 	
-	// 2.1 전체취소 여부 적용
-	if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() == $("#spanRefundAmt").text()) {
-		allCanYn = "Y";	
-	}
+	var chgerPhnno1		= "";
+	var chgerPhnno2		= "";
+	var chgerPhnno3		= "";
 	
-	// 3. 취소사유 체크
-	var chgReason = $("#cancelRequestFrm select[name=selectChgReason]").val();
+	var chgerTelno1		= "";
+	var chgerTelno2		= "";
+	var chgerTelno3		= "";
 	
-	if (gagajf.isNull(chgReason)) {
-		mcxDialog.alert("취소사유를 입력하세요."); 
-		return ;
-	}
+	var chgerPhnno 		= "";
+	var chgerTelno 		= "";
+	var chgerEmail 		= "";
 	
-	// 4. 환불계좌 체크
-	var accountNo 	= "";
-	var accountNm 	= "";
-	var bankCd 		= "";
-	
-	// 결제타입이 무통장 입금일때 사용
-	if (payMeans == 'G014_20') {
-		var refundAccount = gridOptionsRefundAccountInfo.api.getSelectedRows();
+	if (reqGbn == "rtnReq") {
+		// 1. 취소수량 체크
+		for (i=0 ; i<cancelRequestTargetList.length ; i++) {		
+			if (cancelRequestTargetList[i].ordCanChgQty > 0) {
+				temp = true;
+			}
+		}
 		
-		if (refundAccount.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
+		if (temp == false) {
+			mcxDialog.alert('취소 할 수량을 입력하세요.');
 			return;
 		}
 		
-		accountNo 	= refundAccount[0].accountNo;
-		accountNm 	= refundAccount[0].accountNm;
-		bankCd 		= refundAccount[0].bankCd;
-	}
-	
-	// 5. 회수지정보설정
-	var chgerNm			= $("#cancelRequestFrm input[name=chgerNm]").val();
-	var chgerZipcode	= $("#cancelRequestFrm input[name=chgerZipcode]").val();
-	var chgerBaseAddr	= $("#cancelRequestFrm input[name=chgerBaseAddr]").val();
-	var chgerDtlAddr	= $("#cancelRequestFrm 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 chgerTelno1		= $("#cancelRequestFrm select[name=chgerTelno1]").val();
-	var chgerTelno2		= $("#cancelRequestFrm input[name=chgerTelno2]").val();
-	var chgerTelno3		= $("#cancelRequestFrm input[name=chgerTelno3]").val();
+		// 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. 환불계좌 체크
+		// 결제타입이 무통장 입금일때 사용
+		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. 회수지정보설정
+		chgerNm			= $("#cancelRequestFrm input[name=chgerNm]").val();
+		chgerZipcode	= $("#cancelRequestFrm input[name=chgerZipcode]").val();
+		chgerBaseAddr	= $("#cancelRequestFrm input[name=chgerBaseAddr]").val();
+		chgerDtlAddr	= $("#cancelRequestFrm input[name=chgerDtlAddr]").val();
+		
+		chgerPhnno1		= $("#cancelRequestFrm select[name=chgerPhnno1]").val();
+		chgerPhnno2		= $("#cancelRequestFrm input[name=chgerPhnno2]").val();
+		chgerPhnno3		= $("#cancelRequestFrm input[name=chgerPhnno3]").val();
+		
+		chgerTelno1		= $("#cancelRequestFrm select[name=chgerTelno1]").val();
+		chgerTelno2		= $("#cancelRequestFrm input[name=chgerTelno2]").val();
+		chgerTelno3		= $("#cancelRequestFrm input[name=chgerTelno3]").val();
 
-	if (gagajf.isNull(chgerZipcode)) {
-		mcxDialog.alert("회수지주소를 입력하세요."); return;
-	}
-	if (gagajf.isNull(chgerBaseAddr)) {
-		mcxDialog.alert("회수지주소를 입력하세요."); return;
-	}
-	if (gagajf.isNull(chgerDtlAddr)) {
-		mcxDialog.alert("회수지주소를 입력하세요."); return;
+		if (gagajf.isNull(chgerZipcode)) {
+			mcxDialog.alert("회수지주소를 입력하세요."); return;
+		}
+		if (gagajf.isNull(chgerBaseAddr)) {
+			mcxDialog.alert("회수지주소를 입력하세요."); return;
+		}
+		if (gagajf.isNull(chgerDtlAddr)) {
+			mcxDialog.alert("회수지주소를 입력하세요."); return;
+		}
+		
+		if (gagajf.isNull(chgerPhnno1)) {
+			mcxDialog.alert("휴대전화를 입력하세요."); return;
+		}
+		if (gagajf.isNull(chgerPhnno2)) {
+			mcxDialog.alert("휴대전화를 입력하세요."); return;
+		}
+		if (gagajf.isNull(chgerPhnno3)) {
+			mcxDialog.alert("휴대전화를 입력하세요."); return;
+		}
+		
+		chgerPhnno 		= chgerPhnno1 + chgerPhnno2 + chgerPhnno3;
+		chgerTelno 		= chgerTelno1 + chgerTelno2 + chgerTelno3;
+		chgerEmail 		= orderInfoList[0].ordEmail;
+	} else {
+		
 	}
 	
-	if (gagajf.isNull(chgerPhnno1)) {
-		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	// 2021.01.26 화면통합
+	// 6. 취소신청, 취소완료 여부 체크
+	// 반품신청
+	if (reqGbn == "rtnReq") {
+		confirmStr 		= "취소신청하시겠습니까?";
+		cnclUrl 		= '/orderChange/rtnReq/';
 	}
-	if (gagajf.isNull(chgerPhnno2)) {
-		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	// 반품신청승인
+	else if (reqGbn == "rtnReqComplete") {
+
 	}
-	if (gagajf.isNull(chgerPhnno3)) {
-		mcxDialog.alert("휴대전화를 입력하세요."); return;
+	// 반품신청철회
+	else if (reqGbn == "rtnReqCancel") {
+		confirmStr 		= "요청번호 [" + ordChgSq + "] 에 대한 요청철회 처리를 하시겠습니까?";
+		cnclUrl 		= '/orderChange/rtnReqCancel/';
 	}
-	
-	var chgerPhnno 		= chgerPhnno1 + chgerPhnno2 + chgerPhnno3;
-	var chgerTelno 		= chgerTelno1 + chgerTelno2 + chgerTelno3;
-	var chgerEmail 		= orderInfoList[0].ordEmail;
-	
+
 	var jsonObj = {
 		"ordNo"				: $('#cancelRequestFrm input[name=ordNo]').val()
 		,"chgReason" 		: $('#cancelRequestFrm input[name=chgReason]').val()
@@ -1051,6 +1108,7 @@ var fnCancelRequestPartOk = function () {
 		,"chgerDtlAddr"		: chgerDtlAddr
 		,"chgerPhnno"		: chgerPhnno
 		,"chgerTelno"		: chgerTelno
+		,"ordChgSq"			: ordChgSq
 	}
 
 	// 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
@@ -1061,7 +1119,7 @@ var fnCancelRequestPartOk = function () {
 		sureBtnClick		: function(){
 			// 취소 실행
 			gagajf.ajaxJsonSubmit(
-				'/orderChange/returnRequest/'
+					cnclUrl
 				, jsonData
 				, function() {
 					uifnPopupClose('popupOrderDetail');
@@ -1157,6 +1215,29 @@ $(document).ready(function() {
 	
 	// 5. 회수지정보설정
 	fnSetChger();
+	
+	// 6. 반품신청, 반품승인, 반품철회 버튼 제어
+	if (ordChgSq > 0) {
+		$("#rtnReqBtn").css("display", "none");
+	} else {
+		$("#rtnReqCompleteBtn").css("display", "none");
+		$("#rtnReqCancelBtn").css("display", "none");
+	}
+	
+	// 7. 취소사유 선택
+	if (ordChgSq > 0) {
+		$("select[name='selectChgReason']").val(chgReason);										// 변경사유코드
+		$("select[name='selectChgReason']").attr("disabled", "true");							// 변경사유 비활성화
+		$("#chgMemo").text(chgMemo);															// 변경사유메모
+		$("#chgMemo").attr("disabled", "true");													// 변경사유메모 비활성화
+		fnChangeChgReason(chgReason);															// 귀책사유
+	}
+	
+	// debug mode 해제
+	$("#h4OrderCancelRequestToBeList").css("display", "none");
+	$("#gridOrderCancelRequestToBeList").css("display", "none");
+	$("#h4DelvCdList").css("display", "none");
+	$("#gridDelvCdList").css("display", "none");
 });
 </script>
 </html>