浏览代码

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.admin.git into develop

eskim 4 年之前
父节点
当前提交
e2c820ee28
共有 20 个文件被更改,包括 518 次插入1481 次删除
  1. 0 1291
      src/main/java/com/style24/admin/biz/service/TsaWithdrawService.java
  2. 6 0
      src/main/java/com/style24/admin/biz/web/TsaDisplayController.java
  3. 42 19
      src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java
  4. 4 1
      src/main/java/com/style24/persistence/domain/Withdraw.java
  5. 4 0
      src/main/java/com/style24/persistence/domain/WithdrawExc.java
  6. 92 8
      src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml
  7. 3 1
      src/main/webapp/WEB-INF/views/customer/LmsPopupForm.html
  8. 12 1
      src/main/webapp/WEB-INF/views/display/CategoryGoodsForm.html
  9. 41 2
      src/main/webapp/WEB-INF/views/display/LookbookListForm.html
  10. 1 0
      src/main/webapp/WEB-INF/views/goods/GoodsPopupListForm.html
  11. 10 6
      src/main/webapp/WEB-INF/views/marketing/MorebetterListForm.html
  12. 54 46
      src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html
  13. 2 2
      src/main/webapp/WEB-INF/views/marketing/PlanCornerListForm.html
  14. 3 3
      src/main/webapp/WEB-INF/views/marketing/ShotDeliveryForm.html
  15. 16 16
      src/main/webapp/WEB-INF/views/order/ExchangeRequestForm.html
  16. 13 10
      src/main/webapp/WEB-INF/views/order/RtnReqForm.html
  17. 9 8
      src/main/webapp/WEB-INF/views/withdraw/RefundRegisterListForm.html
  18. 76 10
      src/main/webapp/WEB-INF/views/withdraw/WithdrawDirectiveListForm.html
  19. 121 25
      src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html
  20. 9 32
      src/main/webapp/WEB-INF/views/withdraw/WmsWithdrawListForm.html

文件差异内容过多而无法显示
+ 0 - 1291
src/main/java/com/style24/admin/biz/service/TsaWithdrawService.java


+ 6 - 0
src/main/java/com/style24/admin/biz/web/TsaDisplayController.java

