Ver Fonte

반품 TO 교환 임시 커밋

card007 há 5 anos atrás
pai
commit
d0100e0717

+ 57 - 0
src/main/java/com/style24/admin/biz/service/TsaOrderChangeService.java

@@ -0,0 +1,57 @@
+package com.style24.admin.biz.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.gagaframework.web.parameter.GagaMap;
+import com.style24.core.biz.service.TscOrderChangeService;
+import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.persistence.domain.OrderChange;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 주문 변경 Service
+ *
+ * @author card007
+ * @since 2021. 06. 15
+ */
+@Service
+@Slf4j
+public class TsaOrderChangeService {
+
+	@Autowired
+	private TscMessageByLocale message;
+
+	@Autowired
+	private Environment env;
+
+	@Autowired
+	private TscOrderChangeService coreOrderChangeService;
+
+	/**
+	 * 반품 TO 교환 처리
+	 * 
+	 * @param orderChange
+	 * @author card007
+	 * @since 2021. 06. 15
+	 */
+	@Transactional("shopTxnManager")
+	public void returnToExchange(OrderChange orderChange) {
+		// 1. 반품 철회 처리
+		GagaMap map = new GagaMap();
+		map.setInt("ordChgSq", orderChange.getOrdChgSq());
+		map.setInt("ordNo", orderChange.getOrdNo());
+
+		int userNo = orderChange.getUserNo();
+
+		coreOrderChangeService.rtnReqCancel(map, userNo);
+
+		// 2. 교환 접수 처리
+		orderChange.setWdTargetYn("N");
+
+		coreOrderChangeService.exchReq(orderChange);
+	}
+}

+ 92 - 46
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -1,5 +1,6 @@
 package com.style24.admin.biz.web;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
@@ -17,6 +18,7 @@ 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.TsaOrderChangeService;
 import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
