Przeglądaj źródła

마이페이지 취소 화면 임시 커밋

card007 5 lat temu
rodzic
commit
564f16aa04

+ 12 - 2
src/main/java/com/style24/front/biz/dao/TsfOrderChangeDao.java

@@ -17,15 +17,25 @@ import com.style24.persistence.domain.Point;
 public interface TsfOrderChangeDao {
 
 	/**
-	 * 마이페이지 취소/반품 목록 조회
+	 * 마이페이지 취소 목록 조회
 	 *
 	 * @param Order
 	 * @return Collection<Order>
 	 * @author card007
-	 * @since 2021. 02. 26
+	 * @since 2021. 03. 19
 	 */
 	Collection<Order> getCancelListForMypage(Order order);
 
+	/**
+	 * 마이페이지 반품 목록 조회
+	 *
+	 * @param Order
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2021. 02. 26
+	 */
+	Collection<Order> getReturnListForMypage(Order order);
+
 	/**
 	 * 사용 상품권 정보 조회
 	 *

+ 52 - 27
src/main/java/com/style24/front/biz/service/TsfOrderChangeService.java

@@ -1,6 +1,8 @@
 package com.style24.front.biz.service;
 
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -31,45 +33,68 @@ public class TsfOrderChangeService {
 	private TscOrderChangeService coreOrderChangeService;
 
 	/**
-	 * 마이페이지 취소/반품 목록 조회
+	 * 마이페이지 취소 목록 조회
 	 *
 	 * @param Order
 	 * @return Collection<Order>
 	 * @author card007
-	 * @since 2021. 02. 26
+	 * @since 2021. 03. 19
 	 */
 	public GagaMap getCancelListForMypage(Order order) {
 		GagaMap map = new GagaMap();
-		Boolean shotDelv = false;
-		Boolean selfMall = false;
-		Boolean supplyMall = false;
-		
+
 		Collection<Order> result = orderChangeDao.getCancelListForMypage(order);
-		for (Order tmpOrder : result) {
-			// 총알배송 아이콘 설정
-			if (!shotDelv && "Y".equals(tmpOrder.getShotDelvYn())) {
-				shotDelv = true;
-			}
-
-			// STYLE24 일반배송 아이콘 설정
-			if (!selfMall && "Y".equals(tmpOrder.getSelfGoodsYn())) {
-				selfMall = true;
-			}
-
-			// 업체직배송 아이콘 설정
-			if (!supplyMall && "N".equals(tmpOrder.getSelfGoodsYn())) {
-				supplyMall = true;
-			}
-		}
-		
-		map.set("shotDelv", shotDelv);
-		map.set("selfMall", selfMall);
-		map.set("supplyMall", supplyMall);
-		map.set("oneData", result.iterator().next());
+		Order oneData = result.iterator().next();
+		oneData.setOrdDtlNoArr(getOrdDtlNoArr(result));
+
+		map.set("oneData", oneData);
+		map.set("cancelList", result);
+
+		return map;
+	}
+
+	/**
+	 * 마이페이지 반품 목록 조회
+	 *
+	 * @param Order
+	 * @return Collection<Order>
+	 * @author card007
+	 * @since 2021. 02. 26
+	 */
+	public GagaMap getReturnListForMypage(Order order) {
+		GagaMap map = new GagaMap();
+
+		Collection<Order> result = orderChangeDao.getReturnListForMypage(order);
+		Order oneData = result.iterator().next();
+		oneData.setOrdDtlNoArr(getOrdDtlNoArr(result));
+
+		map.set("oneData", oneData);
 		map.set("returnList", result);
+
 		return map;
 	}
 
+	/**
+	 * 마이페이지 주문상세번호 배열 처리
+	 *
+	 * @param Collection<Order>
+	 * @return int[]
+	 * @author card007
+	 * @since 2021. 03. 19
+	 */
+	private int[] getOrdDtlNoArr(Collection<Order> orderList) {
+		Order order = new Order();
+		List<Integer> ordDtlNoList = new ArrayList<>();
+		
+		for (Order tmp : orderList) {
+			ordDtlNoList.add(tmp.getOrdDtlNo());
+		}
+		
+		order.setOrdDtlNoArr(ordDtlNoList.stream().mapToInt(Integer::intValue).toArray());
+		
+		return ordDtlNoList.stream().mapToInt(Integer::intValue).toArray();
+	}
+
 	/**
 	 * 사용 상품권 정보 조회
 	 *

+ 44 - 12
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -457,7 +457,7 @@ public class TsfMypageController extends TsfBaseController {
 	 * @author card007
 	 * @since 2021. 02. 25
 	 */
-	@PostMapping("/cancel/form")
+	@PostMapping("/return/form")
 	@ResponseBody
 	public ModelAndView returnForm(Order order) {
 		ModelAndView mav = new ModelAndView();
@@ -480,13 +480,16 @@ public class TsfMypageController extends TsfBaseController {
 		mav.addObject("customerInfo", customer);
 
 		// 반품 가능 리스트 조회
-		mav.addObject("returnList", orderChangeService.getCancelListForMypage(order));
+		GagaMap map = orderChangeService.getReturnListForMypage(order);
+		Order oneData = (Order) map.get("oneData");
+		mav.addObject("returnList", map);
+		mav.addObject("oneData", oneData);
 
 		// 사용 상품권 정보 조회
-		mav.addObject("usedGiftCardInfo", orderChangeService.getUsedGiftcardInfo(order));
+		mav.addObject("usedGiftCardInfo", orderChangeService.getUsedGiftcardInfo(oneData));
 
 		// 사용 포인트 정보 조회
-		mav.addObject("usedPointInfo", orderChangeService.getUsedPointInfo(order));
+		mav.addObject("usedPointInfo", orderChangeService.getUsedPointInfo(oneData));
 
 		// 주문 결제정보 조회
 		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
@@ -502,6 +505,43 @@ public class TsfMypageController extends TsfBaseController {
 		return mav;
 	}
 
+	/**
+	 * 마이페이지 취소신청 화면
+	 *
+	 * @param Order
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 03. 19
+	 */
+	@PostMapping("/cancel/form")
+	@ResponseBody
+	public ModelAndView cancelForm(Order order) {
+		ModelAndView mav = new ModelAndView();
+
+		// 고객번호 설정
+		int custNo = TsfSession.getInfo().getCustNo();
+		order.setCustNo(custNo);
+
+		// 취소 가능 리스트 조회
+		GagaMap map = orderChangeService.getCancelListForMypage(order);
+		Order oneData = (Order) map.get("oneData");
+		mav.addObject("cancelList", map);
+		mav.addObject("oneData", oneData);
+
+		// 사용 상품권 정보 조회
+		mav.addObject("usedGiftCardInfo", orderChangeService.getUsedGiftcardInfo(oneData));
+
+		// 사용 포인트 정보 조회
+		mav.addObject("usedPointInfo", orderChangeService.getUsedPointInfo(oneData));
+
+		// 주문 결제정보 조회
+		mav.addObject("paymentInfo", orderService.getPaymentInfoForMypage(order));
+
+		mav.setViewName(super.getDeviceViewName("/mypage/MypageCancelForm"));
+
+		return mav;
+	}
+
 	/**
 	 * 마이페이지 STYLE24 포인트화면
 	 *
@@ -514,14 +554,6 @@ public class TsfMypageController extends TsfBaseController {
 	public ModelAndView stylePointForm(Point point) {
 		ModelAndView mav = new ModelAndView();
 
-		// 테스트용 (삭제예정)
-		GagaMap map = new GagaMap();
-		map.setString("custIp", TsfSession.getIpAddress());
-		map.setString("bankNm", "김지철");
-		map.setString("accountNo", "110500288201");
-		map.setString("bankCd", "88");
-		// 테스트용 (삭제예정)
-
 		int custNo = TsfSession.getInfo().getCustNo();
 		point.setCustNo(custNo);
 		// 잔여포인트

+ 97 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml

@@ -15,9 +15,105 @@
 	</sql>
 	<!--// Paging -->
 
-	<!-- 마이페이지 취소/반품 목록 조회 -->
+	<!-- 마이페이지 취소 목록 조회 -->
 	<select id="getCancelListForMypage" parameterType="Order" resultType="Order">
 		/* TscOrderChange.getCancelListForMypage */
+		SELECT O.ORD_NO
+		     , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d')				AS ORD_DT
+		     , O.CUST_NO
+		     , OD.ORD_DTL_NO
+		     , OD.ORD_DTL_STAT
+		     , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)			AS ORD_DTL_STAT_NM
+		     , OD.ORD_EXCH_GB
+		     , CASE WHEN OD.ORD_DTL_STAT IN ('G013_20', 'G013_30', 'G013_40') THEN 'Y'
+					ELSE 'N'
+				END												AS ALL_CAN_YN
+		     , OD.GOODS_CD
+		     , G1.GOODS_NM
+		     , G1.GOODS_TYPE
+		     , FN_GET_CODE_NM('G056', G1.GOODS_TYPE)			AS GOODS_TYPE_NM
+		     , G2.GOODS_CD										AS ITEM_CD
+		     , G2.GOODS_NM										AS ITEM_NM
+		     , ODI.ORD_DTL_ITEM_SQ
+		     , ODI.OPT_CD
+		     , ODI.OPT_CD1
+		     , ODI.OPT_CD2
+		     , ODI.ITEM_QTY
+		     , ODI.ITEM_PRICE
+		     , ODI.OPT_ADD_PRICE
+		     , ODI.ORD_AMT
+		     , ODI.CNCL_RTN_AMT
+		     , ODI.CPN1_DC_AMT
+		     , ODI.TMTB1_DC_AMT
+		     , ODI.TMTB2_DC_AMT
+		     , ODI.GOODS_CPN_DC_AMT
+		     , ODI.CART_CPN_DC_AMT
+		     , ODI.PNT_DC_AMT
+		     , ODI.PRE_PNT_DC_AMT
+		     , ODI.GFCD_USE_AMT
+		     , ODI.REAL_ORD_AMT
+		     , GI.SYS_IMG_NM
+		     , OD.ORD_QTY
+		     , OD.CNCL_RTN_QTY
+		     , CASE WHEN OCD.ORD_REQ_CHG_QTY IS NULL THEN 0
+					ELSE OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY
+				END												AS ORD_REQ_CHG_QTY
+		     , OD.ORD_QTY - OD.CNCL_RTN_QTY - IF(OCD.ORD_REQ_CHG_QTY IS NULL, 0, OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY) AS ORD_CAN_CHG_QTY
+		     , OD.SAVE_PNT_AMT
+		     , OD.SHIP_COMP_CD
+		     , OD.GIFT_PACK_YN
+		     , FN_GET_SUPPLY_COMP_NM(OD.SUPPLY_COMP_CD)			AS SUPPLY_COMP_NM
+		     , OD.INVOICE_NO
+		     , OD.SUPPLY_COMP_CD
+		     , OD.DELV_FEE_CD
+		     , OD.SHOT_DELV_YN
+		     , G1.SELF_GOODS_YN
+		     , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)			AS BRAND_NM
+		  FROM TB_ORDER O
+		 INNER JOIN TB_ORDER_DETAIL OD
+		    ON O.ORD_NO = OD.ORD_NO
+		 INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+		    ON OD.ORD_NO = ODI.ORD_NO
+		   AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		 INNER JOIN TB_GOODS G1
+		    ON OD.GOODS_CD = G1.GOODS_CD
+		 INNER JOIN TB_GOODS G2
+		    ON ODI.ITEM_CD = G2.GOODS_CD
+		 INNER JOIN TB_BRAND B
+		    ON B.BRAND_CD = G1.BRAND_CD
+		  LEFT OUTER JOIN (SELECT OD.ORD_DTL_NO
+								, SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
+							 FROM TB_ORDER_CHANGE_DETAIL OCD
+							INNER JOIN TB_ORDER_DETAIL OD
+							   ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+							WHERE OD.ORD_NO = #{ordNo}
+							  AND OCD.DEL_YN = 'N'
+							  AND OCD.CHG_STAT IN ('G685_20', 'G685_30', 'G685_33', 'G685_40')
+							GROUP BY OCD.ORD_DTL_NO
+						  ) OCD
+		    ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+		  LEFT OUTER JOIN TB_GOODS_IMG GI
+		    ON OD.GOODS_CD = GI.GOODS_CD
+		   AND ODI.OPT_CD1 = GI.COLOR_CD
+		   AND GI.DEFAULT_IMG_YN = 'Y'
+		 WHERE O.ORD_NO = #{ordNo}
+		   AND OD.ORD_DTL_STAT IN ('G013_10', 'G013_11', 'G013_20', 'G013_30')
+		<choose>
+			<when test='custNo != null and custNo != ""'>
+		   AND O.CUST_NO = #{custNo}
+			</when>
+			<otherwise>
+		   AND O.ORD_NO = #{ordNo}
+		   AND O.ORD_NM = #{orderNm}
+			</otherwise>
+		</choose>
+		   AND O.DISP_YN = 'Y'
+		 ORDER BY OD.ORD_DTL_NO
+	</select>
+
+	<!-- 마이페이지 반품 목록 조회 -->
+	<select id="getReturnListForMypage" parameterType="Order" resultType="Order">
+		/* TscOrderChange.getReturnListForMypage */
 		SELECT O.ORD_NO
 		     , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d')				AS ORD_DT
 		     , OD.ORD_DTL_NO

+ 607 - 0
src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html

@@ -0,0 +1,607 @@
+<!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/MypageLayoutWeb">
+<!--
+ *******************************************************************************
+ * @source  : MypageCancelFormWeb.html
+ * @desc    : 마이페이지 > 취소신청 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.03.19   card007     최초 작성
+ *******************************************************************************
+ -->
+<body>
+
+<th:block layout:fragment="content">
+	<div class="cont">
+		<div class="sec_head">
+			<h3 class="subH1">주문취소</h3>
+			<span class="order_number">주문번호&nbsp;:&nbsp;<em th:text="${cancelList.oneData.ordNo}"></em></span>
+		</div>
+		<div class="sec_body">
+			<div class="part_goods">
+				<div class="goods_head">
+					<p>주문일 <span th:text="${cancelList.oneData.ordDt}"></span></p>
+				</div>
+				<div class="goods_cont">
+					<th:block th:if="${cancelList.cancelList}" th:each="cancel, status : ${cancelList.cancelList}" 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=${cancel.goodsCd}" onclick="fnGoToGoodsDetail(this)">
+										<span class="thumb">
+											<img th:src="${imageUrl + '/' + cancel.sysImgNm}" width="100%" alt="">
+										</span>
+										<p>
+											<span class="brand" th:text="${cancel.brandNm}"></span>
+											<span class="tag primary" th:if="${cancel.shotDelvYn == 'Y'}">총알배송</span>
+											<span class="tag" th:if="${cancel.shotDelvYn == 'N' and cancel.selfGoodsYn == 'Y'}">STYLE24 일반배송</span>
+											<span class="tag" th:if="${cancel.selfGoodsYn == 'N'}">업체직배송</span>
+										</p>
+										<p>
+											<span class="name" th:text="${cancel.goodsNm}"></span>
+										</p>
+									</a>
+								</div>
+								<div class="gd_opt">
+									<div class="option_wrap">
+										<span class="title sr-only">주문 옵션</span>
+										<span class="option" th:text="|${cancel.optCd1} / ${cancel.optCd2}|"></span>
+									</div>
+								</div>
+								<div class="gd_calc">
+									<p>
+										<span class="count"><em th:text="${cancel.ordQty}"></em>개</span>
+									</p>
+									<p>
+										<span class="price_org"><em th:text="${#numbers.formatInteger(cancel.listPrice * cancel.ordQty, 1, 'COMMA')}"></em>원</span>
+										<span class="price_sale"><em th:text="${#numbers.formatInteger(cancel.ordAmt, 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=${cancel.ordDtlNo}, ordCanChgQty=${cancel.ordCanChgQty}"/>
+													<div class="select">선택</div>
+													<ul class="list">
+														<li class="selected" value="0">선택</li>
+														<li th:if="${cancel.ordCanChgQty > 0}" th:each="num : ${#numbers.sequence(1,cancel.ordCanChgQty)}" th:value="${num}" th:text="${num}" onclick="fnChangeCancelQty(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 type6">
+				<table>
+					<colgroup>
+						<col width="50%">
+						<col width="50%">
+					</colgroup>
+					<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:text="${paymentInfo.payMeansNm}"></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>
+				</table>
+			</div>
+			<div class="txt_info">
+				<ul>
+					<li>
+						카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.
+					</li>
+				</ul>
+			</div>
+			<div class="btn_footer_area">
+				<button type="button" class="btn btn_default btn_md"><span>취소</span></button>
+				<button type="button" id="btn_refund_pop" class="btn btn_dark btn_md"><span>주문 취소</span></button>
+			</div>
+		</div>
+	</div>
+	<!-- // CONT-BODY -->
+
+	<!--<div class="my_cont">
+		<div class="sec_head">
+			<h3>반품 신청</h3>
+			<div class="od_detail">
+				(주문번호 : <span class="num" th:text="${ordNo}"></span>)
+			</div>
+		</div>
+		<div class="sec_body mypage_body">
+			<form class="form_wrap" role="form">
+				<div class="order_list">
+					<section class="order_row">
+						<div class="part_deliver">
+							<div class="tbl_tit">
+								&lt;!&ndash; 주문일/선물일 설정 &ndash;&gt;
+								<span class="start_t" th:unless="${returnList.oneData.giftPackYn == 'Y'}">주문일</span>
+								<span class="gift_t" th:if="${returnList.oneData.giftPackYn == 'Y'}">선물일</span>
+								&lt;!&ndash; //주문일/선물일 설정 &ndash;&gt;
+
+								<span class="order_date" th:text="${returnList.oneData.ordDt}"></span>
+
+								&lt;!&ndash; 배송구분 설정 &ndash;&gt;
+								<span class="order_label02" th:if="${returnList.shotDelv}">총알배송</span>
+								<span class="order_label01" th:if="${returnList.selfMall}">STYLE24 일반배송</span>
+								<span class="order_label01" th:if="${returnList.supplyMall}">업체직배송</span>
+								&lt;!&ndash; //배송구분 설정 &ndash;&gt;
+								<a href="javascript:void(0)" class="detail_btn" th:attr="ordNo=${returnList.oneData.ordNo}" onclick="fnGoToOrderDetail(this)">주문상세보기</a>
+							</div>
+							<div class="tbl type2">
+								<table id="returnList">
+									<colgroup>
+										<col width="1020">
+										<col width="180">
+									</colgroup>
+									<tbody>
+									<th:block th:if="${returnList.returnList}" th:each="return, status : ${returnList.returnList}" th:with="imageUrl=${@environment.getProperty('upload.goods.view')}">
+										<tr>
+											<td>
+												<div class="info_item">
+													<div class="thumb_box">
+														<a href="">
+															<img th:src="${imageUrl + '/' + return.sysImgNm}" width="100%" alt="">
+														</a>
+													</div>
+													<div class="info_box">
+														<p class="od_name">
+															<a href="">
+																<span class="brand" th:text="${return.brandNm}"></span>
+																<span class="name" th:text="${return.goodsNm}"></span>
+															</a>
+														</p>
+														<p class="od_opt">
+															<span class="option"><em th:text="${return.optCd1}"></em><em th:text="${return.optCd2}"></em></span>
+															<span class="count">수량 <em th:text="${return.ordQty}"></em>개</span>
+														</p>
+													</div>
+													<div class="info_calc">
+														<p class="price">
+															<span class="selling_price" th:text="|${#numbers.formatInteger(return.ordAmt, 1, 'COMMA')}원|"></span>
+														</p>
+														<p class="point"><span th:text="${#numbers.formatInteger(return.savePntAmt, 1, 'COMMA')}"></span>p</p>
+													</div>
+												</div>
+											</td>
+											<td class="cnt_sel">
+												<span class="cnt_t">수량</span>
+												<div class="form_field">
+													<div class="select_custom type1">
+														<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" style="width:100px; margin:0 auto">
+																<li class="selected" value="0">선택</li>
+																<li th:if="${return.ordCanChgQty > 0}" th:each="num : ${#numbers.sequence(1,return.ordCanChgQty)}" th:value="${num}" th:text="${num}" onclick="fnChangeQty(this);"></li>
+															</ul>
+														</div>
+													</div>
+												</div>
+&lt;!&ndash;												<select class="select_dress" name="chgQty" onchange="fnChangeQty();">&ndash;&gt;
+&lt;!&ndash;													<option value="">선택</option>&ndash;&gt;
+&lt;!&ndash;													<option th:if="${return.ordQty > 0}" th:each="num : ${#numbers.sequence(1,return.ordQty)}" th:value="${num}" th:text="${num}"></option>&ndash;&gt;
+&lt;!&ndash;												</select>&ndash;&gt;
+											</td>
+										</tr>
+									</th:block>
+									</tbody>
+								</table>
+							</div>
+							<div class="order_confirm">
+								<p class="cf_txt cf_desc c_primary">반품하실 상품의 수량을 선택하신 후 반품 신청을 하실 수 있습니다.</p>
+							</div>
+						</div>
+					</section>
+					<section class="order_row">
+						<div class="tbl_tit">
+							<h3 class="subH3">반품 사유</h3>
+						</div>
+						<div class="tbl type1">
+							<table>
+								<colgroup>
+									<col width="*">
+								</colgroup>
+								<tbody>
+								<tr>
+									<td>
+										<div class="form_field">
+											<div class="select_custom type1">
+												<div class="combo">
+													<input type="hidden" name="chgReason"/>
+													<div class="select">반품 사유를 선택하세요</div>
+													<ul class="list" style="width:400px">
+														<li class="selected" value="">반품 사유를 선택하세요</li>
+														<li th:if="${returnReason}" th:each="oneData, status : ${returnReason}" th:value="${oneData.cd}" th:text="${oneData.cdNm}" onclick="fnChangeReason(this);"></li>
+													</ul>
+												</div>
+											</div>
+										</div>
+									</td>
+								</tr>
+								<tr>
+									<td>
+										<textarea class="doc_exchange" name="chgMemo" id="chgMemo" placeholder="자세한 사유를 입력해주세요." onkeyup="cfnGetTextLength(this, 200, $('#return_cnt'));"></textarea>
+										<p class="txt_cnt"><span id="return_cnt" class="c_primary">0</span>/200</p>
+									</td>
+								</tr>
+								</tbody>
+							</table>
+						</div>
+					</section>
+					<section class="order_row" id="wdGb">
+						<div class="order_tit">
+							<h3 class="subH3">반품 방식 선택</h3>
+						</div>
+						<div class="tbl type1">
+							<table>
+								<colgroup>
+									<col width="*">
+								</colgroup>
+								<tbody>
+								<tr>
+									<td>
+										<div class="form_field radio_field">
+											<div class="">
+												<input type="radio" name="wdGb" id="withdraw" value="W" checked>
+												<label for="withdraw"><span>방문회수 <b class="c_primary">택배사에서 방문하여 회수</b></span></label>
+											</div>
+											<div class="">
+												<input type="radio" name="wdGb" id="direct" value="D">
+												<label for="direct"><span>직접반송 <b class="c_primary">고객이 직접 반송처리</b></span></label>
+											</div>
+										</div>
+									</td>
+								</tr>
+								</tbody>
+							</table>
+						</div>
+					</section>
+					<section class="order_row" id="chgerLocation">
+						<div class="order_tit">
+							<h3 class="subH3">상품 회수지</h3>
+							<span class="del_t">택배사에서 반품 상품을 직접 회수할 장소 선택</span>
+							<button type="button" class="btn_popup" onclick="fnChangeDeliveryAddr('chger');"><span>회수지 선택</span></button>
+						</div>
+						<div class="tbl type1">
+							<table>
+								<colgroup>
+									<col width="200">
+									<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:text="|${deliveryAddrInfo.recipBaseAddr} ${deliveryAddrInfo.recipDtlAddr}|"></td>
+									<input type="hidden" name="chgerBaseAddr" th:value="${deliveryAddrInfo.recipBaseAddr}">
+									<input type="hidden" name="chgerDtlAddr" th:value="${deliveryAddrInfo.recipDtlAddr}">
+								</tr>
+								</tbody>
+							</table>
+						</div>
+					</section>
+					<section class="order_row" id="returnLocation" style="display:none">
+						<div class="order_tit">
+							<h3 class="subH3">반품하실 배송지</h3>
+						</div>
+						<div class="tbl type1">
+							<table>
+								<colgroup>
+									<col width="200">
+									<col width="*">
+								</colgroup>
+								<tbody>
+								<tr>
+									<th>성명</th>
+									<td th:text="${deliveryAddrInfo.rtnLocNm}"></td>
+									<input type="hidden" name="rtnLocNm" th:value="${deliveryAddrInfo.rtnLocNm}">
+								</tr>
+								<tr>
+									<th>연락처</th>
+									<td th:text="${deliveryAddrInfo.rtnLocTelno}"></td>
+									<input type="hidden" name="rtnLocTelno" th:value="${deliveryAddrInfo.rtnLocTelno}">
+								</tr>
+								<tr>
+									<th>주소</th>
+									<td th:text="|${deliveryAddrInfo.rtnLocBaseAddr} ${deliveryAddrInfo.rtnLocDtlAddr}|"></td>
+									<input type="hidden" name="rtnLocBaseAddr" th:value="${deliveryAddrInfo.rtnLocBaseAddr}">
+									<input type="hidden" name="rtnLocDtlAddr" th:value="${deliveryAddrInfo.rtnLocDtlAddr}">
+								</tr>
+								</tbody>
+							</table>
+						</div>
+					</section>
+					<section class="order_row">
+						<div class="order_tit">
+							<h3 class="subH3">환불 정보</h3>
+							<button type="button" class="btn_popup"><span>취소 전표 보기</span></button>
+						</div>
+						<div class="tbl type1 re_info_tbl">
+							<div class="r_left">
+								<dl>
+									<dt>환불(예정) 금액</dt>
+									<dd>
+										<span class="big_t"><strong id="returnAmt">0</strong>원</span>
+									</dd>
+								</dl>
+								<dl>
+									<dt>상품취소 금액</dt>
+									<dd>
+										<span id="goodsCancelAmt">0</span>원
+									</dd>
+								</dl>
+								<dl>
+									<dt>배송비</dt>
+									<dd>
+										<span id="deliveryFee">0</span>원
+									</dd>
+								</dl>
+								<dl>
+									<dt>할인금액 차감</dt>
+									<dd>
+										<span id="deductDcAmt">0</span>원
+									</dd>
+								</dl>
+							</div>
+							<div class="r_right">
+								<dl>
+									<dt>환불수단</dt>
+									<dd>
+										<span th:text="${paymentInfo.payMeansNm}"></span>
+									</dd>
+								</dl>
+								<dl>
+									<dt>결제금액 환불</dt>
+									<dd>
+										<span id="refundPayAmt">0</span>원
+									</dd>
+								</dl>
+								<dl>
+									<dt>포인트 환불</dt>
+									<dd>
+										<span id="refundPoint">0</span>P
+									</dd>
+								</dl>
+								<dl>
+									<dt>상품권 환불</dt>
+									<dd>
+										<span id="refundGiftCard">0</span>원
+									</dd>
+								</dl>
+							</div>
+						</div>
+						<p class="alert_t">※ 카드사로 결제 취소 요청이 전달된 후 환불까지는 평일 기준 3 ~7일이 소요될 수 있습니다.</p>
+					</section>
+					<section class="order_row" id="addDeliveryFee" style="display:none">
+						<div class="ship_fee">
+							<p><span class="c_primary" id="addPayCost">2,500원</span> 배송비 추가 결제가 필요합니다.</p>
+							<input type="hidden" name="addPayCost"/>
+						</div>
+					</section>
+					<div class="btn_wrap">
+						<button type="button" class="btn btn_default cancle_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>반품 취소</span></button>
+						<button tyep="submit" class="btn btn_primary submit_btn" onclick="fnReturn()"><span id="returnButton">반품 신청</span></button>
+					</div>
+				</div>
+			</form>
+		</div>
+	</div>-->
+<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+	let cancelList = [[${cancelList}]];
+	let usedGiftCardInfo = [[${usedGiftCardInfo}]];
+	let usedPointInfo = [[${usedPointInfo}]];
+
+	$(document).ready(function() {
+		// 마이페이지 LNB 설정
+		fnSetMypageLnbList(2);
+		
+		// 마이페이지 location 설정
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRS_LIST', '취소 신청');
+		
+		// 셀렉트박스 활성화
+		var goods_count_selecter = new sCombo('.myOrderView .part_goods .select_custom.select_count');
+	});
+	
+	// 취소 처리
+	var fnCancel = function() {
+		// TODO
+		// 취소신청 처리
+	}
+	
+	// 취소 수량 변경 이벤트 처리
+	var fnChangeCancelQty = function(param) {
+		let url = '/mypage/cancel/refund/amt/calculate';
+
+		if (param != null) {
+			$(param).parent().parent().find('input[name=chgQty]').val($(param).val());
+		}
+
+		let cancelRequestList = [];
+
+		// 취소 수량 설정
+		let chgQtyArr = [];
+		let ordDtlNoArr = [];
+		let ordCanChgQtyArr = [];
+		let chgQtyChk = 0;
+		$.each($('input[name=chgQty]'), function(idx, item) {
+			let chgQty = $(item).val();
+			let ordDtlNo = $(item).attr('ordDtlNo');
+			let ordCanChgQty = $(item).attr('ordCanChgQty');
+
+			chgQtyArr.push(Number(chgQty));
+			ordDtlNoArr.push(Number(ordDtlNo));
+			ordCanChgQtyArr.push(Number(ordCanChgQty));
+			
+			chgQtyChk += Number(chgQty);
+		});
+
+		if (chgQtyChk > 0) {
+			// 환불포인트, 환불상품권 금액 계산
+			let refundPoint = fnCalculatePoint(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr);
+			let refundGiftCard = fnCalculateGiftCard(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr);
+			
+			$.each(cancelList, function (idx, item) {
+				let index = ordDtlNoArr.indexOf(item.ordDtlNo);
+				item.ordCanChgQty = chgQtyArr[index];
+				
+				cancelRequestList.push(item);
+			})
+			
+			let jsonData = JSON.stringify(cancelRequestList);
+			
+			gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
+				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;				// 환불예정금액
+				
+				// 금액 설정
+				$('#returnAmt').text(returnAmt.addComma());
+				$('#goodsCancelAmt').text(goodsCancelAmt.addComma());
+				$('#deliveryFee').text(deliveryFee.addComma());
+				$('#deductDcAmt').text(deductDcAmt.addComma());
+				$('#refundPayAmt').text(refundPayAmt.addComma());
+				$('#refundPoint').text(refundPoint.addComma());
+				$('#refundGiftCard').text(refundGiftCard.addComma());
+				console.log(result);
+			});
+		}
+	}
+
+	// 환불 포인트 계산
+	var fnCalculatePoint = function(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr) {
+		let refundPoint = 0;
+
+		$.each(usedPointInfo, function(idx, item) {
+			let index = ordDtlNoArr.indexOf(item.ordDtlNo);
+			let chgQty = chgQtyArr[index];
+			let ordCanChgQty = ordCanChgQtyArr[index];
+			
+			if (chgQty > 0) {
+				if (chgQty == ordCanChgQty) {
+					refundPoint += item.pntAmt;
+				} else {
+					refundPoint += item.pntAmt * (chgQty / ordCanChgQty);
+				}
+			}
+		});
+		
+		return refundPoint;
+	}
+	
+	// 환불 상품권 계산
+	var fnCalculateGiftCard = function(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr) {
+		let refundGiftCard = 0;
+		
+		$.each(usedGiftCardInfo, function(idx, item) {
+			let index = ordDtlNoArr.indexOf(item.ordDtlNo);
+			let chgQty = chgQtyArr[index];
+			let ordCanChgQty = ordCanChgQtyArr[index];
+			
+			if (chgQty > 0) {
+				if (chgQty == ordCanChgQty) {
+					refundGiftCard += item.gfcdAmt;
+				} else {
+					refundGiftCard += item.pntAmt * (chgQty / ordCanChgQty);
+				}
+			}
+		});
+		
+		return refundGiftCard;
+	}
+</script>
+
+</th:block>
+
+</body>
+</html>

