Browse Source

관리자 취,반,교

tsit14 5 năm trước cách đây
mục cha
commit
d7a66323fe

+ 47 - 27
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -64,12 +64,14 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 */
 	@GetMapping("/cncl/req/form")
 	public ModelAndView cnclReqForm(@RequestParam(value = "ordNo") int ordNo, @RequestParam(value = "ordDtlNo") int ordDtlNo
-			, @RequestParam(value = "delvFeeCd") String delvFeeCd, @RequestParam(value = "ordChgSq") int ordChgSq) {
+			, @RequestParam(value = "delvFeeCd") String delvFeeCd, @RequestParam(value = "delvFeeCdGrp") String delvFeeCdGrp
+			, @RequestParam(value = "ordChgSq") int ordChgSq) {
 
 		Order order = new Order();
 		order.setOrdNo(ordNo);
 		order.setOrdDtlNo(ordDtlNo);
 		order.setDelvFeeCd(delvFeeCd);
+		order.setDelvFeeCdGrp(delvFeeCdGrp);
 		order.setOrdChgSq(ordChgSq);
 
 		// 1. 취소가능 주문상세상탭값 설정
@@ -158,43 +160,61 @@ public class TsaOrderChangeController extends TsaBaseController {
 		GagaMap mav = new GagaMap();
 		
 		List<Order> cnclReqList = cnclReq.getCancelReqList(); // 변경요청정보
+		int[] ordDtlNoArr 		= new int[cnclReqList.size()];
+		int[] cnclRtnReqQtyArr 	= new int[cnclReqList.size()];
 		
-		// TODO
-		// @ 결품취소로직 추가
-		// @ 주문취소시 상태값 체크
-		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
-		
+		for (int i=0 ; i<cnclReqList.size() ; i++) {
+			Order vo = (Order)cnclReqList.get(i);
+			ordDtlNoArr[i] 			= vo.getOrdDtlNo();
+			cnclRtnReqQtyArr[i] 	= vo.getOrdCanChgQty();
+		}
+
 		// 1. 세션회원조회
 		int userNo = TsaSession.getInfo().getUserNo();
+				
+		cnclReq.setOrdDtlNoArr(ordDtlNoArr);
+		cnclReq.setCnclRtnReqQtyArr(cnclRtnReqQtyArr);
+		cnclReq.setCustNo(userNo);
+		cnclReq.setIpAddress(TsaSession.getIpAddress());
+		
+		// front 정보 선주문정보조회
+		GagaMap refundPreInfo = orderChangeService.getRefundPreInfo(cnclReq);
 		
 		// 2. 환불금액계산
 		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
 		mav = orderRefundService.cnclRtnRefundAmt(cnclReqList);
 		
 		// 3. 주문변경 기본정보 설정
-		mav.set("ordNo"					, cnclReq.getOrdNo());					// 주문번호
-		mav.set("ordChgSq"				, cnclReq.getOrdChgSq());				// 주문변경번호
-		mav.set("chgReason"				, cnclReq.getChgReason());				// 변경사유
-		mav.set("chgMemo"				, cnclReq.getChgMemo());				// 변경메모
-		
-		mav.set("accountNo"				, cnclReq.getAccountNo());				// 환불계좌번호
-		mav.set("accountNm"				, cnclReq.getAccountNm());				// 환불계좌예금주명
-		mav.set("bankCd"				, cnclReq.getBankCd());					// 환불계좌은행코드
-		
-		mav.set("allCanYnBeforePayment"	, cnclReq.getAllCanYnBeforePayment());	// 무통장입금전 전체취소 여부
-		mav.set("allCanYn"				, cnclReq.getAllCanYn());				// 전체취소 여부
-		mav.set("isCustomer"			, cnclReq.getIsCustomer());				// 변경사유 (고객, 회사)
-		
-		// 4. 주문변경 회수지정보 추가
-		mav.set("chgerNm"				, cnclReq.getChgerNm());				// 변경자명
-		mav.set("chgerEmail"			, cnclReq.getChgerEmail());				// 변경자이메일주소
-		mav.set("chgerPhnno"			, cnclReq.getChgerPhnno());				// 변경자핸드폰번호
-		mav.set("chgerTelno"			, cnclReq.getChgerTelno());				// 변경자전화번호
-		
-		mav.set("reqGbn"				, cnclReq.getReqGbn());					// 신청구분
+		mav.set("ordNo"					, cnclReq.getOrdNo());						// 주문번호
+		mav.set("ordChgSq"				, cnclReq.getOrdChgSq());					// 주문변경번호
+		mav.set("chgReason"				, cnclReq.getChgReason());					// 변경사유
+		mav.set("chgReasonNm"			, cnclReq.getChgReasonNm());				// 변경사유명 (2021.05.13 추가)
+		mav.set("chgMemo"				, cnclReq.getChgMemo());					// 변경메모
+		mav.set("accountNo"				, cnclReq.getAccountNo());					// 환불계좌번호
+		mav.set("accountNm"				, cnclReq.getAccountNm());					// 환불계좌예금주명
+		mav.set("bankCd"				, cnclReq.getBankCd());						// 환불계좌은행코드
+		mav.set("allCanYnBeforePayment"	, cnclReq.getAllCanYnBeforePayment());		// 무통장입금전 전체취소 여부
+		mav.set("allCanYn"				, cnclReq.getAllCanYn());					// 전체취소 여부
+		mav.set("allLastCanYn"			, cnclReq.getAllCanYn());					// 전체 마지막 취소 여부 (2021.05.13 추가)
+		mav.set("isCustomer"			, cnclReq.getIsCustomer());					// 변경사유 (고객, 회사)
+		mav.set("chgerNm"				, cnclReq.getChgerNm());					// 변경자명
+		mav.set("chgerEmail"			, cnclReq.getChgerEmail());					// 변경자이메일주소
+		mav.set("chgerPhnno"			, cnclReq.getChgerPhnno());					// 변경자핸드폰번호
+		mav.set("chgerTelno"			, cnclReq.getChgerTelno());					// 변경자전화번호
+		mav.set("reqGbn"				, cnclReq.getReqGbn());						// 신청구분
+		mav.set("ipAddress"				, cnclReq.getIpAddress());					// IP주소 (2021.05.13 추가)
+		mav.set("custNo"				, cnclReq.getCustNo());						// 고객번호 (2021.05.13 추가)
+		
+		mav.set("pgTid"					, refundPreInfo.getString("pgTid"));		// PG거래ID
+		mav.set("payMeans"				, refundPreInfo.getString("payMeans"));		// 결제수단
+		mav.set("pgGb"					, refundPreInfo.getString("pgGb"));			// PG구분
+		mav.set("cashAuthNo"			, refundPreInfo.getString("cashAuthNo"));	// 현금영수증 승인번호
 				
 		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL)
-		orderChangeService.cnclComplete(mav, userNo);
+		//orderChangeService.cnclComplete(mav, userNo);
+
+		// 5. 부분취소 처리 2021.05.13
+		orderChangeService.partialCancel(mav, userNo);
 		
 		return super.ok("성공");
 	}

