Quellcode durchsuchen

Merge branch 'card007' into style

card007 vor 4 Jahren
Ursprung
Commit
51ad8c3ecd

+ 118 - 3
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -209,15 +209,15 @@ public class TsaOrderChangeController extends TsaBaseController {
 		cnclReq.setIpAddress(TsaSession.getIpAddress());
 		cnclReq.setRegNo(userNo);
 		cnclReq.setUserNo(userNo);
-				
+
 		// 2021.05.14 FRONT 정보 선주문정보조회
 		GagaMap refundPreInfo = coreOrderChangeService.getRefundPreInfo(cnclReq);
 		List<Order> cnclReqList = (List<Order>) refundPreInfo.get("cnclReqList");
-		
+
 		// 2. 환불금액계산
 		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
 		GagaMap map = coreOrderRefundService.cnclRtnRefundAmt(cnclReqList);
-		
+
 		// 3. 주문변경 기본정보 설정
 		map.set("ordNo"						, cnclReq.getOrdNo());						// 주문번호
 		map.set("ordChgSq"					, cnclReq.getOrdChgSq());					// 주문변경번호
@@ -245,6 +245,7 @@ public class TsaOrderChangeController extends TsaBaseController {
 		map.set("chgStat"					, cnclReq.getChgStat());					// 변경상태
 		map.set("pgStat"					, cnclReq.getPgStat());						// PG점프
 		map.set("depositAmt"				, cnclReq.getDepositAmt());					// PG점프 입금액
+		map.set("delvDesc"					, "BOS 취소완료");							// 배송메모 (취소위치확인용)
 
 		// 4. 부분취소 처리 2021.05.13
 		// 2021.06.09 취소접수
@@ -1186,6 +1187,120 @@ public class TsaOrderChangeController extends TsaBaseController {
 		orderChange.setUpdNo(userNo);
 		return coreOrderChangeService.exchangeApproval(orderChange);
 	}
+
+	/**
+	 * 네이버페이 교환보류 처리
+	 * 
+	 * @param orderChange
+	 * @return GagaResponse
+	 * @author card007
+	 * @since 2021. 10. 05
+	 */
+	@PostMapping("/nPay/order/exchange/hold")
+	@ResponseBody
+	public GagaResponse nPayExchangeHold(@RequestBody OrderChange orderChange) {
+		Integer userNo 				= TsaSession.getInfo().getUserNo();
+		String npayChangeHoldYn 	= orderChange.getNpayChangeHoldYn();
+		Integer ordChgSq 			= orderChange.getOrdChgSq();
+
+		try {
+			int idx = 0;
+			int cnt = 0;
+
+			for (Order order : orderChange.getCancelReqList()) {
+				order.setPgGb(TscConstants.PgGb.NAVER_ORDER.value());
+				order.setRegNo(userNo);
+				order.setUpdNo(userNo);
+
+				if ("N".equals(npayChangeHoldYn)) {
+					order.setHoldCode(TscConstants.nPayExchangeHoldCode.ETC.value());
+					order.setHoldReason("기타사유");
+					cnt += coreNaverPayService.nPayExchangeHold(order);
+				} else {
+					cnt += coreNaverPayService.nPayReleaseExchangeHold(order);
+				}
+
+				idx++;
+			}
+
+			if (idx == cnt && ordChgSq > 0) {
+				Order order = new Order();
+				order.setOrdChgSq(ordChgSq);
+				order.setRegNo(userNo);
+				order.setUpdNo(userNo);
+
+				if ("N".equals(npayChangeHoldYn)) {
+					order.setNpayChangeHoldYn("Y");
+				} else {
+					order.setNpayChangeHoldYn("N");
+				}
+				coreNaverPayService.updateNaverPayChangeHold(order);
+
+				return super.ok(message.getMessage("SUCC_0004"));
+			} else {
+				return super.error(message.getMessage("FAIL_0004"));
+			}
+		} catch (Exception e) {
+			return super.error(message.getMessage("FAIL_0004"));
+		}
+	}
+
+	/**
+	 * 네이버페이 반품보류 처리
+	 *
+	 * @param orderChange
+	 * @return GagaResponse
+	 * @author card007
+	 * @since 2021. 10. 08
+	 */
+	@PostMapping("/nPay/order/return/hold")
+	@ResponseBody
+	public GagaResponse nPayReturnHold(@RequestBody OrderChange orderChange) {
+		Integer userNo 				= TsaSession.getInfo().getUserNo();
+		String npayChangeHoldYn 	= orderChange.getNpayChangeHoldYn();
+		Integer ordChgSq 			= orderChange.getOrdChgSq();
+
+		try {
+			int idx = 0;
+			int cnt = 0;
+
+			for (Order order : orderChange.getCancelReqList()) {
+				order.setPgGb(TscConstants.PgGb.NAVER_ORDER.value());
+				order.setRegNo(userNo);
+				order.setUpdNo(userNo);
+
+				if ("N".equals(npayChangeHoldYn)) {
+					order.setHoldCode(TscConstants.nPayReturnHoldCode.ETC.value());
+					order.setHoldReason("기타사유");
+					cnt += coreNaverPayService.nPayReturnHold(order);
+				} else {
+					cnt += coreNaverPayService.nPayReleaseReturnHold(order);
+				}
+
+				idx++;
+			}
+
+			if (idx == cnt && ordChgSq > 0) {
+				Order order = new Order();
+				order.setOrdChgSq(ordChgSq);
+				order.setRegNo(userNo);
+				order.setUpdNo(userNo);
+
+				if ("N".equals(npayChangeHoldYn)) {
+					order.setNpayChangeHoldYn("Y");
+				} else {
+					order.setNpayChangeHoldYn("N");
+				}
+				coreNaverPayService.updateNaverPayChangeHold(order);
+
+				return super.ok(message.getMessage("SUCC_0004"));
+			} else {
+				return super.error(message.getMessage("FAIL_0004"));
+			}
+		} catch (Exception e) {
+			return super.error(message.getMessage("FAIL_0004"));
+		}
+	}
 }
 
 

+ 2 - 2
src/main/java/com/style24/admin/biz/web/TsaOrderScmController.java

@@ -534,9 +534,9 @@ public class TsaOrderScmController extends TsaBaseController {
 			}
 		}
 
