Selaa lähdekoodia

Merge branch 'develop' into card007

card007 4 vuotta sitten
vanhempi
commit
e2d0a47440

+ 10 - 0
src/main/java/com/style24/admin/biz/dao/TsaGoodsDao.java

@@ -1380,4 +1380,14 @@ public interface TsaGoodsDao {
 	 * @since 2021. 07. 14
 	 */
 	void deleteGoodsContentGoods(GoodsContentsData goodsContentsData);
+	
+	/**
+	 * 상품 상태만 변경
+	 *
+	 * @param goods
+	 * @return
+	 * @author jmh
+	 * @since 2021. 08. 05
+	 */
+	void updateGoodsStatOnly(Goods goods);
 }

+ 11 - 0
src/main/java/com/style24/admin/biz/service/TsaGoodsService.java

@@ -2691,6 +2691,7 @@ public class TsaGoodsService {
 	@Transactional("shopTxnManager")
 	public void saveGoodsImageList(Collection<GoodsImg> goodsImgList) {
 		int index = 0;
+		Goods goods;
 		for (GoodsImg goodsImg : goodsImgList) {
 			// 상품이미지 전체 삭제
 			if (index++ == 0) {
@@ -2702,6 +2703,16 @@ public class TsaGoodsService {
 				goodsImg.setRegNo(TsaSession.getInfo().getUserNo());
 				goodsDao.createGoodsImage(goodsImg);
 			}
+			
+			// "정보부족"인 상태의 상품 중 기본이미지가 생성될 경우 승인대기상태로 변경
+			if (goodsImg.getMode().equals("C") && goodsImg.getDefaultImgYn().equals("Y")) {
+				goods = new Goods();
+				goods.setChGoodsStatYn("Y");
+				goods.setGoodsCd(goodsImg.getGoodsCd());
+				goods.setGoodsStat("G008_40");
+				goods.setUpdNo(TsaSession.getInfo().getUserNo());
+				goodsDao.updateGoodsStatOnly(goods);
+			}
 		}
 	}
 

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

@@ -393,11 +393,21 @@ public class TsaOrderChangeController extends TsaBaseController {
 		}
 		
 		List<Order> cnclRtnCompleteList 	= coreOrderChangeService.getCnclRtnCompleteList(order);
+		
+		// 2021.08.04 AS-IS  데이타를 위해서 생성 처리
+		if (cnclRtnCompleteList == null || cnclRtnCompleteList.size() < 1) {
+			OrderChange orderChange = new OrderChange();
+			orderChange.setOrdChgSq(ordChgSq);
+			GagaMap resultMap = coreOrderChangeService.getCreCancelDetailInfo(orderChange);
+			mav.addObject("oneData"				, resultMap.get("oneData"));
+		}
+		
 		Collection<Order> orderInfoList 	= coreOrderService.getOrderInfoList(order);
 		
 		mav.addObject("cnclRtnCompleteList"		, cnclRtnCompleteList);			// 취소완료목록
 		mav.addObject("orderInfoList"			, orderInfoList);				// 주문기본정보
 		mav.addObject("chgStat"					, order.getChgStat());			// 변경요청상태값(정산상태구분)
+		
 		mav.setViewName("order/CnclCompleteView");
 		
 		return mav;

+ 2 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml

@@ -193,6 +193,7 @@
 							 LEFT OUTER JOIN TB_CUST_ACCOUNT  T       ON A.CUST_NO      = T.CUST_NO AND T.DEL_YN = 'N' AND T.CUST_NO NOT IN(0)
 							WHERE 1=1 
 							  AND B.GOODS_TYPE NOT IN ('G056_S')
+							  AND C.SELF_GOODS_YN = 'Y'
 					        <include refid="getDeliveryListCondition_sql"/>
 							
 							UNION ALL
@@ -255,6 +256,7 @@
 							 LEFT OUTER JOIN TB_CUST_ACCOUNT  T       ON A.CUST_NO      = T.CUST_NO AND T.DEL_YN = 'N' AND T.CUST_NO NOT IN(0)
 							WHERE 1=1
 							  AND B.GOODS_TYPE IN ('G056_S')
+							  AND C.SELF_GOODS_YN = 'Y'
 							<include refid="getDeliveryListCondition_sql"/>  
 					) A
 				) A

+ 14 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -5292,4 +5292,18 @@
 		WHERE  GOODS_CONTENTS_SQ = #{goodsContentsSq}
 	</update>
 	
+	<!-- 상품 상태만 변경 -->
+	<update id="updateGoodsStatOnly" parameterType="Goods">
+		/* TsaGoods.updateGoodsStatOnly */
+		UPDATE TB_GOODS 
+		SET GOODS_STAT= #{goodsStat}
+		  , UPD_NO = #{updNo}
+		  , UPD_DT = NOW() 
+		WHERE GOODS_CD = #{goodsCd}
+		
+		<if test='chGoodsStatYn != null and chGoodsStatYn == "Y"'>
+		  AND GOODS_STAT = 'G008_20'
+		</if>
+	</update>
+	
 </mapper>

+ 11 - 9
src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml

@@ -51,7 +51,7 @@
 					  O.ORD_NO        -- 주문번호
 					, C.ORD_DTL_NO    -- 주문상세번호 
 					, A.WD_INVOICE_NO -- 회수송장번호	
-					, CASE WHEN C.COMPLETE_DT IS NOT NULL THEN '환불완료' ELSE '환불대기' END AS RFND_STAT -- 환불상태 
+					, CASE WHEN C.CHG_STAT = 'G685_60' THEN '환불완료' ELSE '환불대기' END AS RFND_STAT -- 환불상태 
 					, CASE WHEN D.WD_GB = 'W' THEN '회수요청' ELSE '직접배송' END AS WD_GB   -- 회수구분(W:회수요청, D:직접배송)
 					, D.ORD_CHG_SQ    -- 주문변경일련번호 
 					, I.ORD_NM        -- 주문자명
@@ -108,10 +108,12 @@
 		<if test="withdrawType != null and withdrawType != ''">
 			<choose>
 				<when test='withdrawType == "N"'> -- 환불대기
-				AND C.COMPLETE_DT IS NULL
+				-- AND C.COMPLETE_DT IS NULL
+				   AND C.CHG_STAT NOT IN('G685_60')
 				</when>
 				<when test='withdrawType == "Y"'> -- 환불완료
-				AND C.COMPLETE_DT IS NOT NULL
+				-- AND C.COMPLETE_DT IS NOT NULL
+				   AND C.CHG_STAT = 'G685_60'
 				</when>
 			</choose>
 		</if>
@@ -676,8 +678,8 @@
 				, F.ENCLOSE_FEE  -- 동봉비 
 				, F.COD_FEE      -- 착불비
 				, IFNULL((SELECT P.PAY_AMT FROM TB_PAYMENT P WHERE P.ORD_CHG_SQ = A.ORD_CHG_SQ AND P.PAY_GB ='D' AND P.PAY_STAT = 'G016_30'),0) AS ADD_PAY_COST -- 추가결제비용 
-				, A.CHG_MEMO     -- 클레임메모 
-				, F.WD_MEMO      -- WMS회수메모 
+				, IFNULL(A.CHG_MEMO, '') AS CHG_MEMO     -- 클레임메모 
+				, IFNULL(F.WD_MEMO,'') AS WD_MEMO      -- WMS회수메모 
 				, A.WD_GB  -- 회수구분(W:회수요청, D:직접배송) 
 				, E.ORD_NO -- 주문번호
 				, D.ORD_DTL_NO -- 주문상세번호 
@@ -687,8 +689,8 @@
 				, D.OPT_CD2 -- 옵션2
 				, B.CHG_QTY * D.ITEM_QTY AS CHG_QTY-- 신청수량 
 				, G.WD_QTY -- 회수수량 
-				, CASE WHEN B.COMPLETE_DT IS NULL THEN '환불대기' ELSE '환불완료' END AS WD_STAT  -- 환불컨펌상태 
-				, CASE WHEN B.COMPLETE_DT IS NULL THEN 'N' ELSE 'Y' END AS WD_STAT_YN   
+				, CASE WHEN B.CHG_STAT = 'G685_60' THEN '환불완료' ELSE '환불대기' END AS WD_STAT  -- 환불컨펌상태 
+				, CASE WHEN B.CHG_STAT = 'G685_60' THEN 'Y' ELSE 'N' END AS WD_STAT_YN   
 				, A.ORD_CHG_SQ -- 주분변경번호 환불컨펌  
 				, DATE_FORMAT(G.REG_DT, '%Y-%m-%d') AS REG_DT  -- 등록일 
 				, E.MALL_GB 
@@ -696,7 +698,7 @@
 				, CASE WHEN (SELECT COUNT(*) FROM TB_ORDER_RECALL_EXCEPTION_ITEM EI  WHERE EI.ORDER_DTL_NO = D.ORD_DTL_NO AND EI.REASON_CODE IN('09','11')) > 0 THEN 'Y' ELSE 'N' END AS DELV_EXPN_YN
 				, CA.RA_NO AS ACCOUNT_NO 
 				, CA.RA_NM AS ACCOUNT_NM 
-				, CA.RA_BANK AS BANK_CD 	
+				, CA.RA_BANK AS BANK_CD 
 				, E.ORD_NM 	
 				, C.DELV_ADDR_SQ
 				, F.WD_INVOICE_NO 