+ 21 - 19
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html

@@ -237,15 +237,21 @@
 		</form>
 		<form id="exchangeForm" name="exchangeForm" action="#" th:action="@{'/mypage/exchange/form'}" th:method="post">
 			<input type="hidden" name="ordNo"/>
-			<input type="hidden" name="ordDtlNoArr"/>
+			<input type="hidden" name="ordDtlNo"/>
+			<input type="hidden" name="supplyCompCd"/>
+		</form>
+		<form id="returnForm" name="returnForm" action="#" th:action="@{'/mypage/return/form'}" th:method="post">
+			<input type="hidden" name="ordNo"/>
+			<input type="hidden" name="ordDtlNo"/>
+			<input type="hidden" name="supplyCompCd"/>
 		</form>
 		<form id="cancelForm" name="cancelForm" th:action="@{'/mypage/cancel/form'}" th:method="post">
 			<input type="hidden" name="ordNo"/>
-			<input type="hidden" name="ordDtlNoArr"/>
+			<input type="hidden" name="ordDtlNo"/>
 		</form>
 		<form id="reviewForm" name="reviewForm" th:action="@{'/mypage/review/form'}" th:method="post">
 			<input type="hidden" name="ordNo"/>
-			<input type="hidden" name="ordDtlNoArr"/>
+			<input type="hidden" name="ordDtlNo"/>
 		</form>
 	</div>
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
@@ -418,12 +424,11 @@
 				tag += '	</div>\n';
 				tag += '	<div class="goods_cont">\n';
 				$.each(order.ordDtlList, function (index, ordDtl) {
-					console.log(ordDtl);
 					tag += '		<div class="goods_info">\n';
 					tag += '			<div class="order_desc">\n';
 					tag += '				<div class="goods_box">\n';
 					tag += '					<div class="gd_item">\n';
-					tag += '						<a href="">\n';
+					tag += '						<a href="javascript:void(0)" goodsCd="' + ordDtl.goodsCd + '" onclick="fnGoToGoodsDetail(this)">\n';
 					tag += '							<span class="thumb">\n';
 					tag += '								<img src="' + imageUrl + '/' + ordDtl.sysImgNm + '" width="100%" alt="">\n';
 					tag += '							</span>\n';
@@ -454,7 +459,7 @@
 					tag += '							<span class="count"><em>' + ordDtl.ordQty + '</em>개</span>\n';
 					tag += '						</p>\n';
 					tag += '						<p>\n';
-					tag += '							<span class="price_org"><em>' + ordDtl.listPrice.addComma() + '</em>원</span>\n';
+					tag += '							<span class="price_org"><em>' + (ordDtl.listPrice * ordDtl.ordQty).addComma() + '</em>원</span>\n';
 					tag += '							<span class="price_sale"><em>' + ordDtl.ordAmt.addComma() + '</em>원</span>\n';
 					tag += '						</p>\n';
 					tag += '					</div>\n';
@@ -493,22 +498,19 @@
 
 						// 교환신청 버튼(배송중, 출고완료, 배송완료)
 						if (ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55' || ordDtl.ordDtlStat == 'G013_60') {
-							console.log(ordDtl);
-							console.log(ordDtl.changeableYn);
-							console.log(ordDtl.returnableYn);
 							// 교환/반품 가능한 상품
 							if (ordDtl.changeableYn == 'Y' && ordDtl.returnableYn == 'Y') {
-								tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateChange(this, \'exchange\');"><span>교환 신청</span></button></p>\n';
-								tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateChange(this, \'return\');"><span>반품 신청</span></button></p>\n';
+								tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" supplyCompCd="' + ordDtl.supplyCompCd + '" onclick="fnCreateChange(this, \'exchange\');"><span>교환 신청</span></button></p>\n';
+								tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" supplyCompCd="' + ordDtl.supplyCompCd + '" onclick="fnCreateChange(this, \'return\');"><span>반품 신청</span></button></p>\n';
 							}
 							// 교환 신청 불가 상품
 							else if (ordDtl.changeableYn == 'N' && ordDtl.returnableYn == 'Y') {
 								tag += '					<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);"><span>1:1 문의</span></button></p>\n';
-								tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateChange(this, \'return\');"><span>반품 신청</span></button></p>\n';
+								tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" supplyCompCd="' + ordDtl.supplyCompCd + '" onclick="fnCreateChange(this, \'return\');"><span>반품 신청</span></button></p>\n';
 							}
 							// 반품 신청 불가 상품
 							else if (ordDtl.changeableYn == 'Y' && ordDtl.returnableYn == 'N') {
-								tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateChange(this, \'exchange\');"><span>교환 신청</span></button></p>\n';
+								tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" supplyCompCd="' + ordDtl.supplyCompCd + '" onclick="fnCreateChange(this, \'exchange\');"><span>교환 신청</span></button></p>\n';
 								tag += '					<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);"><span>1:1 문의</span></button></p>\n';
 							}
 							// 교환/반품 신청 불가 상품
@@ -524,12 +526,7 @@
 
 						// 구매확정 버튼(배송완료)
 						if (ordDtl.ordDtlStat == 'G013_60') {
-							tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnDecideOrder(this);"><span>구매 확정</span></button></p>\n';
-						}
-
-						// 쇼핑백담기 버튼(구매확정)
-						if (ordDtl.ordDtlStat == 'G013_70') {
-							tag += '					<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></p>\n';
+							tag += '					<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnDecideOrder(this);"><span>구매 확정</span></button></p>\n';
 						}
 
 						// 리뷰작성 버튼(구매확정)
@@ -537,6 +534,11 @@
 							tag += '					<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>\n';
 						}
 
+						// 쇼핑백담기 버튼(구매확정)
+						if (ordDtl.ordDtlStat == 'G013_70') {
+							tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></p>\n';
+						}
+
 						// 1:1문의 버튼(구매확정)
 						if (ordDtl.ordDtlStat == 'G013_70' && (ordDtl.reviewableYn == 'N' || ordDtl.reviewSq > 0)) {
 							tag += '					<p><button type="button" class="btn btn_default btn_sm" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA);"><span>1:1 문의</span></button></p>\n';

+ 46 - 101
src/main/webapp/ux/pc/js/mypage.js

@@ -4,6 +4,12 @@ var fnGoToOrderDetail = function(param) {
 	cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
 }
 
+// 상품상세 페이지 이동 처리
+var fnGoToGoodsDetail = function(param) {
+	let goodsCd = $(param).attr('goodsCd');
+	cfnGoToPage(_PAGE_GOODS_DETAIL + goodsCd);
+}
+
 // 배송조회 버튼 클릭 이벤트
 var fnGetDeliveryInfo = function(param) {
 	let invoiceNo = $(param).attr('invoiceNo');
@@ -15,21 +21,17 @@ var fnGetDeliveryInfo = function(param) {
 
 // 구매확정 버튼 클릭 이벤트
 var fnDecideOrder = function(param) {
-	let ordDtlNoArr = $(param).parent().parent().find('input[name=ordDtlNo]');
-	let ordDtlStatArr = $(param).parent().parent().find('input[name=ordDtlStat]');
-	
 	let orderDecisionArr = [];
-	$.each(ordDtlNoArr, function(idx, item) {
-		if (ordDtlStatArr[idx].value == 'G013_60') {
-			orderDecisionArr.push(item.value);
-		}
-	});
-	
+	let ordNo = $(param).attr('ordNo');
+	let ordDtlNo = $(param).attr('ordDtlNo');
+
+	orderDecisionArr.push(ordDtlNo);
+
 	if (orderDecisionArr.length == 0) {
 		mcxDialog.alert('구매확정 가능한 상품이 없습니다.');
 		return false;
 	}
-	
+
 	mcxDialog.confirm('구매확정 처리를 하시겠습니까?', {
 		cancelBtnText: "취소",
 		sureBtnText: "확인",
@@ -54,78 +56,29 @@ var fnDecideOrder = function(param) {
 }
 
 // 리뷰작성 버튼 클릭 이벤트
-var fnCreateReview = function(param, bannerYn) {
-	let ordDtlNoArr;
-	let ordDtlStatArr;
-	let reviewSqArr;
-
-	if (bannerYn == 'Y') {
-		ordDtlNoArr = $(param).parent().parent().find('input[name=ordDtlNo]');
-		ordDtlStatArr = $(param).parent().parent().find('input[name=ordDtlStat]');
-		reviewSqArr = $(param).parent().parent().find('input[name=reviewSq]');
-	} else {
-		ordDtlNoArr = $(param).parent().parent().parent().parent().find('input[name=ordDtlNo]');
-		ordDtlStatArr = $(param).parent().parent().parent().parent().find('input[name=ordDtlStat]');
-		reviewSqArr = $(param).parent().parent().parent().parent().find('input[name=reviewSq]');
-	}
-	
-	let canReviewSqArr = [];
-	$.each(ordDtlNoArr, function(idx, item) {
-		if (ordDtlStatArr[idx].value == 'G013_70' && reviewSqArr[idx].value == 0) {
-			canReviewSqArr.push(item.value);
-		}
-	});
-	
-	if (canReviewSqArr.length == 0) {
-		mcxDialog.alert('리뷰작성 가능한 상품이 없습니다.');
-		return false;
-	}
-	
+var fnCreateReview = function(param) {
+	let ordNo = $(param).attr('ordNo');
+	let ordDtlNo = $(param).attr('ordDtlNo');
+
 	// TODO
 	// 리뷰 작성페이지 이동
 	let data = {};
-	
+
 	data.ordNo = ordNo;
-	data.ordDtlNoArr = canReviewSqArr;
-	
+	data.ordDtlNo = ordDtlNo;
+
 	var jsonData = JSON.stringify(data);
 	
-	//gagajf.ajaxJsonSubmit('/mypage/order/decision'
-	//	, jsonData
-	//	, function() {
-	//		cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
-	//	});
-	
 }
 
 // 장바구니 담기 버튼 클릭 이벤트
-var fnCreateCart = function(param, bannerYn) {
-	let ordDtlNoArr = '';
-	let ordDtlStatArr = '';
-	let reviewSqArr = '';
-
-	if (bannerYn == 'Y') {
-		ordDtlNoArr = $(param).parent().parent().find('input[name=ordDtlNo]');
-		ordDtlStatArr = $(param).parent().parent().find('input[name=ordDtlStat]');
-		reviewSqArr = $(param).parent().parent().find('input[name=reviewSq]');
-	} else {
-		ordDtlNoArr = $(param).parent().parent().parent().parent().parent().find('input[name=ordDtlNo]');
-		ordDtlStatArr = $(param).parent().parent().parent().parent().parent().find('input[name=ordDtlStat]');
-		reviewSqArr = $(param).parent().parent().parent().parent().parent().find('input[name=reviewSq]');
-	}
-	
+var fnCreateCart = function(param) {
 	let cartArr = [];
-	$.each(ordDtlNoArr, function(idx, item) {
-		if (bannerYn != 'Y' || (bannerYn == 'Y' && ordDtlStatArr[idx].value == 'G013_70' && reviewSqArr[idx].value > 0)) {
-			cartArr.push(item.value);
-		}
-	});
-	
-	if (cartArr.length == 0) {
-		mcxDialog.alert('장바구니에 담을 상품이 없습니다.');
-		return false;
-	}
-	
+	let ordNo = $(param).attr('ordNo');
+	let ordDtlNo = $(param).attr('ordDtlNo');
+
+	cartArr.push(ordDtlNo);
+
 	// TODO
 	// 장바구니 담기 처리
 	let data = {};
@@ -135,11 +88,6 @@ var fnCreateCart = function(param, bannerYn) {
 	
 	var jsonData = JSON.stringify(data);
 	
-	//gagajf.ajaxJsonSubmit('/mypage/order/decision'
-	//	, jsonData
-	//	, function() {
-	//		cfnGoToPage(_PAGE_MYPAGE_ORDER_DETAIL + ordNo);
-	//	});
 }
 
 // 선물하기 SMS 재전송 버튼 클릭 이벤트
@@ -152,25 +100,24 @@ var fnReSendSms = function(param) {
 
 // 반품/취소/교환 버튼 클릭 이벤트
 var fnCreateChange = function(param, gubun) {
-	if (ordNo == null) {
-		ordNo = $(param).attr('ordNo');
-	}
-	
-	let ordDtlNoArr = $(param).parent().parent().parent().parent().find('input[name=ordDtlNo]');
-	
-	let changeArr = [];
-	$.each(ordDtlNoArr, function(idx, item) {
-		changeArr.push(item.value);
-	})
-	
+	let ordNo = $(param).attr('ordNo');
+	let ordDtlNo = $(param).attr('ordDtlNo');
+
 	$('#' + gubun + 'Form input[name=ordNo]').val(ordNo);
-	$('#' + gubun + 'Form input[name=ordDtlNoArr]').val(changeArr);
+	$('#' + gubun + 'Form input[name=ordDtlNo]').val(ordDtlNo);
+	mcxDialog.alertC(gubun,  {
+		sureBtnText: "확인",
+		sureBtnClick: function() {
+			if (gubun == 'cancel') {
+				document.cancelForm.submit();
+			} else if (gubun == 'return') {
+				document.returnForm.submit();
+			} else if (gubun == 'exchange') {
+				document.exchangeForm.submit();
+			}
+		}
+	});
 	
-	if (gubun == 'cancel') {
-		document.cancelForm.submit();
-	} else {
-		document.exchangeForm.submit();
-	}
 }
 
 // 주문 내역 삭제 처리
@@ -180,15 +127,13 @@ var fnDeleteOrder = function() {
 		sureBtnText: "확인",
 		sureBtnClick: function(){
 			let data = {};
-			
+
 			data.ordNo = ordNo;
-			
+
 			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit('/mypage/order/delete'
-				, jsonData
-				, function() {
-					cfnGoToPage(_PAGE_MYPAGE);
-				});
+			gagajf.ajaxJsonSubmit('/mypage/order/delete', jsonData, function() {
+				cfnGoToPage(_PAGE_MYPAGE);
+			});
 		}
 	});
 };