Browse Source

비회원 반품 화면 개발 임시 커밋

card007 5 years ago
parent
commit
58f53af981

+ 165 - 185
src/main/java/com/style24/front/biz/web/TsfNoMemberController.java

@@ -423,12 +423,12 @@ public class TsfNoMemberController extends TsfBaseController {
 	}
 
 	/**
-	 * 마이페이지 취소신청
+	 * 비회원 취소신청
 	 *
 	 * @param Collection<Order>
 	 * @return GagaMap
 	 * @author card007
-	 * @since 2021. 03. 22
+	 * @since 2021. 04. 28
 	 */
 	@SuppressWarnings("unchecked")
 	@PostMapping("/cancel")
@@ -465,7 +465,170 @@ public class TsfNoMemberController extends TsfBaseController {
 		return cartService.getAddCartInfoForMypage(cart);
 	}
 
+	/**
+	 * 비회원 반품신청 화면
+	 *
+	 * @param Order
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 05. 02
+	 */
+	@PostMapping("/return/form")
+	@ResponseBody
+	public ModelAndView returnForm(Order order) {
+		ModelAndView mav = new ModelAndView();
+
+		// 주문번호 설정
+		mav.addObject("ordNo", order.getOrdNo());
+
+		// 로그인여부 설정
+		mav.addObject("isLogin", false);
+
+		// 반품 가능 리스트 조회
+		order.setChgGb(TscConstants.OrderChangeGb.RETURN.value());
+		GagaMap map = orderChangeService.getReturnListForMypage(order);
+		Order oneData = (Order)map.get("oneData");
+		mav.addObject("returnList", map);
+		mav.addObject("oneData", oneData);
+
+		// 주문 결제정보 조회
+		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
+
+		// 주문 배송지 정보 조회
+		mav.addObject("deliveryAddrInfo", orderService.getOrderDeliveryAddrInfo(order));
+
+		// 반품 사유 목록 조회
+		mav.addObject("returnReason", rendererService.getCommonCodeList("G688", "Y"));
+
+		mav.setViewName(super.getDeviceViewName("/mypage/NoMemberReturnForm"));
+
+		return mav;
+	}
+
+	/**
+	 * 반품신청
+	 *
+	 * @param OrderChange
+	 * @return GagaMap
+	 * @author card007
+	 * @since 2021. 05. 02
+	 */
+	@SuppressWarnings("unchecked")
+	@PostMapping("/return")
+	@ResponseBody
+	public GagaMap rtnReq(@RequestBody OrderChange orderChange) {
+		if (orderChange == null) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+
+		// TODO
+		// @ 주문취소시 상태값 체크
+		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
+
+		// 2. 환불 사전 정보 조회
+		GagaMap refundPreInfo = coreOrderChangeService.getRefundPreInfo(orderChange);
+		List<Order> returnReqList = (List<Order>)refundPreInfo.get("cnclReqList");
+
+		// 3. 환불금액계산
+		GagaMap result = coreOrderRefundService.cnclRtnRefundAmt(returnReqList);
+
+		// 4. 주문변경 기본정보 설정
+		result.set("ordNo", orderChange.getOrdNo());					// 주문번호
+		result.setInt("custNo", 0);										// 고객번호
+		result.set("chgReason", orderChange.getChgReason());			// 변경사유
+		result.set("chgMemo", orderChange.getChgMemo());				// 변경메모
+
+		result.set("accountNo", orderChange.getAccountNo());			// 환불계좌번호
+		result.set("accountNm", orderChange.getAccountNm());			// 환불계좌예금주명
+		result.set("bankCd", orderChange.getBankCd());					// 환불계좌은행코드
+
+		result.set("isCustomer", orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
+		result.set("wdGb", orderChange.getWdGb());						// 회수방법
+		result.set("wdInvoiceNo", orderChange.getWdInvoiceNo());		// 회수송장번호
+
+		// 5. 주문변경 회수지정보 추가
+		result.set("chgerNm", orderChange.getChgerNm());				// 변경자명
+		result.set("chgerEmail", orderChange.getChgerEmail());			// 변경자이메일주소
+		result.set("chgerZipcode", orderChange.getChgerZipcode());		// 회수지우편번호
+		result.set("chgerBaseAddr", orderChange.getChgerBaseAddr());	// 회수지기본주소
+		result.set("chgerDtlAddr", orderChange.getChgerDtlAddr());		// 회수지상세주소
+		result.set("chgerPhnno", orderChange.getChgerPhnno());			// 변경자핸드폰번호
+		result.set("chgerTelno", orderChange.getChgerTelno());			// 변경자전화번호
+		result.set("chgerRtnMemo", orderChange.getChgerRtnMemo());		// 반품메모
+
+		// 6. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
+		coreOrderChangeService.returnRequest(result);
+
+		result.set("status", GagaResponseStatus.SUCCESS.getCode());
+		if (orderChange.getAddPayCost() == 0) {
+			result.set("message", message.getMessage("RETURN_0001"));
+		}
+
+		return result;
+	}
+
+	/**
+	 * 반품요청철회
+	 *
+	 * @param OrderChange
+	 * @return GagaResponse
+	 * @author card007
+	 * @since 2021. 04. 20
+	 */
+	@PostMapping("/return/cancel")
+	@ResponseBody
+	public GagaResponse rtnReqCancel(@RequestBody OrderChange orderChange) {
+
+		if (orderChange== null) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+
+		// 1. 반품요청철회 정보 설정
+		int custNo = TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0;
+		GagaMap map = new GagaMap();
+		map.set("ordNo"			, orderChange.getOrdNo());
+		map.set("ordChgSq"		, orderChange.getOrdChgSq());
+		map.set("custNo"		, custNo);
+		map.set("ipAddress"		, TsfSession.getIpAddress());
+
+		// 2.반품요청철회 
+		coreOrderChangeService.rtnReqCancel(map, custNo);
+
+		return super.ok(message.getMessage("RETURN_0002"));
+		// return super.ok();
+	}
+
+	/**
+	 * 환불계좌 등록 팝업
+	 *
+	 * @param OrderChange
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 04. 05
+	 */
+	@ResponseBody
+	@RequestMapping(value = "/refund/account/register/popup/form")
+	public ModelAndView registerRefundAccountPopupForm(@RequestBody OrderChange orderChange) {
+		ModelAndView mav = new ModelAndView();
+
+		// 계좌인증용 은행코드 조회
+		mav.addObject("bankList", rendererService.getAvailCommonCodeList("G942"));
+
+		// 계좌주명 설정
+		mav.addObject("accountNm", orderChange.getAccountNm());
+
+		// 주문번호 설정
+		mav.addObject("ordNo", orderChange.getOrdNo());
+
+		mav.setViewName(super.getDeviceViewName("popup/RefundAccountAddPopupForm"));
+
+		return mav;
+	}
+
+	// =========================================================================================
 	// ==================================    아직 처리 안함    =====================================
+	// =========================================================================================
+
 	/**
 	 * 마이페이지 교환신청 화면
 	 *
@@ -644,189 +807,6 @@ public class TsfNoMemberController extends TsfBaseController {
 		return result;
 	}
 
-	/**
-	 * 마이페이지 반품신청 화면
-	 *
-	 * @param Order
-	 * @return ModelAndView
-	 * @author card007
-	 * @since 2021. 02. 25
-	 */
-	@PostMapping("/return/form")
-	@ResponseBody
-	public ModelAndView returnForm(Order order) {
-		ModelAndView mav = new ModelAndView();
-
-		// 주문번호 설정
-		mav.addObject("ordNo", order.getOrdNo());
-
-		// 고객번호 설정
-		int custNo = TsfSession.getInfo().getCustNo();
-		order.setCustNo(custNo);
-		mav.addObject("custNo", custNo);
-
-		// 고객정보 조회
-		Customer customer = new Customer();
-		customer.setSiteCd(TscConstants.Site.STYLE24.value());
-		customer.setCustNo(custNo);
-		customer.setCustStat(TscConstants.CustStat.ACTIVE.value());
-		customer = coreCustomerService.getCustomerInfo(customer);
-
-		mav.addObject("customerInfo", customer);
-
-		// 로그인여부 설정
-		mav.addObject("isLogin", TsfSession.isLogin());
-
-		// 반품 가능 리스트 조회
-		order.setChgGb(TscConstants.OrderChangeGb.RETURN.value());
-		GagaMap map = orderChangeService.getReturnListForMypage(order);
-		Order oneData = (Order)map.get("oneData");
-		mav.addObject("returnList", map);
-		mav.addObject("oneData", oneData);
-
-		// 주문 결제정보 조회
-		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
-
-		// 주문 배송지 정보 조회
-		mav.addObject("deliveryAddrInfo", orderService.getOrderDeliveryAddrInfo(order));
-
-		// 반품 사유 목록 조회
-		mav.addObject("returnReason", rendererService.getCommonCodeList("G688", "Y"));
-
-		mav.setViewName(super.getDeviceViewName("/mypage/MypageReturnForm"));
-
-		return mav;
-	}
-
-	/**
-	 * 반품신청
-	 *
-	 * @param OrderChange
-	 * @return GagaMap
-	 * @author card007
-	 * @since 2021. 03. 30
-	 */
-	@SuppressWarnings("unchecked")
-	@PostMapping("/return")
-	@ResponseBody
-	public GagaMap rtnReq(@RequestBody OrderChange orderChange) {
-		if (orderChange == null) {
-			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-		}
-
-		// TODO
-		// @ 주문취소시 상태값 체크
-		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
-
-		// 1. 세션회원조회
-		int custNo = TsfSession.getInfo().getCustNo();
-		orderChange.setCustNo(custNo);
-
-		// 2. 환불 사전 정보 조회
-		GagaMap refundPreInfo = coreOrderChangeService.getRefundPreInfo(orderChange);
-		List<Order> returnReqList = (List<Order>)refundPreInfo.get("cnclReqList");
-		String allLastCanYn = refundPreInfo.getString("allLastCanYn");
-		String supplyCompCd = refundPreInfo.getString("supplyCompCd");
-
-		// 3. 환불금액계산
-		GagaMap result = coreOrderRefundService.cnclRtnRefundAmt(returnReqList);
-
-		// 4. 주문변경 기본정보 설정
-		result.set("ordNo", orderChange.getOrdNo());					// 주문번호
-		result.setInt("custNo", custNo);								// 고객번호
-		// result.set("ordChgSq", orderChange.getOrdChgSq());			// 주문변경번호
-		result.set("chgReason", orderChange.getChgReason());			// 변경사유
-		result.set("chgMemo", orderChange.getChgMemo());				// 변경메모
-
-		result.set("accountNo", orderChange.getAccountNo());			// 환불계좌번호
-		result.set("accountNm", orderChange.getAccountNm());			// 환불계좌예금주명
-		result.set("bankCd", orderChange.getBankCd());					// 환불계좌은행코드
-
-		result.setString("allLastCanYn", allLastCanYn);					// 전체 마지막 취소 여부
-		result.set("isCustomer", orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
-		result.set("wdGb", orderChange.getWdGb());						// 회수방법
-		result.set("wdInvoiceNo", orderChange.getWdInvoiceNo());		// 회수송장번호
-
-		// 5. 주문변경 회수지정보 추가
-		result.set("chgerNm", orderChange.getChgerNm());				// 변경자명
-		result.set("chgerEmail", orderChange.getChgerEmail());			// 변경자이메일주소
-		result.set("chgerZipcode", orderChange.getChgerZipcode());		// 회수지우편번호
-		result.set("chgerBaseAddr", orderChange.getChgerBaseAddr());	// 회수지기본주소
-		result.set("chgerDtlAddr", orderChange.getChgerDtlAddr());		// 회수지상세주소
-		result.set("chgerPhnno", orderChange.getChgerPhnno());			// 변경자핸드폰번호
-		result.set("chgerTelno", orderChange.getChgerTelno());			// 변경자전화번호
-		result.set("chgerRtnMemo", orderChange.getChgerRtnMemo());		// 반품메모
-
-		// 6. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
-		coreOrderChangeService.returnRequest(result);
-		// coreOrderChangeService.rtnReq(result, custNo);
-
-		result.set("status", GagaResponseStatus.SUCCESS.getCode());
-		if (orderChange.getAddPayCost() == 0) {
-			result.set("message", message.getMessage("RETURN_0001"));
-		}
-
-		return result;
-	}
-
-	/**
-	 * 반품요청철회
-	 *
-	 * @param OrderChange
-	 * @return GagaResponse
-	 * @author card007
-	 * @since 2021. 04. 20
-	 */
-	@PostMapping("/return/cancel")
-	@ResponseBody
-	public GagaResponse rtnReqCancel(@RequestBody OrderChange orderChange) {
-
-		if (orderChange== null) {
-			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-		}
-
-		// 1. 반품요청철회 정보 설정
-		int custNo = TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0;
-		GagaMap map = new GagaMap();
-		map.set("ordNo"			, orderChange.getOrdNo());
-		map.set("ordChgSq"		, orderChange.getOrdChgSq());
-		map.set("custNo"		, custNo);
-		map.set("ipAddress"		, TsfSession.getIpAddress());
-
-		// 2.반품요청철회 
-		coreOrderChangeService.rtnReqCancel(map, custNo);
-
-		return super.ok(message.getMessage("RETURN_0002"));
-		// return super.ok();
-	}
-
-	/**
-	 * 환불계좌 등록 팝업
-	 *
-	 * @param OrderChange
-	 * @return ModelAndView
-	 * @author card007
-	 * @since 2021. 04. 05
-	 */
-	@ResponseBody
-	@RequestMapping(value = "/refund/account/register/popup/form")
-	public ModelAndView registerRefundAccountPopupForm(@RequestBody OrderChange orderChange) {
-		ModelAndView mav = new ModelAndView();
-
-		// 계좌인증용 은행코드 조회
-		mav.addObject("bankList", rendererService.getAvailCommonCodeList("G942"));
-
-		// 계좌주명 설정
-		mav.addObject("accountNm", orderChange.getAccountNm());
-
-		// 주문번호 설정
-		mav.addObject("ordNo", orderChange.getOrdNo());
-
-		mav.setViewName(super.getDeviceViewName("popup/RefundAccountAddPopupForm"));
-
-		return mav;
-	}
-
 	/**
 	 * 마이페이지 취반교 목록 화면
 	 *

+ 20 - 22
src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html

@@ -347,34 +347,32 @@
 		let jsonData = JSON.stringify(data);
 
 		gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
-			// 환불포인트, 환불상품권 금액 계산
-			let refundPoint = Number(result.spanPntDcAmt);
-			let refundGiftCard = Number(result.spanGfcdUseAmt);
-
-			let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);
-			let sumDeliveryFee = Number(result.sumDeliveryFee);
-			let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);
-			let spanCpnDcAmt = Number(result.spanCpnDcAmt);
-			let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);
-			let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);
-			let spanRefundAmt = Number(result.spanRefundAmt);
-
-			let goodsCancelAmt = spanCnclRtnAmt;										// 상품취소금액
-			let deliveryFee = sumDeliveryFee - spanTotDeliveryFee;						// 배송비
-			let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;		// 할인금액 차감(쿠폰+다다익선+선포인트)
-			let refundPayAmt = spanRefundAmt;											// 결제금액 환불
-			let returnAmt = refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
-
+			let refundPoint = Number(result.spanPntDcAmt);							// 환불 포인트 금액
+			let refundGiftCard = Number(result.spanGfcdUseAmt);						// 환불 상품권 금액
+			let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);						// 환불 상품 금액
+			let spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 쿠폰 할인 차감 금액
+			let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);						// 다다익선 할인 차감 금액
+			let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);					// 선포인트 할인 차감 금액
+			let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비
+			let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
+			let spanRefundAmt = Number(result.spanRefundAmt);						// 환불 예정 금액
+			
+			let goodsCancelAmt = spanCnclRtnAmt;									// 상품취소금액
+			let deliveryFee = sumDeliveryFee - spanTotDeliveryFee;					// 배송비 (마지막 취소 시 돌려줘야할 원주문 배송비 - 추가배송비)
+			let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;	// 할인금액 차감 (쿠폰+다다익선+선포인트)
+			let refundPayAmt = spanRefundAmt;										// 결제금액 환불 (환불상품금액 - 할인차감금액 - 배송비)
+			let returnAmt = refundPayAmt + refundPoint + refundGiftCard;			// 환불예정금액
+			
 			// 추가배송비 영역 설정
 			if (refundPayAmt < 0) {
-				refundPayAmt = spanRefundAmt;
-				$('#addDeliveryFee').css('display', '');
-				$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
+				//refundPayAmt = spanRefundAmt;
+				//$('#addDeliveryFee').css('display', '');
+				//$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
 				addPayCost = spanTotDeliveryFee;
 			} else {
 				addPayCost = 0;
 			}
-
+			
 			// 금액 설정
 			$('#returnAmt').text(returnAmt.addComma());
 			$('#goodsCancelAmt').text(goodsCancelAmt.addComma());

+ 16 - 16
src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html

@@ -510,15 +510,17 @@
 			let jsonData = JSON.stringify(data);
 			
 			gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
-				let refundPoint = Number(result.spanPntDcAmt);
-				let refundGiftCard = Number(result.spanGfcdUseAmt);
-				let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);
-				let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);
-				let spanCpnDcAmt = Number(result.spanCpnDcAmt);
-				let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);
-				let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);
-				let spanRefundAmt = Number(result.spanRefundAmt);
-				let spanTotRtnDelvFee = Number(result.spanTotRtnDelvFee);
+				let refundPoint = Number(result.spanPntDcAmt);							// 환불 포인트 금액
+				let refundGiftCard = Number(result.spanGfcdUseAmt);						// 환불 상품권 금액
+				let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);						// 환불 상품 금액
+				let spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 쿠폰 할인 차감 금액
+				let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);						// 다다익선 할인 차감 금액
+				let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);					// 선포인트 할인 차감 금액
+				let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비 (반품에서는 안돌려줘서 항상 0일듯)
+				let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
+				let spanTotRtnDelvFee = Number(result.spanTotRtnDelvFee);				// 반품배송비 (회수요청으로 인한 반품 배송비)
+				let spanRealCnclRtnAmt = Number(result.spanRealCnclRtnAmt);				// 환불 상품 실결제 금액 (환불상품금액 - 할인차감금액)
+				let spanRefundAmt = spanRealCnclRtnAmt + sumDeliveryFee;				// 환불예정금액 (환불상품실결제금액 + 원주문배송비)
 				
 				// 반품 사유 및 반품 방식 배송비 계산
 				if (result.spanRealCnclRtnAmt > 0) {
@@ -526,6 +528,7 @@
 					// 회사사유 : 추가배송비 0, 반품배송비 0
 					if (!isCustomer) {
 						spanTotRtnDelvFee = 0;
+						spanTotDeliveryFee = 0;
 					}
 					// 고객사유(직접발송) : 반품배송비 0
 					else if (wdGb == 'D') {
@@ -533,16 +536,13 @@
 					}
 				} else {
 					spanTotRtnDelvFee = 0;
+					spanTotDeliveryFee = 0;
 				}
 				
 				let goodsCancelAmt = spanCnclRtnAmt;										// 상품취소금액
-				let addDelvFee = spanTotRtnDelvFee;											// 추가배송비
-				let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;		// 할인금액 차감(쿠폰+다다익선+선포인트)
-				let refundPayAmt = spanRefundAmt - spanTotRtnDelvFee;						// 결제금액 환불
-				
-				if (!isCustomer) {
-					refundPayAmt += spanTotDeliveryFee;
-				}
+				let addDelvFee = spanTotRtnDelvFee + spanTotDeliveryFee;					// 추가배송비
+				let deductDcAmt = spanCpnDcAmt + spanTmtbDcAmt + spanPrePntDcAmt;			// 할인금액 차감(쿠폰+다다익선+선포인트)
+				let refundPayAmt = spanRefundAmt - addDelvFee;								// 결제금액 환불
 				
 				// 추가배송비 영역 설정
 				if (refundPayAmt < 0) {

+ 18 - 20
src/main/webapp/WEB-INF/views/web/mypage/NoMemberCancelFormWeb.html

@@ -2,7 +2,7 @@
 <html lang="ko"
 	xmlns:th="http://www.thymeleaf.org"
 	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
-	layout:decorator="web/common/layout/MypageLayoutWeb">
+	layout:decorator="web/common/layout/NoMemberLayoutWeb">
 <!--
  *******************************************************************************
  * @source  : NoMemberCancelFormWeb.html
@@ -347,29 +347,27 @@
 		let jsonData = JSON.stringify(data);
 
 		gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
-			// 환불포인트, 환불상품권 금액 계산
-			let refundPoint = Number(result.spanPntDcAmt);
-			let refundGiftCard = Number(result.spanGfcdUseAmt);
+			let refundPoint = Number(result.spanPntDcAmt);							// 환불 포인트 금액
+			let refundGiftCard = Number(result.spanGfcdUseAmt);						// 환불 상품권 금액
+			let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);						// 환불 상품 금액
+			let spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 쿠폰 할인 차감 금액
+			let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);						// 다다익선 할인 차감 금액
+			let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);					// 선포인트 할인 차감 금액
+			let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비
+			let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
+			let spanRefundAmt = Number(result.spanRefundAmt);						// 환불 예정 금액
 
-			let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);
-			let sumDeliveryFee = Number(result.sumDeliveryFee);
-			let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);
-			let spanCpnDcAmt = Number(result.spanCpnDcAmt);
-			let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);
-			let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);
-			let spanRefundAmt = Number(result.spanRefundAmt);
-
-			let goodsCancelAmt = spanCnclRtnAmt;										// 상품취소금액
-			let deliveryFee = sumDeliveryFee - spanTotDeliveryFee;						// 배송비
-			let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;		// 할인금액 차감(쿠폰+다다익선+선포인트)
-			let refundPayAmt = spanRefundAmt;											// 결제금액 환불
-			let returnAmt = refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
+			let goodsCancelAmt = spanCnclRtnAmt;									// 상품취소금액
+			let deliveryFee = sumDeliveryFee - spanTotDeliveryFee;					// 배송비 (마지막 취소 시 돌려줘야할 원주문 배송비 - 추가배송비)
+			let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;	// 할인금액 차감 (쿠폰+다다익선+선포인트)
+			let refundPayAmt = spanRefundAmt;										// 결제금액 환불 (환불상품금액 - 할인차감금액 - 배송비)
+			let returnAmt = refundPayAmt + refundPoint + refundGiftCard;			// 환불예정금액
 
 			// 추가배송비 영역 설정
 			if (refundPayAmt < 0) {
-				refundPayAmt = spanRefundAmt;
-				$('#addDeliveryFee').css('display', '');
-				$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
+				//refundPayAmt = spanRefundAmt;
+				//$('#addDeliveryFee').css('display', '');
+				//$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');
 				addPayCost = spanTotDeliveryFee;
 			} else {
 				addPayCost = 0;

+ 635 - 0
src/main/webapp/WEB-INF/views/web/mypage/NoMemberReturnFormWeb.html

@@ -0,0 +1,635 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="web/common/layout/NoMemberLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : NoMemberReturnFormWeb.html
+ * @desc    : 비회원 > 반품신청 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.05.02   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+	<div class="content myOrderView">
+		<div class="cont_body">
+			<!-- CONT-BODY -->
+			<div class="lnb">
+				<div class="lnb_tit">
+					<h2>마이페이지</h2>
+				</div>
+				<div class="lnb_list">
+					<ul id="mypageLnbList"></ul>
+				</div>
+			</div>
+			<div class="cont">
+				<form id="returnForm">
+					<input type="hidden" name="accountNo" th:value="${oneData.accountNo}"/>
+					<input type="hidden" name="accountNm" th:value="${oneData.accountNm}"/>
+					<input type="hidden" name="bankCd" th:value="${oneData.bankCd}"/>
+					<div class="sec_head">
+						<h3 class="subH1">반품 신청</h3>
+						<span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${oneData.ordNo}"></em></span>
+					</div>
+					<div class="sec_body">
+						<div class="part_goods">
+							<div class="goods_head">
+								<p>주문일 <span th:text="${oneData.ordDt}"></span></p>
+							</div>
+							<div class="goods_cont">
+								<th:block th:if="${returnList.returnList}" th:each="return, status : ${returnList.returnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+								<!-- 주문상품 -->
+								<div class="goods_info">
+									<div class="order_desc">
+										<div class="goods_box">
+											<div class="gd_item">
+												<a href="javascript:void(0)" th:attr="goodsCd=${return.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+													<span class="thumb">
+														<img th:src="${imageUrl + '/' + return.sysImgNm}" width="100%" alt="">
+													</span>
+													<p>
+														<span class="brand" th:text="${return.brandNm}"></span>
+														<span class="tag primary" th:if="${return.shotDelvYn == 'Y'}">총알배송</span>
+														<span class="tag" th:if="${return.shotDelvYn == 'N' and return.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
+														<span class="tag" th:if="${return.selfGoodsYn == 'N'}">업체직배송</span>
+													</p>
+													<p>
+														<span class="name" th:text="${return.goodsNm}"></span>
+													</p>
+												</a>
+											</div>
+											<div class="gd_opt">
+												<div class="option_wrap">
+													<span class="title sr-only">주문 옵션</span>
+													<span class="option" th:if="${return.goodsType == 'G056_S'}" th:each="option, status : ${return.colorNmArr}" th:text="|${return.itemNmArr[status.index]} / ${option} / ${return.optCd2Arr[status.index]}|"></span>
+													<span class="option" th:unless="${return.goodsType == 'G056_S'}" th:text="|${return.colorNm} / ${return.optCd2}|"></span>
+												</div>
+											</div>
+											<div class="gd_calc">
+												<p>
+													<span class="count"><em th:text="${return.ordQty - return.cnclRtnQty}"></em>개</span>
+												</p>
+												<p>
+													<span class="price_org" th:if="${(return.ordAmt - return.cnclRtnAmt - return.cpn1DcAmt) > (return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt)}"><em th:text="${#numbers.formatInteger(return.ordAmt - return.cnclRtnAmt - return.cpn1DcAmt, 1, 'COMMA')}"></em>원</span>
+													<span class="price_sale"><em th:text="${#numbers.formatInteger(return.realOrdAmt + return.pntDcAmt + return.gfcdUseAmt, 1, 'COMMA')}"></em>원</span>
+												</p>
+											</div>
+										</div>
+										<div class="button_box">
+											<div class="count_modify">
+												<span class="txt">수량</span>
+												<form class="form_wrap">
+													<div class="form_field">
+														<div class="select_custom select_count">
+															<div class="combo">
+																<input type="hidden" name="chgQty" value="0" th:attr="ordDtlNo=${return.ordDtlNo}, ordCanChgQty=${return.ordCanChgQty}"/>
+																<div class="select">선택</div>
+																<ul class="list">
+																	<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
+																	<li class="selected" qty="0" onclick="fnChangeReturnQty(this);">선택</li>
+																	<li th:if="${return.ordCanChgQty > 0}" th:each="num : ${#numbers.sequence(1,return.ordCanChgQty)}" th:attr="qty=${num}" th:text="${num}" onclick="fnChangeReturnQty(this);"></li>
+																</ul>
+															</div>
+														</div>
+													</div>
+												</form>
+											</div>
+										</div>
+									</div>
+									<div class="order_text">
+										<p>반품하실 상품의 수량을 선택하신 후 반품 신청을 하실 수 있습니다.</p>
+									</div>
+								</div>
+								<!-- //주문상품 -->
+								</th:block>
+							</div>
+						</div>
+						<h4 class="subH3">반품 사유</h4>
+						<div class="tbl type1">
+							<table>
+								<tbody>
+									<tr>
+										<td>
+											<div class="form_field">
+												<div class="select_custom select_reason">
+													<div class="combo">
+														<input type="hidden" name="chgReason"/>
+														<div class="select">반품 사유를 선택하세요.</div>
+														<ul class="list">
+															<!-- 선택처리 class="selected" / 선택불가 aria-disabled="true" 추가  -->
+															<li class="selected">반품 사유를 선택하세요.</li>
+															<li th:if="${returnReason}" th:each="oneData, status : ${returnReason}" th:attr="chgReason=${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnChangeReturnReason(this);"></li>
+														</ul>
+													</div>
+												</div>
+											</div>
+										</td>
+									</tr>
+									<tr>
+										<td>
+											<div class="form_field">
+												<div class="input_wrap">
+													<textarea class="doc_reason" name="chgMemo" id="chgMemo" cols="30" rows="10" placeholder="자세한 사유를 입력해주세요."  onkeyup="fnGetTextLength(this, 200);" style="resize: none;"></textarea>
+													<p class="txt_cnt"><span id="return_cnt" class="c_primary">0</span>/200</p>
+												</div>
+											</div>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						<h4 class="subH3 wdGb">반품 방식 선택</h4>
+						<div class="tbl type1 wdGb">
+							<table>
+								<tbody>
+									<tr>
+										<td>
+											<div class="retrieve_method">
+												<div class="form_field">
+													<div>
+														<input type="radio" name="wdGb" id="withdraw" value="W" checked>
+														<label for="withdraw"><span>방문회수<em>택배사에서 고객에게 방문하여 회수</em></span></label>
+													</div>
+													<div>
+														<input type="radio" name="wdGb" id="direct" value="D">
+														<label for="direct"><span>직접배송<em>고객이 반품지로 직접 반송</em></span></label>
+													</div>
+												</div>
+											</div>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						<div class="retrieve_box visit" style="display:block;" id="chgerLocation">
+							<h4 class="subH3">반품 회수지 주소 <span class="tit_info">택배사에서 반품 상품을 직접 회수할 장소 선택</span></h4>
+							<div class="tbl type1">
+								<table>
+									<colgroup>
+										<col width="210">
+										<col width="*">
+									</colgroup>
+									<tbody>
+										<tr>
+											<th>성명</th>
+											<td id="chgerNm" th:text="${deliveryAddrInfo.recipNm}"></td>
+											<input type="hidden" name="chgerNm" th:value="${deliveryAddrInfo.recipNm}">
+										</tr>
+										<tr>
+											<th>연락처</th>
+											<td id="chgerPhnno" th:text="${deliveryAddrInfo.recipPhnno}"></td>
+											<input type="hidden" name="chgerPhnno" th:value="${deliveryAddrInfo.recipPhnno}">
+										</tr>
+										<tr>
+											<th>주소</th>
+											<td id="chgerAddr">
+												<th:block th:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></th:block>
+												<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>
+											</td>
+											<input type="hidden" name="chgerZipcode" th:value="${deliveryAddrInfo.recipZipcode}">
+											<input type="hidden" name="chgerBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
+											<input type="hidden" name="chgerDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
+											<input type="hidden" name="chgerRtnMemo" th:value="${deliveryAddrInfo.delvMemo}">
+										</tr>
+									</tbody>
+								</table>
+							</div>
+						</div>
+						<div class="retrieve_box direct" style="display:none;" id="returnLocation">
+							<h4 class="subH3">반송 정보</h4>
+							<div class="tbl type1">
+								<table>
+									<colgroup>
+										<col width="210">
+										<col width="*">
+									</colgroup>
+									<tbody>
+										<tr>
+											<th>
+												반송주소
+											</th>
+											<td th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></td>
+										</tr>
+										<tr>
+											<th>
+												반송 송장번호
+											</th>
+											<td>
+												<form class="form_wrap">
+													<div class="form_field">
+														<div class="input_wrap">
+															<input type="text" class="form_control" name="wdInvoiceNo" data-valid-type="numeric" placeholder="송장번호를 입력해주세요.">
+														</div>
+													</div>
+												</form>
+											</td>
+										</tr>
+									</tbody>
+								</table>
+							</div>
+						</div>
+						<h4 class="subH3">환불정보</h4>
+						<div class="tbl type6">
+							<table>
+								<colgroup>
+									<col width="50%">
+									<col width="50%">
+								</colgroup>
+								<tbody>
+									<tr>
+										<td>
+											<dl>
+												<div>
+													<dt>환불 예정 금액</dt>
+													<dd>
+														<div class="price">
+															<span class="return_total_price"><em id="returnAmt">0</em>원</span>
+														</div>
+													</dd>
+												</div>
+												<div class="include_item"> <!-- 할인항목 표기 class명 include_item -->
+													<dt>상품 취소 금액</dt>
+													<dd><em id="goodsCancelAmt">0</em>원</dd>
+												</div>
+												<div class="include_item">
+													<dt>배송비</dt>
+													<dd><em id="deliveryFee">0</em>원</dd>
+												</div>
+												<div class="include_item">
+													<dt>할인 금액 차감</dt>
+													<dd><em id="deductDcAmt">0</em>원</dd>
+												</div>
+											</dl>
+										</td>
+										<td>
+											<dl>
+												<div>
+													<dt>환불 수단</dt>
+													<dd th:if="${paymentInfo.pgGb == 'KCP'}" th:text="${paymentInfo.payMeansNm}"></dd>
+													<dd th:if="${paymentInfo.pgGb == 'NAVER'}">네이버페이</dd>
+													<dd th:if="${paymentInfo.pgGb == 'KAKAO'}">카카오페이</dd>
+													<dd th:if="${paymentInfo.pgGb == 'PAYCO'}">PAYCO</dd>
+												</div>
+												<div>
+													<dt>결제 금액 환불</dt>
+													<dd>
+														<em id="refundPayAmt">0</em>원
+													</dd>
+												</div>
+												<div>
+													<dt>포인트 환불</dt>
+													<dd>
+														<em id="refundPoint">0</em>P
+													</dd>
+												</div>
+												<div>
+													<dt>상품권 환불</dt>
+													<dd>
+														<em id="refundGiftCard">0</em>원
+													</dd>
+												</div>
+											</dl>
+										</td>
+									</tr>
+								</tbody>
+							</table>
+						</div>
+						<div class="txt_info">
+							<ul>
+								<li>
+									카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.
+								</li>
+							</ul>
+						</div>
+	
+						<div class="info_footer_area" id="addDeliveryFee" style="display:none">
+							<p>
+								<span id="addPayCost">2,500원</span> 배송비 추가 결제가 필요합니다.
+								<input type="hidden" name="addPayCost"/>
+							</p>
+						</div>
+						<div class="btn_footer_area">
+							<button type="button" class="btn btn_default btn_md" onclick="fnGoToNoMemberCreList()"><span>취소</span></button>
+							<button type="button" id="btn_refund_pop" class="btn btn_dark btn_md" onclick="fnReturn()"><span>반품 신청</span></button>
+						</div>
+					</div>
+				</form>
+			</div>
+			<!-- // CONT-BODY -->
+		</div>
+
+		<!-- 환불계좌 등록 팝업 -->
+		<div class="modal fade refund_pop" id="refundPop" tabindex="-1" role="dialog" aria-labelledby="refundLabel" aria-hidden="true">
+			<div class="modal-dialog" role="document">
+				<div class="modal-content"></div>
+			</div>
+			<a href="#close-modal" rel="modal:close" id="refundPop_close" class="close-modal">Close</a>
+			<a href="#close-modal" rel="modal:close" class="close-modal ">Close</a>
+		</div>
+		<!-- //환불계좌 등록 팝업 -->
+	</div>
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	var isLogin = [[${isLogin}]];
+	let returnList = [[${returnList.returnList}]];
+	let oneData = [[${oneData}]];
+	let paymentInfo = [[${paymentInfo}]];
+	let isCustomer = true;
+	let jsonObj = {};
+
+	$(document).ready(function() {
+		// 비회원 LNB 설정
+		fnSetNoMemberLnbList(2);
+		
+		// 비회원 location 설정
+		fnSetNoMemberLocation('취소/반품/교환 내역', '반품 신청');
+
+		// 셀렉트박스 활성화
+		$('.select_custom').each(function() {
+			new sCombo($(this));
+		});
+
+		// 입점업체의 경우 회수방식 회수요청 처리
+		if (oneData.selfGoodsYn != 'Y') {
+			$('#withdraw').click();
+			$('.wdGb').css('display','none');
+		}
+	});
+
+	// 반품 처리
+	var fnReturn = function() {
+		let url = '/noMember/return';
+
+		// 반품 사유 체크
+		let chgReason = $('#returnForm input[name=chgReason]').val();
+		if (gagajf.isNull(chgReason)) {
+			mcxDialog.alert('반품사유를 선택해주세요.');
+			return false;
+		}
+
+		// 주문상세번호 및 반품 수량 설정
+		let ordDtlNoArr = [];
+		let cnclRtnReqQtyArr = [];
+		let chkQty = 0;
+		$.each($('#returnForm input[name=chgQty]'), function(idx, item) {
+			let chgQty = $(item).val();
+			let ordDtlNo = $(item).attr('ordDtlNo');
+
+			if (chgQty > 0) {
+				ordDtlNoArr.push(Number(ordDtlNo));
+				cnclRtnReqQtyArr.push(Number(chgQty));
+				chkQty += chgQty;
+			}
+		});
+
+		// 반품 수량 체크
+		if (chkQty == 0) {
+			mcxDialog.alert('반품하실 상품의 수량을 선택해주세요.');
+			return false;
+		}
+
+		// 환불계좌 체크
+		let accountNo = $('#returnForm input[name=accountNo]').val();
+		let accountNm = $('#returnForm input[name=accountNm]').val();
+		let bankCd = $('#returnForm input[name=bankCd]').val();
+
+		if (paymentInfo.payMeans == 'G014_20' && paymentInfo.payStat == 'G016_30' && (gagajf.isNull(accountNo) || gagajf.isNull(accountNm) || gagajf.isNull(bankCd))) {
+			let data = {};
+			data.ordNo = oneData.ordNo;
+			data.accountNm = oneData.accountNm;
+
+			let jsonData = JSON.stringify(data);
+
+			$.ajax( {
+				type		: "POST",
+				url 		: '/mypage/refund/account/register/popup/form',
+				data		: jsonData,
+				dataType 	: 'html',
+				beforeSend : function(xhr, settings) {
+					xhr.setRequestHeader("AJAX"			, "true");
+					xhr.setRequestHeader('Accept'		, 'application/json');
+					xhr.setRequestHeader('Content-Type'	, 'application/json');
+				},
+				success 	: function(result) {
+					$("#refundPop .modal-dialog .modal-content").html(result);
+					$("#refundPop").modal("show");
+				}
+			});
+
+			return false;
+		}
+
+		// 추가배송비 PG 처리
+		let addPayCost = $('#returnForm input[name=addPayCost]').val();
+
+		let data = {};
+		data.ordNo = oneData.ordNo;
+		data.ordChgSq = 0;
+		data.chgReason = chgReason;
+		data.chgMemo = $('#returnForm textarea[name=chgMemo]').val();
+		data.accountNo = $('#returnForm input[name=accountNo]').val();
+		data.accountNm = $('#returnForm input[name=accountNm]').val();
+		data.bankCd = $('#returnForm input[name=bankCd]').val();
+		data.isCustomer = isCustomer;
+		data.wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
+		data.chgerNm = $('#chgerNm').text();
+		data.chgerZipcode = $('#returnForm input[name=chgerZipcode]').val();
+		data.chgerBaseAddr = $('#returnForm input[name=chgerBaseAddr]').val();
+		data.chgerDtlAddr = $('#returnForm input[name=chgerDtlAddr]').val();
+		data.chgerPhnno = $('#returnForm input[name=chgerPhnno]').val();
+		data.chgerRtnMemo = $('#returnForm input[name=chgerRtnMemo]').val();
+		data.ordDtlNoArr = ordDtlNoArr;
+		data.wdInvoiceNo = $('#returnForm input[name=wdInvoiceNo]').val();
+		data.addPayCost = addPayCost;
+		data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
+
+		let jsonData = JSON.stringify(data);
+
+		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
+			if (addPayCost > 0) {
+				let ordChgSq = result.ordChgSq;
+				let ordNo = result.ordNo;
+
+				$('#addPaymentForm input[name=ordChgSq]').val(ordChgSq);
+				$('#addPaymentForm input[name=ordNo]').val(ordNo);
+
+				document.addPaymentForm.submit();
+			} else {
+				fnGoToNoMemberCreList()
+			}
+		}, true);
+	}
+
+	// 반품 수량 변경 이벤트 처리
+	var fnChangeReturnQty = function(param) {
+		let url = '/noMember/cancel/refund/amt/calculate';
+
+		if (param != null) {
+			$(param).parent().parent().find('input[name=chgQty]').val($(param).attr('qty'));
+		}
+
+		let chgReason = $('#returnForm input[name=chgReason]').val();
+
+		if (!gagajf.isNull(chgReason)) {
+			// 반품 수량 설정
+			let cnclRtnReqQtyArr = [];
+			let ordDtlNoArr = [];
+			let ordCanChgQtyArr = [];
+			$.each($('#returnForm input[name=chgQty]'), function(idx, item) {
+				let chgQty = $(item).val();
+				let ordDtlNo = $(item).attr('ordDtlNo');
+				let ordCanChgQty = $(item).attr('ordCanChgQty');
+				
+				cnclRtnReqQtyArr.push(Number(chgQty));
+				ordDtlNoArr.push(Number(ordDtlNo));
+				ordCanChgQtyArr.push(Number(ordCanChgQty));
+			});
+
+			let data = {};
+			data.ordNo = oneData.ordNo;
+			data.ordNm = oneData.ordNm;
+			data.ordPhnno = oneData.ordPhnno;
+			data.chgGb = 'G680_30';
+			data.ordDtlNoArr = ordDtlNoArr;
+			data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
+			
+			let jsonData = JSON.stringify(data);
+			
+			gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
+				let refundPoint = Number(result.spanPntDcAmt);							// 환불 포인트 금액
+				let refundGiftCard = Number(result.spanGfcdUseAmt);						// 환불 상품권 금액
+				let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);						// 환불 상품 금액
+				let spanCpnDcAmt = Number(result.spanCpnDcAmt);							// 포인트 할인 차감 금액
+				let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);						// 다다익선 할인 차감 금액
+				let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);					// 선포인트 할인 차감 금액
+				let sumDeliveryFee = Number(result.sumDeliveryFee);						// 원주문배송비 (반품에서는 안돌려줘서 항상 0일듯)
+				let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);				// 추가배송비 (무료배송비 허들 깨져서 발생한 배송비)
+				let spanTotRtnDelvFee = Number(result.spanTotRtnDelvFee);				// 반품배송비 (회수요청으로 인한 반품 배송비)
+				let spanRealCnclRtnAmt = Number(result.spanRealCnclRtnAmt);				// 환불 상품 실결제 금액 (환불상품금액 - 할인차감금액)
+				let spanRefundAmt = spanRealCnclRtnAmt + sumDeliveryFee;				// 환불예정금액 (환불상품실결제금액 - 원주문배송비)
+
+				// 반품 사유 및 반품 방식 배송비 계산
+				if (result.spanRealCnclRtnAmt > 0) {
+					let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
+					// 회사사유 : 추가배송비 0, 반품배송비 0
+					if (!isCustomer) {
+						spanTotRtnDelvFee = 0;
+						spanTotDeliveryFee = 0;
+					}
+					// 고객사유(직접발송) : 반품배송비 0
+					else if (wdGb == 'D') {
+						spanTotRtnDelvFee = 0;
+					}
+				} else {
+					spanTotRtnDelvFee = 0;
+					spanTotDeliveryFee = 0;
+				}
+
+				let goodsCancelAmt = spanCnclRtnAmt;										// 상품취소금액
+				let addDelvFee = spanTotRtnDelvFee + spanTotDeliveryFee;					// 추가배송비
+				let deductDcAmt = spanCpnDcAmt + spanTmtbDcAmt + spanPrePntDcAmt;			// 할인금액 차감(쿠폰+다다익선+선포인트)
+				let refundPayAmt = spanRefundAmt - addDelvFee;								// 결제금액 환불
+
+				// 추가배송비 영역 설정
+				if (refundPayAmt < 0) {
+					refundPayAmt += addDelvFee;
+					$('#addDeliveryFee').css('display', '');
+					$('#addPayCost').text(addDelvFee.addComma() + '원');
+					$('#returnForm input[name=addPayCost]').val(addDelvFee);
+				} else {
+					$('#addDeliveryFee').css('display', 'none');
+					$('#returnForm input[name=addPayCost]').val(0);
+				}
+
+				let returnAmt = refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
+
+				// 금액 설정
+				$('#returnAmt').text(returnAmt.addComma());
+				$('#goodsCancelAmt').text(goodsCancelAmt.addComma());
+				$('#deliveryFee').text((0 - addDelvFee).addComma());
+				$('#deductDcAmt').text((0 - deductDcAmt).addComma());
+				$('#refundPayAmt').text(refundPayAmt.addComma());
+				$('#refundPoint').text(refundPoint.addComma());
+				$('#refundGiftCard').text(refundGiftCard.addComma());
+			});
+		}
+	}
+
+	// 반품 방식 변경 이벤트
+	$('#returnForm input[name=wdGb]').on('change', function() {
+		let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
+
+		if (wdGb == 'W') {
+			$('#chgerLocation').css('display', '');
+			$('#returnLocation').css('display', 'none');
+		} else {
+			$('#chgerLocation').css('display', 'none');
+			$('#returnLocation').css('display', '');
+		}
+
+		// 환불금액 계산
+		fnChangeReturnQty();
+	});
+	
+	// 반품 사유 변경 이벤트
+	var fnChangeReturnReason = function(param) {
+		var customerReasonArr = ['G688_10'];
+		let chgReason = $(param).attr('chgReason');
+
+		// 귀책사유체크(취소,반품,교환)
+		isCustomer = customerReasonArr.includes(chgReason);
+
+		// 반품 사유 설정
+		$(param).parent().parent().find('input[name=chgReason]').val(chgReason);
+
+		// 환불금액 계산
+		fnChangeReturnQty();
+	}
+
+	// 회수지 정보 설정
+	var delvAddrSet = function(delvObj) {
+		let chgerNm = delvObj.recipNm;
+		let chgerPhnno = delvObj.recipPhnno;
+		let chgerZipcode = delvObj.recipZipcode;
+		let chgerBaseAddr = delvObj.recipBaseAddr;
+		let chgerDtlAddr = delvObj.recipDtlAddr;
+		let delvMemo = delvObj.delvMemo;
+		let chgerAddr = chgerBaseAddr + ' ' + chgerDtlAddr + '\n';
+		chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeDeliveryAddr();"><span>회수지 변경</span></button>';
+
+		$('#returnForm input[name=chgerNm]').val(chgerNm);
+		$('#returnForm input[name=chgerPhnno]').val(chgerPhnno);
+		$('#returnForm input[name=chgerZipcode]').val(chgerZipcode);
+		$('#returnForm input[name=chgerBaseAddr]').val(chgerBaseAddr);
+		$('#returnForm input[name=chgerDtlAddr]').val(chgerDtlAddr);
+		$('#returnForm input[name=chgerRtnMemo]').val(delvMemo);
+		
+		$('#chgerNm').text(chgerNm);
+		$('#chgerPhnno').text(chgerPhnno);
+		$('#chgerAddr').html(chgerAddr);
+	}
+
+	// 환불계좌 등록 콜백 처리
+	var fnRegisterAccountCallback = function(result) {
+		// 환불계좌 정보 설정
+		$('#returnForm input[name=accountNo]').val(result.accountNo);
+		$('#returnForm input[name=accountNm]').val(result.accountNm);
+		$('#returnForm input[name=bankCd]').val(result.bankCd);
+
+		// 반품처리
+		fnReturn();
+	}
+</script>
+
+</th:block>
+
+</body>
+</html>