Browse Source

Merge branch 'style' into gagamel_onetoone

card007 4 years ago
parent
commit
c164d12fb4
22 changed files with 572 additions and 159 deletions
  1. 20 0
      src/main/java/com/style24/admin/biz/dao/TsaGoodsDao.java
  2. 10 0
      src/main/java/com/style24/admin/biz/dao/TsaShoplinkerDao.java
  3. 28 0
      src/main/java/com/style24/admin/biz/service/TsaGoodsService.java
  4. 31 0
      src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java
  5. 10 3
      src/main/java/com/style24/admin/biz/service/TsaWithdrawService.java
  6. 15 0
      src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  7. 27 0
      src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java
  8. 4 1
      src/main/java/com/style24/admin/biz/web/TsaWithdrawController.java
  9. 1 0
      src/main/java/com/style24/persistence/domain/GoodsPriceRes.java
  10. 1 0
      src/main/java/com/style24/persistence/domain/Withdraw.java
  11. 3 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml
  12. 49 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  13. 22 1
      src/main/java/com/style24/persistence/mybatis/shop/TsaShoplinker.xml
  14. 1 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml
  15. 2 1
      src/main/webapp/WEB-INF/views/delivery/DeliveryDetailItemForm.html
  16. 68 0
      src/main/webapp/WEB-INF/views/goods/GoodsPriceReserveForm.html
  17. 19 1
      src/main/webapp/WEB-INF/views/order/CnclCompleteView.html
  18. 147 128
      src/main/webapp/WEB-INF/views/order/CnclReqForm.html
  19. 3 2
      src/main/webapp/WEB-INF/views/order/ExchangeRequestForm.html
  20. 20 1
      src/main/webapp/WEB-INF/views/order/RtnReqForm.html
  21. 21 0
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerGoodsSendForm.html
  22. 70 21
      src/main/webapp/WEB-INF/views/withdraw/RefundDetailForm.html

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