+ 235 - 270
src/main/webapp/WEB-INF/views/order/CnclReqForm.html

@@ -56,7 +56,11 @@
 							<td>
 								<select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
 									<option value="">[선택하세요]</option>
-									<option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}|" th:text="|${oneData.cdNm}|"></option>
+									<th:block th:each="oneData, status : ${chgReasonList}">
+										<th:block th:if="${oneData.cd} == G686_10 or ${oneData.cd} == G686_20 or ${oneData.cd} == G686_30">
+											<option th:if="${chgReasonList}"  th:value="|${oneData.cd}|" th:text="|${oneData.cdNm}|"></option>
+										</th:block>
+									</th:block>
 								</select>
 							</td>
 							<th>귀책사유</th>
@@ -85,38 +89,38 @@
 							<td colspan="3"><span id="spanPayAmt"></span>원 (상품 실결제 금액 : <span id="spanSumRealOrdAmt"></span>원, 배송금액 : <span id="spanSumDeliveryFee"></span>원) </td>
 						</tr>
 						<tr>
-							<th>주문 상품 금액</th>
+							<th>상품 주문 금액</th>
 							<td><span id="spanOrdAmt"></span>원</td>
-							<th>취소 상품 금액</th>
+							<th>상품 취소 금액</th>
 							<td><span id="spanCnclRtnAmt"></span>원</td>
 						</tr>
 						<tr>
-							<th>취소 사용 포인트</th>
+							<th>포인트 취소 금액</th>
 							<td colspan="3"><span id="spanTotPntDcAmt"></span>원 (고객 포인트 : <span id="spanPntDcAmt"></span>원 + 상품 선포인트 : <span id="spanPrePntDcAmt"></span>원) </td>
 						</tr>
 						<tr>