-		coreOrderService.updateSellerDelvStart(orderList, cancelDataList, userNo);
+		String result = coreOrderService.updateSellerDelvStart(orderList, cancelDataList, userNo);
 
-		return super.ok("");
+		return super.ok(result);
 	}
 	
 	

+ 2 - 2
src/main/resources/config/application-locp.yml

@@ -88,8 +88,8 @@ naverPay:
     order.api.url: https://api.pay.naver.com/o/customer/api/order/v20/register
     order.pc.url: https://order.pay.naver.com/customer/buy/
     order.mobile.url: https://m.pay.naver.com/o/customer/buy/
-    access.license:
-    secret.key:
+    access.license: 01000100005add7973062fb26d6ab0270bbb0e426475ca6de319ce56126da2bed70b8fdc9a
+    secret.key: AQABAADLd4Aq3e/eUoHUVnplCOtJul09xEgICn50rnTw6joQNg==
     port.address: http://ec.api.naver.com/Checkout/MallService5
     service.name: MallService5
     version: 5.0

+ 2 - 2
src/main/resources/config/application-stage.yml

@@ -98,8 +98,8 @@ naverPay:
     order.api.url: https://api.pay.naver.com/o/customer/api/order/v20/register
     order.pc.url: https://order.pay.naver.com/customer/buy/
     order.mobile.url: https://m.pay.naver.com/o/customer/buy/
-    access.license:
-    secret.key:
+    access.license: 01000100005add7973062fb26d6ab0270bbb0e426475ca6de319ce56126da2bed70b8fdc9a
+    secret.key: AQABAADLd4Aq3e/eUoHUVnplCOtJul09xEgICn50rnTw6joQNg==
     port.address: http://ec.api.naver.com/Checkout/MallService5
     service.name: MallService5
     version: 5.0