@@ -889,6 +889,12 @@ public class TsaDisplayController extends TsaBaseController {
 	@ResponseBody
 	public GagaMap getLookbookList(@RequestBody Lookbook lookbook) {
 		GagaMap result = new GagaMap();
+		if(lookbook.getDispStdt() != null){
+			lookbook.setDispStdt(lookbook.getDispStdt().replaceAll("-",""));
+		}
+		if(lookbook.getDispEddt() != null){
+			lookbook.setDispEddt(lookbook.getDispEddt().replaceAll("-",""));
+		}
 
 		lookbook.setRegNo(TsaSession.getInfo().getUserNo());
 		lookbook.setPageable(new TscPageRequest(lookbook.getPageNo() - 1, lookbook.getPageSize()));

+ 42 - 19
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -328,16 +328,25 @@ public class TsaOrderChangeController extends TsaBaseController {
 
 		String chgStat = "";
 		if (order.getOrdChgSq() > 0) {
+			// 교환TO교환 처리 시 미착 수량 설정
+			Collection<Order> returnDetailList;
 			String ordChgGb = order.getOrdChgGb();
+
+			if (StringUtils.isNotBlank(ordChgGb) && TscConstants.ChangeGb.RETURN_TO_RETURN.value().equals(ordChgGb.toUpperCase())) {
+				returnDetailList = coreOrderChangeService.getNonArrivalInfo(order);
+			} else {
+				returnDetailList = orderChangeDetailList;
+			}
+
 			// Collection<Order> exchangeInfoList = coreOrderChangeService.getExchangeInfo(order);
 			// mav.addObject("exchangeInfoList"		, exchangeInfoList);											// 교환정보
-			mav.addObject("ordChgGb"				, StringUtils.isBlank(ordChgGb) ? "" : ordChgGb);				// 주문변경요쳥변경구분
+			mav.addObject("ordChgGb"				, StringUtils.isBlank(ordChgGb) ? "" : ordChgGb.toUpperCase());	// 주문변경요쳥변경구분
 
 			// 반품상세 정보 설정
 			List<Integer> ordDtlNoList = new ArrayList<>();
 			List<Integer> chgQtyList = new ArrayList<>();
-			if (orderChangeDetailList != null && orderChangeDetailList.size() > 0) {
-				for (Order tmp : orderChangeDetailList) {
+			if (returnDetailList != null && returnDetailList.size() > 0) {
+				for (Order tmp : returnDetailList) {
 					if (tmp.getChgQty() > 0 && !ordDtlNoList.contains(tmp.getOrdDtlNo())) {
 						ordDtlNoList.add(tmp.getOrdDtlNo());
 						chgQtyList.add(tmp.getChgQty());
@@ -353,6 +362,11 @@ public class TsaOrderChangeController extends TsaBaseController {
 					if(ordDtlNoList.contains(tmp.getOrdDtlNo())) {
 						int chgQty = chgQtyList.get(ordDtlNoList.indexOf(tmp.getOrdDtlNo()));
 						tmp.setChgQty(chgQty);
+
+						if (StringUtils.isNotBlank(ordChgGb) && TscConstants.ChangeGb.RETURN_TO_RETURN.value().equals(ordChgGb.toUpperCase())) {
+							tmp.setOrdCanChgQty(chgQty);
+						}
+
 						tmpList.add(tmp);
 					}
 				}
@@ -648,13 +662,22 @@ public class TsaOrderChangeController extends TsaBaseController {
 
 		String chgStat = "";
 		if (order.getOrdChgSq() > 0) {
-			String ordChgGb = order.getOrdChgGb();
 			Collection<Order> exchangeInfoList = coreOrderChangeService.getExchangeInfo(order);
+
+			// 교환TO교환 처리 시 미착 수량 설정
+			Collection<Order> exchangeDetailList;
+			String ordChgGb = order.getOrdChgGb();
+			if (StringUtils.isNotBlank(ordChgGb) && TscConstants.ChangeGb.EXCHANGE_TO_EXCHANGE.value().equals(ordChgGb.toUpperCase())) {
+				exchangeDetailList = coreOrderChangeService.getNonArrivalInfo(order);
+			} else {
+				exchangeDetailList = orderChangeDetailList;
+			}
+
 			// 교환상세 정보 설정
 			List<Integer> ordDtlNoList = new ArrayList<>();
 			List<Integer> chgQtyList = new ArrayList<>();
-			if (orderChangeDetailList != null && orderChangeDetailList.size() > 0) {
-				for (Order tmp : orderChangeDetailList) {
+			if (exchangeDetailList != null && exchangeDetailList.size() > 0) {
+				for (Order tmp : exchangeDetailList) {
 					if (tmp.getChgQty() > 0 && !ordDtlNoList.contains(tmp.getOrdDtlNo())) {
 						ordDtlNoList.add(tmp.getOrdDtlNo());
 						chgQtyList.add(tmp.getChgQty());
@@ -682,21 +705,21 @@ public class TsaOrderChangeController extends TsaBaseController {
 				chgOrdDtlStat = exchangeInfoList.iterator().next().getOrdDtlStat();
 			}
 
-			mav.addObject("exchangeInfoList"		, exchangeInfoList);								// 교환정보
-			mav.addObject("ordChgGb"				, StringUtils.isBlank(ordChgGb) ? "" : ordChgGb);	// 주문변경요쳥변경정보
-			mav.addObject("chgOrdDtlStat"			, chgOrdDtlStat);									// 교환상품상세상태
+			mav.addObject("exchangeInfoList"		, exchangeInfoList);											// 교환정보
+			mav.addObject("ordChgGb"				, StringUtils.isBlank(ordChgGb) ? "" : ordChgGb.toUpperCase());	// 주문변경요쳥변경정보
+			mav.addObject("chgOrdDtlStat"			, chgOrdDtlStat);												// 교환상품상세상태
 		}
 
-		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G689"));	// 교환사유
-		mav.addObject("cancelRequestTargetList"		, cancelRequestTargetList);							// 교환요청대상 목록
-		mav.addObject("orderChangeDetailList"		, orderChangeDetailList);							// 변경신청목록 (취소/반품/교환)
-		mav.addObject("orderInfoList"				, orderInfoList);									// 주문정보
-		mav.addObject("ordNo"						, order.getOrdNo());								// 주문번호
-		mav.addObject("ordChgSq"					, order.getOrdChgSq());								// 주문변경번호
-		mav.addObject("orderDelvAddrInfo"			, coreOrderService.getDeliveryAddrList(order));		// 배송정보
-		mav.addObject("TelExcNoList"				, rendererService.getAvailCommonCodeList("G095"));	// 전화번호국번
-		mav.addObject("PhnExcNoList"				, rendererService.getAvailCommonCodeList("G096"));	// (휴대전화)번호국번
-		mav.addObject("chgStat"						, chgStat);											// 변경상태
+		mav.addObject("chgReasonList"				, rendererService.getAvailCommonCodeList("G689"));				// 교환사유
+		mav.addObject("cancelRequestTargetList"		, cancelRequestTargetList);										// 교환요청대상 목록
+		mav.addObject("orderChangeDetailList"		, orderChangeDetailList);										// 변경신청목록 (취소/반품/교환)
+		mav.addObject("orderInfoList"				, orderInfoList);												// 주문정보
+		mav.addObject("ordNo"						, order.getOrdNo());											// 주문번호
+		mav.addObject("ordChgSq"					, order.getOrdChgSq());											// 주문변경번호
+		mav.addObject("orderDelvAddrInfo"			, coreOrderService.getDeliveryAddrList(order));					// 배송정보
+		mav.addObject("TelExcNoList"				, rendererService.getAvailCommonCodeList("G095"));				// 전화번호국번
+		mav.addObject("PhnExcNoList"				, rendererService.getAvailCommonCodeList("G096"));				// (휴대전화)번호국번
+		mav.addObject("chgStat"						, chgStat);														// 변경상태
 
 		mav.setViewName("order/ExchangeRequestForm");
 

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

@@ -84,7 +84,10 @@ public class Withdraw extends TscBaseDomain {
 	private String accountNo;
 	private String bankCd;	
 	private String invoiceNo;
-
+	private String delvFeeCd;
+	private String delvFeeCdGrp;
+	private String refundConfirm;
+	
 	private Integer ordNo;
 	private Integer ordDtlNo; 
 	private Integer ordChgSq;

+ 4 - 0
src/main/java/com/style24/persistence/domain/WithdrawExc.java

@@ -63,6 +63,9 @@ public class WithdrawExc extends TscBaseDomain {
 	private String ordDtlNoList;
 	private String banReq;
 	private String chgReq;
+	private String ordPhnno;
+	private String payGb;
+	
 	
 	
 	private int chargeAmount;          // 요금총액
@@ -104,6 +107,7 @@ public class WithdrawExc extends TscBaseDomain {
 	private Integer ordDtlNo;
 	private Integer custNo;
 	private Integer userNo;
+	private Integer orderExceptionNo;
 	
 	
 	// 검색

+ 92 - 8
src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml

@@ -73,6 +73,7 @@
 					, DATE_FORMAT(B.REG_DT, '%Y-%m-%d') AS WD_REG_DT        -- 회수등록일
 					, DATE_FORMAT(D.REG_DT, '%Y-%m-%d') AS RC_REG_DT        -- 반품신청일
 					, I.CUST_NO AS USER_NO 
+					, '' AS REFUND_CONFIRM
 				  FROM TB_WITHDRAW A
 				  JOIN TB_WITHDRAW_DETAIL B ON A.WD_INVOICE_NO  = B.WD_INVOICE_NO AND A.ORD_CHG_SQ = B.ORD_CHG_SQ 
 				  JOIN TB_ORDER_CHANGE_DETAIL C ON B.ORD_CHG_SQ = C.ORD_CHG_SQ AND B.ORD_DTL_NO = C.ORD_DTL_NO AND C.DEL_YN ='N'
@@ -137,7 +138,7 @@
 					, B.ORDER_DTL_NO
 				  FROM TB_ORDER_RECALL_EXCEPTION A 
 				  JOIN TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
-				  WHERE B.REASON_CD NOT IN('확정 전 품절(재고없음)','확정 전 불량')
+				  WHERE B.REASON_CODE NOT IN('08','10')
 					<if test='customerName != null and customerName != ""'>
 					AND   A.CUSTOMER_NAME = #{customerName}
 					</if>
@@ -189,7 +190,7 @@
 		    SELECT A.*, ROW_NUMBER() OVER(ORDER BY  A.ORDER_NO, A.RECALL_EXCEPTION_NO, A.RECALL_EXCEPTION_ITEM_NO)  RNUM 
 		          , CASE WHEN A.MALL_GB = 'G011_20' THEN (SELECT MAX(BB.EXTMALL_ID) FROM TB_ORDER_DETAIL BB WHERE BB.ORD_NO = A.ORDER_NO) ELSE 'APISHOP_0054' END AS EXTMALL_ID
 		    FROM (   
-				SELECT A.* , CD.CHG_STAT, OC.ORD_CHG_SQ , OC.WD_GB , OC.CHG_REASON, OC.CHG_GB 
+				SELECT A.*
 				  FROM (
 						SELECT 
 							  A.RECALL_STAT   -- 반품대기처리상태
@@ -220,11 +221,90 @@
 							, B.REASON_CODE
 							, O.MALL_GB
 							, A.COD_FEE
+							, O.ORD_PHNNO 
+							, O.CUST_NO 
+							, CASE WHEN A.PAY_GB = 'NAVER' THEN 'Y' ELSE 'N' END AS PAY_GB  
+							, A.ORDER_EXCEPTION_NO 
+							, ''   AS CHG_STAT
+							, NULL AS ORD_CHG_SQ 
+							, ''   AS WD_GB 
+							, NULL AS CHG_REASON
+							, NULL AS CHG_GB 
 						  FROM TB_ORDER_RECALL_EXCEPTION A 
 						  JOIN TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
 						  LEFT JOIN TB_ORDER O ON O.ORD_NO = A.ORDER_NO 
 						  LEFT JOIN TB_OPTION C ON C.OPT_CD = B.SKU_CODE
-						  WHERE B.REASON_CODE NOT IN('08','10')
+						  WHERE B.REASON_CODE IN('09','11')
+							<if test='customerName != null and customerName != ""'>
+							AND   A.CUSTOMER_NAME = #{customerName}
+							</if>
+							<if test='orderNo != null and orderNo != ""'>
+							AND   A.ORDER_NO  = #{orderNo}
+							</if>
+							<if test='recallStat != null and recallStat != ""'>
+							AND   A.RECALL_STAT  = #{recallStat}
+							</if>
+							<if test='stDate != null and stDate != ""'>
+							AND   A.DATE_CREATED <![CDATA[>= ]]> STR_TO_DATE(REPLACE(#{stDate},'-',''), '%Y%m%d%H%i%s') 
+							</if>
+							<if test='edDate != null and edDate != ""'>
+							AND   A.DATE_CREATED <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','')+ 1, '%Y%m%d%H%i%s'), INTERVAL 1 DAY)
+							</if>
+							
+							<if test='reasonCode != null and reasonCode != ""'>
+							AND B.REASON_CODE = #{reasonCode}
+							</if>
+							<if test='userNameCreated != null and userNameCreated != ""'>
+							AND A.USER_NAME_CREATED = #{userNameCreated}
+							</if>
+							
+						UNION ALL
+						
+						SELECT 
+							  A.RECALL_STAT   -- 반품대기처리상태
+							, A.STATUS_CD     -- 처리상태
+							, A.DATE_CREATED  -- 등록일자
+							, A.CUSTOMER_NAME -- 고객명
+							, A.ORDER_NO      -- 주문번호
+							, B.ORDER_DTL_NO  -- 주문상세번호 
+							, A.LOGISTICS_NAME -- 택배사명
+							, A.INVOICE_NO     -- 반송장번호
+							, A.CHARGE_TYPE    -- 요금구분
+							, A.CHARGE_AMOUNT  -- 배송비
+							, A.USER_NAME_CREATED -- 작업자
+							, B.REASON_CD -- 예외사유
+							, IFNULL((SELECT GROUP_CONCAT(ADMIN_MEMO ORDER BY RECALL_EXCEPTION_MEMO_NO ) 
+							     FROM TB_ORDER_RECALL_EXCEPTION_MEMO C WHERE C.RECALL_EXCEPTION_NO = A.RECALL_EXCEPTION_NO  AND ADMIN_MEMO !='.'),'-') AS ADMIN_MEMO -- WMS메시지
+							, IFNULL((SELECT BRAND_KNM FROM TB_BRAND BR JOIN TB_GOODS GD ON BR.BRAND_CD = GD.BRAND_CD WHERE GD.GOODS_CD = C.GOODS_CD),'') AS BRAND_NM           -- 브랜드명
+							, B.PRODUCT_CODE   -- 상품코드
+							, B.SKU_CODE       -- SKU코드
+							, B.PRODUCT_NAME   -- 상품명
+							, B.SKU_VALUE      -- 속성
+							, C.SKU_MODEL_NO   -- 원코드
+							, B.EXCEPTION_QTY  -- 수량 
+							, A.RECALL_EXCEPTION_NO -- 반품예외처리번호 
+							, IFNULL(C.GOODS_CD,'') AS GOODS_CD       -- 상품코드 
+							, B.RECALL_EXCEPTION_ITEM_NO 
+							, B.QTY
+							, B.REASON_CODE
+							, O.MALL_GB
+							, A.COD_FEE
+							, O.ORD_PHNNO 
+							, O.CUST_NO 
+							, CASE WHEN A.PAY_GB = 'NAVER' THEN 'Y' ELSE 'N' END AS PAY_GB  
+							, A.ORDER_EXCEPTION_NO 
+							, CD.CHG_STAT
+							, OC.ORD_CHG_SQ 
+							, OC.WD_GB 
+							, OC.CHG_REASON
+							, OC.CHG_GB 
+						  FROM TB_ORDER_RECALL_EXCEPTION A 
+						  JOIN TB_ORDER_RECALL_EXCEPTION_ITEM B ON A.RECALL_EXCEPTION_NO = B.RECALL_EXCEPTION_NO
+						  LEFT JOIN TB_ORDER O ON O.ORD_NO = A.ORDER_NO 
+						  LEFT JOIN TB_OPTION C ON C.OPT_CD = B.SKU_CODE
+						  LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON B.ORDER_DTL_NO = CD.ORD_DTL_NO AND CD.DEL_YN ='N' AND CD.CHG_STAT = 'G685_31'
+						  LEFT OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ 						  
+						  WHERE B.REASON_CODE IN('00','01','02','03','04','05','06','15')
 							<if test='customerName != null and customerName != ""'>
 							AND   A.CUSTOMER_NAME = #{customerName}
 							</if>
@@ -248,14 +328,12 @@
 							AND A.USER_NAME_CREATED = #{userNameCreated}
 							</if>
 				) A
-				LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL  CD ON A.ORDER_DTL_NO = CD.ORD_DTL_NO AND CD.DEL_YN ='N' AND CD.CHG_STAT = 'G685_31'
-				LEFT OUTER JOIN TB_ORDER_CHANGE         OC ON CD.ORD_CHG_SQ = OC.ORD_CHG_SQ 
 				WHERE 1=1
 				<if test='chgGb != null and chgGb != "" and chgGb !="G680"'>
-				AND OC.CHG_GB  = #{chgGb}
+				AND A.CHG_GB  = #{chgGb}
 				</if>
 				<if test='chgGb =="G680"'>
-				AND OC.CHG_GB  IS NULL
+				AND A.CHG_GB  IS NULL
 				</if>
 				ORDER BY A.ORDER_NO, A.RECALL_EXCEPTION_NO, A.RECALL_EXCEPTION_ITEM_NO
 	<include refid="getListPagingCondition_sql"/> 
@@ -350,6 +428,12 @@
 						     , O.ORD_PHNNO                              -- 주문자휴대전화번호
 						     , O.ORD_TELNO                              -- 주문자전화번호
 						     , O.ORD_EMAIL                              -- 주문자이메일
+						     , OD.DELV_FEE_CD
+						     , O.CUST_NO
+						     , CASE WHEN G.SELF_GOODS_YN = 'Y'
+						            THEN 'WMS'
+						            ELSE OD.DELV_FEE_CD
+						            END  DELV_FEE_CD_GRP
 						FROM   TB_ORDER_CHANGE OC          
 						JOIN   TB_ORDER_CHANGE_DETAIL OCD ON OC.ORD_CHG_SQ  = OCD.ORD_CHG_SQ 
 						JOIN   TB_ORDER_DETAIL OD         ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
@@ -523,7 +607,7 @@
 				, E.ORD_NM 	
 				, C.DELV_ADDR_SQ
 				, F.WD_INVOICE_NO 
-				, (SELECT R.REFUND_AMT FROM TB_REFUND R WHERE R.ORD_NO = E.ORD_NO) AS REFUND_AMT
+				, (SELECT R.REFUND_AMT FROM TB_REFUND R WHERE R.ORD_NO = E.ORD_NO AND R.ORD_CHG_SQ = A.ORD_CHG_SQ ) AS REFUND_AMT
 		  FROM TB_ORDER_CHANGE A
 		  JOIN TB_ORDER_CHANGE_DETAIL B ON B.ORD_CHG_SQ = A.ORD_CHG_SQ 
 		  JOIN TB_ORDER_DETAIL C ON C.ORD_DTL_NO = B.ORD_DTL_NO 

+ 3 - 1
src/main/webapp/WEB-INF/views/customer/LmsPopupForm.html

@@ -127,8 +127,10 @@
 
 	$(document).ready(function() {
 		fnInitDataSet();
-
+	
 		cfnGetTextLength("#lmsForm textarea[name=content]", 2000, $('#lmsForm span[name=count]'));
+	
+		$('#popupLmsForm .modelessPopup').draggable({'cancel':'.panelContent'});
 	});
 	/*]]>*/
 </script>

+ 12 - 1
src/main/webapp/WEB-INF/views/display/CategoryGoodsForm.html

@@ -261,10 +261,21 @@
 	 * 상품조회 버튼 클릭시
 	 */
 	$("#btnSearch").on('click', function(){
-		$("#searchForm input[name=searchGb]").val("BASIC");
+		if(gagajf.isNull($("#goodsSearch").find("input[name=goodsCd]").val())){
+            mcxDialog.alert("상품코드를 입력하세요.");
+            return false;
+        }
+	    $("#searchForm input[name=searchGb]").val("BASIC");
 		gagaPaging.load(1);
 	});
 
+    //페이징
+    $('#searchForm select[name=pageSize]').on('change', function() {
+        $("#searchForm input[name=pageNo]").val('1');
+        $("#searchForm input[name=searchGb]").val("BASIC");
+        gagaPaging.load(1);
+    });
+
 	/**
 	 * 상품추가 버튼 클릭 시
 	 */

+ 41 - 2
src/main/webapp/WEB-INF/views/display/LookbookListForm.html

@@ -147,6 +147,7 @@
 		},
 		{headerName: "타이틀", field: "title", width: 200, cellClass: 'text-center'},
 		{headerName: "브랜드", field: "brandCd", width: 80, cellClass: 'text-center'},
+		{headerName: "브랜드명", field: "brandNm", width: 80, cellClass: 'text-center'},
 		{headerName: "메인룩북", field: "mainDispYn", width: 80, cellClass: 'text-center'},
 		{headerName: "노출여부", field: "dispYn", width: 80, cellClass: 'text-center'},
 		{headerName: "노출시작일", field: "dispStdt", width: 150, cellClass: 'text-center'},
@@ -181,8 +182,39 @@
 
 	// 조회
 	$("#btnSearch").on('click', function(){
-		$("#searchForm input[name=dispStTime]").val($('#searchForm #schStTimeHour').val()+$('#searchForm #schStTimeMin').val()+'00');
-		$("#searchForm input[name=dispEdTime]").val($('#searchForm #schEdTimeHour').val()+$('#searchForm #schEdTimeMin').val()+'59');
+		var fromDate = '';
+		var toDate = '';
+		if(!gagajf.isNull($("#searchForm input[name=dispStdt]").val())){
+			$("#searchForm input[name=dispStTime]").val($('#searchForm #schStTimeHour').val()+$('#searchForm #schStTimeMin').val()+'00');
+			fromDate = $("#searchForm input[name=dispStdt]").val().replaceAll('-','')+$("#searchForm input[name=dispStTime]").val();
+		}
+		if(!gagajf.isNull($("#searchForm input[name=dispEddt]").val())){
+			$("#searchForm input[name=dispEdTime]").val($('#searchForm #schEdTimeHour').val()+$('#searchForm #schEdTimeMin').val()+'59');
+			toDate = $("#searchForm input[name=dispEddt]").val().replaceAll('-','')+$("#searchForm input[name=dispEdTime]").val();
+		}
+
+		if (!gagajf.isNull(fromDate) || !gagajf.isNull(toDate)) {
+			if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
+				mcxDialog.alertC("시작일자와 종료일자를 입력하세요.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#searchForm input[name=dispStTime]').focus();
+					}
+				});
+				return false;
+			}
+
+			if (fromDate > toDate) {
+				mcxDialog.alertC("시작일자는 종료일자 보다 클 수 없습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#searchForm input[name=dispEdTime]').focus();
+					}
+				});
+				return false;
+			}
+		}
+
 		fnSearch();
 	});
 
@@ -191,6 +223,13 @@
 		gagaPaging.load(1);
 	};
 
+	//페이징
+	$('#searchForm select[name=pageSize]').on('change', function() {
+		$("#searchForm input[name=pageNo]").val('1');
+		gagaPaging.init('searchForm', fnSearchCallBack, 'lookbookListPagination', $('#searchForm').find('#pageSize').val());
+		gagaPaging.load(1);
+	});
+
 	var fnSearchCallBack = function(result){
 		$('#searchForm').find('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
 		$('#searchForm').find('#pageNo').val(result.pageing.pageable.pageNo.addComma());

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

@@ -324,6 +324,7 @@
 				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
 			}
 		},
+		{headerName: "상품타입", field: "goodsType" , width: 100, cellClass: 'text-center', hide: true},
 		{headerName: "수정자", field: "updNm" , width: 100, cellClass: 'text-center'}
 	];
 

+ 10 - 6
src/main/webapp/WEB-INF/views/marketing/MorebetterListForm.html

@@ -112,12 +112,16 @@
 		{headerName: 'No', width: 60, cellClass: 'text-center',
 			valueGetter: function(params) { return cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
 		},
-		{headerName: "프로모션ID", field: "tmtbSq", width: 80, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenMorebetterSetPopup('U','" + params.value + "');\">" + params.value + "</a>";
+		{headerName: "프로모션ID", field: "tmtbSq", width: 80, cellClass: 'text-center'
+			// cellRenderer: function(params) {
+			// 	return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenMorebetterSetPopup('U','" + params.value + "');\">" + params.value + "</a>";
+			// }
+		},
+		{headerName: "프로모션명", field: "tmtbNm", width: 200, cellClass: 'text-center'
+			,cellRenderer: function(params) {
+				return '<a href="javascript:void(0);">' + params.value + '</a>';
 			}
 		},
-		{headerName: "프로모션명", field: "tmtbNm", width: 200, cellClass: 'text-center'},
 		{headerName: "상태", field: "tmtbStat", width: 140, cellClass: 'text-center'},
 		{headerName: "시작일", field: "tmtbStdt", width: 140, cellClass: 'text-center'},
 		{headerName: "종료일", field: "tmtbEddt", width: 140, cellClass: 'text-center'},
@@ -138,10 +142,10 @@
 
 	// Row Click
 	gridOptions.onCellClicked = function(event) {
-		var goodsCd = event.data.goodsCd;
+		var tmtbSq = event.data.tmtbSq;
 		if (event.colDef.field == "tmtbNm"){
 			// 수정 필요
-			// cfnOpenGoodsDetailPopup('U',goodsCd);
+			cfnOpenMorebetterSetPopup('U',tmtbSq);
 		}
 	}
 

+ 54 - 46
src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html

@@ -620,18 +620,19 @@
 		return true;
 	};
 
-	// 저장
-	$('#btnMorebetterSave').on('click', function() {
-		// validation
-		if (!gagajf.validation('#moreBetterForm'))
+	var checkDateValidation = function (){
+		if (gagajf.isNull($('#moreBetterForm input[name=eventStdt]').val())) {
+			mcxDialog.alert("시작일자를 입력하세요.");
+			$('#moreBetterForm input[name=tmtbStdt]').focus();
 			return false;
+		}
 
-		// 행사기간 확인
-		if (gagajf.isNull($('#moreBetterForm input[name=eventStdt]').val()) || gagajf.isNull($('#moreBetterForm input[name=eventEddt]').val())) {
-			mcxDialog.alert("행사 기간 시작일자와 종료일자를 입력하세요.");
-			$('#moreBetterForm input[name=tmtbStdt]').focus();
+		if (gagajf.isNull($('#moreBetterForm input[name=eventEddt]').val())) {
+			mcxDialog.alert("종료일자를 입력하세요.");
+			$('#moreBetterForm input[name=eventEddt]').focus();
 			return false;
 		}
+
 		var eventStDt = "";
 		var eventEdDt = "";
 
@@ -645,15 +646,30 @@
 		eventStDt = eventStDt.replace(/[^0-9]/g, '');
 		eventEdDt = eventEdDt.replace(/[^0-9]/g, '');
 
-		let fromDate = $('#moreBetterForm input[name=tmtbStdt]').val(eventStDt);
-		let toDate = $('#moreBetterForm input[name=tmtbEddt]').val(eventEdDt);
-
-		if (fromDate > toDate) {
+		if (eventStDt > eventEdDt) {
 			mcxDialog.alert("시작일자는 종료일자 보다 클 수 없습니다.");
 			$('#moreBetterForm input[name=tmtbStdt]').focus();
 			return false;
 		}
 
+		$('#moreBetterForm input[name=tmtbStdt]').val(eventStDt);
+		$('#moreBetterForm input[name=tmtbEddt]').val(eventEdDt);
+
+		return true;
+	}
+
+	// 저장
+	$('#btnMorebetterSave').on('click', function() {
+		// validation
+		if (!gagajf.validation('#moreBetterForm')){
+			return false;
+		}
+
+		// 기간체크
+		if(!checkDateValidation()){
+			return false;
+		}
+
 		// 적용상품 그리드에 기본상품 1개이상 있는지 체크
 		if(!fnGoodsGbCheck()) {
 			return false;
@@ -723,7 +739,7 @@
 
 		var jsonData = JSON.stringify(data);
 
-		gagajf.ajaxJsonSubmit($('#moreBetterForm').prop('action'), jsonData, fnMorebetterSaveCollback);
+		// gagajf.ajaxJsonSubmit($('#moreBetterForm').prop('action'), jsonData, fnMorebetterSaveCollback);
 	});
 
 	var fnMorebetterSaveCollback = function(result){
@@ -838,10 +854,14 @@
 		let addCnt = 0;
 		let failCnt = 0;
 		let dupliCnt = 0;
+		let goodsDCnt = 0;
 
 		for(let i = 0 ; i < result.length ; i++) {
 			let addChk = true, gridListValue = gagaAgGrid.getAllRowData(OriginGridListOption);		// 받아온 모든 데이터
-
+			if(result[i].goodsType == 'G056_D'){ //딜상품 제외
+				addChk = false;
+				goodsDCnt++;
+			}
 			// 받아온 data for
 			for(let j = 0 ; j < gridListValue.length ; j++) {
 				if(gridListValue[j].goodsCd == result[i].goodsCd) { // 중복체크
@@ -858,8 +878,8 @@
 			}
 		}
 		uifnPopupClose('popupGoods');
-		failCnt = result.length - addCnt - dupliCnt;
-		mcxDialog.alert("데이터가 적용되었습니다.<br/>" + addCnt + "건 성공, "+ dupliCnt + "건 중복, " + failCnt + "건 실패");
+		failCnt = result.length - addCnt - dupliCnt - goodsDCnt;
+		mcxDialog.alert("데이터가 적용되었습니다.<br/>" + addCnt + "건 성공, "+ dupliCnt + "건 중복, "+ goodsDCnt + "건 딜상품 제외, " + failCnt + "건 실패");
 	}
 
 	// 공급업체 설정 업체 추가 버튼 클릭시
@@ -933,6 +953,13 @@
 		var sectionGbValue = $('input:radio[name="sectionGb"]:checked').val();
 		var dcWayValue = $('input:radio[name="dcWay"]:checked').val();
 
+		var optionList = gagaAgGrid.getAllRowData(gridOptionsSectionGbList);
+
+		if (optionList.length > 4) {
+			mcxDialog.alert('할인 구간은 최대 5개까지 등록 가능합니다.');
+			return;
+		}
+
 		var data = { tmtbSq: tmtbSq ,sectionGb: sectionGbValue, sectionVal: null, dcWay: dcWayValue, dcVal: null };
 		gagaAgGrid.addRowData(gridOptionsSectionGbList, data, "sectionVal");
 	});
@@ -985,8 +1012,12 @@
 		if (!gagajf.validation('#moreBetterForm'))
 			return false;
 
+		// 기간체크
+		if(!checkDateValidation()){
+			return false;
+		}
 		// 행사기간 확인
-		let fromDate = $('#moreBetterForm input[name=tmtbStdt]').val();
+		/*let fromDate = $('#moreBetterForm input[name=tmtbStdt]').val();
 		let toDate = $('#moreBetterForm input[name=tmtbEddt]').val();
 
 		if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
@@ -999,7 +1030,7 @@
 			mcxDialog.alert("시작일자는 종료일자 보다 클 수 없습니다.");
 			$('#moreBetterForm input[name=tmtbStdt]').focus();
 			return false;
-		}
+		}*/
 
 		// disabled 값 넘겨주기
 		$('#moreBetterForm input[name=tmtbSq]').val($('#moreBetterForm input[name=disTmtbSq]').val());
@@ -1060,6 +1091,11 @@
 			return false;
 		}
 
+		// 기간체크
+		if(!checkDateValidation()){
+			return false;
+		}
+
 		// 공급업체+브랜드 상품조회
 		var multiSupplyCompCd = [];
 		$.each(allSupplyCompData, function(idx, item) {
@@ -1081,34 +1117,6 @@
 			multiExceptGoods.push(item.goodsCd);
 		});
 
-		// 행사기간 확인
-		if (gagajf.isNull($('#moreBetterForm input[name=eventStdt]').val()) || gagajf.isNull($('#moreBetterForm input[name=eventEddt]').val())) {
-			mcxDialog.alert("행사 기간 시작일자와 종료일자를 입력하세요.");
-			$('#moreBetterForm input[name=tmtbStdt]').focus();
-			return false;
-		}
-		var eventStDt = "";
-		var eventEdDt = "";
-
-		eventStDt = $('#moreBetterForm input[name=eventStdt]').val()+$('#moreBetterForm select[name=eventStHH]').val()+$('#moreBetterForm select[name=eventStMM]').val()+'00';
-		if($('#moreBetterForm select[name=eventEdHH]').val() == "24"){
-			eventEdDt = $('#moreBetterForm input[name=eventEddt]').val()+'235959';
-		}else{
-			eventEdDt = $('#moreBetterForm input[name=eventEddt]').val()+$('#moreBetterForm select[name=eventEdHH]').val()+$('#moreBetterForm select[name=eventEdMM]').val()+'00';
-		}
-
-		eventStDt = eventStDt.replace(/[^0-9]/g, '');
-		eventEdDt = eventEdDt.replace(/[^0-9]/g, '');
-
-		let fromDate = $('#moreBetterForm input[name=tmtbStdt]').val(eventStDt);
-		let toDate = $('#moreBetterForm input[name=tmtbEddt]').val(eventEdDt);
-
-		if (fromDate > toDate) {
-			mcxDialog.alert("시작일자는 종료일자 보다 클 수 없습니다.");
-			$('#moreBetterForm input[name=tmtbStdt]').focus();
-			return false;
-		}
-
 		/*var data = {
 			mode : $('#moreBetterForm input[name=mode]').val()
 			, tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()

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

@@ -79,8 +79,8 @@
 					코너명 : <label id="cornerNm"></label>
 				</h4>
 				<div class="aR" style="float: right; margin-top: 10px;">
-					<!-- <button type="button" class="btn btn-Right btn-default btn-lg"onclick="fnGoodsExcelUpload();">엑셀상품추가</button>
-					<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF012');">엑셀상품추가 양식 다운로드</button> -->
+					<button type="button" class="btn btn-Right btn-default btn-lg"onclick="fnGoodsExcelUpload();">엑셀상품추가</button>
+					<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF012');">엑셀상품추가 양식 다운로드</button>
 					<button type="button" class="btn btn-default btn-lg" onclick="fnOpenGoodsPopup();">상품추가</button>
 					<button type="button" class="btn btn-danger btn-lg"	onclick="fnDeleteGoods();">선택삭제</button>
 				</div>

+ 3 - 3
src/main/webapp/WEB-INF/views/marketing/ShotDeliveryForm.html

@@ -275,9 +275,9 @@
 	}
 	
 	// 엑셀상품추가
-	var fnGoodsExcelUpload = function() {
-		cfnExcelUploadPopup('createGoods', 'fnCreatePlanGoodsExcel');
-	}
+	//var fnGoodsExcelUpload = function() {
+	//	cfnExcelUploadPopup('createGoods', 'fnCreatePlanGoodsExcel');
+	//}
 
 
 	$(document).ready(function() {

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

@@ -347,9 +347,9 @@ var columnExchangeReqList = [
 				, width			: 100
 				, cellClass		: 'text-center'
 				, cellRenderer	: function (params) {
-					if (ordChgSq > 0 && ordChgGb != 'G681_20') {
-						// 반품TO교환
-						if (ordChgGb == 'G681_40') {
+					if (ordChgSq > 0) {
+						// 반품TO교환, 교환TO교환
+						if (ordChgGb == 'G681_40' || ordChgGb == 'G681_20') {
 							strVal = params.data.chgQty;
 						}
 						// 교환상세
@@ -366,10 +366,10 @@ var columnExchangeReqList = [
 						var ordReqChgQty = parseInt(params.data.ordReqChgQty);
 						var ordCanChgQty = ordQty - (cnclRtnQty + ordReqChgQty);
 						
-						// 교환TO교환
-						if (ordChgGb == 'G681_20') {
-							ordCanChgQty = parseInt(params.data.ordCanChgQty);
-						}
+						//// 교환TO교환
+						//if (ordChgGb == 'G681_20') {
+						//	ordCanChgQty = parseInt(params.data.ordCanChgQty);
+						//}
 						
 						var strVal = "";
 						strVal += '<select class="ordCanChgQty ' + params.data.ordDtlNo + '" name="chgQty" ordDtlNo="' + params.data.ordDtlNo + '" onchange="fnChangeQty(this)">';
@@ -628,16 +628,16 @@ var fnExchange = function () {
 	//		}
 	//	}
 	//});
-	// 반품TO교환 신청 수량 설정
-	if (ordChgGb == 'G681_40') {
+	// 교환TO교환, 반품TO교환 신청 수량 설정
+	if (ordChgGb == 'G681_20' || ordChgGb == 'G681_40') {
 		exchangeRequestList = cancelRequestTargetList;
-		$.each(exchangeRequestList, function(idx, exchangeRequest) {
-			$.each(exchangeInfoList , function(idx2, exchangeInfo) {
-				if (exchangeRequest.itemCd == exchangeInfo.itemCd && exchangeRequest.optCd1 == exchangeInfo.optCd1) {
-					exchangeRequest.chgQty = exchangeInfo.chgQty;
-				}
-			});
-		});
+		//$.each(exchangeRequestList, function(idx, exchangeRequest) {
+		//	$.each(exchangeInfoList , function(idx2, exchangeInfo) {
+		//		if (exchangeRequest.itemCd == exchangeInfo.itemCd && exchangeRequest.optCd1 == exchangeInfo.optCd1) {
+		//			exchangeRequest.chgQty = exchangeInfo.chgQty;
+		//		}
+		//	});
+		//});
 	}
 	
 	$.each(exchangeRequestList, function(idx, item) {

+ 13 - 10
src/main/webapp/WEB-INF/views/order/RtnReqForm.html

@@ -320,17 +320,15 @@ var columnCancelReqList = [
 
 			// 취소신청가능수량있으면 수량만 표시 (취소,반품,교환 신청정보 처리)
 			// 2021.06.22 반품TO반품 수량 처리
-			if (ordChgSq > 0 && ordChgGb != 'G681_30') {
-				rtnStr = ordCanChgQty;
-			} else {
-				//if (ordChgGb != 'G681_30') {
-					ordCanChgQty = ordQty - (cnclRtnQty + ordReqChgQty);
-				//}
-
+			if (ordChgSq > 0) {
 				if (ordChgGb == 'G681_30') {
 					ordCanChgQty = params.data.chgQty;
 				}
 				
+				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++) {
@@ -905,6 +903,10 @@ var fnCalculateRefundAmt = function (obj) {
 		}
 	}
 
+	console.log(ordDtlNoArr);
+	console.log(cnclRtnReqQtyArr);
+	console.log(chgQtyArr);
+
 	// 2. 추가정보설정
 	var chgerNm 	= orderInfoList[0].ordNm;
 	var chgerEmail 	= orderInfoList[0].ordEmail;
@@ -946,6 +948,7 @@ var fnCalculateRefundAmt = function (obj) {
 			gridOptionsDelvCdList.api.setRowData(result.cancelDelvRefundList);
 			
 			let spanSumDeliveryFee = result.spanSumDeliveryFee - result.spanDelvCpnDcAmt;
+			let sumDeliveryFee = result.sumDeliveryFee - result.spanRefundDelvCpnAmt;
 			
 			$("#spanPayAmt").text(result.spanPayAmt.addComma());					//총 결제 금액
 			$("#spanSumRealOrdAmt").text(result.spanSumRealOrdAmt.addComma());		//상품 실결제 금액
@@ -981,15 +984,15 @@ var fnCalculateRefundAmt = function (obj) {
 
 				// 고객사유(회수요청) : 환불금액게산 = (취소금액 + 배송비) - 추가배송비 - 반품배송비
 				if (isCustomer && wdGb == 'W') {
-					result.spanRefundAmt = (result.spanRealCnclRtnAmt + spanSumDeliveryFee) - result.spanTotDeliveryFee - result.spanTotRtnDelvFee;
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + sumDeliveryFee) - result.spanTotDeliveryFee - result.spanTotRtnDelvFee;
 				} 
 				// 고객사유(직접발송) : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
 				else if (isCustomer && wdGb == 'D') {
-					result.spanRefundAmt = (result.spanRealCnclRtnAmt + spanSumDeliveryFee) - result.spanTotDeliveryFee;
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + sumDeliveryFee) - result.spanTotDeliveryFee;
 				}
 				// 회사사유 : 환불금액게산 = (취소금액 + 배송비)
 				else {
-					result.spanRefundAmt = (result.spanRealCnclRtnAmt + spanSumDeliveryFee);
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + sumDeliveryFee);
 				}
 			}
 			

+ 9 - 8
src/main/webapp/WEB-INF/views/withdraw/RefundRegisterListForm.html

@@ -141,7 +141,8 @@
 		{headerName: "회수구분", 		field: "wdGb",		width: 80,  cellClass: 'text-center'},
 		{headerName: "주문번호", 		field: "ordNo",		width: 100,  cellClass: 'text-center'},
 		{headerName: "주문상세번호", 	field: "ordDtlNo",	width: 100,  cellClass: 'text-center'},
-		{headerName: "반품요청일련번호", field: "ordChgSq",	width: 120,  cellClass: 'text-center',
+		{headerName: "주문변경번호", 	field: "ordChgSq",	width: 100,  cellClass: 'text-center'},
+		{headerName: "환불컨펌", field: "refundConfirm",	width: 120,  cellClass: 'text-center',
 			cellRenderer: function(params) {
 				if (params.data.rfndStat == '환불완료') {
 					return "<a href=\"javascript:void(0);\" class=\"btn btn-dark btn-sm\">환불완료</a>";
@@ -150,21 +151,21 @@
 				}
 			}
 		},
-		{headerName: "회수송장번호", 	field: "wdInvoiceNo", 	width: 100, cellClass: 'text-center'},
+		{headerName: "회수송장번호", field: "wdInvoiceNo", 	width: 100, cellClass: 'text-center'},
 		{headerName: "보내는사람", 	field: "senderNm", 		width: 100, cellClass: 'text-center'},
 		{headerName: "보낸연락처", 	field: "senderPhnno", 	width: 120, cellClass: 'text-center'},
-		{headerName: "주문자명", 		field: "ordNm",			width: 100, cellClass: 'text-center'},
-		{headerName: "주문자연락처", 	field: "ordPhnno",		width: 120, cellClass: 'text-center'},
+		{headerName: "주문자명", 	field: "ordNm",			width: 100, cellClass: 'text-center'},
+		{headerName: "주문자연락처", field: "ordPhnno",		width: 120, cellClass: 'text-center'},
 		{headerName: "도착일", 		field: "arrivalDt", 	width: 100,  cellClass: 'text-center'},
 		{headerName: "환불확정일", 	field: "completeDt",	width: 100,  cellClass: 'text-center'},
 		{headerName: "WMS회수메모", 	field: "wdMemo", 		width: 200,  cellClass: 'text-left'},
 		{headerName: "요청사유",		field: "chgReasonNm", 	width: 150,  cellClass: 'text-center'},
 		{headerName: "클레임메모", 	field: "chgMemo", 		width: 200,  cellClass: 'text-left'},
-		{headerName: "상품코드", 		field: "goodsCd", 		width: 150,  cellClass: 'text-center'},
+		{headerName: "상품코드", 	field: "goodsCd", 		width: 150,  cellClass: 'text-center'},
 		{headerName: "옵션1", 		field: "optCd1", 		width: 80,  cellClass: 'text-center'},
 		{headerName: "옵션2", 		field: "optCd2", 		width: 80,  cellClass: 'text-center'},
-		{headerName: "반품수량", 		field: "chgQty", 		width: 80,  cellClass: 'text-center'},
-		{headerName: "회수수량", 		field: "wdQty", 		width: 80,  cellClass: 'text-center'},
+		{headerName: "반품수량", 	field: "chgQty", 		width: 80,  cellClass: 'text-center'},
+		{headerName: "회수수량", 	field: "wdQty", 		width: 80,  cellClass: 'text-center'},
 		{headerName: "회수등록일", 	field: "wdRegDt", 		width: 80,  cellClass: 'text-center'},
 		{headerName: "반품신청일", 	field: "rcRegDt", 		width: 80,  cellClass: 'text-center'},
 		{headerName: "반품완료일", 	field: "wdEddt", 		width: 80,  cellClass: 'text-center'}
@@ -237,7 +238,7 @@
 	*  cell Click
 	**************************************************************************/	
 	withDrawGridOptions.onCellClicked = function(event) {
-		if (event.colDef.field != 'ordChgSq') return;
+		if (event.colDef.field != 'refundConfirm') return;
 		// 회수등록 팝업
 		if (event.data.ordChgSq > 0 && !gagajf.isNull(event.data.ordChgSq) && event.data.wdQty > 0) {
 			// 회수 상세 화면

+ 76 - 10
src/main/webapp/WEB-INF/views/withdraw/WithdrawDirectiveListForm.html

@@ -130,8 +130,8 @@
 					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
 					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
 					<select id="pageSize" name="pageSize">
-						<option value="10" selected="selected">10개씩 보기</option>
-						<option value="20">20개씩 보기</option>
+						<option value="10" >10개씩 보기</option>
+						<option value="20" selected="selected">20개씩 보기</option>
 						<option value="50">50개씩 보기</option>
 						<option value="100">100개씩 보기</option>
 						<option value="500">500개씩 보기</option>
@@ -157,7 +157,32 @@
 	// 사이트목록
 	var currOrdNo =0;
 	var columnDefs = [
-		{headerName: "주문변경번호", 	field: "ordChgSq", 		width: 100, cellClass: "text-center"},
+		{headerName: "주문변경번호", 	field: "ordChgSq", 		width: 100, cellClass: "text-center",
+			cellRenderer	: function(params) {
+				var rtnStr = "";
+				
+				var paramData 	= params.data.ordNo;
+				paramData 		+= '@' + params.data.ordDtlNo;
+				paramData 		+= '@' + params.data.delvFeeCd;
+				paramData 		+= '@' + params.data.delvFeeCdGrp;
+				 
+				// 반품접수, 반품대기, 회수요청, 상품검수중, 결제대기, 반품진행중
+				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;
+				}
+				return  rtnStr;
+			}			
+		
+		},
 		{headerName: "주문번호", 		field: "ordNo", 		width: 100, cellClass: "text-center",
 			cellRenderer: function(params) { 
 				return gagajf.isNull(params.value) ? '' : "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailPopup('" + params.data.ordNo + "');\">" + params.data.ordNo + "</a>";
@@ -193,9 +218,9 @@
 		{headerName: "배송종료일시", 	field: "wdEddt", 		width: 120, cellClass: "text-center"},
 		{headerName: "수취인명", 		field: "recipNm", 		width: 120, cellClass: "text-center"},
 		
-		{headerName: "LMS", 			field: "chgerPhnno", 	width: 120, cellClass: "text-center",
+		{headerName: "LMS", 			field: "chgerPhnno", 	width: 80, cellClass: "text-center",
 			cellRenderer: function(params) {
-				return '<button type="button" class="btn btn-base btn-sm" onclick="fnLms(\'' + params.data.chgGb + '\',\'' + params.data.ordDtlNo + '\',\''+params.data.ordChgSq+'\',\''+params.data.ordNo+'\');">&nbsp;LMS&nbsp;</button>';
+				return '<button type="button" class="btn btn-base btn-sm" onclick="fnLms(\'' + params.data.chgerPhnno + '\',\'' + params.data.custNo + '\');">&nbsp;LMS&nbsp;</button>';
 			}			
 		},
 		
@@ -322,16 +347,57 @@
 	/*************************************************************************
 	*  LMS
 	**************************************************************************/	
-	var fnLms = function(){
+	var fnLms = function(chgerPhnno, custNo){
 		let param = {};
-		param.elementCellPhnno = '010-4016-1558'; //'#custInfoForm input[name=cellPhnno]';
-		param.elementCustNo =    '100025';// '#custInfoForm input[name=custNo]';
-		param.elementMaskingCellPhnno = ''; //  '#custInfoForm input[name=maskingCellPhnno]';
+		param.elementCellPhnno = chgerPhnno; //'010-4016-1558'; //'#custInfoForm input[name=cellPhnno]';
+		param.elementCustNo =    custNo; //'100025';// '#custInfoForm input[name=custNo]';
 		param.pageGb = 'delv';
 		cfnOpenLmsPopup(param);
 	}
 
-	
+	/*************************************************************************
+	*  반품요청
+	**************************************************************************/		
+	var fnReturnRequest = function (paramData, ordChgSq) {
+		
+		// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
+		if (ordChgSq == null) {
+			ordChgSq = 0;
+		}
+		
+		var param 		= "";
+		var paramArr 	= paramData.split("@");
+		param += "&ordNo=" 			+ paramArr[0];
+		param += "&ordDtlNo=" 		+ paramArr[1];
+		param += "&delvFeeCd="		+ paramArr[2];
+		param += "&delvFeeCdGrp="	+ paramArr[3];
+		
+		param += "&ordChgSq=" 		+ ordChgSq;
+		var actionUrl = "/orderChange/rtn/req/form?" + param;
+		cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
+	};
+
+	/*************************************************************************
+	*  교환요청
+	**************************************************************************/			
+	var fnExchangeRequest = function (paramData, ordChgSq) {
+		console.log(paramData);
+		// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
+		if (ordChgSq == null) {
+			ordChgSq = 0;
+		}
+		
+		var paramArr 	= paramData.split("@");
+		var param 		= "";
+		param += "&ordNo=" 			+ paramArr[0];
+		param += "&ordDtlNo=" 		+ paramArr[1];
+		param += "&delvFeeCd="		+ paramArr[2];
+		param += "&delvFeeCdGrp="	+ paramArr[3];
+		param += "&ordChgSq=" 		+ ordChgSq;
+		
+		var actionUrl = "/orderChange/exchange/request/form?" + param;
+		cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
+	};
 	
 	//엑셀다운로드
 	$('#btnExcel').on('click', function() {

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

@@ -115,8 +115,7 @@
 					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
 					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
 					<select id="pageSize" name="pageSize">
-						<option value="20" selected="selected">10개씩 보기</option>
-						<option value="20">20개씩 보기</option>
+						<option value="20" selected="selected">20개씩 보기</option>
 						<option value="50">50개씩 보기</option>
 						<option value="100">100개씩 보기</option>
 						<option value="500">500개씩 보기</option>
@@ -145,6 +144,10 @@
 	var uploadGoodsUrl = [[${@environment.getProperty('upload.goods.view')}]]; 
 	var roleCd = [[${sessionInfo.roleCd}]]; 
 
+	$("#reasonCode option[value='07']").remove();
+	$("#reasonCode option[value='08']").remove();
+	$("#reasonCode option[value='10']").remove();
+	
 	var columnDefs = [
 		{headerName: "반품예외처리번호",		field: "recallExceptionNo", width: 50,	cellClass: 'text-center', hide: true},
 		//{headerName: "No.",				field: "rnum",				width: 50,	cellClass: 'text-center'},
@@ -179,12 +182,50 @@
 			}
 			}
 		},
+		
+		{headerName: "주문변경번호",			field: "ordChgSq",			width: 100,	cellClass: 'text-center', rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
+			    cellClassRules: {
+			        'cell-span': "data.rowspanRank == 1"
+			      },
+				
+				cellRenderer	: function(params) {
+					var rtnStr = "";
+					
+					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;
+					}
+					return  rtnStr;
+				}		
+		},
+			
 		{headerName: "주문자명",			field: "customerName",		width: 100,	cellClass: 'text-center'},
+		{headerName: "휴대번호",			field: "ordPhnno",			width: 100,	cellClass: 'text-center'},
+		{headerName: "LMS", 			field: "ordPhnno",			width: 80, cellClass: "text-center",
+			cellRenderer: function(params) {
+				return '<button type="button" class="btn btn-base btn-sm" onclick="fnLms(\'' + params.data.ordPhnno + '\',\'' + params.data.custNo + '\');">&nbsp;LMS&nbsp;</button>';
+			}			
+		},
 		{headerName: "예외사유",			field: "reasonCd",			width: 150,	cellClass: 'text-center'},
-		{headerName: "WMS메시지",			field: "adminMemo",			width: 300,	cellClass: 'text-left'},
+		{headerName: "WMS메시지",		field: "adminMemo",			width: 300,	cellClass: 'text-left'},
 		{headerName: "회수요청구분",		field: "chgGbNm",			width: 90,	cellClass: 'text-left'},
 		{headerName: "반품교환사유",		field: "chgReasonNm",		width: 150,	cellClass: 'text-left'},
-		{headerName: "반품/사유변경",		field: "chgReason",			width: 120,	cellClass: 'text-center',rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
+		{headerName: "네이버 주문형",		field: "payGb",				width: 100,	cellClass: 'text-center'},
+		{headerName: "반품/사유변경",	field: "chgReason",			width: 120,	cellClass: 'text-center',rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,  
 			    cellClassRules: {
 			        'cell-span': "data.rowspanRank == 1"
 			      },
@@ -364,8 +405,29 @@
 		} else if(event.colDef.field == 'chgReason'){
 			if(event.data.recallStat == "P" && event.data.rowspanRank == "1" && event.data.chgStat != null){
 				
-				var actionUrl = "/withdraw/exception/change/form?ordChgSq=" + event.data.ordChgSq + '&chgGb=' + event.data.chgGb;
-				cfnOpenModalPopup(actionUrl, 'popupWithdrawChangeForm');
+				if (event.data.reasonCode == '02') { // 미착 
+					param += "&ordNo=" 			+ event.data.orderNo;
+					param += "&ordDtlNo=" 		+ event.data.orderDtlNo;
+					param += "&ordChgSq=" 		+ event.data.ordChgSq;
+					param += "&delvFeeCd="		+ event.data.delvFeeCd;
+					param += "&delvFeeCdGrp="	+ "WMS";
+					
+					if (event.data.chgGb == 'G680_30') { // 반품요청
+						param += "&ordChgGb=G681_30";    // 반품TO반품
+						actionUrl = "/orderChange/rtn/req/form?" + param;
+
+						cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
+					} else if (event.data.chgGb == 'G680_40') { // 교환요청
+						param += "&ordChgGb=G681_20";           // 교환TO교환
+						actionUrl = "/orderChange/exchange/request/form?" + param;
+						
+						cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
+					}
+				} else {
+					actionUrl = "/withdraw/exception/change/form?ordChgSq=" + event.data.ordChgSq + '&chgGb=' + event.data.chgGb;
+					cfnOpenModalPopup(actionUrl, 'popupWithdrawChangeForm');
+				}
+				
 			} else if(event.data.recallStat == "P" && event.data.rowspanRank == "1" && event.data.chgStat == null){
 				refreshFlag  = "ban";
 				var ordChgSq = 0;
@@ -397,29 +459,63 @@
 			}
 		}
 	}
-	/*
-	var fnComplete = function(recallExceptionNo,csAddFee,csMemo) {
-		var params = {};
-		params.recallExceptionNo = recallExceptionNo;
-		params.csAddFee = csAddFee;
-		params.csMemo = csMemo;
+
+	
+	/*************************************************************************
+	*  LMS
+	**************************************************************************/	
+	var fnLms = function(chgerPhnno, custNo){
+		let param = {};
+		param.elementCellPhnno = chgerPhnno; //'010-4016-1558'; //'#custInfoForm input[name=cellPhnno]';
+		param.elementCustNo =    custNo; //'100025';// '#custInfoForm input[name=custNo]';
+		param.pageGb = 'delv';
+		cfnOpenLmsPopup(param);
+	};
+	
+	/*************************************************************************
+	*  반품요청
+	**************************************************************************/		
+	var fnReturnRequest = function (paramData, ordChgSq) {
 		
+		// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
+		if (ordChgSq == null) {
+			ordChgSq = 0;
+		}
 		
-		alert("recallExceptionNo:"+recallExceptionNo);
-		alert("csAddFee: "+csAddFee);
-		alert("csMemo: "+csMemo);
+		var param 		= "";
+		var paramArr 	= paramData.split("@");
+		param += "&ordNo=" 			+ paramArr[0];
+		param += "&ordDtlNo=" 		+ paramArr[1];
+		param += "&delvFeeCd="		+ paramArr[2];
+		param += "&delvFeeCdGrp="	+ paramArr[3];
 		
-		return;
-		mcxDialog.confirm('처리완료 하시겠습니까?', {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function(){
-				var jsonData = JSON.stringify(params);
-				gagajf.ajaxJsonSubmit('/withdraw/exception/complete', jsonData, fnCompleteCallback);
-			}
-		});
+		param += "&ordChgSq=" 		+ ordChgSq;
+		var actionUrl = "/orderChange/rtn/req/form?" + param;
+		cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
 	};
-	*/
+
+	/*************************************************************************
+	*  교환요청
+	**************************************************************************/			
+	var fnExchangeRequest = function (paramData, ordChgSq) {
+		console.log(paramData);
+		// 취소요청 구분 (orChgSq null 이면 취소요청화면 있으면 취소요청정보화면)
+		if (ordChgSq == null) {
+			ordChgSq = 0;
+		}
+		
+		var paramArr 	= paramData.split("@");
+		var param 		= "";
+		param += "&ordNo=" 			+ paramArr[0];
+		param += "&ordDtlNo=" 		+ paramArr[1];
+		param += "&delvFeeCd="		+ paramArr[2];
+		param += "&delvFeeCdGrp="	+ paramArr[3];
+		param += "&ordChgSq=" 		+ ordChgSq;
+		
+		var actionUrl = "/orderChange/exchange/request/form?" + param;
+		cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
+	};	
+	
 	/*************************************************************************
 	*  회수예외 처리완료 콜백
 	**************************************************************************/		

+ 9 - 32
src/main/webapp/WEB-INF/views/withdraw/WmsWithdrawListForm.html

@@ -161,8 +161,8 @@
 			cellRenderer: function (params) { return params.value == '10' ? '일반' : '교환'; }	
 		},
 		{headerName: "수취인",			field: "receiver",			width: 100,	cellClass: 'text-center'},
-		{headerName: "수취인전화번호",		field: "receivertelnum",	width: 120,	cellClass: 'text-center'},
-		{headerName: "수취인휴대폰번호",		field: "receivercellnum",	width: 120,	cellClass: 'text-center'},
+		{headerName: "수취인전화번호",	field: "receivertelnum",	width: 120,	cellClass: 'text-center'},
+		{headerName: "수취인휴대폰번호",	field: "receivercellnum",	width: 120,	cellClass: 'text-center'},
 		{headerName: "우편번호",			field: "deliverypostalcode",width: 80,	cellClass: 'text-center'},
 		{headerName: "기본주소",			field: "deliveryaddr1",		width: 300,	cellClass: 'text-left'},
 		{headerName: "상세주소",			field: "deliveryaddr2",		width: 200,	cellClass: 'text-left'},
@@ -171,12 +171,12 @@
 		{headerName: "CS메모",			field: "csmemo",			width: 250,	cellClass: 'text-left'},	
 		{headerName: "CS메모 변경일",		field: "datecsmemoupdated",	width: 120,	cellClass: 'text-center'},
 		{headerName: "WMS메모",			field: "wmsmemo",			width: 250,	cellClass: 'text-left'},
-		{headerName: "WMS메모변경일",		field: "datewmsmemoupdated",width: 120,	cellClass: 'text-center'},
-		{headerName: "회수요청일",			field: "datecreated",		width: 100,	cellClass: 'text-center'},
+		{headerName: "WMS메모변경일",	field: "datewmsmemoupdated",width: 120,	cellClass: 'text-center'},
+		{headerName: "회수요청일",		field: "datecreated",		width: 100,	cellClass: 'text-center'},
 		{headerName: "삭제여부",			field: "isdeleted",			width: 80,	cellClass: 'text-center',
 			cellRenderer: function (params) { return params.value == '0' ? 'N' : 'Y'; }		
 		},
-		{headerName: "도로명주소",			field: "deliveryaddrnew",	width: 300,	cellClass: 'text-left'},
+		{headerName: "도로명주소",		field: "deliveryaddrnew",	width: 300,	cellClass: 'text-left'},
 		{headerName: "상품번호",			field: "productno",			width: 100,	cellClass: 'text-center'},
 		{headerName: "상품코드",			field: "productcode",		width: 100,	cellClass: 'text-center'},
 		{headerName: "상품명",			field: "productname",		width: 250,	cellClass: 'text-left',
@@ -189,11 +189,11 @@
 			}					
 		},
 		{headerName: "옵션코드",			field: "skucode",			width: 100,	cellClass: 'text-center'},
-		{headerName: "옵션 내용",			field: "skuvalue",			width: 100,	cellClass: 'text-center'},
+		{headerName: "옵션 내용",		field: "skuvalue",			width: 100,	cellClass: 'text-center'},
 		{headerName: "수량",				field: "recallqty",			width: 100,	cellClass: 'text-center'},	
 		{headerName: "완료일",			field: "datecompleted",		width: 100,	cellClass: 'text-center'},
-		{headerName: "택배사 명",			field: "logisticsname",		width: 100,	cellClass: 'text-left'},
-		{headerName: "회수송장번호",		field: "recallinvoiceno",	width: 120,	cellClass: 'text-center'},
+		{headerName: "택배사 명",		field: "logisticsname",		width: 100,	cellClass: 'text-left'},
+		{headerName: "회수송장번호",	field: "recallinvoiceno",	width: 120,	cellClass: 'text-center'},
 		{headerName: "원운송장번호",		field: "invoiceno",			width: 120,	cellClass: 'text-center'}
 
 	];
@@ -276,29 +276,6 @@
 		
 	}
 
-	/*************************************************************************
-	*  회수예외 처리완료 버튼 - 대기->완료  업데이트
-	**************************************************************************/	
-	var fnComplete = function(recallExceptionNo) {
-		var params = {};
-		params.recallExceptionNo = recallExceptionNo;
-		mcxDialog.confirm('처리완료 하시겠습니까?', {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function(){
-				var jsonData = JSON.stringify(params);
-				gagajf.ajaxJsonSubmit('/withdraw/exception/complete', jsonData, fnCompleteCallback);
-			}
-		});
-	};
-	
-	/*************************************************************************
-	*  회수예외 처리완료 콜백
-	**************************************************************************/		
-	var fnCompleteCallback = function() {
-		fnSearchList();
-	};
-	
 
 	/*************************************************************************
 	*  엑셀다운로드
@@ -312,7 +289,7 @@
 
 		var date = new Date().format("YYYYMMDDHHmmss");
 		var params = {
-			fileName : "WMS회수예외목록_"+ date,
+			fileName : "WMS회수목록_"+ date,
 			sheetName: "DATA"
 		}
 		gridOptions.excelStyles = [

部分文件因为文件数量过多而无法显示