-							<th>취소 사용 쿠폰금액</th>
+							<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>
+							<th>다다익선 취소 금액</th>
 							<td colspan="3"><span id="spanTmtbDcAmt"></span>원 (수량할인 : <span id="spanTmtb1DcAmt"></span>원 + 금액할인 : <span id="spanTmtb2DcAmt"></span>원)</td>
 						</tr>
 						
 						<tr>
-							<th>취소 고객 상품권 금액</th>
+							<th>상품권 취소 금액</th>
 							<td colspan="3"><span id="spanGfcdUseAmt"></span>원</td>
 						</tr>
 						
 						<tr>
-							<th>취소 상품 실결제 금액</th>
+							<th>상품 실결제 취소 금액</th>
 							<td><span id="spanRealCnclRtnAmt"></span>원</td>
-							<th>추가 배송 금액</th>
+							<th>추가 배송 금액</th>
 							<td><span id="spanTotDeliveryFee"></span>원 </td>
 						</tr>
 						
 						<tr>
-							<th>환불 금액 합계</th>
+							<th>환불 예정 금액</th>
 							<td colspan="3"><span id="spanRefundAmt"></span>원</td>
 						</tr>
 					</tbody>
@@ -144,6 +148,7 @@ var orderChangeDetailList 	= [[${orderChangeDetailList}]];					// 취소/반품/
 var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
 var chgReason				= "";											// 변경사유코드
 var chgMemo					= "";											// 변경사유메모
+var cancelRequestTargetCnt 	= [[${cancelRequestTargetList.size()}]];		// 환불정보
 
 // 변경요청정보 승인, 철회
 if (ordChgSq > 0) {
@@ -152,279 +157,233 @@ if (ordChgSq > 0) {
 }
 
 var temp1 = true;
-var temp2 = true;
+var temp2 = false;
+var temp3 = true;
 
 // 1. 주문정보(변경요청가능대상)
 var columnCancelReqList = [
+	{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-left', hide: temp2},
+	{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-left', hide: temp2},
+	{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2},
 	{
-		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		: "옵션금액"		
+		, field			: "optAddPrice"			
+		, width			: 80		
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
 	},
 	{
-		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		: "주문"		
+		, field			: "ordQty"			
+		, width			: 80		
+		, cellClass		: 'text-center'
+		, 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 	= parseInt(params.value);
-					var rtnStr 			= "";
-					
-					// 취소신청가능수량있으면 수량만 표시 (취소,반품,교환 신청정보 처리)
-					if (ordChgSq > 0) {
-						rtnStr = ordCanChgQty;
+		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 	= parseInt(params.value);
+			var rtnStr 			= "";
+			
+			// 취소신청가능수량있으면 수량만 표시 (취소,반품,교환 신청정보 처리)
+			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 {
-						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>";
+						rtnStr += "	<option value='"+i+"'>"+i+"</option>";
 					}
-					
-					return rtnStr;
 				}
+			
+				rtnStr += "</select>";
 			}
-		]
+			
+			return rtnStr;
+		}
 	},
 	{
-		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		: "주문"
+		, field			: "ordAmt"			
+		, 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},
-		]
-	}
+		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			: 100		
+		, 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			: 100		
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+	},
+	{
+		headerName		: "배송비"		
+		, field			: "delvFee"			
+		, width			: 80		
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
+	},
+	{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp1},
+	{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp1},
+	{
+		headerName		: "무료배송비"		
+		, field			: "minOrdAmt"			
+		, width			: 80		
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
+	},
+	{
+		headerName		: "기본배송비"		
+		, field			: "orgDelvFee"			
+		, width			: 80		
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
+	},
+	{
+		headerName		: "반품배송비"		
+		, field			: "rtnDelvFee"			
+		, width			: 80		
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
+	},
+	{
+		headerName		: "교환배송비"		
+		, field			: "excDelvFee"			
+		, width			: 80		
+		, cellClass		: 'text-right'
+		, cellRenderer	: function (params) {
+			return params.value.addComma();
+		}
+		, hide			: temp1
+	},
+	{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp1}
 ];
 var gridOptionsCancelReqList = gagaAgGrid.getGridOptions(columnCancelReqList);
 