@@ -767,6 +767,26 @@ public interface TsaGoodsDao {
 	 * @since 2020. 11. 13
 	 */
 	void deleteGoodPriceRes(GoodsPriceRes goodsPriceRes);
+	
+	/**
+	 * 상품 가격예약 종료
+	 *
+	 * @param goodsPriceRes
+	 * @return void
+	 * @author jmh
+	 * @since 2021. 11. 15
+	 */
+	void closeGoodPriceRes(GoodsPriceRes goodsPriceRes);
+	
+	/**
+	 * 상품 가격예약 이력 등록(화면)
+	 *
+	 * @param goodsPriceRes
+	 * @return void
+	 * @author jmh
+	 * @since 2021. 11. 15
+	 */
+	void createGoodPriceResHst(GoodsPriceRes goodsPriceRes);
 
 	/**
 	 * 상품 동영상 목록 조회

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

@@ -109,6 +109,16 @@ public interface TsaShoplinkerDao {
 	 */
 	Collection<GagaMap> getGoodsSendExcelList(ShoplinkerSearch shoplinkerSearch);
 
+	/**
+	 * 상품등록-기획전 엑셀 다운로드
+	 *
+	 * @param shoplinkerSearch
+	 * @return
+	 * @author jmh
+	 * @since 2021. 11. 16
+	 */
+	Collection<GagaMap> getGoodsSendExcelPlanning(ShoplinkerSearch shoplinkerSearch);
+
 	/**
 	 * 재고-단품 등록
 	 *

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

@@ -2105,11 +2105,39 @@ public class TsaGoodsService {
 		int idx = 0;
 		for (String goodsCd : goodsPriceRes.getArrGoodsCd()) {
 			goodsPriceRes.setGoodsPriceResSq(goodsPriceRes.getArrGoodsPriceResSq()[idx]);
+			goodsPriceRes.setRegNo(TsaSession.getInfo().getUserNo());
+			goodsPriceRes.setRegGb("D");
+			goodsDao.createGoodPriceResHst(goodsPriceRes);
 			goodsDao.deleteGoodPriceRes(goodsPriceRes);
 			idx++;
 		}
 	}
 
+	/**
+	 * 상품 가격예약 종료
+	 *
+	 * @param goodsPriceRes
+	 * @return void
+	 * @author jmh
+	 * @since 2021. 11. 15
+	 */
+	@Transactional("shopTxnManager")
+	public void closeGoodsPriceRes(GoodsPriceRes goodsPriceRes) {
+		if (goodsPriceRes.getArrGoodsCd().length <= 0) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+		int idx = 0;
+		for (String goodsCd : goodsPriceRes.getArrGoodsCd()) {
+			goodsPriceRes.setGoodsPriceResSq(goodsPriceRes.getArrGoodsPriceResSq()[idx]);
+			goodsPriceRes.setRegNo(TsaSession.getInfo().getUserNo());
+			goodsPriceRes.setUpdNo(TsaSession.getInfo().getUserNo());
+			goodsPriceRes.setRegGb("C");
+			goodsDao.createGoodPriceResHst(goodsPriceRes);
+			goodsDao.closeGoodPriceRes(goodsPriceRes);
+			idx++;
+		}
+	}
+	
 	/**
 	 * 상품 가격예약 저장
 	 *

+ 31 - 0
src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java

@@ -937,6 +937,37 @@ public class TsaShoplinkerService {
 			throw new IllegalStateException(e);
 		}
 	}
+	
+	/**
+	 * 상품등록-기획전 엑셀 다운로드
+	 *
+	 * @param shoplinkerSearch
+	 * @param excelFilenameWithPath - 경로를 포함한 엑셀파일명
+	 * @return
+	 * @author jmh
+	 * @since 2021. 11. 16
+	 */
+	public void getGoodsSendExcelPlanning(ShoplinkerSearch shoplinkerSearch, String excelFilenameWithPath) {
+
+		// 헤더 title 설정
+		String[] listTitles = {"샵링커 상품코드\n(단품아님.상품기준)", "sku코드", "선택1", "선택2"};
+
+		// DB 처리 시 사용되는 파라미터명(셀명) 설정
+		String[] cellNames = {"API_PRODUCT_ID", "OPT_CD", "OPT_CD1", "OPT_CD2"};
+
+		String[] cellTypes = {
+			GagaExcelConstants.CellType.CHAR_LEFT.name(), GagaExcelConstants.CellType.CHAR_LEFT.name(),
+			GagaExcelConstants.CellType.CHAR_LEFT.name(), GagaExcelConstants.CellType.CHAR_LEFT.name()};
+
+		Collection<GagaMap> dataList = admShoplinkerDao.getGoodsSendExcelPlanning(shoplinkerSearch);
+
+		try {
+
+			GagaExcelUtil.createExcel(excelFilenameWithPath, dataList, listTitles, cellNames, cellTypes);
+		} catch (Exception e) {
+			throw new IllegalStateException(e);
+		}
+	}
 
 
 	/**

+ 10 - 3
src/main/java/com/style24/admin/biz/service/TsaWithdrawService.java

@@ -212,10 +212,12 @@ public class TsaWithdrawService {
 	 */
 	public Collection<WmsWithdraw> getOptionInfo(Collection<WmsWithdraw> wmsWithdrawList) {
 		
-		for(WmsWithdraw data : wmsWithdrawList) {
-			
+		for (WmsWithdraw data : wmsWithdrawList) {
 			WmsWithdraw optionInfo = withdrawDao.getOptionInfo(data);
-			data.setGoodsCd(optionInfo.getGoodsCd());
+			// 2021.11.16 null 처리
+			if (optionInfo != null) {
+				data.setGoodsCd(optionInfo.getGoodsCd());
+			}
 		}
 		return wmsWithdrawList; 
 	}	
@@ -451,6 +453,11 @@ public class TsaWithdrawService {
 			OrderChange orderChange = new OrderChange();
 			orderChange.setOrdChgSq(ordChgSq);
 			orderChange.setUserNo(userNo);
+			
+			// 2021.11.15 반품사유 업데이트
+			orderChange.setChgReason(chgReason);
+			orderChange.setUpdNo(userNo);
+			orderChangeDao.updateOrderChangeChgReason(orderChange);
 
 			GagaMap info = orderChangeService.refundConfirmPreInfo(orderChange);
 

+ 15 - 0
src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -2663,6 +2663,21 @@ public class TsaGoodsController extends TsaBaseController {
 		goodsService.deleteGoodsPriceRes(goodsPriceRes);
 		return super.ok(message.getMessage("SUCC_0003"));
 	}
+	
+	/**
+	 * 상품 가격예약 종료
+	 *
+	 * @param goodsResSell
+	 * @return GagaResponse
+	 * @author jmh
+	 * @since 2021. 11. 15
+	 */
+	@PostMapping("/price/reserve/close")
+	@ResponseBody
+	public GagaResponse closeGoodsPriceRes(@RequestBody GoodsPriceRes goodsPriceRes) {
+		goodsService.closeGoodsPriceRes(goodsPriceRes);
+		return super.ok(message.getMessage("SUCC_0004"));
+	}
 
 	/**
 	 * 상품 가격예약 변경

+ 27 - 0
src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java

@@ -287,6 +287,33 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 
 		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
 	}
+	
+	/**
+	 * 샵링커상품등록- 엑셀다운로드
+	 *
+	 * @param shoplinkerSearch
+	 * @return
+	 * @author jmh
+	 * @since 2021. 06. 29
+	 */
+	@GetMapping("/goods/excel/planning")
+	public ResponseEntity<InputStreamResource> downloadGoodsPlanningExcel(HttpServletRequest request, ShoplinkerSearch shoplinkerSearch) throws Exception {
+		String excelfileName = "샵링커_기획전_" + GagaDateUtil.getTodayDateTime() + ".xlsx";
+		String excelFilenameWithPath = GagaFileUtil.getConcatenationPath(env.getProperty("download.path"), "excel", excelfileName);
+
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(shoplinkerSearch.getCondition())) {
+			shoplinkerSearch.setConditionList(shoplinkerSearch.getCondition().replaceAll("\r", "").trim().split("\n"));
+		}
+
+		if( 500 < shoplinkerSearch.getConditionList().length ) {
+			throw new IllegalStateException("상품코드를 500개 이하로 입력해주세요.");
+		}
+		
+		admShoplinkerService.getGoodsSendExcelPlanning(shoplinkerSearch, excelFilenameWithPath);
+
+		return GagaFileUtil.writeFile(request, excelFilenameWithPath);
+	}
 
 
 	/**

+ 4 - 1
src/main/java/com/style24/admin/biz/web/TsaWithdrawController.java

@@ -144,6 +144,9 @@ public class TsaWithdrawController extends TsaBaseController {
 		//mav.addObject("refundConfirmPreInfo", orderChangeService.refundConfirmPreInfo(orderChange));
 		//mav.addObject("dataList", withdrawService.getRefundDetailList(withdraw));
 		
+		// 2021.11.15 반품사유추가
+		mav.addObject("chgReasonList", rendererService.getAvailCommonCodeList("G688")); // 반품사유
+		
 		mav.setViewName("withdraw/RefundDetailForm");
 		return mav;
 	}
@@ -195,7 +198,7 @@ public class TsaWithdrawController extends TsaBaseController {
 	@PostMapping("/detail/confirm")
 	@ResponseBody
 	public GagaResponse refundDetailConfirm(@RequestBody GagaMap orderChange) {
-		log.info("orderChange {}"+orderChange);
+		log.info("orderChange {}" + orderChange);
 		
 		int userNo = TsaSession.getInfo().getUserNo();
 

+ 1 - 0
src/main/java/com/style24/persistence/domain/GoodsPriceRes.java

@@ -45,6 +45,7 @@ public class GoodsPriceRes extends TscBaseDomain {
 	private String searchBrandCd;
 	private String brandList;
 	private String supplyCompList;
+	private String regGb;
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] arrGoodsCd;

+ 1 - 0
src/main/java/com/style24/persistence/domain/Withdraw.java

@@ -42,6 +42,7 @@ public class Withdraw extends TscBaseDomain {
 	private String wdEddt;
 	private String wdMemo;
 	private String goodsCd;
+	private String optCd;
 	private String optCd1;
 	private String optCd2;
 	private String chgMemo;

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

@@ -386,13 +386,16 @@
 		SELECT
 		     B.ITEM_CD
 		   , (SELECT G.GOODS_NM FROM TB_GOODS G WHERE G.GOODS_CD = B.ITEM_CD) AS GOODS_NM
+		   , B.OPT_CD
 		   , B.OPT_CD1
+		   , IFNULL((SELECT COLOR_KNM FROM TB_COLOR WHERE COLOR_CD = IFNULL(NULLIF(B.OPT_CD1,'') , G.MAIN_COLOR_CD ) AND USE_YN  = 'Y'), ODI.OPT_CD1) AS COLOR_NM
 		   , B.OPT_CD2
 		   , B.ITEM_QTY
 		   , B.ITEM_PRICE
 		   , C.CURR_STOCK_QTY
 		   , C.BASE_STOCK_QTY
 		 FROM TB_ORDER_DETAIL A
+		 JOIN TB_GOODS G ON A.GOODS_CD = G.GOODS_CD
 		 JOIN TB_ORDER_DETAIL_ITEM B ON A.ORD_DTL_NO = B.ORD_DTL_NO
 		 JOIN VW_STOCK             C ON B.ITEM_CD    = C.GOODS_CD    AND B.OPT_CD = C.OPT_CD
 	    WHERE A.ORD_DTL_NO  = #{ordDtlNo}

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

@@ -2954,6 +2954,55 @@
 		WHERE GOODS_PRICE_RES_SQ = #{goodsPriceResSq}
 		AND APPLY_YN = 'N'
 	</delete>
+	
+	<!-- 상품 가격예약 종료 -->
+	<update id="closeGoodPriceRes" parameterType="GoodsPriceRes">
+		/* TsaGoods.closeGoodPriceRes */
+		UPDATE TB_GOODS_PRICE_RES
+		SET UPD_DT = NOW()
+			, UPD_NO = #{updNo}  
+			, APPLY_EDDT = NOW()
+		WHERE GOODS_PRICE_RES_SQ = #{goodsPriceResSq}	
+	</update>
+	
+	<!-- 상품 가격예약 이력 등록 -->
+	<insert id="createGoodPriceResHst" parameterType="GoodsPriceRes">
+		/* TsaGoods.createGoodPriceResHst */
+		INSERT INTO TB_GOODS_PRICE_RES_HST (
+		  GOODS_PRICE_RES_HST_SQ
+		, GOODS_CD
+		, RES_GOODS_PRICE
+		, END_GOODS_PRICE
+		, SELL_FEE_RATE
+		, APPLY_STDT
+		, APPLY_EDDT
+		, CFRM_YN
+		, CFRM_NO
+		, CFRM_DT
+		, APPLY_YN
+		, REG_GB
+		, REG_NO
+		, REG_DT
+		)
+		SELECT
+			  NULL
+			, GOODS_CD
+			, RES_GOODS_PRICE
+			, END_GOODS_PRICE
+			, SELL_FEE_RATE
+			, APPLY_STDT
+			, APPLY_EDDT
+			, CFRM_YN
+			, CFRM_NO
+			, CFRM_DT
+			, APPLY_YN
+			, #{regGb}
+			, #{regNo}
+			, NOW()
+		FROM TB_GOODS_PRICE_RES
+		WHERE GOODS_PRICE_RES_SQ = #{goodsPriceResSq}
+	</insert>
+	
 
 	<!-- 상품 동영상 조회 -->
 	<select id="getGoodsVideoList" parameterType="GoodsVideo" resultType="GoodsVideo">

+ 22 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsaShoplinker.xml

@@ -272,7 +272,28 @@
 
 		ORDER BY REG_DT DESC
 	</select>
-
+	
+	<!-- 상품등록-기획전 엑셀 다운로드 -->
+	<select id="getGoodsSendExcelPlanning" parameterType="ShoplinkerSearch" resultType="paramMap">
+		/* TsaShoplinker.getGoodsSendExcelPlanning */
+		SELECT
+			A.API_PRODUCT_ID
+			, A.GOODS_CD
+			, OP.OPT_CD
+			, OP.OPT_CD1
+			, OP.OPT_CD2
+		FROM SHOPLINKER_SYNC_HST A
+		LEFT OUTER JOIN TB_OPTION OP ON A.GOODS_CD = OP.GOODS_CD
+		WHERE A.GOODS_CD IN
+            <foreach collection="conditionList" item="item" index="index"  open="(" close=")" separator=",">
+       		UPPER(#{item})
+            </foreach>
+		AND A.API_TYPE = 'PRODUCT'
+		AND A.API_PRODUCT_ID IS NOT NULL
+		GROUP BY A.API_PRODUCT_ID, A.GOODS_CD, OP.OPT_CD, OP.OPT_CD1, OP.OPT_CD2
+		ORDER BY A.API_PRODUCT_ID, OP.DISP_ORD, OP.OPT_CD1, OP.OPT_CD2
+	</select>
+	
 	<!-- 재고-단품 등록 -->
 	<insert id="insertStockOption" parameterType="ShoplinkerGoods">
 		/* TsaShoplinker.insertStockOption */

+ 1 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml

@@ -737,6 +737,7 @@
 				, D.ORD_DTL_NO -- 주문상세번호 
 				, (SELECT S.GOODS_NM FROM TB_GOODS S WHERE S.GOODS_CD = C.GOODS_CD) AS GOODS_NM -- 상품명
 				, D.ITEM_CD  AS GOODS_CD -- 상품코드
+				, D.OPT_CD
 				, D.OPT_CD1 -- 옵션1 
 				, D.OPT_CD2 -- 옵션2
 				-- , B.CHG_QTY * D.ITEM_QTY AS CHG_QTY-- 신청수량 

+ 2 - 1
src/main/webapp/WEB-INF/views/delivery/DeliveryDetailItemForm.html

@@ -16,7 +16,7 @@
  -->
 
 
-<div class="modalPopup" data-width="750" >
+<div class="modalPopup" data-width="850" >
 	<div class="panelStyle">
 		<div class="panelTitle">
 			<h2>세트구성 상품정보</h2>
@@ -39,6 +39,7 @@ var delvDetailItemList = [[${delvDetailItemList}]];
 	// specify the columns
 	var columnDefsDelvDetailItemInfo = [
 			{headerName: "상품코드",	field: "itemCd", 	width: 100, cellClass: 'text-center'},
+			{headerName: "SKUCODE",	field: "optCd", 	width: 100, cellClass: 'text-center'},
 			{headerName: "상품명", 	field: "goodsNm", 	width: 200, cellClass: 'text-left'},
 			{headerName: "색상",  	field: "optCd1", 	width: 80, cellClass: 'text-center'},
 			{headerName: "사이즈", 	field: "optCd2", 	width: 70, cellClass: 'text-center'},

+ 68 - 0
src/main/webapp/WEB-INF/views/goods/GoodsPriceReserveForm.html

@@ -121,6 +121,7 @@
 					<button type="button" class="btn btn-success btn-lg" id="btnGoodsExcelSave" th:if="${sessionInfo.roleCd == 'G001_0000' OR sessionInfo.roleCd == 'G001_A000' OR sessionInfo.roleCd == 'G001_A101' OR sessionInfo.roleCd == 'G001_A100' OR sessionInfo.roleCd == 'G001_A001'}">상품가격예약등록</button>
 					<button type="button" class="btn btn-success  btn-lg" id="btnGoodsPriceResSave">예약등록</button>
 					<button type="button" class="btn btn-danger btn-lg" id="btnGoodsPriceResDelete">예약삭제</button>
+					<button type="button" class="btn btn-danger btn-lg" id="btnGoodsPriceResClose">종료</button>
 				</li>
 				<li class="right">
 					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
@@ -567,6 +568,73 @@
 		fnGoodsPriceSearch("EXCELRESULT");
 	}
 	
+	//종료처리 21.11.15 추가
+	$('#btnGoodsPriceResClose').click(function(e) {
+		//상품선택여부 확인처리 추가
+		var selectedData = gridOptions.api.getSelectedRows();
+
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return false;
+		}
+		
+		var arrGoodsCd = [];
+		var arrGoodsPriceResSq = [];
+		var chkFlag = false;
+		//selectedData = gagaAgGrid.getAllRowData(gridOptions);
+		$.each(selectedData, function(idx, item) {
+			
+			if (gagajf.isNull(item.goodsPriceResSq) || item.goodsPriceResSq == "0"){
+				chkFlag = true;
+				mcxDialog.alert(item.goodsCd +"상품은 가격이 예약된 상품이 아닙니다.");
+				return false;
+			}
+			
+			var toDateStr = new Date().format("YYYYMMDDHHmmss");
+			if (toDateStr > item.applyEddt){
+				chkFlag = true;
+				mcxDialog.alertC("종료된 예약 상품은 종료할 수 없습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#goodsRsvtTnmForm input[name=applyEdYMD]').focus();
+					}
+				});
+				return false;
+			}
+			
+			/*if ((toDateStr > item.applyStdt)){
+				chkFlag = true;
+				mcxDialog.alertC("시작된 예약 상품은 삭제할 수 없습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#goodsRsvtTnmForm input[name=applyEdYMD]').focus();
+					}
+				});
+				return false;
+			}*/
+			
+			arrGoodsCd.push(item.goodsCd);
+			arrGoodsPriceResSq.push(item.goodsPriceResSq);
+		});
+
+		if (chkFlag){
+			return;
+		}
+		
+		mcxDialog.confirm('종료하시겠습니까?',  {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				var data = {arrGoodsCd : arrGoodsCd
+						,arrGoodsPriceResSq : arrGoodsPriceResSq
+			};
+			
+			var jsonData = JSON.stringify(data);
+			gagajf.ajaxJsonSubmit('/goods/price/reserve/close', jsonData, fnGoodsPriceResDeleteCollBack);
+			}
+		});
+	});
+	
 	$(document).ready(function() {
 
 		cfnCreateCalendar('#sellTerms', 'applyStdt', 'applyEddt', true, '예약일', 'X');

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

@@ -261,8 +261,20 @@ var columnCnclRtnCompleteList = [
 	{headerName: "주문번호"		, field: "ordNo"			, width: 80		, cellClass: 'text-center'},
 	{headerName: "주문상세"		, field: "ordDtlNo"			, width: 80		, cellClass: 'text-center'},
 	{headerName: "상품코드"		, field: "goodsCd"			, width: 100	, cellClass: 'text-left'},
+	{headerName: "SKUCODE"		, field: "optCd"			, width: 100	, cellClass: 'text-center'},
 	{headerName: "상품명"		, field: "goodsNm"			, width: 200	, cellClass: 'text-left'},
-	{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center'},
+	//{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center'},
+	{headerName: "상품타입"	, field: "goodsTypeNm"	, width: 100, cellClass: 'text-center',
+		cellRenderer: function (params) {
+			var option;
+			if (params.data.goodsType == 'G056_S') {
+				option = "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailItemForm('" + params.data.ordDtlNo + "');\">" + params.value + "</a>";
+			} else {
+				option = params.value
+			}
+			return option;
+		}
+	},
 	{headerName: "옵션1"			, field: "colorNm"			, width: 80		, cellClass: 'text-center'},
 	{headerName: "옵션2"			, field: "optCd2"			, width: 80		, cellClass: 'text-center'},
 	{
@@ -611,6 +623,12 @@ $(document).ready(function() {
 	fnChangeChgReason(chgReason);
 
 });
+
+// 2021.06.17 구성상품 내역 팝업 호출 
+var fnOrderDetailItemForm = function (ordDtlNo) {
+	var actionUrl = "/delivery/detail/item/form/" + ordDtlNo;
+	cfnOpenModalPopup(actionUrl, 'popupDeliveryDetailItemForm');
+}
 </script>
 </html>
 

+ 147 - 128
src/main/webapp/WEB-INF/views/order/CnclReqForm.html

@@ -363,16 +363,29 @@ var columnCancelReqList = [
 	{headerName: "주문번호"		, field: "ordNo"			, width: 80		, cellClass: 'text-center'	, hide: temp1},
 	{headerName: "주문상세"		, field: "ordDtlNo"			, width: 80		, cellClass: 'text-center'},
 	{headerName: "주문상세"		, field: "ordDtlStat"		, width: 80		, cellClass: 'text-center'	, hide: temp1},
-	{headerName: "주문상세상태"	, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center'	, hide: temp1},
+	{headerName: "주문상세상태"		, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center'	, hide: temp1},
 	{headerName: "상품코드"		, field: "goodsCd"			, width: 100	, cellClass: 'text-left'	, hide: temp2},
+	{headerName: "SKUCODE"		, field: "optCd"			, width: 100	, cellClass: 'text-center'	, hide: temp2},
 	{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-left'	, hide: temp2},
-	{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center'	, hide: temp2},
+	//{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center'	, hide: temp2},
+	{headerName: "상품타입"	, field: "goodsTypeNm"	, width: 100, cellClass: 'text-center',
+		cellRenderer: function (params) {
+			var option;
+			if (params.data.goodsType == 'G056_S') {
+				option = "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailItemForm('" + params.data.ordDtlNo + "');\">" + params.value + "</a>";
+			} else {
+				option = params.value
+			}
+			return option;
+		},
+		hide: temp2
+	},
 	{headerName: "옵션1"			, field: "colorNm"			, width: 80		, cellClass: 'text-center'	, hide: temp2},
 	{headerName: "옵션2"			, field: "optCd2"			, width: 80		, cellClass: 'text-center'	, hide: temp2},
 	{
-		headerName		: "옵션금액"		
-		, field			: "optAddPrice"			
-		, width			: 80		
+		headerName		: "옵션금액"
+		, field			: "optAddPrice"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
@@ -380,18 +393,18 @@ var columnCancelReqList = [
 		, hide			: temp1
 	},
 	{
-		headerName		: "주문"		
-		, field			: "ordQty"			
-		, width			: 80		
+		headerName		: "주문"
+		, field			: "ordQty"
+		, width			: 80
 		, cellClass		: 'text-center'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
 		}
 	},
 	{
-		headerName		: "취소/요청"		
-		, field			: "cnclRtnQty"			
-		, width			: 80		
+		headerName		: "취소/요청"
+		, field			: "cnclRtnQty"
+		, width			: 80
 		, cellClass		: 'text-center'
 		, cellRenderer	: function (params) {
 			var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
@@ -399,9 +412,9 @@ var columnCancelReqList = [
 		}
 	},
 	{
-		headerName		: "취소/반품"		
+		headerName		: "취소/반품"
 		, field			: "ordCanChgQty"
-		, width			: 100		
+		, width			: 100
 		, cellClass		: 'text-center'
 		, cellRenderer	: function (params) {
 			var ordQty 			= parseInt(params.data.ordQty);
@@ -409,15 +422,15 @@ var columnCancelReqList = [
 			var ordReqChgQty 	= parseInt(params.data.ordReqChgQty);
 			var ordCanChgQty 	= parseInt(params.value);
 			var rtnStr 			= "";
-			
+
 			// 취소신청가능수량있으면 수량만 표시 (취소,반품,교환 신청정보 처리)
 			if (ordChgSq > 0 && chgStat != 'G685_40') {
 				rtnStr = ordCanChgQty;
 			} else {
 				ordCanChgQty = ordQty - (cnclRtnQty +  ordReqChgQty);
-				
+
 				rtnStr += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
-				
+
 				for (i=0 ; i<=ordCanChgQty ; i++) {
 					if (i == params.data.ordCanChgQty) {
 						rtnStr += "	<option value='"+i+"' selected>"+i+"</option>";
@@ -425,44 +438,44 @@ var columnCancelReqList = [
 						rtnStr += "	<option value='"+i+"'>"+i+"</option>";
 					}
 				}
-			
+
 				rtnStr += "</select>";
 			}
-			
+
 			return rtnStr;
 		}
 	},
 	{
 		headerName		: "주문"
-		, field			: "ordAmt"			
-		, width			: 80		
+		, field			: "ordAmt"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
 		}
 	},
 	{
-		headerName		: "취소"		
-		, field			: "cnclRtnAmt"			
-		, width			: 80		
+		headerName		: "취소"
+		, field			: "cnclRtnAmt"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
 		}
 	},
 	{
-		headerName		: "즉시할인"		
-		, field			: "cpn1DcAmt"			
-		, width			: 80		
+		headerName		: "즉시할인"
+		, field			: "cpn1DcAmt"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
 		}
 	},
 	{
-		headerName		: "다다익선1"		
-		, field			: "tmtb1DcAmt"			
-		, width			: 80		
+		headerName		: "다다익선1"
+		, field			: "tmtb1DcAmt"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
@@ -471,14 +484,14 @@ var columnCancelReqList = [
 	{
 		headerName		: "다다익선2"
 		, field			: "tmtb2DcAmt"
-		, width			: 80		
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
 		}
 	},
 	{
-		headerName		: "상품쿠폰"		
+		headerName		: "상품쿠폰"
 		, field			: "goodsCpnDcAmt"
 		, width			: 80
 		, cellClass		: 'text-right'
@@ -507,7 +520,7 @@ var columnCancelReqList = [
 	{
 		headerName		: "선포인트"
 		, field			: "prePntDcAmt"
-		, width			: 80		
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
@@ -525,16 +538,16 @@ var columnCancelReqList = [
 	{
 		headerName		: "실결제금액"
 		, field			: "realOrdAmt"
-		, width			: 100		
+		, width			: 100
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
 		}
 	},
 	{
-		headerName		: "배송비"		
-		, field			: "delvFee"			
-		, width			: 80		
+		headerName		: "배송비"
+		, field			: "delvFee"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
@@ -544,9 +557,9 @@ var columnCancelReqList = [
 	{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp1},
 	{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp1},
 	{
-		headerName		: "무료배송비"		
-		, field			: "minOrdAmt"			
-		, width			: 80		
+		headerName		: "무료배송비"
+		, field			: "minOrdAmt"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
@@ -554,9 +567,9 @@ var columnCancelReqList = [
 		, hide			: temp1
 	},
 	{
-		headerName		: "기본배송비"		
-		, field			: "orgDelvFee"			
-		, width			: 80		
+		headerName		: "기본배송비"
+		, field			: "orgDelvFee"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
@@ -564,9 +577,9 @@ var columnCancelReqList = [
 		, hide			: temp1
 	},
 	{
-		headerName		: "반품배송비"		
-		, field			: "rtnDelvFee"			
-		, width			: 80		
+		headerName		: "반품배송비"
+		, field			: "rtnDelvFee"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
@@ -574,9 +587,9 @@ var columnCancelReqList = [
 		, hide			: temp1
 	},
 	{
-		headerName		: "교환배송비"		
-		, field			: "excDelvFee"			
-		, width			: 80		
+		headerName		: "교환배송비"
+		, field			: "excDelvFee"
+		, width			: 80
 		, cellClass		: 'text-right'
 		, cellRenderer	: function (params) {
 			return params.value.addComma();
@@ -614,27 +627,27 @@ var columnCancelReqToBeList = [
 			{headerName: "칼라코드"		, field: "optCd1"			, width: 80		, cellClass: 'text-center', hide: temp1},
 			{headerName: "사이즈코드"		, field: "optCd2"			, width: 80		, cellClass: 'text-center', hide: temp2},
 			{
-				headerName		: "단품수량"		
-				, field			: "itemQty"			
-				, width			: 80		
+				headerName		: "단품수량"
+				, field			: "itemQty"
+				, width			: 80
 				, cellClass		: 'text-center'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "단품금액"		
-				, field			: "itemPrice"			
-				, width			: 80		
+				headerName		: "단품금액"
+				, field			: "itemPrice"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "단품옵션금액"		
-				, field			: "optAddPrice"			
-				, width			: 80		
+				headerName		: "단품옵션금액"
+				, field			: "optAddPrice"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -646,18 +659,18 @@ var columnCancelReqToBeList = [
 		headerName	: "주문상세수량",
 		children	: [
 			{
-				headerName		: "주문"		
-				, field			: "ordQty"			
-				, width			: 80		
+				headerName		: "주문"
+				, field			: "ordQty"
+				, width			: 80
 				, cellClass		: 'text-center'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "취소/요청"		
-				, field			: "cnclRtnQty"			
-				, width			: 80		
+				headerName		: "취소/요청"
+				, field			: "cnclRtnQty"
+				, width			: 80
 				, cellClass		: 'text-center'
 				, cellRenderer	: function (params) {
 					var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
@@ -665,9 +678,9 @@ var columnCancelReqToBeList = [
 				}
 			},
 			{
-				headerName		: "취소/반품"		
-				, field			: "ordCanChgQty"			
-				, width			: 100		
+				headerName		: "취소/반품"
+				, field			: "ordCanChgQty"
+				, width			: 100
 				, cellClass		: 'text-center'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -680,53 +693,53 @@ var columnCancelReqToBeList = [
 		children	: [
 			{
 				headerName		: "주문"
-				, field			: "ordAmt"			
-				, width			: 80		
+				, field			: "ordAmt"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "취소"		
-				, field			: "cnclRtnAmt"			
-				, width			: 80		
+				headerName		: "취소"
+				, field			: "cnclRtnAmt"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "즉시할인"		
-				, field			: "cpn1DcAmt"			
-				, width			: 80		
+				headerName		: "즉시할인"
+				, field			: "cpn1DcAmt"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "다다익선1"		
-				, field			: "tmtb1DcAmt"			
-				, width			: 80		
+				headerName		: "다다익선1"
+				, field			: "tmtb1DcAmt"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "다다익선2"		
-				, field			: "tmtb2DcAmt"			
-				, width			: 80		
+				headerName		: "다다익선2"
+				, field			: "tmtb2DcAmt"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "상품쿠폰"		
-				, field			: "goodsCpnDcAmt"			
-				, width			: 80		
+				headerName		: "상품쿠폰"
+				, field			: "goodsCpnDcAmt"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -742,9 +755,9 @@ var columnCancelReqToBeList = [
 				}
 			},
 			{
-				headerName		: "포인트"		
-				, field			: "pntDcAmt"			
-				, width			: 80		
+				headerName		: "포인트"
+				, field			: "pntDcAmt"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -753,25 +766,25 @@ var columnCancelReqToBeList = [
 			{
 				headerName		: "선포인트"
 				, field			: "prePntDcAmt"
-				, width			: 80		
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "상품권"		
-				, field			: "gfcdUseAmt"			
-				, width			: 80		
+				headerName		: "상품권"
+				, field			: "gfcdUseAmt"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "환불금액"		
-				, field			: "realOrdAmt"			
-				, width			: 80		
+				headerName		: "환불금액"
+				, field			: "realOrdAmt"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -795,9 +808,9 @@ var columnCancelReqToBeList = [
 			{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
 			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
 			{
-				headerName		: "무료배송비"		
-				, field			: "minOrdAmt"			
-				, width			: 80		
+				headerName		: "무료배송비"
+				, field			: "minOrdAmt"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -805,9 +818,9 @@ var columnCancelReqToBeList = [
 				, hide			: temp2
 			},
 			{
-				headerName		: "기본배송비"		
-				, field			: "orgDelvFee"			
-				, width			: 80		
+				headerName		: "기본배송비"
+				, field			: "orgDelvFee"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -815,9 +828,9 @@ var columnCancelReqToBeList = [
 				, hide			: temp2
 			},
 			{
-				headerName		: "반품배송비"		
-				, field			: "rtnDelvFee"			
-				, width			: 80		
+				headerName		: "반품배송비"
+				, field			: "rtnDelvFee"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -849,26 +862,26 @@ var columnDelvCdList = [
 			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
 			{
 				headerName		: "주문"
-				, field			: "ordAmt"			
-				, width			: 100		
+				, field			: "ordAmt"
+				, width			: 100
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "취소"		
-				, field			: "cnclRtnAmt"			
-				, width			: 100		
+				headerName		: "취소"
+				, field			: "cnclRtnAmt"
+				, width			: 100
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
 				}
 			},
 			{
-				headerName		: "환불"		
-				, field			: "realOrdAmt"			
-				, width			: 100		
+				headerName		: "환불"
+				, field			: "realOrdAmt"
+				, width			: 100
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -880,9 +893,9 @@ var columnDelvCdList = [
 		headerName	: "배송비정보",
 		children	: [
 			{
-				headerName		: "배송비"		
-				, field			: "delvFee"			
-				, width			: 100		
+				headerName		: "배송비"
+				, field			: "delvFee"
+				, width			: 100
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -890,9 +903,9 @@ var columnDelvCdList = [
 				, hide			: temp2
 			},
 			{
-				headerName		: "무료배송비"		
-				, field			: "minOrdAmt"			
-				, width			: 100		
+				headerName		: "무료배송비"
+				, field			: "minOrdAmt"
+				, width			: 100
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -900,9 +913,9 @@ var columnDelvCdList = [
 				, hide			: temp2
 			},
 			{
-				headerName		: "기본배송비"		
-				, field			: "orgDelvFee"			
-				, width			: 100		
+				headerName		: "기본배송비"
+				, field			: "orgDelvFee"
+				, width			: 100
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -910,9 +923,9 @@ var columnDelvCdList = [
 				, hide			: temp2
 			},
 			{
-				headerName		: "반품배송비"		
-				, field			: "rtnDelvFee"			
-				, width			: 80		
+				headerName		: "반품배송비"
+				, field			: "rtnDelvFee"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -920,9 +933,9 @@ var columnDelvCdList = [
 				, hide			: temp2
 			},
 			{
-				headerName		: "교환배송비"		
-				, field			: "excDelvFee"			
-				, width			: 80		
+				headerName		: "교환배송비"
+				, field			: "excDelvFee"
+				, width			: 80
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -931,9 +944,9 @@ var columnDelvCdList = [
 			},
 			{headerName: "추가배송비여부"		, field: "addDelvFeeYn"		, width: 140	, cellClass: 'text-center', hide: temp2},
 			{
-				headerName		: "추가배송비"		
-				, field			: "addDelvFee"			
-				, width			: 100		
+				headerName		: "추가배송비"
+				, field			: "addDelvFee"
+				, width			: 100
 				, cellClass		: 'text-right'
 				, cellRenderer	: function (params) {
 					return params.value.addComma();
@@ -1538,6 +1551,12 @@ $(document).ready(function() {
 	var cancelRequestTargetHeight = 50 + (40 * cancelRequestTargetCnt);
 	$("#gridOrderCancelRequestList").css("height" , cancelRequestTargetHeight+"px");
 });
+
+// 2021.06.17 구성상품 내역 팝업 호출 
+var fnOrderDetailItemForm = function (ordDtlNo) {
+	var actionUrl = "/delivery/detail/item/form/" + ordDtlNo;
+	cfnOpenModalPopup(actionUrl, 'popupDeliveryDetailItemForm');
+}
 </script>
 </html>
 

+ 3 - 2
src/main/webapp/WEB-INF/views/order/ExchangeRequestForm.html

@@ -289,7 +289,7 @@ var columnExchangeReqList = [
 			{headerName: "주문상세"		, field: "ordDtlStat"		, width: 80		, cellClass: 'text-center', hide: temp1},
 			{headerName: "주문상세상태"		, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center', hide: temp1},
 			{headerName: "상품코드"		, field: "goodsCd"			, width: 100	, cellClass: 'text-center'},
-			{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-center'},
+			{headerName: "상품명"			, field: "goodsNm"			, width: 130	, cellClass: 'text-center'},
 			{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2}
 		]
 	},
@@ -298,7 +298,8 @@ var columnExchangeReqList = [
 		children	: [
 			{headerName: "단품번호"		, field: "ordDtlItemSq"		, width: 100	, cellClass: 'text-center', hide: temp2},
 			{headerName: "단품코드"		, field: "itemCd"			, width: 100	, cellClass: 'text-center'},
-			{headerName: "단품명"			, field: "itemNm"			, width: 200	, cellClass: 'text-center'},
+			{headerName: "SKUCODE"		, field: "optCd"			, width: 100	, cellClass: 'text-center'},
+			{headerName: "단품명"			, field: "itemNm"			, width: 130	, cellClass: 'text-center'},
 			{headerName: "옵션1"			, field: "optCd1"			, width: 60		, cellClass: 'text-center'},
 			{headerName: "옵션2"			, field: "optCd2"			, width: 60		, cellClass: 'text-center'},
 			{

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

@@ -373,8 +373,21 @@ var columnCancelReqList = [
 	{headerName: "주문상세"		, field: "ordDtlStat"		, width: 80		, cellClass: 'text-center'	, hide: temp1},
 	{headerName: "주문상세상태"	, field: "ordDtlStatNm"		, width: 100	, cellClass: 'text-center'	, hide: temp1},
 	{headerName: "상품코드"		, field: "goodsCd"			, width: 110	, cellClass: 'text-left'	, hide: temp2},
+	{headerName: "SKUCODE"		, field: "optCd"			, width: 100	, cellClass: 'text-center'	, hide: temp2},
 	{headerName: "상품명"		, field: "goodsNm"			, width: 200	, cellClass: 'text-left'	, hide: temp2},
-	{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 80		, cellClass: 'text-center'	, hide: temp2},
+	//{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 80		, cellClass: 'text-center'	, hide: temp2},
+	{headerName: "상품타입"	, field: "goodsTypeNm"	, width: 80, cellClass: 'text-center',
+		cellRenderer: function (params) {
+			var option;
+			if (params.data.goodsType == 'G056_S') {
+				option = "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailItemForm('" + params.data.ordDtlNo + "');\">" + params.value + "</a>";
+			} else {
+				option = params.value
+			}
+			return option;
+		},
+		hide: temp2
+	},
 	{headerName: "옵션1"			, field: "colorNm"			, width: 60		, cellClass: 'text-center'	, hide: temp2},
 	{headerName: "옵션2"			, field: "optCd2"			, width: 60		, cellClass: 'text-center'	, hide: temp2},
 	{
@@ -1951,6 +1964,12 @@ $(document).ready(function() {
 		}
 	}
 });
+
+// 2021.06.17 구성상품 내역 팝업 호출 
+var fnOrderDetailItemForm = function (ordDtlNo) {
+	var actionUrl = "/delivery/detail/item/form/" + ordDtlNo;
+	cfnOpenModalPopup(actionUrl, 'popupDeliveryDetailItemForm');
+}
 </script>
 </html>
 

+ 21 - 0
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerGoodsSendForm.html

@@ -94,6 +94,7 @@
 							<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
 							<button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</button>
 							<button type="button" class="btn btn-primary btn-lg" id="btnGoodsUpload">엑셀업로드</button>
+							<button type="button" class="btn btn-primary btn-lg" id="btnGoodsPlanning">샵링커기획전생성엑셀</button>
 							<!-- <button th:if="${sessionInfo.userId == 'jmh'}" type="button" class="btn btn-default btn-lg" onclick="fnTest();">테스트</button> -->
 						</li>
 					</ul>
@@ -406,6 +407,26 @@
 	}
 	/**************** 엑셀다운로드 // *****************************************************/
 
+	/**************** 샵링커기획전생성엑셀 *****************************************************/
+	$('#btnGoodsPlanning').on('click', function() {
+		var formId = '#searchForm';
+		if (gagajf.isNull($("#searchForm textarea[name=condition]").val()) ){
+			
+			mcxDialog.alertC("상품 코드를 입력하세요", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$("#searchForm textarea[name=condition]").focus();
+				}
+			});
+			return false;
+		}
+		
+		var params =  $(formId).serialize();
+		$('#ExcelList').attr({ href : '/shoplinker/goods/excel/planning?' + params }).get(0).click();
+		
+	});
+	/**************** 샵링커기획전생성엑셀 // *****************************************************/
+	
 	/**************** 테스트용  *******************************************************/
     // 테스트- 실제 샵링커 호출
 	var fnTest = function(){

+ 70 - 21
src/main/webapp/WEB-INF/views/withdraw/RefundDetailForm.html

@@ -50,7 +50,12 @@
 					<tr>
 						<th>최종요청사유</th>
 						<td>
-							<span id="chgReasonNm"></span>
+							<span id="chgReasonNm">
+								<select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
+									<option value="">[선택하세요]</option>
+									<option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}|" th:text="|${oneData.cdNm}|"></option>
+								</select>
+							</span>
 						</td>
 						<th>귀책사유<i class="star"></i></th>
 						<td>
@@ -299,6 +304,7 @@
 				return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenGoodsDetailPopup('U','" + params.value + "','');\">" + params.value + "</a>";
 			}
 		},
+		{headerName: "SKUCODE", 	field: "optCd", 	width: 100, minWidth: 100, cellClass: 'text-center'},
 		{headerName: "옵션1", 		field: "optCd1", 	width: 60, minWidth: 100, cellClass: 'text-center'},
 		{headerName: "옵션2", 		field: "optCd2", 	width: 60, minWidth: 100, cellClass: 'text-center'},
 		{headerName: "신청수량", 		field: "chgQty", 	width: 80, minWidth: 100, cellClass: 'text-center'},
@@ -366,11 +372,10 @@
 		
 		// 전체 회수 완료 일 때
 		if (result.dataList.length == confirmCnt ) {
-			setReadOnly(true);
+			//setReadOnly(true);
 			$('#pgBtn').hide();
 			$('#divRefundInfo').hide();
 			$('#divRefundInfo2').show();
-			
 		}
 		
 		// 회수리스트 설정
@@ -439,25 +444,28 @@
 		// 환불컨펌 상세
 		$("#wdGbNm").text(data.wdGbNm); 													// 회수구분 
 		$("#arriValDt").text(data.arrivalDt); 												// arriValDt 도착일
-		$("#chgReasonNm").text(data.chgReasonNm); 											// 최종요청사유 
+		//$("#chgReasonNm").text(data.chgReasonNm); 										// 최종요청사유 
 		$("#chgReasonText").text(data.chgReasonText); 										// 귀책사유 
 		$("#withdrawDetailForm input[name=encloseFee]").val(data.encloseFee); 				// 동봉비 
 		$("#withdrawDetailForm input[name=codFee]").val(data.codFee); 						// 착불비 
 		$("#withdrawDetailForm input[name=addPayCost]").val(data.addPayCost); 				// 추가결제비 
 		$("#chgMemo").text(data.chgMemo); 													// 클레임메모 
 		$("#wdMemo").text(data.wdMemo); 													// 회수메모
+		
+		// 2021.11.15 사유변경설정
+		$("#withdrawDetailForm select[name=selectChgReason]").val(data.chgReason);
 
-		if(delvExpnYn == "Y"){
-			$('#withdrawDetailForm input[name=codFee]').attr('readonly', 'readonly');
-			$('#withdrawDetailForm input[name=encloseFee]').attr('readonly', 'readonly');
-			
-		} else {
-			if(wdGb == "W"){
-				$('#withdrawDetailForm input[name=codFee]').attr('readonly', 'readonly');
-			} else {
-				$('#withdrawDetailForm input[name=codFee]').remove('readonly');	
-			}
-		}
+		// 2021.11.15 동봉비, 착불비 칼럼 전체 허용 (CS 개선업무)
+		//if(delvExpnYn == "Y"){
+			//$('#withdrawDetailForm input[name=codFee]').attr('readonly', 'readonly');
+			//$('#withdrawDetailForm input[name=encloseFee]').attr('readonly', 'readonly');
+		//} else {
+			//if(wdGb == "W"){
+				//$('#withdrawDetailForm input[name=codFee]').attr('readonly', 'readonly');
+			//} else {
+				//$('#withdrawDetailForm input[name=codFee]').remove('readonly');	
+			//}
+		//}
 		
 		fnSetTotRefundData();
 	}
@@ -473,9 +481,14 @@
 	*  환불 금액 계산
 	**************************************************************************/		
 	var fnSetTotRefundData = function() {
-		var enCloseFee			= $("#withdrawDetailForm input[name=encloseFee]").val(); 	//동봉비 
-		var codFee				= $("#withdrawDetailForm input[name=codFee]").val(); 		//착불비 
-		var addPaycost			= $("#withdrawDetailForm input[name=addPayCost]").val(); 	//추가결제비
+		var enCloseFee			= $("#withdrawDetailForm input[name=encloseFee]").val(); 		//동봉비 
+		var codFee				= $("#withdrawDetailForm input[name=codFee]").val(); 			//착불비 
+		var addPaycost			= $("#withdrawDetailForm input[name=addPayCost]").val(); 		//추가결제비
+		var chgReason			= $("#withdrawDetailForm select[name=selectChgReason]").val(); 	//변경사유
+		
+		if (chgReason != 'G688_10') {
+			isCustomer = false;
+		}
 
 		enCloseFee				= enCloseFee.replaceAll(',', '');
 		codFee					= codFee.replaceAll(',', '');
@@ -483,6 +496,7 @@
 
 		addDeliveryFee			= 0;
 		addDeliveryFeeYn		= "N";
+		
 		codFeeAmt				= 0;
 		codFeeYn				= "N";
 		enCloseFeeAmt			= Number(enCloseFee);
@@ -536,6 +550,16 @@
 		if (allDelvCanYn == 'Y' && returnOrderInfo != null && returnOrderInfo[0].delvGfcdUseAmt + returnOrderInfo[0].realDelvAmt == 0) {
 			orgDelvFee = returnOrderInfo[0].orgDelvFee;
 		}
+		
+		// 2021.11.15 착불비, 동봉비 사용 허용 개발
+		if (Number(codFee) > 0) {
+			codFeeAmt 	= Number(codFee);
+			codFeeYn  	= "Y";
+		}
+		
+		if (Number(enCloseFee) > 0) {
+			enCloseFeeYn = "Y";
+		}
 
 		// 출고예외(확정후 품절,불량)일 경우
 		if (delvExpnYn == "Y") {
@@ -584,11 +608,11 @@
 						leftDelvFee = Number(codFee) + orgDelvFee;
 						delvFee = 0 - orgDelvFee;
 
-						if(Number(codFee) > 0){
+						if (Number(codFee) > 0) {
 							codFeeAmt = Number(codFee);
 							codFeeYn  = "Y";
-						}
-						if(Number(enCloseFee) > 0){
+						} 
+						if (Number(enCloseFee) > 0) {
 							enCloseFeeYn = "Y";
 						}
 						
@@ -796,6 +820,7 @@
 		reFundInfo.enCloseFee		= enCloseFeeAmt;
 		reFundInfo.depositAmt		= depositAmt;
 		reFundInfo.msgStat			= $('#msgStat').is(':checked') ? 'Y' : 'N';
+		reFundInfo.chgReason		= $("#withdrawDetailForm select[name=selectChgReason]").val(); 	//변경사유 
 		
 		var jsonData = JSON.stringify(reFundInfo);
 		
@@ -854,6 +879,30 @@
 		fnRefundDetailSearch();
 		fnChangePgStat();
 	}); 
+	
+	// 2021.11.15 추가 귀책사유설정
+	var fnChangeChgReason = function(reasonCd){
+		var customerReasonArr = ['G688_10'];
+
+		isCustomer = false;
+		
+		// 귀책사유체크(취소,반품,교환)
+		for (i=0 ; i<customerReasonArr.length ; i++) {
+			if (customerReasonArr[i] == reasonCd) {
+				isCustomer = true;
+			}
+		}
+		
+		// 귀책사유설정
+		if (isCustomer) {
+			$("#chgReasonText").text("고객");
+		} else {
+			$("#chgReasonText").text("회사");
+		}
+
+		// 2021.11.15 변경사유변경 환불금액 재계산
+		fnSetTotRefundData();
+	}
 
 /*]]>*/
 </script>