+ 2 - 2
src/main/resources/config/application-style.yml

@@ -98,8 +98,8 @@ naverPay:
     order.api.url: https://api.pay.naver.com/o/customer/api/order/v20/register
     order.pc.url: https://order.pay.naver.com/customer/buy/
     order.mobile.url: https://m.pay.naver.com/o/customer/buy/
-    access.license:
-    secret.key:
+    access.license: 01000100005add7973062fb26d6ab0270bbb0e426475ca6de319ce56126da2bed70b8fdc9a
+    secret.key: AQABAADLd4Aq3e/eUoHUVnplCOtJul09xEgICn50rnTw6joQNg==
     port.address: http://ec.api.naver.com/Checkout/MallService5
     service.name: MallService5
     version: 5.0

+ 1 - 1
src/main/webapp/WEB-INF/views/business/SupplyCompanyForm.html

@@ -746,7 +746,7 @@
 		custInfo.bankCd = $bankCd.val();
 		custInfo.accountNm = $depositorNm.val();
 		custInfo.accountNo = $accountNo.val();
-		let jsonData = JSON.stringify(custInfo)
+		let jsonData = JSON.stringify(custInfo);
 		gagajf.ajaxJsonSubmit('/business/account/check', jsonData, fnAccountCheckCallback);
 	});
 

+ 44 - 15
src/main/webapp/WEB-INF/views/order/CnclReqForm.html