@@ -839,7 +798,6 @@ var fnCalculateRefundAmt = function (obj) {
 			
 			$("#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());			//취소 상품 금액
@@ -873,6 +831,8 @@ var fnCalculateRefundAmt = function (obj) {
 				// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
 				else {
 					result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee);
+					// 2021.05.13 추가배송비금액 수정
+					$("#spanTotDeliveryFee").text(0);	//배송금액
 				}
 			}
 			
@@ -883,7 +843,7 @@ var fnCalculateRefundAmt = function (obj) {
 
 //  사유
 var fnChangeChgReason = function(reasonCd){
-	var customerReasonArr = ['G686_10'];
+	var customerReasonArr = ['G686_10', 'G686_20'];
 
 	isCustomer = false;
 	
@@ -919,6 +879,7 @@ var fnCnclReq = function (reqGbn) {
 	var bankCd 					= "";
 	
 	if (reqGbn == "cnclReq" || reqGbn == "cnclComplete") {
+		
 		// 1. 취소수량 체크
 		for (i=0 ; i<cancelRequestTargetList.length ; i++) {
 			if (cancelRequestTargetList[i].ordCanChgQty > 0) {
@@ -1104,12 +1065,16 @@ $(document).ready(function() {
 	}
 	
 	// debug mode 해제
-	if (temp2) {
+	if (temp3) {
 		$("#h4OrderCancelRequestToBeList").css("display", "none");
 		$("#gridOrderCancelRequestToBeList").css("display", "none");
 		$("#h4DelvCdList").css("display", "none");
 		$("#gridDelvCdList").css("display", "none");
 	}
+	
+	// 2021.05.13 높이자동조절
+	var cancelRequestTargetHeight = 50 + (40 * cancelRequestTargetCnt);
+	$("#gridOrderCancelRequestList").css("height" , cancelRequestTargetHeight+"px");
 });
 </script>
 </html>

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

@@ -289,18 +289,27 @@ var columnDefsGoodsInfo = [
 					// 결제완료, 상품준비중, 출고처지정, 배송준비중 (주문취소) 
 					if (params.value == 'G013_20' || params.value == 'G013_30' || params.value == 'G013_35' || params.value == 'G013_40') {
 						if (params.data.ordQty > (params.data.cnclRtnQty + params.data.ordReqChgQty)) {
-							retStr += '<button type="button" class="btn btn-base btn-sm" onclick="fnCancelRequest(\'' + params.data.ordNo + '\',\'' + params.data.ordDtlNo + '\',\'' + params.data.delvFeeCd + '\', null);">취소요청</button>';
+							var paramData 	= params.data.ordNo;
+							paramData 		+= '@' + params.data.ordDtlNo;
+							paramData 		+= '@' + params.data.delvFeeCd;
+							paramData 		+= '@' + params.data.delvFeeCdGrp;
+							retStr 			+= '<button type="button" class="btn btn-base btn-sm" onclick="fnCancelRequest(\'' + paramData + '\', null);">취소요청</button>';
 						}
 					}
 					
-					// 배송중, 배송완료 (교환신청, 반푼신청) 
+					// 배송중, 배송완료 (교환신청, 반신청) 
 					if (params.value == 'G013_50' || params.value == 'G013_60') {
 						if (params.data.ordQty > (params.data.cnclRtnQty + params.data.ordReqChgQty)) {
+							var paramData 	= params.data.ordNo;
+							paramData 		+= '@' + params.data.ordDtlNo;
+							paramData 		+= '@' + params.data.delvFeeCd;
+							paramData 		+= '@' + params.data.delvFeeCdGrp;
+														
 							if (params.data.changeableYn == 'Y') {
-								retStr += '<button type="button" class="btn btn-base btn-sm" onclick="fnReturnRequest(\'' + params.data.ordNo + '\',\'' + params.data.ordDtlNo + '\',\'' + params.data.delvFeeCd + '\', null);">교환요청</button>';
+								retStr 			+= '<button type="button" class="btn btn-base btn-sm" onclick="fnReturnRequest(\'' + paramData + '\', null);">반품요청</button>';
 							}
 							if (params.data.returnableYn == 'Y') {
-								retStr += '<button type="button" class="btn btn-base btn-sm" onclick="fnExchangeRequest(\'' + params.data.ordNo + '\',\'' + params.data.ordDtlNo + '\',\'' + params.data.delvFeeCd + '\', null);">반품요청</button>';
+								retStr 			+= '<button type="button" class="btn btn-base btn-sm" onclick="fnExchangeRequest(\'' + paramData + '\', null);">교환요청</button>';
 							}
 						}
 					}
@@ -679,6 +688,7 @@ var columnDefsOrderChangeInfo = [
 			var rtnStr = "";
 			
 			// 취소요청, 교환요청, 반품요청 일때는 요청 정보 확인 팝업 정보
+			/*
 			if (params.data.chgStat == 'G685_20') {
 				rtnStr = '<a href="javascript:void(0);" onclick="fnCancelRequest(\'' + params.value + '\');">' + params.value + '</a>';
 			} else if (params.data.chgStat == 'G685_40') {
@@ -688,6 +698,8 @@ var columnDefsOrderChangeInfo = [
 			} else {
 				rtnStr = params.value;
 			}
+			*/
+			rtnStr = params.value;
 			
 			return  rtnStr;
 		}
@@ -1063,18 +1075,6 @@ $(document).ready(function () {
 
 	$('#orderDetailContents').css("width", "97%").css("height", "96%");
 	
-	// 취소요청
-	$('#btnCancel').on('click', function () {
-		fnCancelRequest();
-	});
-	// 반품요청
-	$('#btnReturn').on('click', function () {
-		fnReturnRequest();
-	});
-	// 교환요청
-	$('#btnExchange').on('click', function () {
-		fnExchangeRequest(ordNo, 'N');
-	});
 	// 메모등록
 	$('#btnCreateOrderMemo').on('click', function () {
 		fnCreateOrderMemo(ordNo, 0, 'N');
@@ -1116,17 +1116,19 @@ var fnUpdateOrderAddr = function (rowIdx) {
 
 // 2021.01.25 추가
 // 취소요청, 교환요청, 반품요청 일때는 요청 정보 확인 팝업 정보
-var fnCancelRequest = function (ordNo, ordDtlNo, delvFeeCd, ordChgSq) {
+var fnCancelRequest = function (paramData, ordChgSq) {
 	// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
 	if (ordChgSq == null) {
 		ordChgSq = 0;
 	}
 	
-	var param = "";
-	param += "&ordNo=" 		+ ordNo;
-	param += "&ordDtlNo=" 	+ ordDtlNo;
-	param += "&delvFeeCd="	+ delvFeeCd;
-	param += "&ordChgSq=" 	+ ordChgSq;
+	var paramArr 	= paramData.split("@");
+	var param 		= "";
+	param += "&ordNo=" 			+ paramArr[0];
+	param += "&ordDtlNo=" 		+ paramArr[1];
+	param += "&delvFeeCd="		+ paramArr[2];
+	param += "&delvFeeCdGrp="	+ paramArr[3];
+	param += "&ordChgSq=" 		+ ordChgSq;
 	
 	var actionUrl = "/orderChange/cncl/req/form?" + param;
 	
@@ -1137,31 +1139,46 @@ var fnCancelRequest = function (ordNo, ordDtlNo, delvFeeCd, ordChgSq) {
 
 //2021.01.25 추가
 // 반품요청
-var fnReturnRequest = function (ordChgSq) {
+var fnReturnRequest = function (paramData, ordChgSq) {
 	
 	// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
 	if (ordChgSq == null) {
 		ordChgSq = 0;
 	}
 	
+	var paramArr 	= paramData.split("@");
+	var param 		= "";
+	param += "&ordNo=" 			+ paramArr[0];
+	param += "&ordDtlNo=" 		+ paramArr[1];
+	param += "&delvFeeCd="		+ paramArr[2];
+	param += "&delvFeeCdGrp="	+ paramArr[3];
+	param += "&ordChgSq=" 		+ ordChgSq;
+	
 	var actionUrl = "/orderChange/rtn/req/form?ordNo=" + ordNo + "&ordChgSq=" + ordChgSq;
 	
 	cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
 };
 
 // 교환요청
-var fnExchangeRequest = function (ordChgSq) {
+var fnExchangeRequest = function (paramData, ordChgSq) {
 	
 	// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
 	if (ordChgSq == null) {
 		ordChgSq = 0;
 	}
 	
+	var paramArr 	= paramData.split("@");
+	var param 		= "";
+	param += "&ordNo=" 			+ paramArr[0];
+	param += "&ordDtlNo=" 		+ paramArr[1];
+	param += "&delvFeeCd="		+ paramArr[2];
+	param += "&delvFeeCdGrp="	+ paramArr[3];
+	param += "&ordChgSq=" 		+ ordChgSq;
+	
 	var actionUrl = "/orderChange/exchange/request/form?ordNo=" + ordNo + "&ordChgSq=" + ordChgSq;
 	cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
 };
 
-
 // 반품요청 철회
 var fnReturnReqeustCancel = function (ordChgSq, ordDtlNo, rowIdx) {
 	mcxDialog.confirm('반품요청을 철회하시겠습니까?', {