@@ -52,13 +54,16 @@ public class TsaOrderChangeController extends TsaBaseController {
 	private TsaRendererService rendererService;
 	
 	@Autowired
-	private TscOrderService orderService;
-	
+	private TscOrderService coreOrderService;
+
+	@Autowired
+	private TsaOrderChangeService orderChangeService;
+
 	@Autowired
-	private TscOrderChangeService orderChangeService;
+	private TscOrderChangeService coreOrderChangeService;
 	
 	@Autowired
-	private TscOrderRefundService orderRefundService;
+	private TscOrderRefundService coreOrderRefundService;
 	
 	@Autowired
 	private TscKcpService coreKcpService;
@@ -99,9 +104,9 @@ public class TsaOrderChangeController extends TsaBaseController {
 		order.setOrdDtlStatArr(ordDtlStatArr);
 		
 		// 2. 변경신청된 주문상세번호를 체크 후 있으면 해당 취소가능수량값 업데이트 
-		List<Order> cancelRequestTargetList 		= orderChangeService.getCancelRequestTargetList2(order);
-		List<Order> orderChangeDetailList 			= orderChangeService.getOrderChangeDetailList(order);
-		Collection<Order> orderInfoList 			= orderService.getOrderInfoList(order);
+		List<Order> cancelRequestTargetList 		= coreOrderChangeService.getCancelRequestTargetList2(order);
+		List<Order> orderChangeDetailList 			= coreOrderChangeService.getOrderChangeDetailList(order);
+		Collection<Order> orderInfoList 			= coreOrderService.getOrderInfoList(order);
 		
 		// 3. 화면으로 데이타 전송
 		// 2021.01.26 취소요청 화면, 취소요청정보확인 화면 통합
@@ -147,7 +152,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.set("ordChgSq"		, cnclReq.getOrdChgSq());
 		
 		// 2.취소요청철회 
-		mav = orderChangeService.cnclReqCancel(mav, userNo);
+		mav = coreOrderChangeService.cnclReqCancel(mav, userNo);
 		
 		return super.ok("성공");
 	}
@@ -176,12 +181,12 @@ public class TsaOrderChangeController extends TsaBaseController {
 		cnclReq.setUserNo(userNo);
 				
 		// 2021.05.14 FRONT 정보 선주문정보조회
-		GagaMap refundPreInfo = orderChangeService.getRefundPreInfo2(cnclReq);
+		GagaMap refundPreInfo = coreOrderChangeService.getRefundPreInfo2(cnclReq);
 		List<Order> cnclReqList = (List<Order>) refundPreInfo.get("cnclReqList");
 		
 		// 2. 환불금액계산
 		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
-		GagaMap map = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
+		GagaMap map = coreOrderRefundService.cnclRtnRefundAmt2(cnclReqList);
 		
 		// 3. 주문변경 기본정보 설정
 		map.set("ordNo"						, cnclReq.getOrdNo());						// 주문번호
@@ -221,19 +226,19 @@ public class TsaOrderChangeController extends TsaBaseController {
 			// cnclRtnReqQtyArr		: 변경수량배열
 			
 			cnclReq.setChgGb(TscConstants.OrderChangeGb.CANCEL.value());
-			orderChangeService.cancelRequest(cnclReq);
+			coreOrderChangeService.cancelRequest(cnclReq);
 		}
 		// 2021.06.09 취소접수승인
 		else if ("cnclReqComplete".equals(cnclReq.getReqGbn())) {
-			result = orderChangeService.approveCancelRequest(cnclReq, userNo);
+			result = coreOrderChangeService.approveCancelRequest(cnclReq, userNo);
 		}
 		// 2021.06.09 취소접수철회
 		else if ("cnclReqCancel".equals(cnclReq.getReqGbn())) {
-			orderChangeService.cnclReqCancel(map, userNo);
+			coreOrderChangeService.cnclReqCancel(map, userNo);
 		}
 		// 취소완료
 		else {
-			result = orderChangeService.partialCancelTemp(map, userNo);
+			result = coreOrderChangeService.partialCancelTemp(map, userNo);
 		}
 		
 		// 5. 취소 알림톡 및 메일 발송
@@ -242,7 +247,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		if (ordChgSq > 0) {
 			try {
 				// 취소 알림톡 관련 정보 조회
-				OrderChange orderChange = orderChangeService.getKakaoOrderCancelInfo(ordChgSq);
+				OrderChange orderChange = coreOrderChangeService.getKakaoOrderCancelInfo(ordChgSq);
 
 				// 취소 알림톡 발송
 				if (StringUtils.isNotBlank(orderChange.getOrdPhnno())) {
@@ -250,7 +255,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 				}
 
 				// 취소 안내 메일 정보 조회
-				GagaMap replaceInfo = orderChangeService.getMailOrderCancelReplaceInfo(orderChange);
+				GagaMap replaceInfo = coreOrderChangeService.getMailOrderCancelReplaceInfo(orderChange);
 
 				// 취소 안내 메일 발송
 				if (StringUtils.isNotBlank(replaceInfo.getString("ordEmail"))) {
@@ -284,18 +289,23 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[1] = TscConstants.OrderDetailStat.SHIP_COMPLETE.value();
 		ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
-		
+
 		// 2. 변경신청된 주문상세번호를 체크 후 있으면 해당 취소가능수량값 업데이트 
-		List<Order> cancelRequestTargetList 		= orderChangeService.getCancelRequestTargetList2(order);
-		List<Order> orderChangeDetailList 			= orderChangeService.getOrderChangeDetailList(order);
-		Collection<Order> orderInfoList 			= orderService.getOrderInfoList(order);
+		List<Order> cancelRequestTargetList 		= coreOrderChangeService.getCancelRequestTargetList2(order);
+		List<Order> orderChangeDetailList 			= coreOrderChangeService.getOrderChangeDetailList(order);
+		Collection<Order> orderInfoList 			= coreOrderService.getOrderInfoList(order);
 
 		if (order.getOrdChgSq() > 0) {
-			Collection<Order> exchangeInfoList = orderChangeService.getExchangeInfo(order);
+			Collection<Order> exchangeInfoList = coreOrderChangeService.getExchangeInfo(order);
 			mav.addObject("exchangeInfoList"		, exchangeInfoList);											// 교환정보
 		}
 		
-		String chgStat = cancelRequestTargetList.get(0).getChgStat();
+		String chgStat = "";
+		for (Order tmp : cancelRequestTargetList) {
+			if (StringUtils.isNotBlank(tmp.getChgStat())) {
+				chgStat = tmp.getChgStat();
+			}
+		}
 
 		// 2021.01.26 취소요청 화면, 취소요청정보확인 화면 통합
 		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G688"));				// 취소사유
@@ -303,8 +313,10 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.addObject("orderInfoList"				, orderInfoList);												// 주문정보
 		mav.addObject("ordNo"						, order.getOrdNo());											// 주문번호
 		mav.addObject("ordChgSq"					, order.getOrdChgSq());											// 주문변경번호
+		mav.addObject("delvFeeCd"					, order.getDelvFeeCd());										// 배송정책코드
+		mav.addObject("delvFeeCdGrp"				, order.getDelvFeeCdGrp());										// 배송정책그룹코드
 		mav.addObject("orderChangeDetailList"		, orderChangeDetailList);										// 변경신청목록 (취소/반품/교환)
-		mav.addObject("orderDelvRtnAddrInfo"		, orderService.getDeliveryAddrList(order));						// 배송정보
+		mav.addObject("orderDelvRtnAddrInfo"		, coreOrderService.getDeliveryAddrList(order));						// 배송정보
 		mav.addObject("TelExcNoList"				, rendererService.getAvailCommonCodeList("G095"));				// 전화번호국번
 		mav.addObject("PhnExcNoList"				, rendererService.getAvailCommonCodeList("G096"));				// (휴대전화)번호국번
 		mav.addObject("chgStat"						, chgStat);														// 변경상태
@@ -337,13 +349,13 @@ public class TsaOrderChangeController extends TsaBaseController {
 		rtnReq.setIpAddress(TsaSession.getIpAddress());
 
 		// 2021.05.14 FRONT 정보 선주문정보조회
-		GagaMap refundPreInfo 		= orderChangeService.getRefundPreInfo2(rtnReq);
+		GagaMap refundPreInfo 		= coreOrderChangeService.getRefundPreInfo2(rtnReq);
 		List<Order> cnclReqList 	= (List<Order>) refundPreInfo.get("cnclReqList");
 		
 		GagaMap map = new GagaMap();
 		
 		// 3. 환불예상금액계산
-		map = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
+		map = coreOrderRefundService.cnclRtnRefundAmt2(cnclReqList);
 		
 		// 4. 주문변경기본정보설정
 		map.set("ordNo"						, rtnReq.getOrdNo());						// 주문번호
@@ -379,13 +391,13 @@ public class TsaOrderChangeController extends TsaBaseController {
 		map.set("cashAuthNo"				, refundPreInfo.getString("cashAuthNo"));	// 현금영수증 승인번호
 		
 		// 4. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
-		GagaMap result = orderChangeService.returnRequest(map);
+		GagaMap result = coreOrderChangeService.returnRequest(map);
 		int ordChgSq = result.getInt("ordChgSq");
 
 		if (ordChgSq > 0) {
 			try {
 				// 반품 알림톡 관련 정보 조회
-				OrderChange orderChange = orderChangeService.getKakaoOrderReturnInfo(ordChgSq);
+				OrderChange orderChange = coreOrderChangeService.getKakaoOrderReturnInfo(ordChgSq);
 				
 				// 반품 알림톡 발송
 				if (StringUtils.isNotBlank(orderChange.getOrdPhnno())) {
@@ -393,7 +405,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 				}
 
 				// 반품 안내 메일 정보 조회
-				GagaMap replaceInfo = orderChangeService.getMailOrderReturnReplaceInfo(orderChange);
+				GagaMap replaceInfo = coreOrderChangeService.getMailOrderReturnReplaceInfo(orderChange);
 
 				// 반품 안내 메일 발송
 				if (StringUtils.isNotBlank(replaceInfo.getString("ordEmail"))) {
@@ -430,7 +442,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.set("ordChgSq"		, cnclReq.getOrdChgSq());
 		
 		// 2.취소요청철회 
-		mav = orderChangeService.rtnReqCancel(mav, userNo);
+		mav = coreOrderChangeService.rtnReqCancel(mav, userNo);
 		
 		return super.ok("성공");
 	}
@@ -454,11 +466,11 @@ public class TsaOrderChangeController extends TsaBaseController {
 		cnclReq.setRegNo(userNo);
 
 		// 1. 환불 사전 정보 조회
-		GagaMap refundPreInfo = orderChangeService.getRefundPreInfo2(cnclReq);
+		GagaMap refundPreInfo = coreOrderChangeService.getRefundPreInfo2(cnclReq);
 		List<Order> cnclReqList = (List<Order>) refundPreInfo.get("cnclReqList");
 		
 		// 2. 환불금액정보 계산 & 조회
-		mav = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
+		mav = coreOrderRefundService.cnclRtnRefundAmt2(cnclReqList);
 		
 		return mav;
 	}
@@ -477,7 +489,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 	public GagaMap getRefundAccountInfoList(@RequestBody Order order) {
 		GagaMap mav = new GagaMap();
 
-		Collection<Order> orderRfAccountInfo = orderChangeService.getRefundAccount(order);
+		Collection<Order> orderRfAccountInfo = coreOrderChangeService.getRefundAccount(order);
 		mav.put("orderRfAccountInfo", orderRfAccountInfo);
 
 		return mav;
@@ -498,8 +510,8 @@ public class TsaOrderChangeController extends TsaBaseController {
 		Order order = new Order();
 		order.setOrdNo(ordNo);
 
-		Collection<Order> orderInfoList 		= orderService.getOrderInfoList(order);
-		Collection<Order> orderRfAccountInfo 	= orderChangeService.getRefundAccount(order);
+		Collection<Order> orderInfoList 		= coreOrderService.getOrderInfoList(order);
+		Collection<Order> orderRfAccountInfo 	= coreOrderChangeService.getRefundAccount(order);
 
 		mav.addObject("bankList"				, rendererService.getCommonCodeList("G940"));
 		mav.addObject("orderRfAccountInfo"		, orderRfAccountInfo);
@@ -543,7 +555,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		if (isValid) {
 			// 2021.06.09 비회원이 아닌경우만 고객 계좌에 등록
 			if (order.getCustNo() > 0) {
-				orderChangeService.saveRefundAccount(order);
+				coreOrderChangeService.saveRefundAccount(order);
 			}
 		} else {
 			throw new IllegalStateException("환불계좌정보가 맞지 않습니다!");
@@ -576,12 +588,36 @@ public class TsaOrderChangeController extends TsaBaseController {
 		ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
 		order.setOrdDtlStatArr(ordDtlStatArr);
 
-		Collection<Order> cancelRequestTargetList = orderChangeService.getCancelRequestTargetList(order);
-		Collection<Order> orderInfoList = orderService.getOrderInfoList(order);
+		Collection<Order> cancelRequestTargetList = coreOrderChangeService.getCancelRequestTargetList(order);
+		Collection<Order> orderInfoList = coreOrderService.getOrderInfoList(order);
 
 		if (order.getOrdChgSq() > 0) {
-			Collection<Order> exchangeInfoList = orderChangeService.getExchangeInfo(order);
+			Collection<Order> exchangeInfoList = coreOrderChangeService.getExchangeInfo(order);
 			mav.addObject("exchangeInfoList"		, exchangeInfoList);								// 교환정보
+
+			// 반품TO교환 주문정보 설정
+			List<Integer> ordDtlNoList = new ArrayList<>();
+			if (exchangeInfoList != null && exchangeInfoList.size() > 0) {
+				String chgGb = exchangeInfoList.iterator().next().getChgGb();
+				mav.addObject("chgGb", chgGb);
+
+				if (TscConstants.OrderChangeGb.RETURN.value().equals(chgGb)) {
+					for (Order tmp : exchangeInfoList) {
+						if (tmp.getChgQty() > 0 && !ordDtlNoList.contains(tmp.getOrdDtlNo())) {
+							ordDtlNoList.add(tmp.getOrdDtlNo());
+						}
+					}
+
+					Collection<Order> tmpList = new ArrayList<>();
+					for (Order tmp : cancelRequestTargetList) {
+						if(ordDtlNoList.contains(tmp.getOrdDtlNo())) {
+							tmpList.add(tmp);
+						}
+					}
+
+					cancelRequestTargetList = tmpList;
+				}
+			}
 		}
 
 		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G689"));	// 교환사유
@@ -589,7 +625,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		mav.addObject("orderInfoList"				, orderInfoList);									// 주문정보
 		mav.addObject("ordNo"						, order.getOrdNo());								// 주문번호
 		mav.addObject("ordChgSq"					, order.getOrdChgSq());								// 주문변경번호
-		mav.addObject("orderDelvAddrInfo"			, orderService.getDeliveryAddrList(order));			// 배송정보
+		mav.addObject("orderDelvAddrInfo"			, coreOrderService.getDeliveryAddrList(order));			// 배송정보
 		mav.addObject("TelExcNoList"				, rendererService.getAvailCommonCodeList("G095"));	// 전화번호국번
 		mav.addObject("PhnExcNoList"				, rendererService.getAvailCommonCodeList("G096"));	// (휴대전화)번호국번
 
@@ -624,13 +660,13 @@ public class TsaOrderChangeController extends TsaBaseController {
 		excReq.setRegNo(userNo);
 
 		// 교환처리
-		result = orderChangeService.exchReq(excReq);
+		result = coreOrderChangeService.exchReq(excReq);
 		int ordChgSq = result.getInt("ordChgSq");
 
 		if (ordChgSq > 0) {
 			try {
 				// 교환 알림톡 관련 정보 조회
-				OrderChange orderChange = orderChangeService.getKakaoOrderReturnInfo(ordChgSq);
+				OrderChange orderChange = coreOrderChangeService.getKakaoOrderReturnInfo(ordChgSq);
 
 				// 교환 알림톡 발송
 				if (StringUtils.isNotBlank(orderChange.getOrdPhnno())) {
@@ -638,7 +674,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 				}
 
 				// 교환 안내 메일 정보 조회
-				GagaMap replaceInfo = orderChangeService.getMailOrderExchangeReplaceInfo(orderChange);
+				GagaMap replaceInfo = coreOrderChangeService.getMailOrderExchangeReplaceInfo(orderChange);
 
 				// 교환 안내 메일 발송
 				if (StringUtils.isNotBlank(replaceInfo.getString("ordEmail"))) {
@@ -689,7 +725,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		excReq.setIpAddress(ipAddress);
 
 		// 교환철회 처리
-		result = orderChangeService.exchangeCancel(excReq);
+		result = coreOrderChangeService.exchangeCancel(excReq);
 
 		// 처리 결과 코드에 따른 메세지 설정
 		if (result.get("status").equals(GagaResponseStatus.SUCCESS.getCode())) {
@@ -731,7 +767,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 	//	
 	// 	// 2. 환불금액계산
 	// 	// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
-	// 	mav = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
+	// 	mav = coreOrderRefundService.cnclRtnRefundAmt2(cnclReqList);
 	//	
 	// 	// 3. 주문변경 기본정보 설정
 	// 	mav.set("ordNo"			, cnclReq.getOrdNo());				// 주문번호
@@ -754,7 +790,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 	// 	mav.set("reqGbn"		, cnclReq.getReqGbn());				// 신청구분
 	//					
 	// 	// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
-	// 	orderChangeService.cnclComplete(mav, userNo);
+	// 	coreOrderChangeService.cnclComplete(mav, userNo);
 	//	
 	// 	return super.ok("성공");
 	// }
@@ -782,10 +818,20 @@ public class TsaOrderChangeController extends TsaBaseController {
 	// 	mav.set("ordChgSq"		, cnclReq.getOrdChgSq());
 	//	
 	// 	// 2.취소요청철회 
-	// 	mav = orderChangeService.cnclComplete(mav, userNo);
+	// 	mav = coreOrderChangeService.cnclComplete(mav, userNo);
 	//	
 	// 	return super.ok("성공");
 	// }
+	
+	@PostMapping("/return/to/exchange")
+	public GagaResponse returnToExchange(OrderChange orderChange) {
+		int userNo = TsaSession.getInfo().getUserNo();
+		orderChange.setUserNo(userNo);
+
+		orderChangeService.returnToExchange(orderChange);
+
+		return super.ok();
+	}
 }
 
 

+ 33 - 16
src/main/webapp/WEB-INF/views/order/ExchangeRequestForm.html

@@ -34,7 +34,8 @@
 				
 				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
 					<button type="button" class="btn btn-success" th:unless="${ordChgSq > 0}" id="fnExchangeRequestSubmit" onclick="fnExchange()">교환요청</button>
-					<button type="button" class="btn btn-success" th:if="${ordChgSq > 0}" id="fnExchangeCancelRequestSubmit" onclick="fnExchangeCancel()">교환철회</button>
+					<button type="button" class="btn btn-success" th:if="${ordChgSq > 0 and chgGb == 'G680_40'}" id="fnExchangeCancelRequestSubmit" onclick="fnExchangeCancel()">교환철회</button>
+					<button type="button" class="btn btn-success" th:if="${ordChgSq > 0 and chgGb == 'G680_30'}" id="fnReturnToExchangeSubmit" onclick="fnExchange()">교환변경</button>
 				</div>
 				
 				<table class="frmStyle">
@@ -197,6 +198,7 @@ var exchangeInfoList;														// 교환정보
 var wdGb;																	// 회수방법
 var chgerRtnMemo;															// 반품메모
 var delvMemo;																// 배송메모
+var chgGb;																	// 변경구분
 
 var temp1 = true;
 var temp2 = true;
@@ -210,6 +212,7 @@ if (ordChgSq > 0) {
 	chgerRtnMemo			= exchangeInfoList[0].chgerRtnMemo;				// 반품메모
 	delvMemo				= exchangeInfoList[0].delvMemo;					// 배송메모
 	wdGb					= exchangeInfoList[0].wdGb;						// 회수방법
+	chgGb					= exchangeInfoList[0].chgGb;					// 변경구분
 }
 
 // 1. 주문정보(교환대상)
@@ -292,7 +295,7 @@ var columnExchangeReqList = [
 				, width			: 100
 				, cellClass		: "text-center"
 				, cellRenderer	: function (params) {
-					if (ordChgSq > 0) {
+					if (chgGb == 'G680_40' && ordChgSq > 0) {
 						$.each(exchangeInfoList, function(idx, item) {
 							if (params.data.itemCd == item.itemCd && params.data.optCd1 == item.optCd1) {
 								strVal = item.optCd2;
@@ -557,7 +560,7 @@ var isCustomer = false;
 //  사유 변경
 var fnChangeChgReason = function(reasonCd){
 	var arrReasonCd = reasonCd.split(":");
-	var customerReasonArr = ['G689_10', 'G689_30'];
+	var customerReasonArr = ['G689_10', 'G689_30', 'G688_10'];
 	
 	isCustomer = false;
 
@@ -592,12 +595,15 @@ var fnExchange = function () {
 	$.each(cancelRequestTargetList, function(idx, item) {
 		if (item.chgQty > 0) {
 			qty = true;
-			
+
 			if (!gagajf.isNull(item.ordChgOpt)) {
 				opt = true;
 			}
 		}
 	});
+	//$.each(exchangeRequestList, function(idx, item)) {
+	//	if (item.chgQty == 0)
+	//}
 
 	if (qty == false) {
 		mcxDialog.alert('교환 할 수량을 입력하세요.');
@@ -729,17 +735,26 @@ var fnExchange = function () {
 		,"recipPhnno"		: recipPhnno
 		,"recipTelno"		: recipTelno
 		,"delvMemo"			: $("#exchangeRequestFrm textarea[name=delvMemo]").val()
+		,"ordChgSq"			: ordChgSq
 	}
 
 	// 주문번호, 교환사유, 교환메모, (취소, 반품, 교환 신청 정보 목록)
 	var jsonData = JSON.stringify(jsonObj);
 	
+	// URL 설정
+	var url;
+	if (chgGb == 'G680_30') {
+		url = '/orderChange/return/to/exchange/';
+	} else {
+		url = '/orderChange/exchangeRequest/';
+	}
+	
 	mcxDialog.confirm('교환요청하시겠습니까?', {
 		cancelBtnText		: "반품",
 		sureBtnClick		: function(){
 			// 교환 실행
 			gagajf.ajaxJsonSubmit(
-				'/orderChange/exchangeRequest/'
+				url
 				, jsonData
 				, function() {
 					uifnPopupClose('popupOrderDetail');
@@ -1006,7 +1021,6 @@ $(document).ready(function() {
 		
 		// 8. 데이터 Disabled 처리
 		$('input:radio[name=wdGb]').attr('disabled', true);				// 8-1. 회수방법
-		$('#chgMemo').attr('readOnly', true);							// 8-2. 요청메모
 		$('input[name=chgerNm]').attr('readOnly', true);				// 8-3. 회수지정보 > 보내는사람
 		$('input[name=chgerBaseAddr]').attr('readOnly', true);			// 8-4. 회수지정보 > 기본주소
 		$('input[name=chgerDtlAddr]').attr('readOnly', true);			// 8-5. 회수지정보 > 상세주소
@@ -1017,17 +1031,20 @@ $(document).ready(function() {
 		$('input[name=chgerPhnno2]').attr('readOnly', true);			// 8-7. 회수지정보 > 휴대전화
 		$('input[name=chgerPhnno3]').attr('readOnly', true);			// 8-7. 회수지정보 > 휴대전화
 		$('#chgerRtnMemo').attr('readOnly', true);						// 8-8. 회수지정보 > 반품메모
-		$('input[name=recipNm]').attr('readOnly', true);				// 8-9. 교환지정보 > 받는사람
-		$('input[name=recipBaseAddr]').attr('readOnly', true);			// 8-10. 교환지정보 > 기본주소
-		$('input[name=recipDtlAddr]').attr('readOnly', true);			// 8-11. 교환지정보 > 상세주소
-		$('select[name=recipTelno1]').attr('disabled', true);			// 8-12. 교환지정보 > 일반전화
-		$('input[name=recipTelno2]').attr('readOnly', true);			// 8-12. 교환지정보 > 일반전화
-		$('input[name=recipTelno3]').attr('readOnly', true);			// 8-12. 교환지정보 > 일반전화
-		$('select[name=recipPhnno1]').attr('disabled', true);			// 8-13. 교환지정보 > 휴대전화
-		$('input[name=recipPhnno2]').attr('readOnly', true);			// 8-13. 교환지정보 > 휴대전화
-		$('input[name=recipPhnno3]').attr('readOnly', true);			// 8-13. 교환지정보 > 휴대전화
-		$('#delvMemo').prop('readOnly', true);							// 8-14. 교환지정보 > 배송메모
 		
+		if (chgGb == 'G685_40') {
+			$('#chgMemo').attr('readOnly', true);							// 8-2. 요청메모
+			$('input[name=recipNm]').attr('readOnly', true);				// 8-9. 교환지정보 > 받는사람
+			$('input[name=recipBaseAddr]').attr('readOnly', true);			// 8-10. 교환지정보 > 기본주소
+			$('input[name=recipDtlAddr]').attr('readOnly', true);			// 8-11. 교환지정보 > 상세주소
+			$('select[name=recipTelno1]').attr('disabled', true);			// 8-12. 교환지정보 > 일반전화
+			$('input[name=recipTelno2]').attr('readOnly', true);			// 8-12. 교환지정보 > 일반전화
+			$('input[name=recipTelno3]').attr('readOnly', true);			// 8-12. 교환지정보 > 일반전화
+			$('select[name=recipPhnno1]').attr('disabled', true);			// 8-13. 교환지정보 > 휴대전화
+			$('input[name=recipPhnno2]').attr('readOnly', true);			// 8-13. 교환지정보 > 휴대전화
+			$('input[name=recipPhnno3]').attr('readOnly', true);			// 8-13. 교환지정보 > 휴대전화
+			$('#delvMemo').prop('readOnly', true);							// 8-14. 교환지정보 > 배송메모
+		}
 	}
 });
 </script>

+ 34 - 0
src/main/webapp/WEB-INF/views/order/RtnReqForm.html

@@ -25,6 +25,7 @@
 				<input type="hidden" name="ordNo" 			th:value="${ordNo}"/>
 				<input type="hidden" name="ordChgSq" 		th:value="${ordChgSq}"/>
 				<input type="hidden" name="delvFeeCd" 		th:value="${delvFeeCd}"/>
+				<input type="hidden" name="delvFeeCdGrp" 	th:value="${delvFeeCdGrp}"/>
 				<input type="hidden" name="chgReason" 		value=""/>
 				<input type="hidden" name="chgReasonDesc" 	value=""/>
 				
@@ -40,6 +41,7 @@
 				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
 					<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="rtnToExcBtn" onclick="fnRtnToExc();">교환변경</button>
 				</div>
 				
 				<table class="frmStyle">
@@ -1292,6 +1294,31 @@ var fnChangeWdGb = function(param) {
 	fnCalculateRefundAmt();
 }
 
+// 반품TO교환 버튼 클릭 이벤트
+var fnRtnToExc = function() {
+	let ordNo = $('#cancelRequestFrm input[name=ordNo]').val();
+	let ordChgSq = $('#cancelRequestFrm input[name=ordChgSq]').val();
+	let delvFeeCd = $('#cancelRequestFrm input[name=delvFeeCd]').val();
+	let delvFeeCdGrp = $('#cancelRequestFrm input[name=delvFeeCdGrp]').val();
+	
+	// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
+	if (ordChgSq == null) {
+		ordChgSq = 0;
+	}
+	
+	var param 		= "";
+	param += "&ordNo=" 			+ ordNo;
+	param += "&delvFeeCd="		+ delvFeeCd;
+	param += "&delvFeeCdGrp="	+ delvFeeCdGrp;
+	param += "&ordChgSq=" 		+ ordChgSq;
+	
+	// 반품상세 팝업 닫기
+	uifnPopupClose('popupReturnRequestForm');
+	
+	var actionUrl = "/orderChange/exchange/request/form?" + param;
+	cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
+}
+
 $(document).ready(function() {
 	// 1. 그리드생성
 	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsCancelReqList);			// 주문정보
@@ -1323,6 +1350,7 @@ $(document).ready(function() {
 	fnSetChger();
 	
 	// 5. 반품신청, 반품철회 버튼 제어
+	alert(ordChgSq + ' ' + chgStat);
 	if (ordChgSq > 0) {
 		$("#rtnReqBtn").css("display", "none");
 		
@@ -1331,6 +1359,11 @@ $(document).ready(function() {
 			$("#rtnReqCancelBtn").css("display", "none");
 		}
 		
+		// 반품TO교환 버튼
+		if (chgStat != "G685_50" && chgStat != "G685_51" && chgStat != "G685_30") {
+			$("#rtnToExcBtn").css("display", "none");
+		}
+		
 		// 직접발송일때 회수지정보 숨김처리
 		if (wdGb == "D") {
 			$("#chgerAdress").css("display", "none");
@@ -1338,6 +1371,7 @@ $(document).ready(function() {
 	} else {
 		$("#rtnReqCompleteBtn").css("display", "none");
 		$("#rtnReqCancelBtn").css("display", "none");
+		$("#rtnToExcBtn").css("display", "none");
 	}
 	
 	// 6. 취소사유 선택