@@ -1232,6 +1232,7 @@ var fnCnclReq = function (reqGbn) {
 	var bankCd 					= "";
 	
 	// 취소완료, 취소승인
+	let chk = false;
 	if (reqGbn == "cnclReq" || reqGbn == "cnclReqComplete" || reqGbn == "cnclComplete") {
 		
 		// 2021.05.25 수정
@@ -1280,8 +1281,10 @@ var fnCnclReq = function (reqGbn) {
 			if ($("#refundAccount .bankNm").eq(0).text() == null || $("#refundAccount .bankNm").eq(0).text() == '') {
 				mcxDialog.alert('환불계좌가 미등록 되어 있습니다.');
 				return false;
-			} 
-			
+			} else {
+				chk = true;
+			}
+
 			accountNo 	= $("#refundAccount .accountNo").eq(0).text();
 			accountNm 	= $("#refundAccount .accountNm").eq(0).text();
 			bankCd 		= $("#refundAccount .bankCd").eq(0).text();
@@ -1376,21 +1379,47 @@ var fnCnclReq = function (reqGbn) {
 		cancelBtnText		: "취소",
 		sureBtnText			: "확인",
 		sureBtnClick		: function() {
-			gagajf.ajaxJsonSubmit(
-				cnclUrl
-				, jsonData
-				, function() {
-					// 2021.06.21 교환품절취소가 아닐때 주문상세화면 다시 로딩하지 않음
-					if (chgStat == 'G685_40') {
-						// 교환배송 취소대상목록 조회 실행
-						$('#btnSearch').trigger("click");
+			if (chk && jsonObj.pgStat == 'N') {
+				// 환불계좌 유효성 체크
+				gagajf.ajaxJsonSubmit('/business/account/check', jsonData, function(result) {
+					if (result.isValid) { // 유효하면 true
+						gagajf.ajaxJsonSubmit(
+							cnclUrl
+							, jsonData
+							, function() {
+								// 2021.06.21 교환품절취소가 아닐때 주문상세화면 다시 로딩하지 않음
+								if (chgStat == 'G685_40') {
+									// 교환배송 취소대상목록 조회 실행
+									$('#btnSearch').trigger("click");
+								} else {
+									uifnPopupClose('popupOrderDetail');
+									fnReOpenOrderDetailPopup();
+								}
+								uifnPopupClose('popupCancelRequestForm');
+							}
+						);
 					} else {
-						uifnPopupClose('popupOrderDetail');
-						fnReOpenOrderDetailPopup();
+						mcxDialog.alert('환불계좌가 유효하지 않습니다.');
+						return false;
 					}
-					uifnPopupClose('popupCancelRequestForm');
-				}
-			);
+				});
+			} else {
+				gagajf.ajaxJsonSubmit(
+					cnclUrl
+					, jsonData
+					, function() {
+						// 2021.06.21 교환품절취소가 아닐때 주문상세화면 다시 로딩하지 않음
+						if (chgStat == 'G685_40') {
+							// 교환배송 취소대상목록 조회 실행
+							$('#btnSearch').trigger("click");
+						} else {
+							uifnPopupClose('popupOrderDetail');
+							fnReOpenOrderDetailPopup();
+						}
+						uifnPopupClose('popupCancelRequestForm');
+					}
+				);
+			}
 		}
 	});
 }

+ 35 - 0
src/main/webapp/WEB-INF/views/order/ExchangeRequestForm.html

@@ -52,6 +52,11 @@
 						<!-- 네이버페이 주문형 교환승인 버튼 -->
 						<button type="button" class="btn btn-success" id="fnExchangeApprovalSubmit" onclick="fnExchange()">교환승인</button>
 					</th:block>
+					<th:block th:if="${ordChgSq > 0 and chgStat != 'G685_40'}">
+						<!-- 네이버페이 주문형 교환보류 버튼 -->
+						<button type="button" class="btn btn-success" id="fnExchangeHold" npayChangeHoldYn="N" onclick="fnNpayExchangeHold(this)">교환보류</button>
+						<button type="button" class="btn btn-success" id="fnReleaseExchangeHold" npayChangeHoldYn="Y" onclick="fnNpayExchangeHold(this)">교환보류해제</button>
+					</th:block>
 				</div>
 				
 				<table class="frmStyle">
@@ -241,6 +246,7 @@ var ordChgGb				= [[${ordChgGb}]];								// 변경요청변경구분
 var orderChangeDetailList;													// 취소/반품/교환요청 정보
 var chgOrdDtlStat;															// 교환상품상세상태값
 var delvAddrSq;																// 교환상품배송지일련번호
+var npayChangeHoldYn		= '';											// 네이버페이 주문형 반품/교환 보류 여부
 var selfGoodsYn 			= cancelRequestTargetList[0].selfGoodsYn;		// 자사,입점여부
 var wdBfSendYn				= ""; 
 
@@ -251,6 +257,7 @@ var temp2 = true;
 if (ordChgSq > 0) {
 	orderChangeDetailList	= [[${orderChangeDetailList}]];					// 취소/반품/교환요청 정보
 	exchangeInfoList		= [[${exchangeInfoList}]];						// 교환정보
+	npayChangeHoldYn		= orderChangeDetailList[0].npayChangeHoldYn;	// 네이버페이 주문형 반품/교환 보류 여부
 
 	if (ordChgGb == 'G681_40') {
 		chgReason			= orderChangeDetailList[0].chgReason;		// 변경사유코드
@@ -952,6 +959,25 @@ var fnExchangeCancel = function() {
 	});
 }
 
+// 네이버페이 주문형 교환보류 버튼 클릭 이벤트
+var fnNpayExchangeHold = function(param) {
+	let url = '/orderChange/nPay/order/exchange/hold';
+	let npayChangeHoldYn = $(param).attr('npayChangeHoldYn');
+	
+	let data = {};
+	data.cancelReqList = exchangeRequestList;
+	data.npayChangeHoldYn = npayChangeHoldYn;
+	data.ordChgSq = ordChgSq;
+	
+	let jsonData = JSON.stringify(data);
+	
+	gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+		uifnPopupClose('popupOrderDetail');
+		fnReOpenOrderDetailPopup();
+		uifnPopupClose('popupExchangeRequestForm');
+	});
+}
+
 // 우편번호 DAUM을 이용한 우편번호 팝업 레이어
 var fnOpenDaumAddr = function(loc) {
 	let daumZip = new daum.Postcode({
@@ -1380,6 +1406,15 @@ $(document).ready(function() {
 		if ("Y" == wdBfSendYn) {
 			$('#wdBfSendYn').attr('checked', "checked");
 		}
+
+		// 네이버페이 주문형 보류 버튼 처리
+		if (!gagajf.isNull(npayChangeHoldYn)) {
+			if (npayChangeHoldYn == 'Y') {
+				$('#fnExchangeHold').css('display', 'none');
+			} else {
+				$('#fnReleaseExchangeHold').css('display', 'none');
+			}
+		}
 	} else {
 		$('#chgerButton').css('display', 'none');						// 회수지 수정 버튼
 		$('#recipButton').css('display', 'none');						// 교환지 수정 버튼

+ 1 - 1
src/main/webapp/WEB-INF/views/order/OrderSellerDelvListForm.html

@@ -319,7 +319,7 @@ $("#btnSave").on("click", function(e) {
 
 	// 엑셀다운로드
 	var fnEndFunction = function(result){
-		mcxDialog.alert("성공적으로 저장되었습니다.");
+		//mcxDialog.alert("성공적으로 저장되었습니다.");
 		fnSearch();
 	}
 });

+ 74 - 15
src/main/webapp/WEB-INF/views/order/RtnReqForm.html

@@ -48,6 +48,8 @@
 					<button type="button" class="btn btn-success" id="rtnReqCancelBtn" onclick="fnCnclReq('rtnReqCancel');">반품철회</button>
 					<button type="button" class="btn btn-success" id="rtnToRtnBtn" onclick="fnCnclReq('rtnReq');">반품변경</button>
 					<button type="button" class="btn btn-success" id="rtnToExcBtn" onclick="fnRtnToExc();">교환변경</button>
+					<button type="button" class="btn btn-success" id="returnHold" npayChangeHoldYn="N" onclick="fnNpayReturnHold(this)">반품보류</button>
+					<button type="button" class="btn btn-success" id="releaseReturnHold" npayChangeHoldYn="Y" onclick="fnNpayReturnHold(this)">반품보류해제</button>
 				</div>
 				
 				<table class="frmStyle">
@@ -344,6 +346,7 @@ var chgMemo					= "";											// 변경사유메모
 var wdGb					= "";											// 회수방법
 var ordChgGb				= [[${ordChgGb}]];								// 주문변경요쳥변경구분
 var canRequestCancelYn		= "";											// 반품철회가능여부
+var npayChangeHoldYn		= '';											// 네이버페이 주문형 반품/교환 보류 여부
 
 // 변경요청정보
 if (ordChgSq > 0) {
@@ -351,6 +354,7 @@ if (ordChgSq > 0) {
 	chgMemo					= orderChangeDetailList[0].chgMemo;				// 변경사유메모
 	wdGb					= orderChangeDetailList[0].wdGb;				// 회수방법
 	canRequestCancelYn		= orderChangeDetailList[0].canRequestCancelYn;	// 반품철회가능여부
+	npayChangeHoldYn		= orderChangeDetailList[0].npayChangeHoldYn;	// 네이버페이 주문형 반품/교환 보류 여부
 }
 
 if (gagajf.isNull(ordChgGb)) {
@@ -1031,7 +1035,6 @@ var fnCalculateRefundAmt = function (obj) {
 	}
 
 	// 신청수량이 없거나 반품사유 선택 안했을 시 계산 안함
-	console.log($('#cancelRequestFrm input[name=chgReason]').val());
 	if (chk == 0 || $('#cancelRequestFrm input[name=chgReason]').val() == '') {
 		return false;
 	}
@@ -1378,6 +1381,7 @@ var fnCnclReq = function (reqGbn) {
 	var chgerRtnMemo	= "";
 	
 	// 반품신청
+	let chk = false;
 	if (reqGbn == "rtnReq") {
 		// 2021.05.25 수정
 		var ordDtlNoArr 		= [];
@@ -1411,10 +1415,12 @@ var fnCnclReq = function (reqGbn) {
 			if ($("#refundAccount .bankNm").eq(0).text() == null || $("#refundAccount .bankNm").eq(0).text() == '') {
 				mcxDialog.alert('환불계좌가 미등록 되어 있습니다.');
 				return false;
-			} 
+			} else {
+				chk = true
+			}
 			
 			accountNo 	= $("#refundAccount .accountNo").eq(0).text();
-			accountNm 	= $("#refundAccount .accoutNm").eq(0).text();
+			accountNm 	= $("#refundAccount .accountNm").eq(0).text();
 			bankCd 		= $("#refundAccount .bankCd").eq(0).text();
 		}
 		
@@ -1526,16 +1532,37 @@ var fnCnclReq = function (reqGbn) {
 		cancelBtnText		: "취소",
 		sureBtnText			: "확인",
 		sureBtnClick		: function(){
-			// 취소 실행
-			gagajf.ajaxJsonSubmit(
-				cnclUrl
-				, jsonData
-				, function() {
-					uifnPopupClose('popupOrderDetail');
-					fnReOpenOrderDetailPopup();
-					uifnPopupClose('popupReturnRequestForm');
-				}
-			);
+			if (chk) {
+				// 환불계좌 유효성 체크
+				gagajf.ajaxJsonSubmit('/business/account/check', jsonData, function(result) {
+					if (result.isValid) { // 유효하면 true
+						// 취소 실행
+						gagajf.ajaxJsonSubmit(
+							cnclUrl
+							, jsonData
+							, function () {
+								uifnPopupClose('popupOrderDetail');
+								fnReOpenOrderDetailPopup();
+								uifnPopupClose('popupReturnRequestForm');
+							}
+						);
+					} else {
+						mcxDialog.alert('환불계좌가 유효하지 않습니다.');
+						return false;
+					}
+				});
+			} else {
+				// 취소 실행
+				gagajf.ajaxJsonSubmit(
+					cnclUrl
+					, jsonData
+					, function () {
+						uifnPopupClose('popupOrderDetail');
+						fnReOpenOrderDetailPopup();
+						uifnPopupClose('popupReturnRequestForm');
+					}
+				);
+			}
 		}
 	});
 }
@@ -1743,6 +1770,25 @@ var fnChangeChgerInfo = function() {
 	});
 }
 
+// 네이버페이 주문형 반품보류 버튼 클릭 이벤트
+var fnNpayReturnHold = function(param) {
+	let url = '/orderChange/nPay/order/return/hold';
+	let npayChangeHoldYn = $(param).attr('npayChangeHoldYn');
+	
+	let data = {};
+	data.cancelReqList = cancelRequestTargetList;
+	data.npayChangeHoldYn = npayChangeHoldYn;
+	data.ordChgSq = ordChgSq;
+	
+	let jsonData = JSON.stringify(data);
+	
+	gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+		uifnPopupClose('popupOrderDetail');
+		fnReOpenOrderDetailPopup();
+		uifnPopupClose('popupReturnRequestForm');
+	});
+}
+
 $(document).ready(function() {
 	// 1. 그리드생성
 	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsCancelReqList);			// 주문정보
@@ -1772,10 +1818,14 @@ $(document).ready(function() {
 	} else {
 		fnBindOrderRfAccountInfo();
 	}
-	
+
 	// 4. 회수지정보설정
 	fnSetChger();
-	
+
+	// 네이버페이 주문형 보류 버튼 처리
+	$('#returnHold').css('display', 'none');
+	$('#releaseReturnHold').css('display', 'none');
+
 	// 5. 반품신청, 반품철회 버튼 제어
 	if (ordChgSq > 0) {
 		$("#rtnReqBtn").css("display", "none");
@@ -1825,6 +1875,15 @@ $(document).ready(function() {
 		} else {
 			$('#delvCdList').css('display', 'none');
 		}
+		
+		// 네이버페이 주문형 보류 버튼 처리
+		if (!gagajf.isNull(npayChangeHoldYn)) {
+			if (npayChangeHoldYn == 'Y') {
+				$('#releaseReturnHold').css('display', '');
+			} else {
+				$('#returnHold').css('display', '');
+			}
+		}
 	} else {
 		$("#rtnReqCompleteBtn").css("display", "none");
 		$("#rtnReqCancelBtn").css("display", "none");