@@ -722,7 +724,7 @@
 			, ORD_DTL_NO 
 			, CHG_STAT 
 		FROM TB_ORDER_CHANGE_DETAIL
-		WHERE ORD_CHG_SQ = 980
+		WHERE ORD_CHG_SQ = #{ordChgSq}
 		  AND DEL_YN     = 'N'
 	</select>	
 		

+ 1 - 1
src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -2152,7 +2152,7 @@
 	//저장 관련 체크
 	var fnSaveCheck = function(idx){
 		if($("#goodsDetailForm input:checkbox[name=chkDescKeep]").is(':checked')){
-			mcxDialog.confirmC("'정보유지' 체크박스가 선택되어 있어 '상품상세설명' 항목이 저장되지 않습니다.<br/>저장을 원하시면 체크를 해제하세요. 계속하시겠습니까?", {
+			mcxDialog.confirmC("상품상세정보 탭의 정보를 수정하는 경우는 정보유지 체크박스를 체크해제 하신후 저장버튼을 눌러주세요<br>(정보유지에 체크가 되어 있으면 변경사항이 반영되지 않습니다)<br>나머지 다른 탭은 저장버튼 클릭시 변경한 사항이 이상없이 반영됩니다. 계속하시겠습니까?", {
 				btn: ["아니요","예"],
 				btnClick: function(index){
 					if (index == 1){

+ 33 - 2
src/main/webapp/WEB-INF/views/marketing/SocialShoppingListForm.html

@@ -273,8 +273,8 @@
 								<button type="button" class="btn btn-default btn-lg" id="addExcelGoodsBtn" onclick="fnSocialGoodsExcelUpload();">엑셀상품추가</button>
 								<button type="button" class="btn btn-default btn-lg" id="excelDownBtn" onclick="cfnDownloadSampleFile('SF011');">엑셀상품추가 양식 다운로드</button>
 								<button type="button" class="btn btn-success btn-lg" id="regGoodsBtn" onclick="fnSocialGoodsSave();">저장</button>
-								<button type="button" class="btn btn-danger  btn-lg" id="applyBtn" style="display:none;" onclick="fnApplyGoods();">즉시적용</button>
-								<button type="button" class="btn btn-dark btn-lg" id="endBtn" style="display:none;" onclick="fnEndSocial();">종료</button>
+								<button type="button" class="btn btn-danger  btn-lg" id="applyBtn" style="display:none;">즉시적용</button>
+								<button type="button" class="btn btn-dark btn-lg" id="endBtn" style="display:none;">종료</button>
 							</li>
 						</ul>
 						<div id="gridSocialGoodsList" style="width: 100%; height: 700px" class="ag-theme-balham lh60"></div>
@@ -470,6 +470,9 @@
 		$(formId + ' select[name=planSq]').removeAttr("disabled");
 		$(formId + ' select[name=socialType]').removeAttr("disabled");
 		$(formId + ' button[id=btnSearchPlan]').removeAttr("style");
+		
+		// 대기상태로 세팅
+		$("input[name=applyGb]").val("P");
 
 	};
 	// 소셜 기본정보 저장
@@ -531,13 +534,40 @@
 	
 	// 소셜 저장
 	var fnSocialSave = function(msg) {
+		
 		mcxDialog.confirm(msg +' 하시겠습니까?', {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function() {
+				
+				var formId = '#detailForm';
+				// 서버전송시 임시해제
+				if("P" == $("input[name=applyGb]").val()){
+					if( "" == $("#detailForm input[name=socialSq]").val()){	// 신규등록
+						$(formId + ' select[name=useYn]').attr('disabled', false);
+					}
+				}else if("A" == $("input[name=applyGb]").val()){
+					$(formId+ " input").prop("disabled", false);
+					$(formId+ " select").prop("disabled", false);
+				}
+				
 				var actionUrl = '/marketing/social/save';
 				gagajf.ajaxFormSubmit(actionUrl, '#detailForm', function() {
 					fnSearch();
+					
+					// 전송완료 후 원래 상태값으로 변경 
+					if("P" == $("input[name=applyGb]").val()){
+						if( "" == $("#detailForm input[name=socialSq]").val()){	// 신규등록
+							$(formId + ' select[name=useYn]').attr('disabled', true);
+						}
+					}else if("A" == $("input[name=applyGb]").val()){
+						$(formId+ " input").prop("disabled", true);
+						$(formId+ " select").prop("disabled", true);
+						$(formId + ' input[name=edDate]').attr('readonly', false);
+						$(formId + ' input[name=edDate]').prop('disabled', false);
+						$(formId + ' #edTimeHour').prop('disabled', false);
+						$(formId + ' #edTimeHour').attr('readonly', false);
+					}
 				});
 			}
 		});
@@ -933,6 +963,7 @@
 
 	var fnEndSocialCallBack = function (result){
 		console.log(result);
+		fnSearch();
 	}
 	
 /*]]>*/

+ 245 - 79
src/main/webapp/WEB-INF/views/order/CnclCompleteView.html

@@ -37,10 +37,12 @@
 				</th:block>
 			
 				<div id="gridCnclRtnCompleteList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
-
-				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
-					<button type="button" class="btn btn-success" id="cnclCompleteBtn" onclick="fnPopupClose();">확인</button>
-				</div>
+				
+				<th:block th:if="${cnclRtnCompleteList != null}">
+					<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
+						<button type="button" class="btn btn-success" id="cnclCompleteBtn" onclick="fnPopupClose();">확인</button>
+					</div>
+				</th:block>
 				
 				<table class="frmStyle">
 					<colgroup>
@@ -65,6 +67,92 @@
 					</tbody>
 				</table>
 				
+				<h4>환불금액</h4>
+				<table class="frmStyle">
+					<colgroup>
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+					</colgroup>
+					<thead>
+						<tr>
+							<th style="height:30px;">구분</th>
+							<th style="height:30px;">항목</th>
+							<th style="height:30px;">합계</th>
+							<th style="height:30px;">내역</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td style="height:25px;">상품금액</td>
+							<td>취소상품금액</td>
+							<td class="spanCnclRtnAmt">15,000원</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td rowspan="2">할인금액차감</td>
+							<td>쿠폰할인차감</td>
+							<td class="spanCpnDcAmt">15,000원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>즉시할인쿠폰 : </span><span class="spanCpn1DcAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>주문서상품쿠폰 : </span><span class="spanGoodsCpnDcAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>장바구니쿠폰 : </span><span class="spanCartCpnDcAmt">-60,000원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td>상품할인차감</td>
+							<td class="goodsDcSumAmt">15,000원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>선포인트할인 : </span><span class="spanPrePntDcAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>다다익선할인 : </span><span class="spanTmtbDcAmt">-60,000원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td>배송비</td>
+							<td>환불배송비</td>
+							<td class="spanRealDelvAmt">-60,000원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>배송비쿠폰 : </span><span class="delvCpnAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>추가금결제 : </span><span class="addDelvFee">-60,000원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td rowspan="4">환불금액</td>
+							<td style="height:25px;">총환불금액</td>
+							<td class="totalRefundAmt">70,000원</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td style="height:25px;">결제수단환불</td>
+							<td class="spanRefundAmt">70,000원</td>
+							<td>
+								<span class="pgGbNm">신용카드</span><span class="cardNm">(현대)</span>
+							</td>
+						</tr>
+						<tr>
+							<td style="height:25px;">상품권환불</td>
+							<td class="spanGfcdUseAmt">70,000P</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td style="height:25px;">포인트환불</td>
+							<td class="spanPntDcAmt">70,000원</td>
+							<td>
+								<span>적립예정포인트환수 : </span><span class="spanSavePntAmt">60,000P</span>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				
+				<!-- as-is 일때 처리 -->
+				<th:block th:if="${cnclRtnCompleteList == null}">
+					<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
+						<button type="button" class="btn btn-success" id="cnclCompleteBtn" onclick="fnPopupClose();">확인</button>
+					</div>
+				</th:block>
+				
+				<!-- 
 				<h4>환불예정금액</h4>
 				<table class="frmStyle">
 					<colgroup>
@@ -108,6 +196,7 @@
 						</tr>
 					</tbody>
 				</table>
+				 -->
 				
 				<div id="refundAccount" style="width:100%">
 					<h4>환불계좌정보</h4>
@@ -153,17 +242,19 @@ var cnclRtnCompleteList 	= [[${cnclRtnCompleteList}]];				// 취소,반품 완
 var orderInfoList 			= [[${orderInfoList}]];						// 취소,반품 완료 정보 목록
 var pgGb 					= orderInfoList[0].pgGb;					// 결제수단
 var payMeans 				= orderInfoList[0].payMeans;				// 결제방법
-var addPayCost				= cnclRtnCompleteList[0].addPayCost;		// 추가배송비
-var realDelvAmt				= cnclRtnCompleteList[0].realDelvAmt;		// 환불배송비
-var delvCpnDcAmt			= cnclRtnCompleteList[0].delvCpnDcAmt;		// 배송비쿠폰환불
-var chgReason				= cnclRtnCompleteList[0].chgReason;			// 변경사유코드
-var chgReasonNm				= cnclRtnCompleteList[0].chgReasonNm;		// 변경사유코드명
-var chgMemo					= cnclRtnCompleteList[0].chgMemo;			// 변경사유메모
-var raBankNm				= cnclRtnCompleteList[0].raBankNm;			// 환불계좌은행명
-var raBank					= cnclRtnCompleteList[0].raBank;			// 환불계좌은행코드
-var raNo					= cnclRtnCompleteList[0].raNo;				// 환불계좌번호
-var raNm					= cnclRtnCompleteList[0].raNm;				// 환불계좌명
-var chgStat 				= [[${chgStat}]];							// 변경요청상태값(정산상택값)
+var cardNm 					= orderInfoList[0].cardNm;					// 카드정보
+var addPayCost				= 0;										// 추가배송비
+var realDelvAmt				= 0;										// 환불배송비
+var delvCpnDcAmt			= 0;										// 배송비쿠폰환불
+var chgReason				= "";										// 변경사유코드
+var chgReasonNm				= "";										// 변경사유코드명
+var chgMemo					= "";										// 변경사유메모
+var raBankNm				= "";										// 환불계좌은행명
+var raBank					= "";										// 환불계좌은행코드
+var raNo					= "";										// 환불계좌번호
+var raNm					= "";										// 환불계좌명
+var chgStat 				= [[${chgStat}]];							// 변경요청상태값(정산상태값)
+var payStat					= orderInfoList[0].payStat;					// 결제상태
 
 // 1. 취솨,반품완료 정보 목록 조회
 var columnCnclRtnCompleteList = [
@@ -349,10 +440,15 @@ $(document).ready(function() {
 	if (payMeans !== 'G014_20') {
 		$('#refundAccount').addClass("off");
 	} else {
-		$("#refundAccount .bankNm").text(raBankNm);
-		$("#refundAccount .bankCd").text(raBank);
-		$("#refundAccount .accountNo").text(raNo);
-		$("#refundAccount .accountNm").text(raNm);
+		// 2021.08.04 무통장입금전 취소이면 미노출
+		if (payStat == 'G016_10') {
+			$('#refundAccount').addClass("off");
+		} else {
+			$("#refundAccount .bankNm").text(raBankNm);
+			$("#refundAccount .bankCd").text(raBank);
+			$("#refundAccount .accountNo").text(raNo);
+			$("#refundAccount .accountNm").text(raNm);
+		}
 	}
 	
 	// 4. 변경사유설정
@@ -362,67 +458,137 @@ $(document).ready(function() {
 	cfnGetTextLength($('#chgMemo'), 1000, $('#chgMemoCount'));
 	fnChangeChgReason(chgReason);
 	
-	// 5. 환불에정금액 
-	var spanOrdAmt 			= 0;
-	var spanCnclRtnAmt 		= 0;
-	var spanTotPntDcAmt		= 0;
-	var spanPntDcAmt		= 0;
-	var spanPrePntDcAmt		= 0;
-	var spanCpnDcAmt		= 0;
-	var spanCpn1DcAmt		= 0;
-	var spanGoodsCpnDcAmt	= 0;
-	var spanCartCpnDcAmt	= 0;
-	var spanTmtbDcAmt		= 0;
-	var spanTmtb1DcAmt		= 0;
-	var spanTmtb2DcAmt		= 0;
-	var spanGfcdUseAmt		= 0;
-	var spanRealCnclRtnAmt	= 0;
-	var spanTotDeliveryFee	= addPayCost;
-	var spanRefundAmt		= 0;
-	var spanRealDelvAmt		= realDelvAmt;
-	
-	for (i=0 ; i<cnclRtnCompleteList.length ; i++) {
-		spanOrdAmt 				= spanOrdAmt 			+ cnclRtnCompleteList[i].ordAmt;
-		spanCnclRtnAmt 			= spanCnclRtnAmt 		+ cnclRtnCompleteList[i].cnclRtnAmt;
-		spanPntDcAmt			= spanPntDcAmt			+ cnclRtnCompleteList[i].pntDcAmt;
-		spanPrePntDcAmt			= spanPrePntDcAmt		+ cnclRtnCompleteList[i].prePntDcAmt;
-		spanCpn1DcAmt 			= spanCpn1DcAmt 		+ cnclRtnCompleteList[i].cpn1DcAmt;
-		spanGoodsCpnDcAmt 		= spanGoodsCpnDcAmt 	+ cnclRtnCompleteList[i].goodsCpnDcAmt;
-		spanCartCpnDcAmt 		= spanCartCpnDcAmt 		+ cnclRtnCompleteList[i].cartCpnDcAmt;
-		spanTmtb1DcAmt 			= spanTmtb1DcAmt 		+ cnclRtnCompleteList[i].tmtb1DcAmt;
-		spanTmtb2DcAmt 			= spanTmtb2DcAmt 		+ cnclRtnCompleteList[i].tmtb2DcAmt;
-		spanGfcdUseAmt 			= spanGfcdUseAmt 		+ cnclRtnCompleteList[i].gfcdUseAmt;
-		spanRealCnclRtnAmt 		= spanRealCnclRtnAmt 	+ cnclRtnCompleteList[i].realOrdAmt;
+	// 2021.08.04 AS-IS 데이타 처리
+	if (cnclRtnCompleteList != null) {
+		addPayCost				= cnclRtnCompleteList[0].addPayCost;		// 추가배송비
+		realDelvAmt				= cnclRtnCompleteList[0].realDelvAmt;		// 환불배송비
+		delvCpnDcAmt			= cnclRtnCompleteList[0].delvCpnDcAmt;		// 배송비쿠폰환불
+		chgReason				= cnclRtnCompleteList[0].chgReason;			// 변경사유코드
+		chgReasonNm				= cnclRtnCompleteList[0].chgReasonNm;		// 변경사유코드명
+		chgMemo					= cnclRtnCompleteList[0].chgMemo;			// 변경사유메모
+		raBankNm				= cnclRtnCompleteList[0].raBankNm;			// 환불계좌은행명
+		raBank					= cnclRtnCompleteList[0].raBank;			// 환불계좌은행코드
+		raNo					= cnclRtnCompleteList[0].raNo;				// 환불계좌번호
+		raNm					= cnclRtnCompleteList[0].raNm;				// 환불계좌명
+		
+		// 5. 환불에정금액 
+		var spanOrdAmt 			= 0;
+		var spanCnclRtnAmt 		= 0;
+		var spanTotPntDcAmt		= 0;
+		var spanPntDcAmt		= 0;
+		var spanPrePntDcAmt		= 0;
+		var spanCpnDcAmt		= 0;
+		var spanCpn1DcAmt		= 0;
+		var spanGoodsCpnDcAmt	= 0;
+		var spanCartCpnDcAmt	= 0;
+		var spanTmtbDcAmt		= 0;
+		var spanTmtb1DcAmt		= 0;
+		var spanTmtb2DcAmt		= 0;
+		var spanGfcdUseAmt		= 0;
+		var spanRealCnclRtnAmt	= 0;
+		var spanTotDeliveryFee	= addPayCost;
+		var spanRefundAmt		= 0;
+		var spanRealDelvAmt		= realDelvAmt;
+		var spanSavePntAmt		= 0;
+		
+		for (i=0 ; i<cnclRtnCompleteList.length ; i++) {
+			spanOrdAmt 				= spanOrdAmt 			+ cnclRtnCompleteList[i].ordAmt;
+			spanCnclRtnAmt 			= spanCnclRtnAmt 		+ cnclRtnCompleteList[i].cnclRtnAmt;
+			spanPntDcAmt			= spanPntDcAmt			+ cnclRtnCompleteList[i].pntDcAmt;
+			spanPrePntDcAmt			= spanPrePntDcAmt		+ cnclRtnCompleteList[i].prePntDcAmt;
+			spanCpn1DcAmt 			= spanCpn1DcAmt 		+ cnclRtnCompleteList[i].cpn1DcAmt;
+			spanGoodsCpnDcAmt 		= spanGoodsCpnDcAmt 	+ cnclRtnCompleteList[i].goodsCpnDcAmt;
+			spanCartCpnDcAmt 		= spanCartCpnDcAmt 		+ cnclRtnCompleteList[i].cartCpnDcAmt;
+			spanTmtb1DcAmt 			= spanTmtb1DcAmt 		+ cnclRtnCompleteList[i].tmtb1DcAmt;
+			spanTmtb2DcAmt 			= spanTmtb2DcAmt 		+ cnclRtnCompleteList[i].tmtb2DcAmt;
+			spanGfcdUseAmt 			= spanGfcdUseAmt 		+ cnclRtnCompleteList[i].gfcdUseAmt;
+			spanRealCnclRtnAmt 		= spanRealCnclRtnAmt 	+ cnclRtnCompleteList[i].realOrdAmt;
+			spanSavePntAmt			= spanSavePntAmt		+ cnclRtnCompleteList[i].savePntAmt;
+		}
+		
+		spanTotPntDcAmt	= spanPntDcAmt + spanPrePntDcAmt;
+		spanCpnDcAmt	= spanCpn1DcAmt + spanGoodsCpnDcAmt + spanCartCpnDcAmt + delvCpnDcAmt;
+		spanTmtbDcAmt	= spanTmtb1DcAmt + spanTmtb2DcAmt;
+		spanRefundAmt	= spanRealCnclRtnAmt + realDelvAmt;
+		
+		$(".spanCnclRtnAmt").text(spanCnclRtnAmt.addComma()+"원");
+		$(".spanCpn1DcAmt").text(spanCpn1DcAmt.addComma()+"원");
+		$(".spanGoodsCpnDcAmt").text(spanGoodsCpnDcAmt.addComma()+"원");
+		$(".spanCartCpnDcAmt").text(spanCartCpnDcAmt.addComma()+"원");
+		
+		var spanCpnDcAmt = spanCpn1DcAmt + spanGoodsCpnDcAmt + spanGoodsCpnDcAmt;
+		$(".spanCpnDcAmt").text(spanCpnDcAmt.addComma()+"원");
+		
+		$(".spanPrePntDcAmt").text(spanPrePntDcAmt.addComma()+"원");
+		$(".spanTmtbDcAmt").text(spanTmtbDcAmt.addComma()+"원");
+		
+		var goodsDcSumAmt = spanPrePntDcAmt + spanTmtbDcAmt;
+		$(".goodsDcSumAmt").text(goodsDcSumAmt.addComma()+"원");
+		
+		$(".delvCpnAmt").text(delvCpnDcAmt.addComma()+"원");
+		$(".addDelvFee").text(addPayCost.addComma()+"원");
+		$(".spanRealDelvAmt").text(realDelvAmt.addComma()+"원");
+		
+		var totalRefundAmt = spanRefundAmt + spanGfcdUseAmt + spanPntDcAmt;
+		
+		$(".totalRefundAmt").text(totalRefundAmt.addComma()+"원");
+		$(".spanRefundAmt").text(spanRefundAmt.addComma()+"원");
+		$(".spanGfcdUseAmt").text(spanGfcdUseAmt.addComma()+"원");
+		$(".spanPntDcAmt").text(spanPntDcAmt.addComma()+"원");
+		$(".spanSavePntAmt").text(spanSavePntAmt.addComma()+"P");
+		
+		var pgGbNm		= "";
+		var cardGbNm	= "";
+		
+		if (pgGb == 'KCP') {
+			pgGbNm	= payMeansNm;
+			cardGbNm	= "(" + cardNm + ")";
+		} else if (pgGb == 'NAVER') {
+			pgGbNm	= "네이버페이";
+		} else if (pgGb == 'NAVER_ORDER') {
+			pgGbNm	= "네이버페이주문형";
+		} else if (pgGb == 'KAKAO') {
+			pgGbNm	= "카카오페이";
+		} else if (pgGb == 'PAYCO') {
+			pgGbNm	= "페이코";
+		} else if (pgGb == 'ISTYLE') {
+			pgGbNm	= "상품권";
+		} else {
+			pgGbNm	= "외부몰입금";
+		}
+		
+		$(".pgGbNm").text(pgGbNm);
+		$(".cardNm").text(cardGbNm);
+		
+		/*
+		$("#spanOrdAmt").text(spanOrdAmt.addComma());
+		$("#spanCnclRtnAmt").text(spanCnclRtnAmt.addComma());
+		$("#spanTotPntDcAmt").text(spanTotPntDcAmt.addComma());
+		$("#spanPntDcAmt").text(spanPntDcAmt.addComma());
+		$("#spanPrePntDcAmt").text(spanPrePntDcAmt.addComma());
+		$("#spanPntDcAmt").text(spanPntDcAmt.addComma());
+		$("#spanCpn1DcAmt").text(spanCpn1DcAmt.addComma());
+		$("#spanGoodsCpnDcAmt").text(spanGoodsCpnDcAmt.addComma());
+		$("#spanCartCpnDcAmt").text(spanCartCpnDcAmt.addComma());
+		$("#spanDelvCpnDcAmt").text(delvCpnDcAmt.addComma());
+		$("#spanCpnDcAmt").text(spanCpnDcAmt.addComma());
+		$("#spanTmtb1DcAmt").text(spanTmtb1DcAmt.addComma());
+		$("#spanTmtb2DcAmt").text(spanTmtb2DcAmt.addComma());
+		$("#spanTmtbDcAmt").text(spanTmtbDcAmt.addComma());
+		$("#spanGfcdUseAmt").text(spanGfcdUseAmt.addComma());
+		$("#spanRealCnclRtnAmt").text(spanRealCnclRtnAmt.addComma());
+		$("#spanRealDelvAmt").text(realDelvAmt.addComma());
+		$("#spanTotDeliveryFee").text(addPayCost.addComma());
+		$("#spanRefundAmt").text(spanRefundAmt.addComma());
+		*/
+		
+		// 2021.05.13 높이자동조절
+		var cancelRequestTargetHeight = 50 + (40 * cnclRtnCompleteList.length);
+		$("#gridCnclRtnCompleteList").css("height" , cancelRequestTargetHeight+"px");
+	} else {
+		$("#gridCnclRtnCompleteList").hide();
 	}
-	
-	spanTotPntDcAmt	= spanPntDcAmt + spanPrePntDcAmt;
-	spanCpnDcAmt	= spanCpn1DcAmt + spanGoodsCpnDcAmt + spanCartCpnDcAmt + delvCpnDcAmt;
-	spanTmtbDcAmt	= spanTmtb1DcAmt + spanTmtb2DcAmt;
-	spanRefundAmt	= spanRealCnclRtnAmt + realDelvAmt;
-	
-	$("#spanOrdAmt").text(spanOrdAmt.addComma());
-	$("#spanCnclRtnAmt").text(spanCnclRtnAmt.addComma());
-	$("#spanTotPntDcAmt").text(spanTotPntDcAmt.addComma());
-	$("#spanPntDcAmt").text(spanPntDcAmt.addComma());
-	$("#spanPrePntDcAmt").text(spanPrePntDcAmt.addComma());
-	$("#spanPntDcAmt").text(spanPntDcAmt.addComma());
-	$("#spanCpn1DcAmt").text(spanCpn1DcAmt.addComma());
-	$("#spanGoodsCpnDcAmt").text(spanGoodsCpnDcAmt.addComma());
-	$("#spanCartCpnDcAmt").text(spanCartCpnDcAmt.addComma());
-	$("#spanDelvCpnDcAmt").text(delvCpnDcAmt.addComma());
-	$("#spanCpnDcAmt").text(spanCpnDcAmt.addComma());
-	$("#spanTmtb1DcAmt").text(spanTmtb1DcAmt.addComma());
-	$("#spanTmtb2DcAmt").text(spanTmtb2DcAmt.addComma());
-	$("#spanTmtbDcAmt").text(spanTmtbDcAmt.addComma());
-	$("#spanGfcdUseAmt").text(spanGfcdUseAmt.addComma());
-	$("#spanRealCnclRtnAmt").text(spanRealCnclRtnAmt.addComma());
-	$("#spanRealDelvAmt").text(realDelvAmt.addComma());
-	$("#spanTotDeliveryFee").text(addPayCost.addComma());
-	$("#spanRefundAmt").text(spanRefundAmt.addComma());
-	
-	// 2021.05.13 높이자동조절
-	var cancelRequestTargetHeight = 50 + (40 * cnclRtnCompleteList.length);
-	$("#gridCnclRtnCompleteList").css("height" , cancelRequestTargetHeight+"px");
+
 });
 </script>
 </html>

+ 193 - 25
src/main/webapp/WEB-INF/views/order/CnclReqForm.html

@@ -143,6 +143,85 @@
 					</tbody>
 				</table>
 				
+				<h4>환불예정금액</h4>
+				<table class="frmStyle">
+					<colgroup>
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+					</colgroup>
+					<thead>
+						<tr>
+							<th style="height:30px;">구분</th>
+							<th style="height:30px;">항목</th>
+							<th style="height:30px;">합계</th>
+							<th style="height:30px;">내역</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td style="height:25px;">상품금액</td>
+							<td>취소상품금액</td>
+							<td class="spanCnclRtnAmt">15,000원</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td rowspan="2">할인금액차감</td>
+							<td>쿠폰할인차감</td>
+							<td class="spanCpnDcAmt">15,000원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>즉시할인쿠폰 : </span><span class="spanCpn1DcAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>주문서상품쿠폰 : </span><span class="spanGoodsCpnDcAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>장바구니쿠폰 : </span><span class="spanCartCpnDcAmt">-60,000원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td>상품할인차감</td>
+							<td class="goodsDcSumAmt">15,000원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>선포인트할인 : </span><span class="spanPrePntDcAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>다다익선할인 : </span><span class="spanTmtbDcAmt">-60,000원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td>배송비</td>
+							<td>환불배송비</td>
+							<td class="spanRealDelvAmt">-60,000원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>배송비쿠폰 : </span><span class="delvCpnAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>추가금결제 : </span><span class="addDelvFee">-60,000원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td rowspan="4">환불금액</td>
+							<td style="height:25px;">총환불금액</td>
+							<td class="totalRefundAmt">70,000원</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td style="height:25px;">결제수단환불</td>
+							<td class="spanRefundAmt">70,000원</td>
+							<td>
+								<span class="pgGbNm">신용카드</span><span class="cardNm">(현대)</span>
+							</td>
+						</tr>
+						<tr>
+							<td style="height:25px;">상품권환불</td>
+							<td class="spanGfcdUseAmt">70,000P</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td style="height:25px;">포인트환불</td>
+							<td class="spanPntDcAmt">70,000원</td>
+							<td>
+								<span>적립예정포인트환수 : </span><span class="spanSavePntAmt">60,000P</span>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				
+				<!-- 
 				<h4>환불예정금액</h4>
 				<table class="frmStyle">
 					<colgroup>
@@ -190,6 +269,7 @@
 						</tr>
 					</tbody>
 				</table>
+				 -->
 				
 				<div id="refundAccount" style="width:100%">
 					<h4>환불계좌정보</h4>
@@ -372,8 +452,8 @@ var columnCancelReqList = [
 		}
 	},
 	{
-		headerName		: "다다익선2"		
-		, field			: "tmtb2DcAmt"			
+		headerName		: "다다익선2"
+		, field			: "tmtb2DcAmt"
 		, width			: 80		
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
@@ -383,7 +463,7 @@ var columnCancelReqList = [
 	{
 		headerName		: "상품쿠폰"		
 		, field			: "goodsCpnDcAmt"
-		, width			: 80		
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
@@ -392,16 +472,16 @@ var columnCancelReqList = [
 	{
 		headerName		: "장바구니쿠폰"
 		, field			: "cartCpnDcAmt"
-		, width			: 100		
+		, width			: 100
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
 		}
 	},
 	{
-		headerName		: "포인트"		
-		, field			: "pntDcAmt"			
-		, width			: 80		
+		headerName		: "포인트"
+		, field			: "pntDcAmt"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
@@ -417,9 +497,9 @@ var columnCancelReqList = [
 		}
 	},
 	{
-		headerName		: "상품권"		
-		, field			: "gfcdUseAmt"			
-		, width			: 80		
+		headerName		: "상품권"
+		, field			: "gfcdUseAmt"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
@@ -636,9 +716,9 @@ var columnCancelReqToBeList = [
 				}
 			},
 			{
-				headerName		: "장바구니쿠폰"		
-				, field			: "cartCpnDcAmt"			
-				, width			: 80		
+				headerName		: "장바구니쿠폰"
+				, field			: "cartCpnDcAmt"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -654,8 +734,8 @@ var columnCancelReqToBeList = [
 				}
 			},
 			{
-				headerName		: "선포인트"		
-				, field			: "prePntDcAmt"			
+				headerName		: "선포인트"
+				, field			: "prePntDcAmt"
 				, width			: 80		
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
@@ -686,9 +766,9 @@ var columnCancelReqToBeList = [
 		headerName	: "주문배송비정보",
 		children	: [
 			{
-				headerName		: "배송비"		
-				, field			: "delvFee"			
-				, width			: 80		
+				headerName		: "배송비"
+				, field			: "delvFee"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -728,9 +808,9 @@ var columnCancelReqToBeList = [
 				, hide			: temp2
 			},
 			{
-				headerName		: "교환배송비"		
-				, field			: "excDelvFee"			
-				, width			: 80		
+				headerName		: "교환배송비"
+				, field			: "excDelvFee"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -852,8 +932,24 @@ var gridOptionsDelvCdList = gagaAgGrid.getGridOptions(columnDelvCdList);
 
 <script>
 // 현재 사유는 고객 입니다.
-var isCustomer 	= true;
-var pgGb		= orderInfoList[0].pgGb;	// PG구분
+var isCustomer 		= true;
+var pgGb 			= orderInfoList[0].pgGb;
+var payMeans 		= orderInfoList[0].payMeans;
+var payMeansNm		= orderInfoList[0].payMeansNm;
+var cardNm			= orderInfoList[0].cardNm;
+
+//0원이하이면 '-' 처리 삭제 함수
+var getZeroMinusDelAmt = function(tempAmt) {
+	var rtnAmtStr = "";
+	
+	if (tempAmt > 0) {
+		rtnAmtStr = "-" + tempAmt.addComma();
+	} else {
+		rtnAmtStr = tempAmt.addComma();
+	}
+	
+	return rtnAmtStr;
+}
 
 // 환불예상금액계산
 var fnCalculateRefundAmt = function (obj) {
@@ -925,9 +1021,80 @@ var fnCalculateRefundAmt = function (obj) {
 			gridOptionsDelvCdList.api.setRowData(result.cancelDelvRefundList);
 			
 			// 2021.07.01 배송비 수정(마지막취소에만 배송비 환불)
-			let spanSumDeliveryFee = result.spanSumDeliveryFee - result.spanDelvCpnDcAmt;
-			let sumDeliveryFee = result.sumDeliveryFee - result.spanRefundDelvCpnAmt;
+			let spanSumDeliveryFee 	= result.spanSumDeliveryFee - result.spanDelvCpnDcAmt;
+			let sumDeliveryFee 		= result.sumDeliveryFee - result.spanRefundDelvCpnAmt;
+			
+			// 2021.08.04 취소금액수정
+			var spanRealDelvAmt		= 0;
+			var addDelvFee			= 0;
+			
+			if (result.spanRealCnclRtnAmt > 0) {
+				// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
+				if (isCustomer) {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + sumDeliveryFee) - result.spanTotDeliveryFee;
+					
+					// 2021.07.01 
+					// @ 마이너스금액이면 허들깨지면서 배송비 발생
+					// @ 플러스금액이면 마지막취소시 배송금액 환불
+					spanRealDelvAmt = sumDeliveryFee - result.spanTotDeliveryFee;
+					addDelvFee		= result.spanTotDeliveryFee;
+				} 
+				// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
+				else {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + sumDeliveryFee);
+				}
+			}
+			
+			$(".spanCnclRtnAmt").text(result.spanCnclRtnAmt.addComma()+"원");
+			$(".spanCpn1DcAmt").text(result.spanCpn1DcAmt.addComma()+"원");
+			$(".spanGoodsCpnDcAmt").text(result.spanGoodsCpnDcAmt.addComma()+"원");
+			$(".spanCartCpnDcAmt").text(result.spanCartCpnDcAmt.addComma()+"원");
+			
+			var spanCpnDcAmt = result.spanCpn1DcAmt + result.spanGoodsCpnDcAmt + result.spanGoodsCpnDcAmt;
+			$(".spanCpnDcAmt").text(spanCpnDcAmt.addComma()+"원");
+			
+			$(".spanPrePntDcAmt").text(result.spanPrePntDcAmt.addComma()+"원");
+			$(".spanTmtbDcAmt").text(result.spanTmtbDcAmt.addComma()+"원");
+			
+			var goodsDcSumAmt = result.spanPrePntDcAmt + result.spanTmtbDcAmt;
+			$(".goodsDcSumAmt").text(goodsDcSumAmt.addComma()+"원");
+			
+			$(".delvCpnAmt").text(result.spanDelvCpnDcAmt.addComma()+"원");
+			$(".addDelvFee").text(addDelvFee.addComma()+"원");
+			$(".spanRealDelvAmt").text(spanSumDeliveryFee.addComma()+"원");
+			
+			var totalRefundAmt = result.spanRefundAmt + result.spanGfcdUseAmt + result.spanPntDcAmt;
+			
+			$(".totalRefundAmt").text(totalRefundAmt.addComma()+"원");
+			$(".spanRefundAmt").text(result.spanRefundAmt.addComma()+"원");
+			$(".spanGfcdUseAmt").text(result.spanGfcdUseAmt.addComma()+"원");
+			$(".spanPntDcAmt").text(result.spanPntDcAmt.addComma()+"원");
+			$(".spanSavePntAmt").text(result.spanSavePntAmt.addComma()+"P");
+			
+			var pgGbNm		= "";
+			var cardGbNm	= "";
+			
+			if (pgGb == 'KCP') {
+				pgGbNm	= payMeansNm;
+				cardGbNm	= "(" + cardNm + ")";
+			} else if (pgGb == 'NAVER') {
+				pgGbNm	= "네이버페이";
+			} else if (pgGb == 'NAVER_ORDER') {
+				pgGbNm	= "네이버페이주문형";
+			} else if (pgGb == 'KAKAO') {
+				pgGbNm	= "카카오페이";
+			} else if (pgGb == 'PAYCO') {
+				pgGbNm	= "페이코";
+			} else if (pgGb == 'ISTYLE') {
+				pgGbNm	= "상품권";
+			} else {
+				pgGbNm	= "외부몰입금";
+			}
+			
+			$(".pgGbNm").text(pgGbNm);
+			$(".cardNm").text(cardGbNm);
 			
+			/*
 			$("#spanPayAmt").text(result.spanPayAmt.addComma());					//총 결제 금액
 			$("#spanSumRealOrdAmt").text(result.spanSumRealOrdAmt.addComma());		//상품 실결제 금액
 			$("#spanSumDeliveryFee").text(spanSumDeliveryFee.addComma());			//주문 배송 금액
@@ -978,6 +1145,7 @@ var fnCalculateRefundAmt = function (obj) {
 			}
 			
 			$("#spanRefundAmt").text(result.spanRefundAmt.addComma());				//환불 금액 합계
+			*/
 		}
 	);
 }

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

@@ -166,7 +166,9 @@
 						<tr>
 							<td style="height:25px;">실결제액</td>
 							<td class="realOrdSumAmt">70,000원</td>
-							<td>신용카드(현대)</td>
+							<td>
+								<span class="pgGbNm">신용카드</span><span class="cardNm">(현대)</span>
+							</td>
 						</tr>
 						<tr>
 							<td style="line-height:25px;">
@@ -1074,6 +1076,11 @@ var fnSetGridHeightInit = function () {
 </script>
 <!-- AgGrid 생성 -->
 <script th:inline="javascript">
+var pgGb 			= orderInfo[0].pgGb;
+var payMeans 		= orderInfo[0].payMeans;
+var payMeansNm		= orderInfo[0].payMeansNm;
+var cardNm			= orderInfo[0].cardNm;
+
 // 팝업닫기
 var fnOrderDetailClose = function(){
 	uifnPopupClose('popupOrderDetail');
@@ -1266,6 +1273,34 @@ $(document).ready(function () {
 	$(".gfcdUseSumAmt").text(gfcdUseSumAmt.addComma() + "원");
 	
 	$(".savePntSumAmt").text(savePntSumAmt.addComma() + "P 적립");
+	
+	var pgGbNm		= "";
+	var cardGbNm	= "";
+	
+	if (pgGb == 'KCP') {
+		pgGbNm		= payMeansNm;
+		cardGbNm	= "(" + cardNm + ")";
+	} else if (pgGb == 'NAVER') {
+		pgGbNm	= "네이버페이";
+	} else if (pgGb == 'NAVER_ORDER') {
+		pgGbNm	= "네이버페이주문형";
+		cardNm	= "";
+	} else if (pgGb == 'KAKAO') {
+		pgGbNm	= "카카오페이";
+		cardNm	= "";
+	} else if (pgGb == 'PAYCO') {
+		pgGbNm	= "페이코";
+		cardNm	= "";
+	} else if (pgGb == 'ISTYLE') {
+		pgGbNm	= "상품권";
+		cardNm	= "";
+	} else {
+		pgGbNm	= "외부몰입금";
+		cardNm	= "";
+	}
+	
+	$(".pgGbNm").text(pgGbNm);
+	$(".cardNm").text(cardGbNm);
 });
 </script>
 

+ 156 - 6
src/main/webapp/WEB-INF/views/order/RtnReqForm.html

@@ -85,6 +85,85 @@
 					</tbody>
 				</table>
 				
+				<h4>환불예정금액</h4>
+				<table class="frmStyle">
+					<colgroup>
+						<col width="">
+						<col width="">
+						<col width="">
+						<col width="">
+					</colgroup>
+					<thead>
+						<tr>
+							<th style="height:30px;">구분</th>
+							<th style="height:30px;">항목</th>
+							<th style="height:30px;">합계</th>
+							<th style="height:30px;">내역</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td style="height:25px;">상품금액</td>
+							<td>취소상품금액</td>
+							<td class="spanCnclRtnAmt">15,000원</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td rowspan="2">할인금액차감</td>
+							<td>쿠폰할인차감</td>
+							<td class="spanCpnDcAmt">15,000원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>즉시할인쿠폰 : </span><span class="spanCpn1DcAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>주문서상품쿠폰 : </span><span class="spanGoodsCpnDcAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>장바구니쿠폰 : </span><span class="spanCartCpnDcAmt">-60,000원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td>상품할인차감</td>
+							<td class="goodsDcSumAmt">15,000원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>선포인트할인 : </span><span class="spanPrePntDcAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>다다익선할인 : </span><span class="spanTmtbDcAmt">-60,000원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td>배송비</td>
+							<td>환불배송비</td>
+							<td class="spanRealDelvAmt">-60,000원</td>
+							<td style="line-height:25px;">
+								<div style="height:25px;"><span>배송비쿠폰 : </span><span class="delvCpnAmt">-60,000원</span></div>
+								<div style="height:25px;"><span>추가금결제 : </span><span class="addDelvFee">-60,000원</span></div>
+							</td>
+						</tr>
+						<tr>
+							<td rowspan="4">환불금액</td>
+							<td style="height:25px;">총환불금액</td>
+							<td class="totalRefundAmt">70,000원</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td style="height:25px;">결제수단환불</td>
+							<td class="spanRefundAmt">70,000원</td>
+							<td>
+								<span class="pgGbNm">신용카드</span><span class="cardNm">(현대)</span>
+							</td>
+						</tr>
+						<tr>
+							<td style="height:25px;">상품권환불</td>
+							<td class="spanGfcdUseAmt">70,000P</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td style="height:25px;">포인트환불</td>
+							<td class="spanPntDcAmt">70,000원</td>
+							<td>
+								<span>적립예정포인트환수 : </span><span class="spanSavePntAmt">60,000P</span>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				
+				<!-- 
 				<h4>환불예정금액</h4>
 				<table class="frmStyle">
 					<colgroup>
@@ -128,18 +207,13 @@
 							<th>환불 배송 금액</th>
 							<td><span id="spanRealDelvAmt"></span>원</td>
 						</tr>
-						<!-- 
-						<tr>
-							<th>반품 배송 금액</th>
-							<td colspan="3"><span id="spanTotRtnDelvFee"></span>원</td>
-						</tr>
-						 -->
 						<tr>
 							<th>환불 금액 합계</th>
 							<td colspan="3"><span id="spanRefundAmt"></span>원</td>
 						</tr>
 					</tbody>
 				</table>
+				 -->
 				
 				<!--  회수지정보 -->
 				<div id="chgerAddress">
@@ -253,6 +327,8 @@ var recallExceptionInfo		= [[${recallExceptionInfo}]];					// 회수 예외 정
 var rtnLocInfo				= [[${rtnLocInfo}]];							// 반송지주소정보
 var payGb 					= orderInfoList[0].payGb;						// 결제수단
 var payMeans 				= orderInfoList[0].payMeans;					// 결제방법
+var payMeansNm 				= orderInfoList[0].payMeansNm;					// 결제방법명
+var cardNm 					= orderInfoList[0].cardNm;						// 결제카드명
 var pgGb					= orderInfoList[0].pgGb;						// PG구분
 var selfGoodsYn 			= cancelRequestTargetList[0].selfGoodsYn;		// 자사,입점여부
 var chgReason				= "";											// 변경사유코드
@@ -986,6 +1062,79 @@ var fnCalculateRefundAmt = function (obj) {
 			let spanSumDeliveryFee = result.spanSumDeliveryFee - result.spanDelvCpnDcAmt;
 			let sumDeliveryFee = result.sumDeliveryFee - result.spanRefundDelvCpnAmt;
 			
+			// 2021.08.04 취소금액수정
+			var spanRealDelvAmt		= 0;
+			var addDelvFee			= 0;
+			
+			if (result.spanRealCnclRtnAmt > 0) {
+				// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
+				if (isCustomer) {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + sumDeliveryFee) - result.spanTotDeliveryFee;
+					
+					// 2021.07.01 
+					// @ 마이너스금액이면 허들깨지면서 배송비 발생
+					// @ 플러스금액이면 마지막취소시 배송금액 환불
+					spanRealDelvAmt = sumDeliveryFee - result.spanTotDeliveryFee;
+					addDelvFee		= result.spanTotDeliveryFee;
+				} 
+				// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
+				else {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + sumDeliveryFee);
+				}
+			}
+			
+			$("#spanRefundAmt").text(result.spanRefundAmt.addComma()+"원");				//환불 금액 합계
+			
+			$(".spanCnclRtnAmt").text(result.spanCnclRtnAmt.addComma()+"원");
+			$(".spanCpn1DcAmt").text(result.spanCpn1DcAmt.addComma()+"원");
+			$(".spanGoodsCpnDcAmt").text(result.spanGoodsCpnDcAmt.addComma()+"원");
+			$(".spanCartCpnDcAmt").text(result.spanCartCpnDcAmt.addComma()+"원");
+			
+			var spanCpnDcAmt = result.spanCpn1DcAmt + result.spanGoodsCpnDcAmt + result.spanGoodsCpnDcAmt;
+			$(".spanCpnDcAmt").text(spanCpnDcAmt.addComma()+"원");
+			
+			$(".spanPrePntDcAmt").text(result.spanPrePntDcAmt.addComma()+"원");
+			$(".spanTmtbDcAmt").text(result.spanTmtbDcAmt.addComma()+"원");
+			
+			var goodsDcSumAmt = result.spanPrePntDcAmt + result.spanTmtbDcAmt;
+			$(".goodsDcSumAmt").text(goodsDcSumAmt.addComma()+"원");
+			
+			$(".delvCpnAmt").text(result.spanDelvCpnDcAmt.addComma()+"원");
+			$(".addDelvFee").text(addDelvFee.addComma()+"원");
+			$(".spanRealDelvAmt").text(spanSumDeliveryFee.addComma()+"원");
+			
+			var totalRefundAmt = result.spanRefundAmt + result.spanGfcdUseAmt + result.spanPntDcAmt;
+			
+			$(".totalRefundAmt").text(totalRefundAmt.addComma()+"원");
+			$(".spanRefundAmt").text(result.spanRefundAmt.addComma()+"원");
+			$(".spanGfcdUseAmt").text(result.spanGfcdUseAmt.addComma()+"원");
+			$(".spanPntDcAmt").text(result.spanPntDcAmt.addComma()+"원");
+			$(".spanSavePntAmt").text(result.spanSavePntAmt.addComma()+"P");
+			
+			var pgGbNm		= "";
+			var cardGbNm	= "";
+			
+			if (pgGb == 'KCP') {
+				pgGbNm		= payMeansNm;
+				cardGbNm	= "(" + cardNm + ")";
+			} else if (pgGb == 'NAVER') {
+				pgGbNm	= "네이버페이";
+			} else if (pgGb == 'NAVER_ORDER') {
+				pgGbNm	= "네이버페이주문형";
+			} else if (pgGb == 'KAKAO') {
+				pgGbNm	= "카카오페이";
+			} else if (pgGb == 'PAYCO') {
+				pgGbNm	= "페이코";
+			} else if (pgGb == 'ISTYLE') {
+				pgGbNm	= "상품권";
+			} else {
+				pgGbNm	= "외부몰입금";
+			}
+			
+			$(".pgGbNm").text(pgGbNm);
+			$(".cardNm").text(cardGbNm);
+			
+			/*
 			$("#spanPayAmt").text(result.spanPayAmt.addComma());					//총 결제 금액
 			$("#spanSumRealOrdAmt").text(result.spanSumRealOrdAmt.addComma());		//상품 실결제 금액
 			$("#spanSumDeliveryFee").text(spanSumDeliveryFee.addComma());			//배송금액
@@ -1048,6 +1197,7 @@ var fnCalculateRefundAmt = function (obj) {
 			}
 			
 			$("#spanRefundAmt").text(result.spanRefundAmt.addComma());				//환불 금액 합계
+			*/
 		}
 	);
 }

+ 179 - 14
src/main/webapp/WEB-INF/views/withdraw/RefundDetailForm.html

@@ -14,7 +14,7 @@
  * 1.0  2020.11.16   moon        최초 작성
  *******************************************************************************
  -->
-	<div class="modalPopup" data-width="1000" data-height="900">
+	<div class="modalPopup" data-width="1200" data-height="800">
 		<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">
@@ -22,7 +22,8 @@
 			<button type="button" class="close" onclick="uifnPopupClose('popupWithdrawDetail')"><i class="fa fa-times"></i></button>
 		</div>
 		<!-- //TITLE -->
-
+		
+		<div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
 			<form id="withdrawDetailForm" name="withdrawDetailForm" action="#" th:method="post" onSubmit="return false">
 				<input type="hidden" name="orgChgReason" readonly/>
 				<input type="hidden" name="orgEncloseFee" readonly/>
@@ -102,7 +103,87 @@
 						</tbody>
 					</table>
 				</div>
+				
 				<div id="divRefundInfo">
+					<h4>환불예정금액</h4>
+					<table class="frmStyle">
+						<colgroup>
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+						</colgroup>
+						<thead>
+							<tr>
+								<th style="height:30px;">구분</th>
+								<th style="height:30px;">항목</th>
+								<th style="height:30px;">합계</th>
+								<th style="height:30px;">내역</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr>
+								<td style="height:25px;">상품금액</td>
+								<td>취소상품금액</td>
+								<td class="spanCnclRtnAmt">15,000원</td>
+								<td></td>
+							</tr>
+							<tr>
+								<td rowspan="2">할인금액차감</td>
+								<td>쿠폰할인차감</td>
+								<td class="spanCpnDcAmt">15,000원</td>
+								<td style="line-height:25px;">
+									<div style="height:25px;"><span>즉시할인쿠폰 : </span><span class="spanCpn1DcAmt">-60,000원</span></div>
+									<div style="height:25px;"><span>주문서상품쿠폰 : </span><span class="spanGoodsCpnDcAmt">-60,000원</span></div>
+									<div style="height:25px;"><span>장바구니쿠폰 : </span><span class="spanCartCpnDcAmt">-60,000원</span></div>
+								</td>
+							</tr>
+							<tr>
+								<td>상품할인차감</td>
+								<td class="goodsDcSumAmt">15,000원</td>
+								<td style="line-height:25px;">
+									<div style="height:25px;"><span>선포인트할인 : </span><span class="spanPrePntDcAmt">-60,000원</span></div>
+									<div style="height:25px;"><span>다다익선할인 : </span><span class="spanTmtbDcAmt">-60,000원</span></div>
+								</td>
+							</tr>
+							<tr>
+								<td>배송비</td>
+								<td>환불배송비</td>
+								<td class="spanRealDelvAmt">-60,000원</td>
+								<td style="line-height:25px;">
+									<div style="height:25px;"><span>배송비쿠폰 : </span><span class="delvCpnAmt">-60,000원</span></div>
+									<div style="height:25px;"><span>추가금결제 : </span><span class="addDelvFee">-60,000원</span></div>
+								</td>
+							</tr>
+							<tr>
+								<td rowspan="4">환불금액</td>
+								<td style="height:25px;">총환불금액</td>
+								<td class="totalRefundAmt">70,000원</td>
+								<td></td>
+							</tr>
+							<tr>
+								<td style="height:25px;">결제수단환불</td>
+								<td class="spanRefundAmt">70,000원</td>
+								<td>
+									<span class="pgGbNm"></span><span class="cardNm"></span>
+								</td>
+							</tr>
+							<tr>
+								<td style="height:25px;">상품권환불</td>
+								<td class="spanGfcdUseAmt">70,000P</td>
+								<td></td>
+							</tr>
+							<tr>
+								<td style="height:25px;">포인트환불</td>
+								<td class="spanPntDcAmt">70,000원</td>
+								<td>
+									<span>적립예정포인트환수 : </span><span class="spanSavePntAmt">60,000P</span>
+								</td>
+							</tr>
+						</tbody>
+					</table>
+					
+					<!-- 
 					<h4>환불예정금액</h4>
 					<table class="frmStyle">
 						<colgroup>
@@ -154,22 +235,22 @@
 								<td colspan="3"><span id="spanRefundAmt"></span>원</td>
 							</tr>
 						</tbody>
-					</table>					
+					</table>
+					 -->
 				</div>
 				
-				<div class="cardArea" style="height: 200px;">
-					<h4 style="width:85%;">
-						회수대상 상품 정보
-					</h4>	
-						<span class="btnRight"  id="pgBtn" >
-							<label ><input type="checkbox" name="pgStats" value="N" th:if="${sessionInfo.roleCd == 'G001_0000'}">&nbsp;&nbsp;PG 전문 미전송</label>
-						</span>
+				<div>
+					<h4 style="width:85%;">회수대상 상품 정보</h4>	
+					<span class="btnRight" id="pgBtn" >
+						<label ><input type="checkbox" name="pgStats" value="N" th:if="${sessionInfo.roleCd == 'G001_0000'}">&nbsp;&nbsp;PG 전문 미전송</label>
+					</span>
 					<div id="refundGridList" style="width: 100%; height: 200px; padding-top:10PX;" class="ag-theme-balham"></div>
 				</div>
 			</form>
-		
 		</div>
+		
 	</div>
+</div>
 
 <script th:inline="javascript">
 /*<![CDATA[*/
@@ -313,9 +394,88 @@
 		$("#withdrawDetailForm input[name=codFee]").val(data.codFee); 			// 착불비 
 		$("#withdrawDetailForm input[name=addPayCost]").val(data.addPayCost); 	// 추가결제비 
 		$("#chgMemo").text(data.chgMemo); 										// 클레임메모 
-		$("#wdMemo").text(data.wdMemo); 										// 회수메모 
+		$("#wdMemo").text(data.wdMemo); 										// 회수메모
+		
+		// 2021.07.01 배송비 수정(마지막취소에만 배송비 환불)
+		let spanSumDeliveryFee 	= reFundInfo.spanSumDeliveryFee - reFundInfo.spanDelvCpnDcAmt;
+		let sumDeliveryFee 		= reFundInfo.sumDeliveryFee - reFundInfo.spanRefundDelvCpnAmt;
+		
+		// 2021.08.04 취소금액수정
+		var spanRealDelvAmt		= 0;
+		var addDelvFee			= 0;
+		
+		if (reFundInfo.spanRealCnclRtnAmt > 0) {
+			// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
+			if (isCustomer) {
+				reFundInfo.spanRefundAmt = (reFundInfo.spanRealCnclRtnAmt + sumDeliveryFee) - reFundInfo.spanTotDeliveryFee;
+				
+				// 2021.07.01 
+				// @ 마이너스금액이면 허들깨지면서 배송비 발생
+				// @ 플러스금액이면 마지막취소시 배송금액 환불
+				spanRealDelvAmt = sumDeliveryFee - reFundInfo.spanTotDeliveryFee;
+				addDelvFee		= reFundInfo.spanTotDeliveryFee;
+			} 
+			// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
+			else {
+				reFundInfo.spanRefundAmt = (reFundInfo.spanRealCnclRtnAmt + sumDeliveryFee);
+			}
+		}
+		
+		$("#spanRefundAmt").text(reFundInfo.spanRefundAmt.addComma()+"원");				//환불 금액 합계
+		
+		$(".spanCnclRtnAmt").text(reFundInfo.spanCnclRtnAmt.addComma()+"원");
+		$(".spanCpn1DcAmt").text(reFundInfo.spanCpn1DcAmt.addComma()+"원");
+		$(".spanGoodsCpnDcAmt").text(reFundInfo.spanGoodsCpnDcAmt.addComma()+"원");
+		$(".spanCartCpnDcAmt").text(reFundInfo.spanCartCpnDcAmt.addComma()+"원");
+		
+		var spanCpnDcAmt = reFundInfo.spanCpn1DcAmt + reFundInfo.spanGoodsCpnDcAmt + reFundInfo.spanGoodsCpnDcAmt;
+		$(".spanCpnDcAmt").text(spanCpnDcAmt.addComma()+"원");
+		
+		$(".spanPrePntDcAmt").text(reFundInfo.spanPrePntDcAmt.addComma()+"원");
+		$(".spanTmtbDcAmt").text(reFundInfo.spanTmtbDcAmt.addComma()+"원");
+		
+		var goodsDcSumAmt = reFundInfo.spanPrePntDcAmt + reFundInfo.spanTmtbDcAmt;
+		$(".goodsDcSumAmt").text(goodsDcSumAmt.addComma()+"원");
+		
+		$(".delvCpnAmt").text(reFundInfo.spanDelvCpnDcAmt.addComma()+"원");
+		$(".addDelvFee").text(addDelvFee.addComma()+"원");
+		$(".spanRealDelvAmt").text(spanSumDeliveryFee.addComma()+"원");
+		
+		var totalRefundAmt = reFundInfo.spanRefundAmt + reFundInfo.spanGfcdUseAmt + reFundInfo.spanPntDcAmt;
+		
+		$(".totalRefundAmt").text(totalRefundAmt.addComma()+"원");
+		$(".spanRefundAmt").text(reFundInfo.spanRefundAmt.addComma()+"원");
+		$(".spanGfcdUseAmt").text(reFundInfo.spanGfcdUseAmt.addComma()+"원");
+		$(".spanPntDcAmt").text(reFundInfo.spanPntDcAmt.addComma()+"원");
+		$(".spanSavePntAmt").text(reFundInfo.spanSavePntAmt.addComma()+"P");
+		
+		/*
+		var pgGbNm		= "";
+		var cardGbNm	= "";
+		
+		if (pgGb == 'KCP') {
+			pgGbNm	= payMeansNm;
+			cardGbNm	= "(" + cardNm + ")";
+		} else if (pgGb == 'NAVER') {
+			pgGbNm	= "네이버페이";
+		} else if (pgGb == 'NAVER_ORDER') {
+			pgGbNm	= "네이버페이주문형";
+		} else if (pgGb == 'KAKAO') {
+			pgGbNm	= "카카오페이";
+		} else if (pgGb == 'PAYCO') {
+			pgGbNm	= "페이코";
+		} else if (pgGb == 'ISTYLE') {
+			pgGbNm	= "상품권";
+		} else {
+			pgGbNm	= "외부몰입금";
+		}
+		
+		$(".pgGbNm").text(pgGbNm);
+		$(".cardNm").text(cardGbNm);
+		*/
 
-		// 환불예정금액 
+		// 환불예정금액
+		/*
 		$("#spanPayAmt").text(reFundInfo.spanPayAmt.addComma());					//총 결제 금액
 		$("#spanSumRealOrdAmt").text(reFundInfo.spanSumRealOrdAmt.addComma());		//상품 실결제 금액
 		$("#spanSumDeliveryFee").text(reFundInfo.spanSumDeliveryFee.addComma());	//배송금액
@@ -355,6 +515,10 @@
 		}
 		
 		$("#refundAmt").text(data.refundAmt.addComma());
+		*/
+		$("#refundAmt").text(data.refundAmt.addComma());
+		//$("#refundAmt").text(reFundInfo.spanRefundAmt.addComma());
+		//reFundInfo.spanRefundAmt.addComma()+"원"
 		
 		if(delvExpnYn == "Y"){
 			$('#withdrawDetailForm input[name=codFee]').attr('readonly', 'readonly');
@@ -495,7 +659,8 @@
 			}
 		}
 		
-		$("#spanRefundAmt").text(reFundInfo.spanRefundAmt.addComma());				//환불 금액 합계 
+		//$("#spanRefundAmt").text(reFundInfo.spanRefundAmt.addComma());				//환불 금액 합계
+		$(".spanRefundAmt").text(reFundInfo.spanRefundAmt.addComma());				//환불 금액 합계
 	}
 	
 	/*************************************************************************

+ 45 - 25
src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html

@@ -112,6 +112,9 @@
 		<!-- 리스트 영역 -->
 		<div class="panelStyle">
 			<ul class="panelBar">
+				<li class="left">
+				<font color=red> <b> ※</b></font>  <font color=#FE2E2E>추가비용, CS메모는  입력항목 입니다.</font> 
+				</li>
 				<li class="right">
 					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
 					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
@@ -152,7 +155,7 @@
 	var columnDefs = [
 		{headerName: "반품예외처리번호",		field: "recallExceptionNo", width: 50,	cellClass: 'text-center', hide: true},
 		//{headerName: "No.",				field: "rnum",				width: 50,	cellClass: 'text-center'},
-		{headerName: "처리완료",			field: "recall",		width: 100,	cellClass: 'text-center',
+		{headerName: "처리완료",				field: "recall",		width: 100,	cellClass: 'text-center',
 			/*
 			rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
 		    cellClassRules: {
@@ -170,25 +173,7 @@
 				return btnText;
 			}			
 		},
-		{headerName: "처리상태",			field: "statNm",		width: 80,	cellClass: 'text-center'
-			/*
-			rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
-			    cellClassRules: {
-			        'cell-span': "data.rowspanRank == 1"
-			      }, 
-				cellRenderer: function(params) {
-					var btnText = '';
-					if(params.data.recallStat == 'P') {
-						if(params.data.chgStat == 'G685_21' || params.data.chgStat == 'G685_51'){
-							btnText= '추가결제대기';
-						} else {
-							btnText= '대기';
-						}
-					} else { btnText = '완료' }
-					return btnText;
-				}	
-			      */
-			},		
+		{headerName: "처리상태",			field: "statNm",		width: 80,	cellClass: 'text-center'},
 		{headerName: "주문번호",			field: "orderNo",			width: 100,	cellClass: 'text-center', 
 			/*
 			rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
@@ -216,7 +201,34 @@
 			*/	
 				cellRenderer	: function(params) {
 					var rtnStr = "";
+					if(params.data.recallStat === 'P') {
+						if(params.data.chgGb == 'EXC' || params.data.chgGb == 'WEXC'){
+							rtnStr = params.value;
+						} else {
+							var paramData 	= params.data.orderNo;
+							paramData 		+= '@' + params.data.orderDtlNo;
+							paramData 		+= '@' + params.data.delvFeeCd;
+							paramData 		+= '@' + 'WMS';
+							
+							// 반품접수, 반품대기, 회수요청, 상품검수중, 결제대기, 반품진행중
+							if (params.data.chgStat == 'G685_50' || params.data.chgStat == 'G685_51' 
+									|| params.data.chgStat == 'G685_30' || params.data.chgStat == 'G685_31' || params.data.chgStat == 'G685_32' || params.data.chgStat == 'G685_33') {
+								rtnStr = '<a href="javascript:void(0);" onclick="fnReturnRequest(\'' + paramData + '\',\'' + params.value + '\');">' + params.value + '</a>';
+							}
+							// 교환접수, 교환대기, 회수요청, 상품검수중, 결제대기, 교환진행중
+							else if (params.data.chgStat == 'G685_20' || params.data.chgStat == 'G685_21' 
+									|| params.data.chgStat == 'G685_30' || params.data.chgStat == 'G685_31' || params.data.chgStat == 'G685_32' || params.data.chgStat == 'G685_34') {
+								rtnStr = '<a href="javascript:void(0);" onclick="fnExchangeRequest(\'' + paramData + '\',\'' + params.value + '\');">' + params.value + '</a>';
+							} 
+							else {
+								rtnStr = params.value;
+							}
+						}
+					} else {
+						rtnStr = params.value;
+					}
 					
+					/* 
 					var paramData 	= params.data.orderNo;
 					paramData 		+= '@' + params.data.orderDtlNo;
 					paramData 		+= '@' + params.data.delvFeeCd;
@@ -235,6 +247,8 @@
 					else {
 						rtnStr = params.value;
 					}
+					 */
+					
 					return  rtnStr;
 				}		
 		},
@@ -337,13 +351,19 @@
 				}
 			}
 		},		
-		{headerName: "*추가비용",			field: "csAddFee",		width: 100,	cellClass: 'text-right',editable: true,
+		{headerName: "* 추가비용",  headerClass:'text-point',	field: "csAddFee",		width: 100,	cellClass: 'text-right',editable: true,
 			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 20, validType: "numeric" }
 		},		
-		{headerName: "*CS메모",			field: "csMemo",		width: 200,	cellClass: 'text-left',editable: true,
+		{headerName: "* CS메모",    headerClass:'text-point',	field: "csMemo",		width: 200,	cellClass: 'text-left',editable: true,
 			cellEditor: 'textCellEditor',
-			cellEditorParams: { maxlength: 1000, required: true }
+			cellEditorParams: { maxlength: 1000, required: true },
+			cellStyle : function(params){
+				var color = "";
+					color = '#ff96689c';
+				return { 'text-color': color};
+			}
+			
 		},			
 		{headerName: "작업자",			field: "userNameCreated",	width: 100,	cellClass: 'text-center'},
 		{headerName: "브랜드명",			field: "brandNm",			width: 150,	cellClass: 'text-center'},
@@ -368,7 +388,7 @@
 		{headerName: "등록일시",			field: "dateCreated",		width: 150,	cellClass: 'text-center'}
 		
 	];
-
+	
 	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
 	gridOptions.suppressRowTransform =true;
 	//gridOptions.defaultColDef.editable = true;
@@ -376,7 +396,7 @@
 	//gridOptions.columnDefs[10].cellEditor=true;
 	
 	//gridOptions.rowSelection = 'multiple';
-	
+	// gagaAgGrid.columnApi.getColumn("qty").colDef.color = "#FF0000";
 	gridOptions.rowHeight = 35;
 	
 	var currOrdNo ="";

+ 1 - 0
src/main/webapp/ux/plugins/summernote/summernote.css

@@ -60,6 +60,7 @@ mark,.mark{padding:0.2em;background-color:#fcf8e3;}
 .text-uppercase{text-transform:uppercase;}
 .text-capitalize{text-transform:capitalize;}
 .text-muted{color:#777777;}
+.text-point{color:#FF0000;}
 .text-primary{color:#337ab7;}
 a.text-primary:hover,a.text-primary:focus{color:#286090;}
 .text-success{color:#3c763d;}