Explorar o código

무통장입금 주문 입금대기 상태에서 BOS 취소불가 ST24PRJ-499

jsh77b %!s(int64=4) %!d(string=hai) anos
pai
achega
6942bb1c78

+ 60 - 0
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -446,6 +446,66 @@ public class TsaOrderChangeController extends TsaBaseController {
 		return mav;
 	}
 	
+	/**
+	 * 결제대기 입금 전 전체취소
+	 * 
+	 * @param ordNo - 주문번호
+	 * @return ModelAndView
+	 * @author jsh77b
+	 * @since 2021. 11. 08
+	 */
+	@PostMapping("/allCncl")
+	@ResponseBody
+	public GagaMap allCncl(@RequestBody OrderChange orderChange) {
+		
+		if (orderChange == null) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+		
+		int userNo = TsaSession.getInfo().getUserNo();
+		orderChange.setRegNo(userNo);
+		orderChange.setUpdNo(userNo);
+		
+		log.info("orderChange.getCustNo() ::: {}", orderChange.getCustNo());
+		
+		// 2. 취소완료 처리
+		GagaMap result = coreOrderChangeService.orderCancelPreInfo(orderChange, userNo);
+		
+		// 3. 취소완료 카카오알림톡 발송
+		int ordChgSq = result.getInt("ordChgSq");
+		
+		if (ordChgSq > 0) {
+			try {
+				// 취소 알림톡 관련 정보 조회
+				orderChange = coreOrderChangeService.getKakaoOrderCancelInfo(ordChgSq);
+
+				// 취소 알림톡 발송
+				if (StringUtils.isNotBlank(orderChange.getOrdPhnno())) {
+					coreKakaotalkService.sendOrderCancelComplete(orderChange, userNo);
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+			
+			try {
+				// 취소 안내 메일 정보 조회
+				GagaMap replaceInfo = coreOrderChangeService.getMailOrderCancelReplaceInfo(orderChange);
+
+				// 취소 안내 메일 발송
+				if (orderChange != null && StringUtils.isNotBlank(replaceInfo.getString("ordEmail"))) {
+					coreMailService.sendOrderCancel(replaceInfo, userNo);
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+
+		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+		result.set("message", message.getMessage("CANCEL_0001"));
+		
+		return result;
+	}
+	
 	/**
 	 * 반품신청화면 (관리자)
 	 * 

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

@@ -197,6 +197,7 @@
 				</table>
 									
 				<h4>주문상품정보</h4>
+				<button type="button" class="btn btnRight btn-base btn-sm" id="btnAllCncl" style="margin-left:10px;" >입금전전체취소</button>
 				<div id="gridOrderGoodsInfo" style="width:100%; height:200px;" class="ag-theme-balham"></div>
 				
 				<div id="wrapOrderFregift">
@@ -258,7 +259,7 @@ var orderDeliveryFeeCnt		= [[${orderDeliveryFeeInfo.size()}]];	// 배송비정
 var orderPaymentCnt			= [[${orderPaymentInfo.size()}]];		// 결제정보
 var orderChangeCnt 			= [[${orderChangeInfo.size()}]];		// 취소/반품/교환요청 정보
 var orderRefundCnt 			= [[${orderRefundInfo.size()}]];		// 환불정보
-var roleCd 					= [[${sessionInfo.roleCd}]];			// 권한코드 
+var roleCd 					= [[${sessionInfo.roleCd}]];			// 권한코드
 
 // 2021.05.12 
 var hiddenTemp				= true;
@@ -1086,6 +1087,7 @@ var pgGb 			= orderInfo[0].pgGb;
 var payMeans 		= orderInfo[0].payMeans;
 var payMeansNm		= orderInfo[0].payMeansNm;
 var cardNm			= orderInfo[0].cardNm;
+var custNo			= orderInfo[0].custNo;
 
 // 팝업닫기
 var fnOrderDetailClose = function(){
@@ -1228,6 +1230,10 @@ $(document).ready(function () {
 	var pntDcSumAmt			= 0;			// 포인트 결제액
 	var gfcdUseSumAmt		= 0;			// 상품권 결제액
 	var savePntSumAmt		= 0;			// 적립포인트
+	var allCnclYn			= "N"			// 전체취소여부
+	
+	var ordDtlNoArr			= [];			// 주문상세배열
+	var cnclRtnReqQtyArr	= [];			// 주문상세신청수량배열
 	
 	for (i=0 ; i<orderGoodsInfo.length ; i++) {
 		listSumAmt			+= (parseInt(orderGoodsInfo[i].listPrice) + parseInt(orderGoodsInfo[i].optAddPrice)) * (orderGoodsInfo[i].ordQty - orderGoodsInfo[i].cnclRtnQty);
@@ -1244,8 +1250,58 @@ $(document).ready(function () {
 		gfcdUseSumAmt		+= parseInt(orderGoodsInfo[i].gfcdUseAmt);
 		
 		savePntSumAmt		+= parseInt(orderGoodsInfo[i].savePntAmt);
+		
+		// 2021.11.08 입금대기상태일때 전체취소가능
+		if (orderGoodsInfo[i].ordDtlStat == "G013_10") {
+			allCnclYn = "Y";
+		}
+		
+		ordDtlNoArr.push(orderGoodsInfo[i].ordDtlNo);
+		cnclRtnReqQtyArr.push(orderGoodsInfo[i].ordQty);
+	}
+	
+	// 2021.11.08 입금대기상태일때 전체취소가능
+	if (allCnclYn == "Y") {
+		$("#btnAllCncl").show();
+	} else {
+		$("#btnAllCncl").hide();
 	}
 	
+	// 2021.11.08 입금전 전체취소기능
+	$("#btnAllCncl").on("click", function(){
+		mcxDialog.confirm('전체취소 처리하시겠습니까?', {
+			cancelBtnText	: "취소",
+			sureBtnText		: "확인",
+			sureBtnClick	: function(){
+				
+				// 취소요청 데이터 설정
+				let url = '/orderChange/allCncl';
+				
+				// 전체 취소 처리 (입금전취소여서 계좌정보는 필요없음)
+				let data = {};
+				data.ordNo 				= ordNo;
+				data.chgReason 			= 'G686_10';
+				data.chgReasonNm 		= '고객변심';
+				data.accountNo 			= "";
+				data.accountNm 			= "";
+				data.bankCd 			= "";
+				data.isCustomer 		= true;
+				data.reqGbn 			= 'cnclComplete';
+				data.ordDtlNoArr 		= ordDtlNoArr;
+				data.cnclRtnReqQtyArr 	= cnclRtnReqQtyArr;
+				data.custNo				= custNo;
+				
+				let jsonData = JSON.stringify(data);
+
+				// 전체취소 처리
+				gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+					uifnPopupClose('popupOrderDetail');
+					fnReOpenOrderDetailPopup();
+				}, true);
+			}
+		});
+	});
+	
 	goodsDcSumAmt	= listSumAmt - currSumAmt;
 	tmtbDcSumAmt	= tmtb1DcSumAmt + tmtb2DcSumAmt;
 	cpnDcSumAmt		= goodsCpnDcSumAmt + cartCpnDcSumAmt;