Explorar el Código

Merge branch 'develop' into jsshin

jsshin hace 5 años
padre
commit
ef577c6111
Se han modificado 75 ficheros con 2241 adiciones y 6477 borrados
  1. 31 0
      src/main/java/com/style24/admin/biz/dao/TsaDeliveryDao.java
  2. 8 0
      src/main/java/com/style24/admin/biz/dao/TsaDisplayDao.java
  3. 9 1
      src/main/java/com/style24/admin/biz/dao/TsaPlanDao.java
  4. 26 3
      src/main/java/com/style24/admin/biz/service/TsaDeliveryService.java
  5. 9 3
      src/main/java/com/style24/admin/biz/service/TsaDisplayService.java
  6. 12 0
      src/main/java/com/style24/admin/biz/service/TsaPlanService.java
  7. 2 0
      src/main/java/com/style24/admin/biz/service/TsaReviewService.java
  8. 15 2
      src/main/java/com/style24/admin/biz/service/TsaSocialService.java
  9. 3 1
      src/main/java/com/style24/admin/biz/web/TsaCustomerController.java
  10. 33 0
      src/main/java/com/style24/admin/biz/web/TsaDeliveryController.java
  11. 1 0
      src/main/java/com/style24/admin/biz/web/TsaDisplayController.java
  12. 2 2
      src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  13. 16 0
      src/main/java/com/style24/admin/biz/web/TsaMarketingController.java
  14. 163 97
      src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java
  15. 51 2
      src/main/java/com/style24/admin/biz/web/TsaOrderController.java
  16. 20 30
      src/main/java/com/style24/admin/biz/web/TsaWithdrawController.java
  17. 5 0
      src/main/java/com/style24/persistence/domain/Contents.java
  18. 20 0
      src/main/java/com/style24/persistence/domain/Delivery.java
  19. 1 0
      src/main/java/com/style24/persistence/domain/Goods.java
  20. 1 0
      src/main/java/com/style24/persistence/domain/Review.java
  21. 1 0
      src/main/java/com/style24/persistence/domain/Withdraw.java
  22. 1 0
      src/main/java/com/style24/persistence/domain/WithdrawExc.java
  23. 1 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml
  24. 91 14
      src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml
  25. 64 66
      src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml
  26. 37 41
      src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  27. 18 4
      src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml
  28. 3 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaRenderer.xml
  29. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsaReview.xml
  30. 17 6
      src/main/java/com/style24/persistence/mybatis/shop/TsaSocial.xml
  31. 12 16
      src/main/java/com/style24/persistence/mybatis/shop/TsaStock.xml
  32. 2 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaWithdraw.xml
  33. 9 6
      src/main/resources/config/application-locd.yml
  34. 41 36
      src/main/resources/config/application.yml
  35. 2 10
      src/main/webapp/WEB-INF/views/board/NoticeForm.html
  36. 2 2
      src/main/webapp/WEB-INF/views/customer/OneToOneQnaDetailForm.html
  37. 4 4
      src/main/webapp/WEB-INF/views/delivery/AssignPopupForm.html
  38. 37 9
      src/main/webapp/WEB-INF/views/delivery/BanGoodsRegistForm.html
  39. 37 9
      src/main/webapp/WEB-INF/views/delivery/BangoodsListForm.html
  40. 50 6
      src/main/webapp/WEB-INF/views/delivery/DeliveryListForm.html
  41. 10 0
      src/main/webapp/WEB-INF/views/delivery/DeliveryWithdrawDirectiveListForm.html
  42. 160 0
      src/main/webapp/WEB-INF/views/delivery/ExchangeDelvFailListForm.html
  43. 9 2
      src/main/webapp/WEB-INF/views/delivery/SaveInvoiceForm.html
  44. 6 1
      src/main/webapp/WEB-INF/views/display/GoodsDispOrdChangePopupForm.html
  45. 10 2
      src/main/webapp/WEB-INF/views/display/LookbookBannerPopupForm.html
  46. 245 88
      src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html
  47. 36 2
      src/main/webapp/WEB-INF/views/display/MainGnbContentsPopupForm.html
  48. 118 85
      src/main/webapp/WEB-INF/views/display/MainListForm.html
  49. 225 68
      src/main/webapp/WEB-INF/views/display/MainMultiContentsPopupForm.html
  50. 3 1
      src/main/webapp/WEB-INF/views/envset/BasicEnvsetForm.html
  51. 1 0
      src/main/webapp/WEB-INF/views/marketing/CouponPubForCustPopupForm.html
  52. 29 17
      src/main/webapp/WEB-INF/views/marketing/CouponRetrievePopupForm.html
  53. 1 1
      src/main/webapp/WEB-INF/views/marketing/MailTemplateDetailForm.html
  54. 2 1
      src/main/webapp/WEB-INF/views/marketing/PlanCornerListForm.html
  55. 119 96
      src/main/webapp/WEB-INF/views/marketing/PlanDetailPopupForm.html
  56. 39 41
      src/main/webapp/WEB-INF/views/marketing/PlanTemplatePopupForm.html
  57. 4 31
      src/main/webapp/WEB-INF/views/marketing/SocialShoppingListForm.html
  58. 0 1092
      src/main/webapp/WEB-INF/views/order/CancelRequestFormBack01.html
  59. 0 1054
      src/main/webapp/WEB-INF/views/order/CancelRequestFormBack02.html
  60. 62 38
      src/main/webapp/WEB-INF/views/order/CnclReqForm.html
  61. 0 145
      src/main/webapp/WEB-INF/views/order/CnclReqViewForm.html
  62. 0 19
      src/main/webapp/WEB-INF/views/order/OrderDetailForm.html
  63. 0 1397
      src/main/webapp/WEB-INF/views/order/OrderDetailForm20210122.html
  64. 1 1
      src/main/webapp/WEB-INF/views/order/OrderListForm.html
  65. 0 764
      src/main/webapp/WEB-INF/views/order/OrderListForm20210511.html
  66. 0 766
      src/main/webapp/WEB-INF/views/order/OrderListFormBack.html
  67. 0 160
      src/main/webapp/WEB-INF/views/order/OrderSellerDelvListForm.html
  68. 24 17
      src/main/webapp/WEB-INF/views/order/OrderSellerListForm.html
  69. 67 57
      src/main/webapp/WEB-INF/views/order/RefundAccountRegistForm.html
  70. 65 38
      src/main/webapp/WEB-INF/views/order/RtnReqForm.html
  71. 69 79
      src/main/webapp/WEB-INF/views/withdraw/RefundDetailForm.html
  72. 2 1
      src/main/webapp/WEB-INF/views/withdraw/RefundRegisterListForm.html
  73. 29 11
      src/main/webapp/WEB-INF/views/withdraw/WithdrawDirectiveListForm.html
  74. 15 6
      src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html
  75. 31 24
      src/main/webapp/WEB-INF/views/withdraw/WmsWithdrawListForm.html

+ 31 - 0
src/main/java/com/style24/admin/biz/dao/TsaDeliveryDao.java

@@ -67,6 +67,17 @@ public interface TsaDeliveryDao {
 	 */
 	int saveChangeInvoice(Delivery delivery);
 	
+	/**
+	 * 송장번호 변경
+	 *
+	 * @param delivery 
+	 * @return int
+	 * @author moon
+	 * @since 2021. 06. 08
+	 */
+	int updateOrderDtlInvoice(Delivery delivery);
+	
+	
 	
 	/**
 	 * 주문 상태 값 변경
@@ -330,4 +341,24 @@ public interface TsaDeliveryDao {
 	 */
 	void cancelAssignDelvLoc(Delivery delivery);
 	
+	/**
+	 * 교환배송미출고대상 목록
+	 *
+	 * @param Delivery 
+	 * @return Collection<Delivery>
+	 * @author jsh77b
+	 * @since 2021. 06. 07
+	 */
+	Collection<Delivery> getExchangeDelvFailList(Delivery delivery);
+	
+	/**
+	 * 수동 결품 
+	 *
+	 * @param delivery 
+	 * @return int
+	 * @author moon
+	 * @since 2021. 06. 08
+	 */
+	int updateSoldOut(Delivery delivery);
+	
 }

+ 8 - 0
src/main/java/com/style24/admin/biz/dao/TsaDisplayDao.java

@@ -371,4 +371,12 @@ public interface TsaDisplayDao {
 	 * @since 2021. 3. 19
 	 */
 	void saveGnbTabPreview(GnbTab gnbTab);
+
+	/**
+	 * 메인전시 컨텐츠 미리보기 상품 리스트
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 6. 9
+	 */
+	Collection<Goods> getContentsForGoodsList(Contents contents);
 }

+ 9 - 1
src/main/java/com/style24/admin/biz/dao/TsaPlanDao.java

@@ -615,5 +615,13 @@ public interface TsaPlanDao {
 	 */
 	Collection<Plan> getPlanningCategoryList(Plan param);
 	
-
+	/**
+	 * 출석체크 쿠폰 유효검사
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 06. 09
+	 */
+	Collection<Plan> getPlanAttendCoupon(Plan param);
 }

+ 26 - 3
src/main/java/com/style24/admin/biz/service/TsaDeliveryService.java

@@ -227,14 +227,16 @@ public class TsaDeliveryService {
 			oneDelivery.setRegNo(userId);
 			
 			// 송장번호 변경
-			deliveryDao.saveChangeInvoice(oneDelivery);
+			int rtn = deliveryDao.saveChangeInvoice(oneDelivery);
+			
+			deliveryDao.updateOrderDtlInvoice(oneDelivery);
 			
 			// 주문상세이력
 			Order order = new Order();
 			order.setOrdDtlNo(oneDelivery.getOrdDtlNo());
 			order.setUpdNo(userId);
 			order.setRegNo(userId);
-			orderDao.createOrderDetailHst(order);			
+			orderDao.createOrderDetailHst(order);
 		}
 	}	
 	
@@ -263,10 +265,19 @@ public class TsaDeliveryService {
 			param.setAccountNo(item.getAccountNo());
 			param.setOrdDtlNo(item.getOrdDtlNo());
 			param.setCnclRtnQty(item.getSaleQty());
+			param.setOrdPhnno(item.getOrdPhnno());
+			log.info("item.getOrdPhnno(): "+item.getOrdPhnno());
 			ordSoldoutList.add(param);
 			
 		}
 		coreDeliveryService.cancelSoldout(ordSoldoutList,userNo, "N"); 
+		
+		for(Delivery data : soldoutList) {
+			data.setSoldoutMemo("수동 품절처리");
+			data.setUpdNo(userNo);
+			deliveryDao.updateSoldOut(data);
+		}
+		
 	}	
 	
 	
@@ -610,6 +621,18 @@ public class TsaDeliveryService {
 		order.setUpdNo(userId);
 		order.setRegNo(userId);
 		orderDao.createOrderDetailHst(order);		
-	}	
+	}
+	
+	/**
+	 * 교환배송미출고대상 목록
+	 *
+	 * @param -Delivery
+	 * @return Collection<Delivery>
+	 * @author jsh77b
+	 * @since 2021. 06. 07
+	 */
+	public Collection<Delivery> getExchangeDelvFailList(Delivery delivery) {
+		return deliveryDao.getExchangeDelvFailList(delivery);
+	}
 	
 }

+ 9 - 3
src/main/java/com/style24/admin/biz/service/TsaDisplayService.java

@@ -523,7 +523,12 @@ public class TsaDisplayService {
 	 * @since 2021. 2. 23
 	 */
 	public Collection<Contents> getContentsPreviewList(Contents contents) {
-		return displayDao.getContentsPreviewList(contents);
+		Collection<Contents> previewList = displayDao.getContentsPreviewList(contents);
+		for(Contents tempGoods : previewList){
+			tempGoods.setContentsGoodsList(displayDao.getContentsForGoodsList(tempGoods));
+		}
+
+		return previewList;
 	}
 
 	/**
@@ -699,8 +704,9 @@ public class TsaDisplayService {
 				if(contents1.getGoodsCdArr().length>0){
 					for(int i=0; i<contents1.getGoodsCdArr().length; i++){
 						contents1.setGoodsCd(contents1.getGoodsCdArr()[i]);
-						contents1.setGoodsNm(contents1.getGoodsNmArr()[i]);
-						contents1.setImgPath1(contents1.getGoodsImgArr()[i]);
+//						contents1.setGoodsNm(contents1.getGoodsNmArr()[i]);
+//						contents1.setImgPath1(contents1.getGoodsImgArr()[i]);
+						contents1.setDispOrd(Integer.parseInt(contents1.getGoodsDispOrdArr()[i]));
 						displayDao.saveContentsGoodsTemp(contents1);
 					}
 				}

+ 12 - 0
src/main/java/com/style24/admin/biz/service/TsaPlanService.java

@@ -1815,5 +1815,17 @@ public class TsaPlanService {
 		return planDao.getPlanningCategoryList(param);
 	}
 	
+	/**
+	 * 출석체크 쿠폰 유효검사
+	 *
+	 * @param plan
+	 * @return
+	 * @author sowon
+	 * @since 2021. 06. 09
+	 */
+	public Collection<Plan> getPlanAttendCoupon(Plan param){
+		return planDao.getPlanAttendCoupon(param);
+	}
+	
 		
 }

+ 2 - 0
src/main/java/com/style24/admin/biz/service/TsaReviewService.java

@@ -81,6 +81,7 @@ public class TsaReviewService {
 		// 동영상(=포토)상품평포인트금액
 		int pntAmt = envsetService.getPhotoReviewPoint(TscConstants.Site.STYLE24.value());
 		review.setGvPntAmt(pntAmt);
+		review.setRmPntAmt(pntAmt);
 		review.setRegNo(TsaSession.getInfo().getUserNo());
 		review.setUpdNo(TsaSession.getInfo().getUserNo());
 
@@ -119,6 +120,7 @@ public class TsaReviewService {
 
 		for (Review review : reviewList) {
 			review.setGvPntAmt(bestPntAmt);
+			review.setRmPntAmt(bestPntAmt);
 			review.setRegNo(TsaSession.getInfo().getUserNo());
 			review.setUpdNo(TsaSession.getInfo().getUserNo());
 

+ 15 - 2
src/main/java/com/style24/admin/biz/service/TsaSocialService.java

@@ -41,8 +41,21 @@ public class TsaSocialService {
 		social.setSocialSq(param.getSocialSq());
 		social.setUseYn(param.getUseYn());
 		social.setApplyGb(param.getApplyGb());
-		if(socialDao.getSocialGoOffCount(social) > 0) {
-			throw new IllegalStateException("진행중인 소셜(핫딜)이 있습니다.");
+		social.setFrontGb(param.getFrontGb());
+		
+		String applyGb = param.getApplyGb();
+		String useYn = param.getUseYn();
+		
+		// 적용상태로 저장을 할 경우
+		if (applyGb.equals("A") && useYn.equals("Y")) {
+			if(socialDao.getSocialGoOffCount(social) > 0) {
+				throw new IllegalStateException("진행중인 소셜(핫딜)이 있습니다.");
+			}
+		// 대기상태로 저장을 할 경우 
+		}else if(applyGb.equals("P") && useYn.equals("Y")) {
+			if(socialDao.getSocialGoOffCount(social) > 0) {
+				throw new IllegalStateException("선택하신 날짜에 대기중이거나 진행중인 소셜(핫딜)이 있습니다.");
+			}
 		}
 		Integer userNo = TsaSession.getInfo().getUserNo();
 		param.setRegNo(userNo);

+ 3 - 1
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -307,7 +307,9 @@ public class TsaCustomerController extends TsaBaseController {
 		if ("custNm".equals(customerSearch.getSearchGb()) || "email".equals(customerSearch.getSearchGb())) {
 			customerSearch.setSearchTxt(CryptoUtils.encryptAES(customerSearch.getSearchTxt()));
 		}
-		customerSearch.setCpnPubPopYn("N");
+		if(!"Y".equals(customerSearch.getCpnPubPopYn())){
+			customerSearch.setCpnPubPopYn("N");
+		}
 		customerSearch.encryptData();	//데이터 암호화 필요
 		customerSearch.setRegNo(TsaSession.getInfo().getUserNo());
 		customerSearch.setPageable(new TscPageRequest(customerSearch.getPageNo()-1, customerSearch.getPageSize()));

+ 33 - 0
src/main/java/com/style24/admin/biz/web/TsaDeliveryController.java

@@ -540,4 +540,37 @@ public class TsaDeliveryController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 	
+	/**
+	 * 교환배송미출고대상
+	 * 
+	 * @return ModelAndView
+	 * @throws Exception
+	 * @author jsh77b
+	 * @since 2021. 06. 07
+	 */
+	@RequestMapping(value = "/exchangeDelvFail/list/form")
+	public ModelAndView deliveryExchangeDelvFailListForm() throws Exception {
+		ModelAndView mav = new ModelAndView();
+
+		mav.setViewName("delivery/ExchangeDelvFailListForm");
+
+		return mav;
+	}
+	
+	/**
+	 * 교환배송미출고대상 목록
+	 *
+	 * @param
+	 * @return
+	 * @throws Exception
+	 * @author jsh77b
+	 * @since 2021. 06. 07
+	 */
+	@PostMapping("/exchangeDelvFail/list")
+	@ResponseBody
+	public Collection<Delivery> getExchangeDelvFailList(@RequestBody Delivery delivery) throws Exception {
+		Collection<Delivery> dataList = deliveryService.getExchangeDelvFailList(delivery);
+		return dataList;
+	}
+	
 }

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

@@ -704,6 +704,7 @@ public class TsaDisplayController extends TsaBaseController {
 		ModelAndView mav = new ModelAndView();
 		mav.addObject("cateNo", cateNo);
 		mav.addObject("contentsLoc", contentsLoc);
+		mav.addObject("brandGroupNo", brandGroupNo);
 		mav.addObject("contentsDesc", displayService.getContentsDesc(contentsLoc));
 		mav.addObject("contentsLocList", rendererService.getAvailCommonCodeList("G028"));
 

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

@@ -1860,7 +1860,7 @@ public class TsaGoodsController extends TsaBaseController {
 	@PostMapping("/ep/skip/list")
 	@ResponseBody
 	public GagaMap goodsEpSkipList(@RequestBody GoodsSearch goodsSearch) {
-
+		log.info("[goodsEpSkipList] goodsSearch = {}", goodsSearch);
 		GagaMap result = new GagaMap();
 
 		// 입점업체담당자는 업체코드 설정
@@ -1896,7 +1896,7 @@ public class TsaGoodsController extends TsaBaseController {
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsEpSkipCount(goodsSearch));
-
+		log.info("[goodsEpSkipList] goodsSearch = {}", goodsSearch);
 		result.set("pageing", goodsSearch);
 		result.set("goodsEpSkipList", goodsService.getGoodsEpSkipList(goodsSearch));
 

+ 16 - 0
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -1382,6 +1382,8 @@ public class TsaMarketingController extends TsaBaseController {
 		// 할인방식 목록
 		mav.addObject("dcWayList", rendererService.getAvailCommonCodeList("G240"));
 
+		// 쿠폰상태 목록
+		mav.addObject("cpnStatList", rendererService.getAvailCommonCodeList("G232"));
 		mav.setViewName("marketing/CouponRetrievePopupForm");
 
 		return mav;
@@ -2560,6 +2562,20 @@ public class TsaMarketingController extends TsaBaseController {
 		socialService.deleteSocialGoods(paramList);
 		return super.ok(message.getMessage("SUCC_0003"));
 	}
+	
+	/**
+	 * 출석체크 쿠폰 유효 확인
+	 *
+	 * @param plan 조회 정보
+	 * @return plan 목록
+	 * @author sowon
+	 * @since 2021. 6. 9
+	 */
+	@PostMapping("/planning/attend/coupon")
+	@ResponseBody
+	public Collection<Plan> getPlanAttendCoupon(@RequestBody Plan plan) {
+		return planService.getPlanAttendCoupon(plan);
+	}
 
 	/**
 	 * 상품권 대량 등록 화면

+ 163 - 97
src/main/java/com/style24/admin/biz/web/TsaOrderChangeController.java

@@ -3,6 +3,7 @@ package com.style24.admin.biz.web;
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -19,11 +20,15 @@ import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.biz.service.TscKakaotalkService;
+import com.style24.core.biz.service.TscKcpService;
+import com.style24.core.biz.service.TscMailService;
 import com.style24.core.biz.service.TscOrderChangeService;
 import com.style24.core.biz.service.TscOrderRefundService;
 import com.style24.core.biz.service.TscOrderService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.persistence.domain.CustAccount;
 import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.OrderChange;
 
@@ -55,6 +60,15 @@ public class TsaOrderChangeController extends TsaBaseController {
 	@Autowired
 	private TscOrderRefundService orderRefundService;
 	
+	@Autowired
+	private TscKcpService coreKcpService;
+
+	@Autowired
+	private TscKakaotalkService coreKakaotalkService;
+
+	@Autowired
+	private TscMailService coreMailService;
+	
 	/**
 	 * 취소요청, 취소완료 통합 화면 (관리자)
 	 * 
@@ -103,14 +117,6 @@ public class TsaOrderChangeController extends TsaBaseController {
 		
 		String viewName = "";
 		
-		/*
-		if (ordChgSq > 0) {
-			viewName = "order/CnclReqViewForm";		// 변경요청확인화면 (취소요청정보화면)
-		} else {
-			viewName = "order/CnclReqForm";		// 변경요청화면 (취소요청화면)
-		}
-		*/
-		
 		viewName = "order/CnclReqForm";		// 변경요청화면, 변경요청확인화면 (취소요청화면) (통합)
 
 		mav.setViewName(viewName);
@@ -157,26 +163,25 @@ public class TsaOrderChangeController extends TsaBaseController {
 	@PostMapping("/cnclComplete")
 	@ResponseBody
 	public GagaResponse cnclComplete(@RequestBody OrderChange cnclReq) {
-		
+		GagaMap result = new GagaMap();
 		if (cnclReq== null) {
 			throw new IllegalStateException(message.getMessage("FAIL_1001"));
 		}
-		
-		GagaMap map = new GagaMap();
 
 		// 1. 세션회원조회
 		int userNo = TsaSession.getInfo().getUserNo();
 
 		cnclReq.setIpAddress(TsaSession.getIpAddress());
 		cnclReq.setRegNo(userNo);
-		
+		cnclReq.setUserNo(userNo);
+				
 		// 2021.05.14 FRONT 정보 선주문정보조회
 		GagaMap refundPreInfo = orderChangeService.getRefundPreInfo2(cnclReq);
 		List<Order> cnclReqList = (List<Order>) refundPreInfo.get("cnclReqList");
 		
 		// 2. 환불금액계산
 		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
-		map = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
+		GagaMap map = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
 		
 		// 3. 주문변경 기본정보 설정
 		map.set("ordNo"						, cnclReq.getOrdNo());						// 주문번호
@@ -198,15 +203,64 @@ public class TsaOrderChangeController extends TsaBaseController {
 		map.set("reqGbn"					, cnclReq.getReqGbn());						// 신청구분
 		map.set("ipAddress"					, cnclReq.getIpAddress());					// IP주소 (2021.05.13 추가)
 		map.set("custNo"					, cnclReq.getCustNo());						// 고객번호 (2021.05.13 추가)
-		
 		map.set("pgTid"						, refundPreInfo.getString("pgTid"));		// PG거래ID
 		map.set("payMeans"					, refundPreInfo.getString("payMeans"));		// 결제수단
 		map.set("pgGb"						, refundPreInfo.getString("pgGb"));			// PG구분
-		map.set("cashAuthNo"				, refundPreInfo.getString("cashAuthNo"));	// 현금영수증 승인번호
+		map.set("cashAuthNo"				, refundPreInfo.getString("cashAuthNo"));	// 현금영수증 승인번호'
 
 		// 4. 부분취소 처리 2021.05.13
-		orderChangeService.partialCancelTemp(map, userNo);
+		// 2021.06.09 취소접수
+		if ("cnclReq".equals(cnclReq.getReqGbn())) {
+			// 1. 주문변경 등록
+			// ordNo				: 주문번호
+			// chgGb				: 변경구분
+			// chgReason			: 변경사유
+			// chgMemo				: 변경메모
+			// userNo				: 회원번호
+			// ordDtlNoArr			: 주문상세번호배열
+			// cnclRtnReqQtyArr		: 변경수량배열
+			
+			cnclReq.setChgGb(TscConstants.OrderChangeGb.CANCEL.value());
+			orderChangeService.cancelRequest(cnclReq);
+		}
+		// 2021.06.09 취소접수승인
+		else if ("cnclReqComplete".equals(cnclReq.getReqGbn())) {
+			result = orderChangeService.approveCancelRequest(cnclReq, userNo);
+		}
+		// 2021.06.09 취소접수철회
+		else if ("cnclReqCancel".equals(cnclReq.getReqGbn())) {
+			orderChangeService.cnclReqCancel(map, userNo);
+		}
+		// 취소완료
+		else {
+			result = orderChangeService.partialCancelTemp(map, userNo);
+		}
 		
+		// 5. 취소 알림톡 및 메일 발송
+		int ordChgSq = result.getInt("ordChgSq");
+
+		if (ordChgSq > 0) {
+			try {
+				// 취소 알림톡 관련 정보 조회
+				OrderChange orderChange = orderChangeService.getKakaoOrderCancelInfo(ordChgSq);
+
+				// 취소 알림톡 발송
+				if (StringUtils.isNotBlank(orderChange.getOrdPhnno())) {
+					coreKakaotalkService.sendOrderCancelComplete(orderChange, userNo);
+				}
+
+				// 취소 안내 메일 정보 조회
+				GagaMap replaceInfo = orderChangeService.getMailOrderCancelReplaceInfo(orderChange);
+
+				// 취소 안내 메일 발송
+				if (StringUtils.isNotBlank(replaceInfo.getString("ordEmail"))) {
+					coreMailService.sendOrderCancel(replaceInfo, userNo);
+				}
+			} catch (Exception e) {
+				throw new IllegalStateException(message.getMessage("FAIL_0004"));
+			}
+		}
+
 		return super.ok("성공");
 	}
 	
@@ -395,15 +449,15 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 * @author jsshin
 	 * @since 2020. 10. 16.
 	 */
-	@GetMapping("/refund/account/info/list")
+	@PostMapping("/refund/account/info/list")
 	@ResponseBody
-	public Collection<Order> getRefundAccountInfoList(@RequestParam(value = "ordNo") int ordNo) {
-		Order order = new Order();
-		order.setOrdNo(ordNo);
+	public GagaMap getRefundAccountInfoList(@RequestBody Order order) {
+		GagaMap mav = new GagaMap();
 
 		Collection<Order> orderRfAccountInfo = orderChangeService.getRefundAccount(order);
+		mav.put("orderRfAccountInfo", orderRfAccountInfo);
 
-		return orderRfAccountInfo;
+		return mav;
 	}
 	
 	/**
@@ -421,12 +475,12 @@ public class TsaOrderChangeController extends TsaBaseController {
 		Order order = new Order();
 		order.setOrdNo(ordNo);
 
-		Collection<Order> orderBasic 			= orderService.getOrderInfoList(order);
+		Collection<Order> orderInfoList 		= orderService.getOrderInfoList(order);
 		Collection<Order> orderRfAccountInfo 	= orderChangeService.getRefundAccount(order);
 
 		mav.addObject("bankList"				, rendererService.getCommonCodeList("G940"));
 		mav.addObject("orderRfAccountInfo"		, orderRfAccountInfo);
-		mav.addObject("orderBasic"				, orderBasic);
+		mav.addObject("orderInfoList"			, orderInfoList);
 
 		mav.setViewName("order/RefundAccountRegistForm");
 		
@@ -448,14 +502,26 @@ public class TsaOrderChangeController extends TsaBaseController {
 		int userNo = TsaSession.getInfo().getUserNo();
 		order.setUpdNo(userNo);
 		order.setRegNo(userNo);
+
+		Boolean isValid 		= true;
+
+		// @ 환불계좌인증
+		CustAccount custAccount = new CustAccount();
+		custAccount.setAccountNm(order.getAccountNm());
+		custAccount.setBankCd(order.getBankCd());
+		custAccount.setAccountNo(order.getAccountNo());
 		
-		String accountCheck = "Y";
+		GagaMap result = coreKcpService.checkAccount(custAccount);
 		
-		// TODO
-		// @ 환불계좌인증
+		if ("0000".equals(result.get("resCd"))) {
+			isValid = true;
+		}
 		
-		if ("Y".equals(accountCheck)) {
-			orderChangeService.saveRefundAccount(order);
+		if (isValid) {
+			// 2021.06.09 비회원이 아닌경우만 고객 계좌에 등록
+			if (order.getCustNo() > 0) {
+				orderChangeService.saveRefundAccount(order);
+			}
 		} else {
 			throw new IllegalStateException("환불계좌정보가 맞지 않습니다!");
 		}
@@ -597,55 +663,55 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 * @author jsh77b
 	 * @since 2021. 01. 20
 	 */
-	@PostMapping("/cnclReq")
-	@ResponseBody
-	public GagaResponse cnclReq(@RequestBody OrderChange cnclReq) {
-		
-		GagaMap mav = new GagaMap();
-		
-		if (cnclReq== null) {
-			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-		}
-		
-		List<Order> cnclReqList = cnclReq.getCancelReqList(); // 취소요청정보목록
-		
-		// TODO
-		// @ 결품취소로직 추가
-		// @ 주문취소시 상태값 체크
-		// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
-		
-		// 1. 세션회원조회
-		int userNo = TsaSession.getInfo().getUserNo();
-		
-		// 2. 환불금액계산
-		// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
-		mav = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
-		
-		// 3. 주문변경 기본정보 설정
-		mav.set("ordNo"			, cnclReq.getOrdNo());				// 주문번호
-		mav.set("chgReason"		, cnclReq.getChgReason());			// 변경사유
-		mav.set("chgMemo"		, cnclReq.getChgMemo());			// 변경메모
-		
-		mav.set("accountNo"		, cnclReq.getAccountNo());			// 환불계좌번호
-		mav.set("accountNm"		, cnclReq.getAccountNm());			// 환불계좌예금주명
-		mav.set("bankCd"		, cnclReq.getBankCd());				// 환불계좌은행코드
-		
-		mav.set("allCanYn"		, cnclReq.getAllCanYn());			// 무통장입금전 전체취소 여부
-		mav.set("isCustomer"	, cnclReq.getIsCustomer());			// 변경사유 (고객, 회사)
-		
-		// 4. 주문변경 회수지정보 추가
-		mav.set("chgerNm"		, cnclReq.getChgerNm());			// 변경자명
-		mav.set("chgerEmail"	, cnclReq.getChgerEmail());			// 변경자이메일주소
-		mav.set("chgerPhnno"	, cnclReq.getChgerPhnno());			// 변경자핸드폰번호
-		mav.set("chgerTelno"	, cnclReq.getChgerTelno());			// 변경자전화번호
-		
-		mav.set("reqGbn"		, cnclReq.getReqGbn());				// 신청구분
-						
-		// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
-		orderChangeService.cnclComplete(mav, userNo);
-		
-		return super.ok("성공");
-	}
+	// @PostMapping("/cnclReq")
+	// @ResponseBody
+	// public GagaResponse cnclReq(@RequestBody OrderChange cnclReq) {
+	//	
+	// 	GagaMap mav = new GagaMap();
+	//	
+	// 	if (cnclReq== null) {
+	// 		throw new IllegalStateException(message.getMessage("FAIL_1001"));
+	// 	}
+	//	
+	// 	List<Order> cnclReqList = cnclReq.getCancelReqList(); // 취소요청정보목록
+	//	
+	// 	// TODO
+	// 	// @ 결품취소로직 추가
+	// 	// @ 주문취소시 상태값 체크
+	// 	// @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
+	//	
+	// 	// 1. 세션회원조회
+	// 	int userNo = TsaSession.getInfo().getUserNo();
+	//	
+	// 	// 2. 환불금액계산
+	// 	// 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
+	// 	mav = orderRefundService.cnclRtnRefundAmt2(cnclReqList);
+	//	
+	// 	// 3. 주문변경 기본정보 설정
+	// 	mav.set("ordNo"			, cnclReq.getOrdNo());				// 주문번호
+	// 	mav.set("chgReason"		, cnclReq.getChgReason());			// 변경사유
+	// 	mav.set("chgMemo"		, cnclReq.getChgMemo());			// 변경메모
+	//	
+	// 	mav.set("accountNo"		, cnclReq.getAccountNo());			// 환불계좌번호
+	// 	mav.set("accountNm"		, cnclReq.getAccountNm());			// 환불계좌예금주명
+	// 	mav.set("bankCd"		, cnclReq.getBankCd());				// 환불계좌은행코드
+	//	
+	// 	mav.set("allCanYn"		, cnclReq.getAllCanYn());			// 무통장입금전 전체취소 여부
+	// 	mav.set("isCustomer"	, cnclReq.getIsCustomer());			// 변경사유 (고객, 회사)
+	//	
+	// 	// 4. 주문변경 회수지정보 추가
+	// 	mav.set("chgerNm"		, cnclReq.getChgerNm());			// 변경자명
+	// 	mav.set("chgerEmail"	, cnclReq.getChgerEmail());			// 변경자이메일주소
+	// 	mav.set("chgerPhnno"	, cnclReq.getChgerPhnno());			// 변경자핸드폰번호
+	// 	mav.set("chgerTelno"	, cnclReq.getChgerTelno());			// 변경자전화번호
+	//	
+	// 	mav.set("reqGbn"		, cnclReq.getReqGbn());				// 신청구분
+	//					
+	// 	// 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
+	// 	orderChangeService.cnclComplete(mav, userNo);
+	//	
+	// 	return super.ok("성공");
+	// }
 	
 	/**
 	 * 취소요청승인 (관리자)
@@ -654,26 +720,26 @@ public class TsaOrderChangeController extends TsaBaseController {
 	 * @author jsh77b
 	 * @since 2021. 01. 20
 	 */
-	@PostMapping("/cnclReqComplete")
-	@ResponseBody
-	public GagaResponse cnclReqComplete(@RequestBody OrderChange cnclReq) {
-		
-		if (cnclReq== null) {
-			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-		}
-		
-		// 1. 세션회원조회
-		int userNo = TsaSession.getInfo().getUserNo();
-		
-		GagaMap mav = new GagaMap();
-		mav.set("ordNo"			, cnclReq.getOrdNo());
-		mav.set("ordChgSq"		, cnclReq.getOrdChgSq());
-		
-		// 2.취소요청철회 
-		mav = orderChangeService.cnclComplete(mav, userNo);
-		
-		return super.ok("성공");
-	}
+	// @PostMapping("/cnclReqComplete")
+	// @ResponseBody
+	// public GagaResponse cnclReqComplete(@RequestBody OrderChange cnclReq) {
+	//	
+	// 	if (cnclReq== null) {
+	// 		throw new IllegalStateException(message.getMessage("FAIL_1001"));
+	// 	}
+	//	
+	// 	// 1. 세션회원조회
+	// 	int userNo = TsaSession.getInfo().getUserNo();
+	//	
+	// 	GagaMap mav = new GagaMap();
+	// 	mav.set("ordNo"			, cnclReq.getOrdNo());
+	// 	mav.set("ordChgSq"		, cnclReq.getOrdChgSq());
+	//	
+	// 	// 2.취소요청철회 
+	// 	mav = orderChangeService.cnclComplete(mav, userNo);
+	//	
+	// 	return super.ok("성공");
+	// }
 }
 
 

+ 51 - 2
src/main/java/com/style24/admin/biz/web/TsaOrderController.java

@@ -261,9 +261,21 @@ public class TsaOrderController extends TsaBaseController {
 	 */
 	@PostMapping("/seller/unorder/list")
 	@ResponseBody
-	public Collection<Order> getOrderSellerUnorderList(@RequestBody Order order) throws Exception {
+	public GagaMap getOrderSellerUnorderList(@RequestBody Order order) throws Exception {
+		GagaMap result = new GagaMap();
+
+		order.setPageable(new TscPageRequest(0, 10000));
+
+		// 주문전체건수 조회
+		int totalCount = orderService.getOrderSellerUnorderListCount(order);
+		order.getPageable().setTotalCount(totalCount);
+
 		Collection<Order> orderList = orderService.getOrderSellerUnorderList(order);
-		return orderList;
+
+		result.set("pageing"	, order);
+		result.set("orderList"	, orderList);
+
+		return result;
 	}
 
 	/**
@@ -754,6 +766,43 @@ public class TsaOrderController extends TsaBaseController {
 		orderService.updateSellerDelvStartAndPartCancel(orderList, userNo);
 		return super.ok("");
 	}
+
+	/**
+	 * 입점 상품 주문 목록
+	 * @param orderList - 주문목록화면
+	 * @return ModelAndView
+	 * @author xodud1202
+	 * @since 2020. 06. 07
+	 */
+	@GetMapping("/seller/delv/list/form")
+	public ModelAndView sellerDelvListForm() {
+		ModelAndView mav = new ModelAndView();
+
+		mav.addObject("supplyCompList"	, rendererService.getSupplyCompanyList());				// 공급업제목록
+		mav.addObject("ordStatList"		, rendererService.getAvailCommonCodeList("G012"));		// 주문상태코드
+		mav.addObject("ordDtlStatList"	, rendererService.getAvailCommonCodeList("G013"));		// 주문상세상태코드
+		mav.addObject("shipCompanyList"	, rendererService.getShipCompanyList());				// 택배사 목록
+
+		mav.setViewName("order/OrderSellerDelvEndListForm");
+
+		return mav;
+	}
+
+	/**
+	 * 입점업체 주문 목록 조회
+	 *
+	 * @param order - 주문정보
+	 * @return Collection<Order>
+	 * @author xodud1202
+	 * @since 2021. 06. 07
+	 */
+	@PostMapping("/seller/order/list")
+	@ResponseBody
+	public Collection<Order> getOrderSellerOrderList(@RequestBody Order order) {
+		order.setIfYn("Y");			// 취소, 반품 신청/대기 건 제외하지 않도록 구분값 지정
+		Collection<Order> orderList = orderService.getOrderSellerUnorderList(order);
+		return orderList;
+	}
 }
 
 

+ 20 - 30
src/main/java/com/style24/admin/biz/web/TsaWithdrawController.java

@@ -132,39 +132,18 @@ public class TsaWithdrawController extends TsaBaseController {
 		log.info("withdraw {}"+withdraw.toString());
 		mav.addObject("ordChgSq", withdraw.getOrdChgSq());
 		mav.addObject("ordNo", withdraw.getOrdNo());
-		
-		
-		
-		
-		// 남은 상품 정보
-		mav.addObject("remainGoodsInfo", withdraw);//withdrawService.getRemainGoodsInfo(withdraw));
-
-		// 남은 상품 목록
-		mav.addObject("remainGoodsList", withdraw); //withdrawService.getWithdrawRemainOrderDetailList(withdraw));
-
-		// 장바구니 쿠폰 정보
-		mav.addObject("couponInfo", withdraw); // withdrawService.getCouponInfo(withdraw));
-
-		// 주문전체 금액
-		mav.addObject("orderDetailSumAmt", withdraw); //withdrawService.getOrderDetailSumAmt(withdraw.getOrdNo().toString()));
-
-		//
-		mav.addObject("sumQty", withdraw); // withdrawService.getSumChgQtyWdQty(withdraw));
-
-		// TODO: 아래 확인후 구현 (.. ) ( ..)
-		//mav.addObject("ordChgCnt", deliveryService.getOrdChgCnt(withdraw.getOrdNo()));
-		
-		
-		
-		
-		
+		mav.addObject("userNo", withdraw.getUserNo());
 		
 		OrderChange orderChange= new OrderChange();
 		orderChange.setOrdChgSq(withdraw.getOrdChgSq());
 		orderChange.setUserNo(withdraw.getUserNo());
 		//orderChangeService.refundConfirmPreInfo(orderChange);
 		
-		mav.addObject("refundConfirmPreInfo", orderChangeService.refundConfirmPreInfo(orderChange));
+		//mav.addObject("refundConfirmPreInfo", orderChangeService.refundConfirmPreInfo(orderChange));
+		
+		//mav.addObject("dataList", withdrawService.getRefundDetailList(withdraw));
+		
+		
 		
 		mav.setViewName("withdraw/RefundDetailForm");
 		return mav;
@@ -181,9 +160,20 @@ public class TsaWithdrawController extends TsaBaseController {
 	 */
 	@PostMapping("/detail/list")
 	@ResponseBody
-	public Collection<Withdraw> getRefundDetailList(@RequestBody Withdraw withdraw) {
-		Collection<Withdraw> dataList = withdrawService.getRefundDetailList(withdraw);
-		return dataList;
+	public GagaMap getRefundDetailList(@RequestBody Withdraw withdraw) {
+		
+		OrderChange orderChange= new OrderChange();
+		orderChange.setOrdChgSq(withdraw.getOrdChgSq());
+		orderChange.setUserNo(withdraw.getUserNo());
+		//orderChangeService.refundConfirmPreInfo(orderChange);
+		
+		GagaMap result = new GagaMap();
+		
+		result.set("refundConfirmPreInfo", orderChangeService.refundConfirmPreInfo(orderChange));
+		result.set("dataList",withdrawService.getRefundDetailList(withdraw));
+		
+	//	Collection<Withdraw> dataList = withdrawService.getRefundDetailList(withdraw);
+		return result;
 	}
 
 	/**

+ 5 - 0
src/main/java/com/style24/persistence/domain/Contents.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 import lombok.Data;
 
+import java.util.Collection;
 import java.util.List;
 
 @SuppressWarnings("serial")
@@ -71,6 +72,8 @@ public class Contents extends TscBaseDomain {
     private String[] goodsNmArr;
     @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
     private String[] goodsImgArr;
+    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+    private String[] goodsDispOrdArr;
 
     @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
     private String[] brandGroup1Arr;
@@ -94,4 +97,6 @@ public class Contents extends TscBaseDomain {
     private String group3brandCd;
     private String group3brandNm;
     private String group3brandImg;
+
+    Collection<Goods> contentsGoodsList;	//상품목록
 }

+ 20 - 0
src/main/java/com/style24/persistence/domain/Delivery.java

@@ -74,6 +74,10 @@ public class Delivery extends TscBaseDomain {
 	private String termGb;
 	private String stDate;
 	private String edDate;
+	private String stDate2;
+	private String edDate2;
+	private String stDate3;
+	private String edDate3;
 	private String ordDt;       	// 주문일시
 	private String payDt;       	// 결제일시
 	private String extmallId;   	// 외부몰
@@ -107,6 +111,11 @@ public class Delivery extends TscBaseDomain {
 	private String bankCd;
 	private String accountNm;
 	private String accountNo;
+	private String invcTracking;
+	private String orgInvoiceNo;
+	private String soldoutMemo;
+	private String soldoutRegNo;
+	
 	
 	private Integer ordDtlNo;
 	private Integer ordNo;
@@ -131,6 +140,7 @@ public class Delivery extends TscBaseDomain {
 	private int currPrice;
 	private int saleAmt;
 	private int realOrdAmt;
+	private int stockQty;
 	
 	private Double delvFeeRate;
 	
@@ -157,6 +167,16 @@ public class Delivery extends TscBaseDomain {
 	private int pageSize = 50;
 	private int pageUnit = 10;
 	
+	private int exchangeDelvFailSq;
+	private int ordChgSq;
+	private String delvCnclYn;
+	private String delvCnclYnNm;
+	private int cnclRtnQty;
+	private String delvFailReason;
+	
+	
+	
+	
 	
 
 	

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

@@ -133,6 +133,7 @@ public class Goods extends TscBaseDomain {
 //	private String searchGb;
 
 	private String blankFlag;
+	private String contentsDispOrd;
 //
 //	private Integer sizeCurrStockQty;
 //	private Integer sizeBaseStockQty;

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

@@ -89,6 +89,7 @@ public class Review extends TscBaseDomain {
 	// 베스트상품평포인트 생성
 	private Integer custPntSq;		// 고객포인트일련번호
 	private int gvPntAmt;			// 지급포인트금액
+	private int rmPntAmt;			// 잔여포인트
 	private String occurGb;			// 포인트발생구분
 	private String occurDtlDesc;	// 포인트발생상세설명
 	private int pntAmt;				// 포인트금액

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

@@ -100,6 +100,7 @@ public class Withdraw extends TscBaseDomain {
 	private int addPayCost; 	// 추가결제비용 
 	private int totalOrdQty;    // 주문총수량 
 	private int addDeliveryFee;
+	private int refundAmt; 
 	
 	private String stDate;					// 조회 시작 기간
 	private String edDate;					// 조회 종료 기간

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

@@ -93,6 +93,7 @@ public class WithdrawExc extends TscBaseDomain {
 	private int chgQty;  
 	private int ordAmt;
 	private int addPayCost;
+	private int codFee; 
 	
 	private Integer orderNo;           // 주문번호
 	private Integer orderDtlNo;        // 주문상세번호 

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

@@ -393,6 +393,7 @@
 		               SELECT SUM(RM_PNT_AMT) AS RM_PNT_AMT
 		               FROM  TB_CUST_POINT
 		               WHERE CUST_NO = C.CUST_NO
+		               AND   GV_PNT_AMT > 0
 		               AND   EXP_BE_DT > NOW()
 		               AND   EXP_BE_DT <![CDATA[<]]> DATE_ADD(NOW(),INTERVAL 31 DAY)
 		                ), 0)                          AS EXPECTED_EXPIRE_PNT_AMT -- 소멸예정포인트(30일)

+ 91 - 14
src/main/java/com/style24/persistence/mybatis/shop/TsaDelivery.xml

@@ -73,6 +73,7 @@
 		    , (SELECT BD.BRAND_KNM FROM TB_BRAND BD WHERE BD.BRAND_CD = Z.BRAND_CD ) AS BRAND_NM
 		    , FN_GET_CODE_NM('G056', Z.GOODS_TYPE ) AS GOODS_TYPE_NM 
 		    , (SELECT SUPPLY_COMP_NM FROM TB_SUPPLY_COMPANY S WHERE S.SUPPLY_COMP_CD = Z.SUPPLY_COMP_CD) AS SUPPLY_COMP_NM 
+		    , IFNULL((SELECT SWT_TRC_SEND_YN FROM TB_ORDER_DETAIL_INVOICE V WHERE V.ORD_NO = Z.ORD_NO AND V.ORD_DTL_NO = Z.ORD_DTL_NO AND V.INVOICE_NO = Z.INVOICE_NO  ),'N') AS INVC_TRACKING 
 		FROM (
 		    SELECT A.*, ROW_NUMBER() OVER(ORDER BY  A.ORD_NO DESC, A.ORD_DTL_NO) RNUM 
 		    FROM (
@@ -128,6 +129,7 @@
 						    , A.BANK_CD 
 						    , A.ACCOUNT_NO 
 						    , A.ACCOUNT_NM 
+						    , A.ORD_PHNNO
 					  FROM (
 							SELECT 
 								  A.ORD_NO     -- 주문번호
@@ -175,6 +177,7 @@
 							    , T.BANK_CD 
 							    , T.ACCOUNT_NO 
 							    , T.ACCOUNT_NM 
+							    , A.ORD_PHNNO
 							FROM  TB_ORDER A 
 							      INNER JOIN TB_ORDER_DETAIL B        ON A.ORD_NO       = B.ORD_NO
 								  INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON B.ORD_DTL_NO   = ODI.ORD_DTL_NO
@@ -234,6 +237,7 @@
 							    , T.BANK_CD 
 							    , T.ACCOUNT_NO 
 							    , T.ACCOUNT_NM 
+							    , A.ORD_PHNNO
 							FROM  TB_ORDER A 
 							      INNER JOIN TB_ORDER_DETAIL B        ON A.ORD_NO       = B.ORD_NO
 							      INNER JOIN TB_GOODS C               ON B.GOODS_CD     = C.GOODS_CD
@@ -326,10 +330,10 @@
 		</if>
 		<if test='termGb == "ordDt"'>
 		    <if test='stDate != null and stDate != ""'>
-		AND   A.REG_DT >= STR_TO_DATE(REPLACE(#{stDate},'-',''), '%Y%m%d%H%i%s')    
+		AND   A.ORD_DT >= STR_TO_DATE(REPLACE(#{stDate},'-',''), '%Y%m%d%H%i%s')    
 		    </if>
 		    <if test='edDate != null and edDate != ""'>
-		AND   A.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-',''), '%Y%m%d%H%i%s'), INTERVAL 1 DAY) 
+		AND   A.ORD_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-',''), '%Y%m%d%H%i%s'), INTERVAL 1 DAY) 
 		    </if>
 		</if>
 		<if test='termGb == "delvDt"'>
@@ -407,7 +411,18 @@
 		WHERE  ORD_DTL_NO   = #{ordDtlNo}
 	</update>
 		
-
+	<!-- 송장번호  변경 -->
+	<update id="updateOrderDtlInvoice" parameterType="Delivery" >
+		/* TsaDelivery.updateOrderDtlInvoice */
+		 UPDATE TB_ORDER_DETAIL_INVOICE SET
+			   INVOICE_NO      = #{invoiceNo}
+			 , SWT_TRC_SEND_YN = 'N'
+			 , UPD_NO          = #{updNo}
+			 , UPD_DT          = NOW()
+		 WHERE ORD_DTL_NO = #{ordDtlNo}
+		   AND INVOICE_NO = #{orgInvoiceNo}
+	</update>
+			
 	
 	<!-- 출고금지상품 목록 -->
 	<select id="getBangoodsList" parameterType="Delivery" resultType="Delivery">
@@ -415,7 +430,7 @@
 		SELECT DBG.DEL_YN
 			, G.BRAND_CD
 			, B.BRAND_KNM
-			, DL.DELV_LOC_NM
+			, (SELECT MAX(DELV_LOC_NM) FROM TB_DELIVERY_LOC DL WHERE DL.DELV_LOC_CD = DBG.DELV_LOC_CD ) AS DELV_LOC_NM
 			, (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = DBG.GOODS_CD AND COLOR_CD = DBG.OPT_CD1 AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
 			, G.GOODS_NM
 			, DBG.GOODS_CD
@@ -425,8 +440,8 @@
 			, DBG.DELV_BAN_STDT 
 			, DBG.DELV_BAN_EDDT	
 			, DBG.DELV_BAN_GOODS_SQ
+			, DBG.REG_DT
 		FROM  TB_DELIVERY_BAN_GOODS DBG
-		INNER JOIN TB_DELIVERY_LOC DL   ON DBG.DELV_LOC_CD = DL.DELV_LOC_CD
 		INNER JOIN TB_GOODS        G    ON DBG.GOODS_CD = G.GOODS_CD
 		INNER JOIN TB_BRAND        B    ON G.BRAND_CD = B.BRAND_CD
 		WHERE 1=1
@@ -453,6 +468,12 @@
 		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
 			AND DBG.REG_DT BETWEEN STR_TO_DATE(CONCAT(#{stDate},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate},' 235959'), '%Y-%m-%d %H%i%S')
 		</if>
+		<if test="stDate2 != null and stDate2 != '' and edDate2 != null and edDate2 != ''">
+			AND DBG.DELV_BAN_STDT BETWEEN STR_TO_DATE(CONCAT(#{stDate2},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate2},' 235959'), '%Y-%m-%d %H%i%S')
+		</if>
+		<if test="stDate3 != null and stDate3 != '' and edDate3 != null and edDate3 != ''">
+			AND DBG.DELV_BAN_EDDT BETWEEN STR_TO_DATE(CONCAT(#{stDate3},' 000000'),'%Y-%m-%d %H%i%S') AND STR_TO_DATE(CONCAT(#{edDate3},' 235959'), '%Y-%m-%d %H%i%S')
+		</if>				
 	</select>
 
 	<!-- 출고금지상품 삭제 -->
@@ -481,6 +502,7 @@
 			, S.OPT_CD2 
 			, G.GOODS_STAT
 			, (SELECT CD_NM FROM TB_COMMON_CODE WHERE CD_GB = 'G008' AND CD =G.GOODS_STAT) AS GOODS_STAT_NM
+			, G.SUPPLY_COMP_CD
 		FROM  TB_GOODS G
 		INNER JOIN TB_BRAND B  ON G.BRAND_CD = B.BRAND_CD
 		INNER JOIN TB_OPTION S ON G.GOODS_CD = S.GOODS_CD			
@@ -493,7 +515,7 @@
 		</if>
 		<if test='searchTxt != null and searchTxt != ""'>
 			<if test='goodsGb == "goodsCd"'>
-				AND G.GOODS_CD LIKE UPPER(#{searchTxt} || '%')
+				AND G.GOODS_CD LIKE CONCAT(UPPER(#{searchTxt}),'%')
 			</if>
 			<if test='goodsGb == "goodsNm"'>
 				AND G.GOODS_NM LIKE #{searchTxt} || '%'
@@ -568,10 +590,10 @@
 						AND    'D' = #{delvGb} -- 배송지시
 						</if>
 						<if test="stDate != null and stDate != ''">
-						AND    O.REG_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
+						AND    O.ORD_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
 						</if>
 						<if test="edDate != null and edDate != ''">
-						AND    O.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY) 
+						AND    O.ORD_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY) 
 						</if>
 						<if test="siteCd != null and siteCd != ''">
 						AND    O.SITE_CD = #{siteCd}
@@ -657,10 +679,10 @@
 						AND    'D' = #{delvGb} -- 배송지시
 						</if>
 						<if test="stDate != null and stDate != ''">
-						AND    O.REG_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
+						AND    O.ORD_DT <![CDATA[>=]]> STR_TO_DATE(REPLACE(#{stDate},'-','') , '%Y%m%d%H%i%s')
 						</if>
 						<if test="edDate != null and edDate != ''">
-						AND    O.REG_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY) 
+						AND    O.ORD_DT <![CDATA[<]]> DATE_ADD(STR_TO_DATE(REPLACE(#{edDate},'-','') , '%Y%m%d%H%i%s'), INTERVAL 1 DAY) 
 						</if>
 						<if test="siteCd != null and siteCd != ''">
 						AND    O.SITE_CD = #{siteCd}
@@ -1128,14 +1150,14 @@
 	
 	<!-- 출고처지정 삭제   -->
 	<delete id="deleteTbDeliveryAssign" parameterType="Delivery" >
-		/*TsbDelivery.deleteTbDeliveryAssign*/
+		/*TsaDelivery.deleteTbDeliveryAssign*/
 		DELETE FROM TB_DELIVERY_ASSIGN
 		WHERE ORD_DTL_NO  = #{ordDtlNo}
 	</delete>	
 	
 	<!-- 주문상세 출고처지정 취소   -->
 	<update id="cancelAssignDelvLoc" parameterType="Delivery" >
-		/*TsbDelivery.cancelAssignDelvLoc*/
+		/*TsaDelivery.cancelAssignDelvLoc*/
 		UPDATE TB_ORDER_DETAIL SET
 			  ORD_DTL_STAT     = #{ordDtlStat}
 			, DELV_LOC_CD      = NULL
@@ -1144,7 +1166,62 @@
 			, UPD_NO           = #{updNo}
 			, UPD_DT           = NOW()
 		WHERE ORD_DTL_NO = #{ordDtlNo}
-	</update>	
-		
+	</update>
 	
+	<!-- 교환배송미출고대상 목록   -->
+	<select id="getExchangeDelvFailList" parameterType="Delivery" resultType="Delivery">
+		/* TsaDelivery.getExchangeDelvFailList */
+		SELECT EDF.EXCHANGE_DELV_FAIL_SQ
+		     , EDF.ORD_CHG_SQ
+		     , EDF.ORD_NO
+		     , EDF.ORD_DTL_NO
+		     , EDF.DELV_CNCL_YN
+		     , CASE WHEN DELV_CNCL_YN IN ('Y')
+		            THEN '대기'
+		            ELSE '완료'
+		            END  DELV_CNCL_YN_NM
+		     , EDF.ORD_QTY
+		     , EDF.CNCL_RTN_QTY
+		     , EDF.DELV_FAIL_REASON
+		     , G1.GOODS_CD
+		     , G1.GOODS_NM
+		     , G1.GOODS_TYPE
+		     , O.ORD_NM
+		     , O.ORD_PHNNO 
+		     , O.ORD_EMAIL 
+		FROM   TB_EXCHANGE_DELV_FAIL EDF
+		INNER  JOIN TB_ORDER_DETAIL OD
+		ON     OD.ORD_NO = EDF.ORD_NO
+		INNER  JOIN TB_GOODS G1
+		ON     OD.GOODS_CD = G1.GOODS_CD
+		INNER  JOIN TB_ORDER O
+		ON     EDF.ORD_NO = O.ORD_NO
+		WHERE  1=1
+		AND    EDF.DEL_YN = 'N'
+		<if test='ordNm != null and ordNm != ""'>
+		AND    O.ORD_NM = #{ordNm}
+		</if>
+		<if test='ordNo != null and ordNo != ""'>
+		AND    O.ORD_No = #{ordNo}
+		</if>
+		<if test='delvCnclYn != null and delvCnclYn != ""'>
+		AND    EDF.DELV_CNCL_YN = #{delvCnclYn}
+		</if>
+		ORDER  BY EDF.REG_DT ASC
+	</select>
+		
+	<!-- 수동 품절  -->
+	<update id="updateSoldOut" parameterType="Delivery" >
+		/* TsaDelivery.updateSoldOut */
+		 UPDATE TB_ORDER_DETAIL SET
+			   SOLDOUT_YN     = 'Y'
+			 , SOLDOUT_MEMO   = #{soldoutMemo}
+			 , SOLDOUT_REG_NO = #{updNo}
+			 , SOLDOUT_REG_DT = NOW()
+			 , UPD_NO         = #{updNo}
+			 , UPD_DT         = NOW()
+		 WHERE ORD_NO     = #{ordNo} 
+		   AND ORD_DTL_NO = #{ordDtlNo}
+	</update>
+		
 </mapper>

+ 64 - 66
src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml

@@ -575,8 +575,8 @@
 					FROM TB_SEARCH_DATA
 					WHERE REG_NO = #{regNo}
 					GROUP BY SEARCH_CD) D
-				WHERE C.GOODS_CD LIKE D.SEARCH_CD||'%'
-				OR C.SUPPLY_GOODS_CD LIKE D.SEARCH_CD||'%'
+				WHERE C.GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
+				OR C.SUPPLY_GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
 			) A
 			WHERE 1 = 1
 		</if>
@@ -589,9 +589,10 @@
 		FROM	(
 			SELECT	@rownum := @rownum + 1 AS RNUM
 					,A.*
-					, CASE WHEN A.GOODS_TYPE = 'G056_S' THEN (SELECT IFNULL(SUM(CURR_STOCK_QTY), 0) - IFNULL(SUM(BASE_STOCK_QTY), 0) AS CURR_STOCK_QTY FROM VW_STOCK_COMPOSE WHERE GOODS_CD = A.GOODS_CD)
-					ELSE (SELECT IFNULL(SUM(CURR_STOCK_QTY), 0) - IFNULL(SUM(BASE_STOCK_QTY), 0) AS CURR_STOCK_QTY FROM VW_STOCK WHERE GOODS_CD = A.GOODS_CD)
-					END AS CURR_STOCK_QTY
+				--	, CASE WHEN A.GOODS_TYPE = 'G056_S' THEN (SELECT IFNULL(SUM(CURR_STOCK_QTY), 0) - IFNULL(SUM(BASE_STOCK_QTY), 0) AS CURR_STOCK_QTY FROM VW_STOCK_COMPOSE WHERE GOODS_CD = A.GOODS_CD)
+				--	ELSE (SELECT IFNULL(SUM(CURR_STOCK_QTY), 0) - IFNULL(SUM(BASE_STOCK_QTY), 0) AS CURR_STOCK_QTY FROM VW_STOCK WHERE GOODS_CD = A.GOODS_CD)
+				--	END AS CURR_STOCK_QTY
+					, IFNULL((SELECT STOCK_QTY FROM TB_GOODS_STOCK WHERE GOODS_CD = A.GOODS_CD),0) AS CURR_STOCK_QTY
 			FROM	(
 				SELECT	'카테고리확인' AS FULL_CATE_NM
 						, G.GOODS_CD
@@ -635,8 +636,8 @@
 							WHERE REG_NO = #{regNo}
 							GROUP BY SEARCH_CD
 							) D
-						WHERE C.GOODS_CD LIKE D.SEARCH_CD||'%'
-						OR C.SUPPLY_GOODS_CD LIKE D.SEARCH_CD||'%'
+						WHERE C.GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
+						OR C.SUPPLY_GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
 					) G
 					JOIN ( SELECT @rownum := 0) R
 					WHERE 1 = 1
@@ -661,13 +662,13 @@
 
 	<sql id="getGoodsCategoryListCondition_sql">
 		<if test='goodsCd != null and goodsCd != ""'>
-			AND UPPER(G.GOODS_CD) LIKE CONCAT('%',UPPER(#{goodsCd}),'%')
+			AND UPPER(G.GOODS_CD) LIKE CONCAT(UPPER(#{goodsCd}),'%')
 		</if>
 		<if test='supplyGoodsCd != null and supplyGoodsCd != ""'>
 			AND G.SUPPLY_GOODS_CD = #{supplyGoodsCd}
 		</if>
 		<if test='goodsNm != null and goodsNm != ""'>
-			AND UPPER(G.GOODS_NM) LIKE CONCAT('%',UPPER(#{goodsNm}),'%')
+			AND UPPER(G.GOODS_NM) LIKE CONCAT(UPPER(#{goodsNm}),'%')
 		</if>
 		<if test='goodsStat != null and goodsStat != ""'>
 			AND G.GOODS_STAT = #{goodsStat}
@@ -884,8 +885,8 @@
 			WHERE REG_NO = #{regNo}
 			GROUP BY SEARCH_CD
 			) D
-			WHERE G.GOODS_CD LIKE D.SEARCH_CD||'%'
-			OR G.SUPPLY_GOODS_CD LIKE D.SEARCH_CD||'%'
+			WHERE G.GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
+			OR G.SUPPLY_GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
 			) G
 		</if>
 		WHERE A.GOODS_CD = G.GOODS_CD
@@ -903,7 +904,7 @@
 				FROM ( SELECT G.GOODS_CD
 							, G.GOODS_TNM
 							, G.GOODS_NM
-							, (SELECT SYS_IMG_NM FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND DEFAULT_IMG_YN = 'Y' ORDER BY REG_DT DESC LIMIT 1) AS IMG_PATH1
+							, (SELECT SYS_IMG_NM FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = G.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ORDER BY REG_DT DESC LIMIT 1) AS IMG_PATH1
 							, A.CATE_NO
 							, A.DISP_ORD
 							, FN_GET_CODE_NM('G056',G.GOODS_TYPE) AS GOODS_TYPE
@@ -961,8 +962,8 @@
 					WHERE REG_NO = #{regNo}
 					GROUP BY SEARCH_CD
 					) D
-					WHERE G.GOODS_CD LIKE D.SEARCH_CD||'%'
-					OR G.SUPPLY_GOODS_CD LIKE D.SEARCH_CD||'%'
+					WHERE G.GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
+					OR G.SUPPLY_GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
 					) G
 				</if>
 				JOIN ( SELECT @rownum := 0) R
@@ -1020,8 +1021,8 @@
 			WHERE REG_NO = #{regNo}
 			GROUP BY SEARCH_CD
 			) D
-			WHERE G.GOODS_CD LIKE D.SEARCH_CD||'%'
-			OR G.SUPPLY_GOODS_CD LIKE D.SEARCH_CD||'%'
+			WHERE G.GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
+			OR G.SUPPLY_GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
 			) G
 		</if>
 		WHERE A.GOODS_CD = G.GOODS_CD
@@ -1104,8 +1105,8 @@
 							WHERE REG_NO = #{regNo}
 							GROUP BY SEARCH_CD
 							) D
-							WHERE G.GOODS_CD LIKE D.SEARCH_CD||'%'
-							OR G.SUPPLY_GOODS_CD LIKE D.SEARCH_CD||'%'
+							WHERE G.GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
+							OR G.SUPPLY_GOODS_CD LIKE CONCAT(D.SEARCH_CD,'%')
 							) G
 						</if>
 					   JOIN ( SELECT @rownum := 0) R
@@ -1347,44 +1348,6 @@
 		     , A.BRAND_GROUP_NO
 		     , A.BRAND_GROUP_IMG
 		     , A.MD_TITLE
-		     ,(SELECT GROUP_CONCAT(B.GOODS_CD ORDER BY B.DISP_ORD SEPARATOR ',')
-		        FROM  TMP_CONTENTS_GOODS B
-		       WHERE  1=1
-		       <if test="contentsLoc != 'SMM012'">
-		         AND  B.CATE_NO = A.CATE_NO
-		       </if>
-		         AND  B.CONTENTS_LOC = A.CONTENTS_LOC
-		         AND  B.CONTENTS_SQ = A.DISP_ORD
-		       <if test="contentsLoc != 'SMM012'">
-		         AND  B.CATE_NO = #{cateNo}
-		       </if>
-		         AND  B.CONTENTS_LOC = #{contentsLoc}) AS GOODS_CD_LIST
-		     ,(SELECT 	GROUP_CONCAT(B.GOODS_NM ORDER BY B.DISP_ORD SEPARATOR ',')
-		       FROM	TMP_CONTENTS_GOODS B
-		       WHERE 1=1
-		       <if test="contentsLoc != 'SMM012'">
-		         AND B.CATE_NO = A.CATE_NO
-		       </if>
-		         AND B.CONTENTS_LOC = A.CONTENTS_LOC
-		         AND B.CONTENTS_SQ = A.DISP_ORD
-		       <if test="contentsLoc != 'SMM012'">
-		         AND  B.CATE_NO = #{cateNo}
-		       </if>
-		         AND B.CONTENTS_LOC = #{contentsLoc}) AS GOODS_NM_LIST
-		     ,(SELECT GROUP_CONCAT(GI.SYS_IMG_NM ORDER BY B.DISP_ORD SEPARATOR ',')
-		       FROM TMP_CONTENTS_GOODS B
-		       JOIN TB_GOODS G ON B.GOODS_CD = G.GOODS_CD
-		       JOIN TB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD AND G.MAIN_COLOR_CD = COLOR_CD AND GI.DEFAULT_IMG_YN = 'Y'
-		       WHERE 1=1
-		       <if test="contentsLoc != 'SMM012'">
-		         AND B.CATE_NO = A.CATE_NO
-		       </if>
-		        AND B.CONTENTS_LOC = A.CONTENTS_LOC
-		        AND B.CONTENTS_SQ = A.DISP_ORD
-		       <if test="contentsLoc != 'SMM012'">
-		        AND  B.CATE_NO = #{cateNo}
-		       </if>
-		        AND B.CONTENTS_LOC = #{contentsLoc}) AS GOODS_IMG_LIST
 		     , A.USE_YN
 		     , A.REG_NO
 		     , A.REG_DT
@@ -1473,7 +1436,13 @@
 			,#{contentsType}
 			,DATE_FORMAT(#{dispStdt}, '%Y-%m-%d %H:%i:%S')
 			,DATE_FORMAT(#{dispEddt}, '%Y-%m-%d %H:%i:%S')
-			,(SELECT DISP_ORD FROM (SELECT IFNULL((MAX(DISP_ORD) + 1), 1) AS DISP_ORD FROM	TB_CONTENTS_PREVIEW	WHERE CATE_NO = #{cateNo} AND CONTENTS_LOC = #{contentsLoc}) TMP)
+			,(SELECT DISP_ORD FROM (SELECT IFNULL((MAX(DISP_ORD) + 1), 1) AS DISP_ORD FROM	TB_CONTENTS_PREVIEW	WHERE CATE_NO = #{cateNo} AND CONTENTS_LOC = #{contentsLoc}
+			        <if test="contentsLoc != null and contentsLoc != '' and contentsLoc != 'SMM007'">
+			            <if test="brandGroupNo != null and brandGroupNo !=''">
+			                AND BRAND_GROUP_NO = #{brandGroupNo}
+			            </if>
+			        </if>
+			    ) TMP)
 			,#{imgPath1}
 			,#{imgPath2}
 			,#{imgPath3}
@@ -1499,7 +1468,7 @@
 			,#{subText3}
 			,#{subText4}
 			,#{html}
-			,#{brandGroupNo}
+			,CASE WHEN #{brandGroupNo} = '' THEN NULL ELSE #{brandGroupNo} END
 			,#{brandGroupImg}
 			,#{mdTitle}
 			,#{useYn}
@@ -1654,7 +1623,7 @@
 
 	<delete id="deleteContentsGoodsTemp" parameterType="Contents">
 		/* TsaDisplay.deleteContentsGoodsTemp */
-		DELETE FROM TMP_CONTENTS_GOODS
+		DELETE FROM TB_CONTENTS_GOODS
 		WHERE 1=1
 		<if test="cateNo != null and cateNo != ''">
 		AND CATE_NO = #{cateNo}
@@ -1665,7 +1634,7 @@
 
 	<insert id="saveContentsGoodsTemp" parameterType="Contents">
 		/* TsaDisplay.saveContentsGoodsTemp */
-		INSERT INTO TMP_CONTENTS_GOODS
+		INSERT INTO TB_CONTENTS_GOODS
 		(
 		    BRAND_GROUP_NO
 		    ,CATE_NO
@@ -1684,28 +1653,38 @@
 		(
 		     IFNULL(NULLIF(#{brandGroupNo},''),0)
 		    ,#{cateNo}
-		    ,(SELECT LEAF_CATE_NO FROM (SELECT	LEAF_CATE_NO
+		    ,IFNULL((SELECT LEAF_CATE_NO FROM (SELECT	LEAF_CATE_NO
 		                                FROM	TB_CATE_4SRCH
 		                                WHERE	1=1
 		                                <if test="cateNo != null and cateNo != ''">
 		                                AND     CATE1_NO = #{cateNo}
 		                                </if>
-		                                AND		CONTENTS_LOC = #{contentsLoc}) TMP)
+		                                AND		CONTENTS_LOC = #{contentsLoc}) TMP),0)
 		    ,#{contentsLoc}
 		    ,#{preContentsSq}
 		    ,#{contentsSq}
 		    ,#{goodsCd}
-		    ,#{goodsNm}
-		    ,#{imgPath1}
+		    ,IFNULL(#{goodsNm},'')
+		    ,IFNULL(#{imgPath1},'')
+		    <choose>
+				<when test="dispOrd != null and dispOrd != ''">
+			,#{dispOrd}
+				</when>
+				<otherwise>
 		    ,(SELECT DISP_ORD FROM (SELECT IFNULL((MAX(DISP_ORD) + 1), 1) AS DISP_ORD
-		                            FROM	TMP_CONTENTS_GOODS
+		                            FROM	TB_CONTENTS_GOODS
 		                            WHERE 1=1
 		                            <if test="cateNo != null and cateNo != ''">
 		                            AND CATE_NO = #{cateNo}
 		                            </if>
 		                            AND CONTENTS_LOC = #{contentsLoc}
 		                            AND CONTENTS_SQ = #{contentsSq}
+		                            <if test="brandGroupNo != null and brandGroupNo != ''">
+		                            AND BRAND_GROUP_NO = #{brandGroupNo}
+		                            </if>
 		                        ) TMP)
+				</otherwise>
+			</choose>
 		    ,#{regNo}
 		    ,NOW()
 		)
@@ -1742,7 +1721,7 @@
 		                   , DISP_ORD
 		                   , #{regNo} AS REG_NO
 		                   , NOW()
-		              FROM TMP_CONTENTS_GOODS
+		              FROM TB_CONTENTS_GOODS
 		              WHERE 1=1
 		              <if test="cateNo != null and cateNo != ''">
 		              AND CATE_NO = #{cateNo}
@@ -1892,6 +1871,7 @@
 				  AND	BRAND_GROUP_NO = #{brandGroupNo}
 			  </if>
 		  </if>
+		ORDER BY DISP_ORD
 		;
 	</select>
 
@@ -1955,4 +1935,22 @@
 			</if>
 		</if>
 	</insert>
+
+	<select id="getContentsForGoodsList" parameterType="Contents" resultType="Goods">
+		/* TsaDisplay.getContentsForGoodsList */
+		SELECT CG.GOODS_CD
+		     , G.GOODS_NM
+		     , GI.SYS_IMG_NM
+		     , CG.DISP_ORD AS CONTENTS_DISP_ORD
+		FROM TB_CONTENTS_GOODS CG
+		JOIN TB_GOODS G ON CG.GOODS_CD = G.GOODS_CD
+		JOIN TB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD AND G.MAIN_COLOR_CD = COLOR_CD AND GI.DEFAULT_IMG_YN = 'Y'
+		WHERE 1=1
+		<if test="contentsLoc != 'SMM012'">
+		AND CG.CATE_NO = #{cateNo}
+		</if>
+		AND CG.CONTENTS_LOC = #{contentsLoc}
+		AND CG.CONTENTS_SQ = #{dispOrd}
+		ORDER BY CG.BRAND_GROUP_NO , CG.CATE_NO ,CG.LEAF_CATE_NO ,CG.CONTENTS_LOC ,CG.PRE_CONTENTS_SQ , CG.CONTENTS_SQ , CG.DISP_ORD
+	</select>
 </mapper>

+ 37 - 41
src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -534,28 +534,28 @@
 		              <when test='search != null and search == "searchGoodsCd"'>
 		        AND (
 		              <foreach collection="conditionList" item="item" index="index" separator="or">
-		               UPPER(G.GOODS_CD) LIKE CONCAT('%',UPPER(#{item}),'%') 
+		               UPPER(G.GOODS_CD) LIKE CONCAT(UPPER(#{item}),'%') 
 		              </foreach>
 		             )
 		              </when>
 		              <when test='search != null and search == "searchGoodsNm"'>
 		        AND (
 		              <foreach collection="conditionList" item="item" index="index" separator="or">
-		               UPPER(G.GOODS_NM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		               UPPER(G.GOODS_NM) LIKE CONCAT(UPPER(#{item}),'%') 
 		              </foreach>
 		             )
 		              </when>
 		               <when test='search != null and search == "searchGoodsNum"'>
 		        AND (
 		              <foreach collection="conditionList" item="item" index="index" separator="or">
-		               UPPER(G.GOODS_NUM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		               UPPER(G.GOODS_NUM) LIKE CONCAT(UPPER(#{item}),'%') 
 		              </foreach>
 		             )
 		              </when>
 		              <when test='search != null and search == "searchSupplyGoodsCd"'>
 		        AND (
 		              <foreach collection="conditionList" item="item" index="index" separator="or">
-		               UPPER(G.SUPPLY_GOODS_CD) LIKE CONCAT('%',UPPER(#{item}),'%')
+		               UPPER(G.SUPPLY_GOODS_CD) LIKE CONCAT(UPPER(#{item}),'%') 
 		              </foreach>
 		             )
 		              </when>
@@ -571,7 +571,7 @@
 		            </choose>
 		        </if>
 		        <if test="goodsCd != null and goodsCd != ''">
-		        AND UPPER(G.GOODS_CD) LIKE CONCAT('%',UPPER(#{goodsCd}),'%')
+		        AND UPPER(G.GOODS_CD) LIKE CONCAT(UPPER(#{goodsCd}),'%')
 		        </if>
 		        <if test="arrGoodsCd != null and arrGoodsCd.length>0">
 		        AND UPPER(G.GOODS_CD) IN
@@ -580,7 +580,7 @@
 		            </foreach>
 		        </if>
 		         <if test="goodsNm != null and goodsNm != ''">
-		        AND UPPER(G.GOODS_NM) LIKE CONCAT('%',UPPER(#{goodsNm}),'%')
+		        AND UPPER(G.GOODS_NM) LIKE CONCAT(UPPER(#{goodsNm}),'%')
 		        </if>
 		        <if test="goodsType != null and goodsType != ''">
 		        AND G.GOODS_TYPE = #{goodsType}
@@ -625,17 +625,13 @@
 		            </foreach>
 		        </if>
 		        <if test="styleYear != null and styleYear != ''">
-		        AND G.STYLE_YEAR = (SELECT CD_NM FROM TB_COMMON_CODE WHERE CD = #{styleYear} AND CD_GB='G023')
+		        AND G.STYLE_YEAR = #{styleYear}
 		        </if>
 		        <if test="multiStyleYear != null and multiStyleYear != ''">
-		        AND G.STYLE_YEAR IN (SELECT CD_NM 
-		                             FROM TB_COMMON_CODE 
-		                             WHERE CD_GB='G023' 
-		                             AND CD IN 
-		                             <foreach collection="multiStyleYear" item="item" index="index"  open="(" close=")" separator=",">
-		                             #{item}
-		                             </foreach>
-		                             )
+		        AND G.STYLE_YEAR IN 
+		             <foreach collection="multiStyleYear" item="item" index="index"  open="(" close=")" separator=",">
+		             #{item}
+		             </foreach>
 		        </if>
 		        <if test="seasonCd != null and seasonCd != ''">
 		        AND G.SEASON_CD = #{seasonCd}
@@ -1988,7 +1984,7 @@
 		                               AND GR.APPLY_EDDT >= NOW() 
 		    </if>
 		    <if test="goodsTnmRes != null and goodsTnmRes != ''">
-		                               AND UPPER(GR.GOODS_TNM) LIKE CONCAT('%',UPPER(#{goodsTnmRes}),'%')
+		                               AND UPPER(GR.GOODS_TNM) LIKE CONCAT(UPPER(#{goodsTnmRes}),'%')
 		    </if>
 		</if>
 		<if test="searchGb != null and searchGb =='EXCEL'">
@@ -2063,7 +2059,7 @@
 		                                       AND GR.APPLY_EDDT >= NOW() 
 		            </if>
 		            <if test="goodsTnmRes != null and goodsTnmRes != ''">
-		                                       AND UPPER(GR.GOODS_TNM) LIKE CONCAT('%',UPPER(#{goodsTnmRes}),'%')
+		                                       AND UPPER(GR.GOODS_TNM) LIKE CONCAT(UPPER(#{goodsTnmRes}),'%')
 		            </if>
 		        </if>
 		        <if test="searchGb != null and searchGb =='EXCEL'">
@@ -2572,7 +2568,7 @@
 		AND A.USE_YN = #{useYn}
 		</if>
 		<if test="noticeTitle != null and noticeTitle !=''">
-		AND LOWER(A.NOTICE_TITLE) LIKE CONCAT('%',LOWER(#{noticeTitle}),'%')
+		AND LOWER(A.NOTICE_TITLE) LIKE CONCAT(LOWER(#{noticeTitle}),'%')
 		</if>
 		<if test='conditionList != null and conditionList.length>0'>
 		AND A.NOTICE_SQ IN (
@@ -2586,22 +2582,22 @@
 		    <choose>
 		      <when test='search != null and search == "searchGoodsCd"'>
 		          <foreach collection="conditionList" item="item" index="index" separator="or">
-		       UPPER(G.GOODS_CD) LIKE CONCAT('%',UPPER(#{item}),'%') 
+		       UPPER(G.GOODS_CD) LIKE CONCAT(UPPER(#{item}),'%') 
 		          </foreach>
 		      </when>
 		      <when test='search != null and search == "searchGoodsNm"'>
 		          <foreach collection="conditionList" item="item" index="index" separator="or">
-		       UPPER(G.GOODS_NM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		       UPPER(G.GOODS_NM) LIKE CONCAT(UPPER(#{item}),'%') 
 		          </foreach>
 		      </when>
 		      <when test='search != null and search == "searchGoodsNum"'>
 		          <foreach collection="conditionList" item="item" index="index" separator="or">
-		       UPPER(G.GOODS_NUM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		       UPPER(G.GOODS_NUM) LIKE CONCAT(UPPER(#{item}),'%') 
 		          </foreach>
 		      </when>
 		      <when test='search != null and search == "searchSupplyGoodsCd"'>
 		          <foreach collection="conditionList" item="item" index="index" separator="or">
-		       UPPER(G.SUPPLY_GOODS_CD) LIKE CONCAT('%',UPPER(#{item}),'%')
+		       UPPER(G.SUPPLY_GOODS_CD) LIKE CONCAT(UPPER(#{item}),'%') 
 		          </foreach>
 		      </when>
 		    </choose>
@@ -2921,9 +2917,9 @@
 		</if>
 		<if test='brandEnm != null and brandEnm != "" '>
 		AND (
-		     D.BRAND_ENM LIKE #{brandEnm}||'%'
+		     D.BRAND_ENM LIKE CONCAT(#{brandEnm},'%')
 		     OR
-		     D.BRAND_KNM LIKE #{brandEnm}||'%'
+		     D.BRAND_KNM LIKE CONCAT(#{brandEnm},'%')
 		    )
 		</if>
 		<if test='stDate != null and stDate != "" '>
@@ -2969,7 +2965,7 @@
 		           #{videoSq}
 		         , #{goodsCd}
 		         , #{videoGb}
-		         , #{kmcKey}
+		         , CASE WHEN LENGTH(#{kmcKey}) = 0 THEN NULL ELSE #{kmcKey} END
 		         , #{kufKey}
 		         , #{dispYn}
 		         , #{regNo}
@@ -2989,7 +2985,7 @@
 		UPDATE TB_GOODS_VIDEO SET
 		           DISP_YN = #{dispYn}
 		         , VIDEO_GB = #{videoGb}
-		         , KMC_KEY = #{kmcKey}
+		         , KMC_KEY = CASE WHEN LENGTH(#{kmcKey}) = 0 THEN NULL ELSE #{kmcKey} END
 		         , UPD_NO = #{updNo}
 		         , UPD_DT = NOW()
 		WHERE VIDEO_SQ = #{videoSq}
@@ -3062,7 +3058,7 @@
 		    INNER JOIN TB_SUPPLY_COMPANY S ON G.SUPPLY_COMP_CD = S.SUPPLY_COMP_CD
 		    WHERE 1 = 1
 		    <if test="goodsCd != null and goodsCd != ''">
-		    AND UPPER(G.GOODS_CD) LIKE CONCAT('%',UPPER(#{goodsCd}),'%') 
+		    AND UPPER(G.GOODS_CD) LIKE CONCAT(UPPER(#{goodsCd}),'%') 
 		    </if>
 		    <if test="supplyCompCd != null and supplyCompCd != ''">
 		    AND G.SUPPLY_COMP_CD = #{supplyCompCd}
@@ -3399,7 +3395,7 @@
 		AND A.USE_YN = #{useYn}
 		</if>
 		<if test="adKeyword != null and adKeyword !=''">
-		AND LOWER(A.AD_KEYWORD) LIKE CONCAT('%',LOWER(#{adKeyword}),'%')
+		AND LOWER(A.AD_KEYWORD) LIKE CONCAT(LOWER(#{adKeyword}),'%')
 		</if>
 		<if test='goodsCd != null and goodsCd != "" '>
 		AND A.AD_KEYWORD_SQ IN (
@@ -3520,10 +3516,10 @@
 		<if test='condition != null and condition != "" '>
 		    <choose>
 		        <when test='search != null and search == "searchGoodsNm"'>
-		AND UPPER(G.GOODS_NM) LIKE  CONCAT('%',UPPER(#{condition}),'%')
+		AND UPPER(G.GOODS_NM) LIKE  CONCAT(UPPER(#{condition}),'%')
 		        </when>
 				<when test='search != null and search == "searchGoodsCd"'>
-		AND UPPER(G.GOODS_CD) LIKE  CONCAT('%',UPPER(#{condition}),'%')
+		AND UPPER(G.GOODS_CD) LIKE  CONCAT(UPPER(#{condition}),'%')
 				</when>
 		    </choose>
 		</if>
@@ -3609,10 +3605,10 @@
 		              <if test='condition != null and condition != "" '>
 		                  <choose>
 		                      <when test='search != null and search == "searchGoodsNm"'>
-		              AND UPPER(G.GOODS_NM) LIKE  CONCAT('%',UPPER(#{condition}),'%')
+		              AND UPPER(G.GOODS_NM) LIKE  CONCAT(UPPER(#{condition}),'%')
 		                      </when>
 		                      <when test='search != null and search == "searchGoodsCd"'>
-		              AND UPPER(G.GOODS_CD) LIKE  CONCAT('%',UPPER(#{condition}),'%')
+		              AND UPPER(G.GOODS_CD) LIKE  CONCAT(UPPER(#{condition}),'%')
 		                      </when>
 		                  </choose>
 		              </if>
@@ -3743,7 +3739,7 @@
 		      <when test='search != null and search == "searchGoodsNm"'>
 		AND (
 		      <foreach collection="conditionList" item="item" index="index" separator="or">
-		       UPPER(G.GOODS_NM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		       UPPER(G.GOODS_NM) LIKE CONCAT(UPPER(#{item}),'%')
 		      </foreach>
 		     )
 		      </when>
@@ -3795,9 +3791,9 @@
 		                           AND B.SELF_YN  = 'Y'
 		                           AND B.USE_YN  = 'Y'
 		INNER JOIN TB_BRAND_SUPPLY S ON B.BRAND_CD = S.BRAND_CD
-		WHERE GOODS_REG_GB IS NULL                                     /* 온라인 미등록 상품 */
+		WHERE NULLIF(GOODS_REG_GB,'') IS NULL                                     /* 온라인 미등록 상품 */
 		<if test="modelNo != null and modelNo != ''">
-		AND UPPER(A.MODEL_NO) LIKE CONCAT('%',UPPER(#{modelNo}),'%') 
+		AND UPPER(A.MODEL_NO) LIKE CONCAT(UPPER(#{modelNo}),'%') 
 		</if>
 		<if test="stDate != null and stDate != ''">
 		AND A.REG_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
@@ -3847,9 +3843,9 @@
 		                           AND B.SELF_YN  = 'Y'
 		                           AND B.USE_YN  = 'Y'
 		INNER JOIN TB_BRAND_SUPPLY S ON B.BRAND_CD = S.BRAND_CD
-		WHERE GOODS_REG_GB IS NULL   /* 온라인 미등록 상품 */
+		WHERE NULLIF(GOODS_REG_GB,'') IS NULL   /* 온라인 미등록 상품 */
 		<if test="modelNo != null and modelNo != ''">
-		AND UPPER(A.MODEL_NO) LIKE CONCAT('%',UPPER(#{modelNo}),'%') 
+		AND UPPER(A.MODEL_NO) LIKE CONCAT(UPPER(#{modelNo}),'%') 
 		</if>
 		<if test="stDate != null and stDate != ''">
 		AND A.REG_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
@@ -3938,7 +3934,7 @@
 		        <if test="goodsCds != null and goodsCds != ''">
 		        AND    (
 		                <foreach collection="goodsCds" item="item" index="index" separator="or">
-		                UPPER(GOODS_CD) LIKE CONCAT('%',UPPER(#{item}),'%') 
+		                UPPER(GOODS_CD) LIKE CONCAT(UPPER(#{item}),'%') 
 		                </foreach>
 		               )
 		        </if>
@@ -4419,11 +4415,11 @@
 		-- LEFT OUTER JOIN TB_GOODS B ON A.GOODS_CD = B.GOODS_CD
 		WHERE 1 = 1 
 		<if test='condition != null and condition != "" '>
-		AND (UPPER(A.GOODS_NUM) LIKE CONCAT('%',UPPER(#{condition}),'%')
+		AND (UPPER(A.GOODS_NUM) LIKE CONCAT(UPPER(#{condition}),'%')
 		     OR 
-		     UPPER(A.GOODS_CD) LIKE CONCAT('%',UPPER(#{condition}),'%')
+		     UPPER(A.GOODS_CD) LIKE CONCAT(UPPER(#{condition}),'%')
 		     OR 
-		     UPPER(A.SUPPLY_GOODS_CD) LIKE CONCAT('%',UPPER(#{condition}),'%')
+		     UPPER(A.SUPPLY_GOODS_CD) LIKE CONCAT(UPPER(#{condition}),'%')
 		    )
 		</if>
 		<if test='regSuccYn != null and regSuccYn != "" '>

+ 18 - 4
src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml

@@ -776,9 +776,10 @@
 	<select id="getPlanGoodsList" parameterType="Plan" resultType="Plan">
 		/* TsaPlan.getPlanGoodsList */
 		SELECT Q.*
-		    , (CASE WHEN Q.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = Q.GOODS_CD) 
-		            ELSE (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_COMPOSE WHERE GOODS_CD = Q.GOODS_CD) 
-		            END) AS STOCK_QTY_SUM
+		   -- , (CASE WHEN Q.GOODS_TYPE = 'G056_N' THEN (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = Q.GOODS_CD) 
+		   --         ELSE (SELECT IFNULL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_COMPOSE WHERE GOODS_CD = Q.GOODS_CD) 
+		   --         END) AS STOCK_QTY_SUM
+		    , IFNULL((SELECT STOCK_QTY FROM TB_GOODS_STOCK WHERE GOODS_CD = Q.GOODS_CD),0) AS STOCK_QTY_SUM
 		    , FN_GET_USER_NM(REG_NO) AS REG_NM
 		    , FN_GET_USER_NM(UPD_NO) AS UPD_NM
 		    , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = Q.GOODS_CD AND COLOR_CD = Q.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
@@ -1488,7 +1489,7 @@
 	
 	<!-- 기획전 카테고리 목록 -->
 	<select id="getPlanningCategoryList" parameterType="Plan" resultType="Plan">
-		/* TssPlan.getPlanningCategoryList */
+		/* TsaPlan.getPlanningCategoryList */
 		SELECT C.CATE1_NO AS CATE_NO            /*카테고리번호*/
 		     , C.CATE1_NM AS CATE_NM /*카테고리명*/
 		FROM TB_CATE1 C
@@ -1497,6 +1498,19 @@
 		AND    C.CATE_TYPE = 'G031_10' /*상품카테고리*/
 		AND    C.DISP_YN = 'Y' /*전시하는 카테고리*/
 	</select>
+	
+	<select id="getPlanAttendCoupon" parameterType="Plan" resultType="Plan">
+		/* TsaPlan.getPlanAttendCoupon */
+		SELECT C.CPN_ID 
+		      ,C.CPN_NM 
+		      ,C.CPN_STAT 
+		FROM TB_COUPON C
+		WHERE 1=1
+		AND C.CPN_ID = #{cpnId}
+		AND C.CPN_TYPE IN ('G230_11' ,'G230_12','G230_13','G230_30')
+		AND C.CPN_STAT = 'G232_11'
+		AND NOW() <![CDATA[<=]]> IF (C.PD_GB = 'D', CONCAT(CURRENT_DATE + INTERVAL C.AVAIL_DAYS DAY, ' 23:59:59'), C.AVAIL_EDDT)
+	</select>
 </mapper>
 
 

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

@@ -26,6 +26,9 @@
 		/* TsaRenderer.getCommonCodeList */
 		SELECT CD
 		     , CD_NM
+		<if test="cdGb != null and cdGb != '' and cdGb == 'G028'">
+		     , CD_DESC
+		</if>
 		FROM   TB_COMMON_CODE
 		WHERE  1 = 1
 		<if test="useYn != null and useYn != ''">

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

@@ -182,7 +182,7 @@
 		     , CUST_NO
 		     , #{gvPntAmt}                      AS GV_PNT_AMT
 		     , 0                                AS US_PNT_AMT
-		     , 0                                AS RM_PNT_AMT
+		     , #{rmPntAmt}                      AS RM_PNT_AMT
 		     , DATE_ADD(NOW(), INTERVAL 1 YEAR) AS EXP_BE_DT
 		     , NULL                             AS EXP_CMP_DT
 		     , #{regNo}                         AS REG_NO
@@ -272,7 +272,7 @@
 		     , CUST_NO
 		     , #{gvPntAmt}                      AS GV_PNT_AMT
 		     , 0                                AS US_PNT_AMT
-		     , 0                                AS RM_PNT_AMT
+		     , #{rmPntAmt}                      AS RM_PNT_AMT
 		     , DATE_ADD(NOW(), INTERVAL 1 YEAR) AS EXP_BE_DT
 		     , NULL                             AS EXP_CMP_DT
 		     , #{regNo}                         AS REG_NO

+ 17 - 6
src/main/java/com/style24/persistence/mybatis/shop/TsaSocial.xml

@@ -199,13 +199,24 @@
 	<!-- 진행중인 소셜 확인 -->
 	<select id="getSocialGoOffCount" parameterType="Social" resultType="int">
 		SELECT COUNT(*)
-		FROM tb_social A
+		FROM TB_SOCIAL A
 		WHERE 1=1
-			AND A.USE_YN = 'Y'
-			AND A.APPLY_GB = 'A'
-			AND A.SOCIAL_SQ != #{socialSq}
-			AND  (A.SOCIAL_STDT <![CDATA[ <= ]]>  DATE_FORMAT(DATE_ADD(#{socialStdt}, INTERVAL 0 DAY), '%Y%m%d%H%i%S')  
-			OR A.SOCIAL_EDDT <![CDATA[ >= ]]>  DATE_FORMAT(DATE_ADD(#{socialStdt}, INTERVAL 0 DAY), '%Y%m%d%H%i%S'))  
+		AND A.USE_YN = 'Y'
+		<if test='frontGb == "P"'> <!-- PC웹 -->
+		    AND A.FRONT_GB IN ('A','P')
+		</if>
+		<if test='frontGb == "M"'> <!-- 모바일 -->
+		    AND A.FRONT_GB IN ('A','M')
+		</if> 
+		<if test='frontGb == "A"'> <!-- 전체 -->
+		    AND A.FRONT_GB IN ('A','M','P')
+		</if> 
+		AND A.APPLY_GB IN ('A', #{applyGb})
+		<if test="socialSq != null and socialSq != ''">
+		AND A.SOCIAL_SQ != #{socialSq}
+		</if>
+		AND A.SOCIAL_STDT <![CDATA[ <= ]]> DATE_FORMAT(#{socialStdt} , '%Y-%m-%d %H:%i:%S')
+		AND A.SOCIAL_EDDT <![CDATA[ >= ]]> DATE_FORMAT(#{socialStdt} , '%Y-%m-%d %H:%i:%S');
 	</select>
 	
 	

+ 12 - 16
src/main/java/com/style24/persistence/mybatis/shop/TsaStock.xml

@@ -9,28 +9,28 @@
 		              <when test='search != null and search == "searchGoodsCd"'>
 		        AND (
 		              <foreach collection="conditionList" item="item" index="index" separator="or">
-		               UPPER(G.GOODS_CD) LIKE CONCAT('%',UPPER(#{item}),'%') 
+		               UPPER(G.GOODS_CD) LIKE CONCAT(#{item},'%') 
 		              </foreach>
 		             )
 		              </when>
 		              <when test='search != null and search == "searchGoodsNm"'>
 		        AND (
 		              <foreach collection="conditionList" item="item" index="index" separator="or">
-		               UPPER(G.GOODS_NM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		               UPPER(G.GOODS_NM) LIKE CONCAT(#{item},'%')
 		              </foreach>
 		             )
 		              </when>
 		              <when test='search != null and search == "searchGoodsNum"'>
 		        AND (
 		              <foreach collection="conditionList" item="item" index="index" separator="or">
-		               UPPER(G.GOODS_NUM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		               UPPER(G.GOODS_NUM) LIKE CONCAT(#{item},'%')
 		              </foreach>
 		             )
 		              </when>
 		              <when test='search != null and search == "searchSupplyGoodsCd"'>
 		        AND (
 		              <foreach collection="conditionList" item="item" index="index" separator="or">
-		               UPPER(G.SUPPLY_GOODS_CD) LIKE CONCAT('%',UPPER(#{item}),'%')
+		               UPPER(G.SUPPLY_GOODS_CD) LIKE CONCAT(#{item},'%')
 		              </foreach>
 		             )
 		              </when>
@@ -41,15 +41,15 @@
 		        AND 1 = 1
 		              </when>
 		              <otherwise>
-		        AND UPPER(G.REG_ID) LIKE CONCAT('%',UPPER(#{item}),'%')
+		        AND UPPER(G.REG_ID) LIKE CONCAT(#{item},'%')
 		              </otherwise>
 		            </choose>
 		        </if>
 		        <if test="goodsCd != null and goodsCd != ''">
-		        AND UPPER(G.GOODS_CD) LIKE CONCAT('%',UPPER(#{goodsCd}),'%')
+		        AND UPPER(G.GOODS_CD) LIKE CONCAT(#{goodsCd},'%')
 		        </if>
 		         <if test="goodsNm != null and goodsNm != ''">
-		        AND UPPER(G.GOODS_NM) LIKE CONCAT('%',UPPER(#{goodsNm}),'%')
+		        AND UPPER(G.GOODS_NM) LIKE CONCAT(#{goodsNm},'%')
 		        </if>
 		        <if test="goodsType != null and goodsType != ''">
 		        AND G.GOODS_TYPE = #{goodsType}
@@ -97,17 +97,13 @@
 		            </foreach>
 		        </if>
 		        <if test="styleYear != null and styleYear != ''">
-		        AND G.STYLE_YEAR = (SELECT CD_NM FROM TB_COMMON_CODE WHERE CD = #{styleYear} AND CD_GB='G023')
+		        AND G.STYLE_YEAR = #{styleYear}
 		        </if>
 		        <if test="multiStyleYear != null and multiStyleYear != ''">
-		        AND G.STYLE_YEAR IN (SELECT CD_NM 
-		                             FROM TB_COMMON_CODE 
-		                             WHERE CD_GB='G023' 
-		                             AND CD IN 
-		                             <foreach collection="multiStyleYear" item="item" index="index"  open="(" close=")" separator=",">
-		                             #{item}
-		                             </foreach>
-		                             )
+		        AND G.STYLE_YEAR IN  
+		            <foreach collection="multiStyleYear" item="item" index="index"  open="(" close=")" separator=",">
+		            #{item}
+		            </foreach>
 		        </if>
 		        <if test="seasonCd != null and seasonCd != ''">
 		        AND G.SEASON_CD = #{seasonCd}

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

@@ -219,6 +219,7 @@
 							, B.QTY
 							, B.REASON_CODE
 							, O.MALL_GB
+							, A.COD_FEE
 						  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 
@@ -513,6 +514,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
 		  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 

+ 9 - 6
src/main/resources/config/application-locd.yml

@@ -67,12 +67,6 @@ mail:
     image.url: http://ldfront.style24.com/image/mailing
     template.path: /WIDE/workspace/webapps/style24/STYLE24/style24.admin/src/main/webapp/WEB-INF/mail
 
-# ERP (한세드림)
-erp:
-   api:
-       stock.url: http://erp.hansaemk.com:96/api/hsdr/Shop/GoodsInfo
-       goods.url: http://erp.hansaemk.com:96/api/hsdr/Shop
-
 # PG
 pg:
     kcp:
@@ -97,3 +91,12 @@ naverPay:
     payUrl:
         web : test-pay.naver.com
         mob : test-m.pay.naver.com
+    shop.id : istyle24
+    button.key : 3A1578F9-6824-4FCF-AC8D-262318C63227
+    button.pc.js.url : https://test-pay.naver.com/customer/js/naverPayButton.js
+    button.mobile.js.url : https://test-pay.naver.com/customer/js/mobile/naverPayButton.js
+    common.certification.key : s_3799db3bf4af-
+    certification.key: E3122594-C690-4542-B3A0-E74ABD4E8222
+    order.api.url: https://test-api.pay.naver.com/o/customer/api/order/v20/register
+    order.pc.url: https://test-order.pay.naver.com/customer/buy/
+    order.mobile.url: https://test-m.pay.naver.com/o/customer/buy/

+ 41 - 36
src/main/resources/config/application.yml

@@ -42,38 +42,49 @@ speedy:
         port: 21
         username: speedy_image-wivismall
         pwd: wZ31jS_!@
-        
+
+# 네이버페이 API
+naverPay:
+    partnerId: np_ktptw906068
+    clientId: 8TSWSyJMMUvOLKUySQx6
+    clientSecret: oGXnO7cMD1
+    paymentReadyUrl: /naverpay/payments/v2/reserve
+    paymentRedirectUrl: /order/naver/payment/request
+    approvePaymentUrl: /naverpay/payments/v2/apply/payment
+    paymentOrderUrl: /naverpay/payments/v2/list/history
+    cancelPaymentUrl: /naverpay/payments/v1/cancel
+
 #카카오 API
 kakao:
-  # 카카오페이 운영정보
-  #    cid : 운영cid정보 없음
-  #    appId: 442702
-  #    appName: 아이스타일24
-  #    companyName: 예스이십사
-  #    nativeAppKey: 5d97db2ee36fa0e121d962b2531ae0c1
-  #    restApiKey: 46d601394bd887cbada3cf00fdddef54
-  #    javascriptKey: b3c9ee69171042c3637e8d714a4c8a75
-  #    adminKey: 7cc33b2ef96d785c4caf3376f9dc9254
-  # 카카오페이 운영정보
-  cid : TC0ONETIME
-  appId : 399207
-  appName : 구축용 테스트앱
-  companyName : 예스이십사
-  nativeAppKey : f961e612e07b47aa2d1884714518a194
-  restApiKey: b3955cef0328a09156c7e25f18552164
-  javascriptKey : 06cab652ad5d25be2190388d11a88fa4
-  adminKey : a25ca74dde640f3a63a8d8442fe35fcd
-  addressApiRequestUrl : https://dapi.kakao.com/v2/local/search/address.json?page=1&query=
-  login.callbackUrl: /signin/snsLoginCallback?snsType=KK
-  tokenUrl: https://kauth.kakao.com/oauth/token
-  userInfoUrl: https://kapi.kakao.com/v2/user/me
-  authorizeUrl: https://kauth.kakao.com/oauth/authorize
-  unlinkUrl : https://kapi.kakao.com/v1/user/unlink
-  paymentReadyUrl : https://kapi.kakao.com/v1/payment/ready
-  paymentRedirectUrl : /order/kakao/payment/request
-  approvePaymentUrl : https://kapi.kakao.com/v1/payment/approve
-  paymentOrderUrl : https://kapi.kakao.com/v1/payment/order
-  cancelPaymentUrl : https://kapi.kakao.com/v1/payment/cancel
+    # 카카오페이 운영정보
+    #    cid : 운영cid정보 없음
+    #    appId: 442702
+    #    appName: 아이스타일24
+    #    companyName: 예스이십사
+    #    nativeAppKey: 5d97db2ee36fa0e121d962b2531ae0c1
+    #    restApiKey: 46d601394bd887cbada3cf00fdddef54
+    #    javascriptKey: b3c9ee69171042c3637e8d714a4c8a75
+    #    adminKey: 7cc33b2ef96d785c4caf3376f9dc9254
+    # 카카오페이 운영정보
+    cid : TC0ONETIME
+    appId : 399207
+    appName : 구축용 테스트앱
+    companyName : 예스이십사
+    nativeAppKey : f961e612e07b47aa2d1884714518a194
+    restApiKey: b3955cef0328a09156c7e25f18552164
+    javascriptKey : 06cab652ad5d25be2190388d11a88fa4
+    adminKey : a25ca74dde640f3a63a8d8442fe35fcd
+    addressApiRequestUrl : https://dapi.kakao.com/v2/local/search/address.json?page=1&query=
+    login.callbackUrl: /signin/snsLoginCallback?snsType=KK
+    tokenUrl: https://kauth.kakao.com/oauth/token
+    userInfoUrl: https://kapi.kakao.com/v2/user/me
+    authorizeUrl: https://kauth.kakao.com/oauth/authorize
+    unlinkUrl : https://kapi.kakao.com/v1/user/unlink
+    paymentReadyUrl : https://kapi.kakao.com/v1/payment/ready
+    paymentRedirectUrl : /order/kakao/payment/request
+    approvePaymentUrl : https://kapi.kakao.com/v1/payment/approve
+    paymentOrderUrl : https://kapi.kakao.com/v1/payment/order
+    cancelPaymentUrl : https://kapi.kakao.com/v1/payment/cancel
 
   
 # CJ대한통운
@@ -84,9 +95,3 @@ cj:
         tel1: 02
         tel2: 1544
         tel3: 4097
-
-# ERP (한세드림)
-erp:
-   api:
-       stock.url: http://erp.hansaemk.com:96/api/hsdr/Shop/GoodsInfo
-       goods.url: http://erp.hansaemk.com:96/api/hsdr/Shop

+ 2 - 10
src/main/webapp/WEB-INF/views/board/NoticeForm.html

@@ -91,16 +91,6 @@
 				<input type="hidden" name="noticeEddt"/> <!-- 공지종료일자 -->
 				
 				<table class="frmStyle" aria-describedby="등록/수정 폼">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-					</colgroup>
 					<tr>
 						<th>공지번호</th>
 						<td>
@@ -491,6 +481,8 @@
 		$('#detailForm input[name=noticeSq]').val('');
 		$('#detailForm input[name=noticeStdt]').val(_today);
 		$('#detailForm input[name=noticeEddt]').val(_today);
+		
+		gagaSn.setContents('#noticeContent', ''); 
 	});
 	
 	// 저장

+ 2 - 2
src/main/webapp/WEB-INF/views/customer/OneToOneQnaDetailForm.html

@@ -89,8 +89,8 @@
 							</td>
 							<th>첨부 이미지</th>
 							<td class="userImg">
-								<img th:if="${counselInfo.sysFileNm1 != null}" style="height: 100px;" th:src="${@environment.getProperty('domain.image') + '/counsel/' + counselInfo.sysFileNm1}" alt="" onerror='this.src="/image/no.png"'/>
-								<img th:if="${counselInfo.sysFileNm2 != null}" style="height: 100px;" th:src="${@environment.getProperty('domain.image') + '/counsel/' + counselInfo.sysFileNm2}" alt="" onerror='this.src="/image/no.png"'/>
+								<img th:if="${counselInfo.sysFileNm1 != null}" style="height: 100px;" th:src="${@environment.getProperty('domain.image') + '/' + counselInfo.sysFileNm1}" alt="" onerror='this.src="/image/no.png"'/>
+								<img th:if="${counselInfo.sysFileNm2 != null}" style="height: 100px;" th:src="${@environment.getProperty('domain.image') + '/' + counselInfo.sysFileNm2}" alt="" onerror='this.src="/image/no.png"'/>
 							</td>
 						</tr>
 					</tbody>

+ 4 - 4
src/main/webapp/WEB-INF/views/delivery/AssignPopupForm.html

@@ -14,7 +14,7 @@
  * 1.0  2020.04.19   moon       최초 작성
  *******************************************************************************
  -->
-	<div class="modalPopup" data-width="620">
+	<div class="modalPopup" data-width="700" data-height="800">
 		<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">
@@ -55,7 +55,7 @@
 		</ul>
 		<!-- 테이블 영역  영역 -->
 		
-		<div id="gridDelvLocList" style="width: 100%; height: 300px;" class="ag-theme-balham"></div>
+		<div id="gridDelvLocList" style="width: 100%; height: 500px;" class="ag-theme-balham"></div>
 		
 		<!-- 테이블 영역 -->
 		</div>
@@ -65,9 +65,9 @@
 /*<![CDATA[*/
 	var assignPopupColumnDefs = [
 		// group cell renderer needed for expand / collapse icons
-		{headerName: "출고처", 		field: "delvLocNm", width: 300, cellClass: 'text-center'},
+		{headerName: "출고처", 		field: "delvLocNm", width: 350, cellClass: 'text-center'},
 		{headerName: "출고처코드", 	field: "delvLocCd",	width: 100,	cellClass: 'text-center'},
-		{headerName: "수량",      	field: "stockQty", 	width: 60,	cellClass: 'text-center'},
+		{headerName: "수량",      	field: "stockQty", 	width: 100,	cellClass: 'text-center'},
 		{headerName: "출고거부여부",	field: "delvArGb",	width: 100, cellClass: 'text-center'}
 	];
 

+ 37 - 9
src/main/webapp/WEB-INF/views/delivery/BanGoodsRegistForm.html

@@ -15,7 +15,7 @@
  * 1.1  2020.11.23   moon        이미지관련 수정 
  *******************************************************************************
  -->
-	<div class="modalPopup" data-width="1200">
+	<div class="modalPopup" data-width="1200" data-height="800">
 		<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">
@@ -90,14 +90,14 @@
 					<td>
 						<select  name="popDelvLocCd" id="popDelvLocCd">
 							<option value="">[전체]</option>
-							<option th:if="${getDeliveryLocList}" th:each="oneData, status : ${getDeliveryLocList}" th:value="${oneData.Cd}" th:text="${oneData.cdNm}"></option>
+							
 						</select>
 					</td>
 				</tr>
 			</table>
 			</div>
 
-			<div id="gridBanGoodsList" style="width: 100%; height: 260px; padding-top:10PX;" class="ag-theme-balham"></div>
+			<div id="gridBanGoodsList" style="width: 100%; height: 500px; padding-top:10PX;" class="ag-theme-balham"></div>
 		
 		</form>
 		<!-- 버튼 배치 영역 -->
@@ -125,8 +125,8 @@
 		},
 		{headerName: "상품명",	field: "goodsNm",     width: 330, minWidth: 100},
 		{headerName: "상품코드",	field: "goodsCd",     width: 150, minWidth: 100, cellClass: 'text-center'},
-		{headerName: "컬러",	    field: "colorCd",     width: 100, minWidth: 100, cellClass: 'text-center'},
-		{headerName: "사이즈",	field: "sizeCd",      width: 100, minWidth: 100, cellClass: 'text-center'},
+		{headerName: "옵션1",	    field: "optCd1",     width: 100, minWidth: 100, cellClass: 'text-center'},
+		{headerName: "옵션2",		field: "optCd2",      width: 100, minWidth: 100, cellClass: 'text-center'},
 		{headerName: "상품상태",	field: "goodsStatNm", width: 150, minWidth: 100, cellClass: 'text-center'},
 	];
 
@@ -139,14 +139,35 @@
 
 	$(document).ready(function() {
 		gagaAgGrid.createGrid('gridBanGoodsList', popGridOptions);
+		
+		$('#goodsStat').val('G008_90');
 	});
 
+	
 	// 조회
 	var fnPopSearch = function() {
+
+		var supplyCompcd = $('#bangoodsRegistForm select[name=supplyCompCd]').val();
+		var searchTxt    = $('#bangoodsRegistForm input[name=searchTxt]').val();
+		
+		
+		if (gagajf.isNull(supplyCompcd) && gagajf.isNull(searchTxt)) {
+			mcxDialog.alert("업체를 선택 또는 상풐코드(상품명)을 입력해주세요!");
+			 $("#bangoodsRegistForm select[name=supplyCompCd]").focus();
+			return;
+		}
+		
 		var formId = '#bangoodsRegistForm';
-		gagaAgGrid.fetch($(formId).prop('action'), popGridOptions, formId);
+		var dd = gagaAgGrid.fetch($(formId).prop('action'), popGridOptions, formId,fnPopCallback);
+	}
+	// 조회 콜백 
+	var fnPopCallback = function(data){
+		var supplyCompcd = $('#bangoodsRegistForm select[name=supplyCompCd]').val();
+ 		if(gagajf.isNull(supplyCompcd)){
+ 			$('#bangoodsRegistForm select[name=supplyCompCd]').val(data[0].supplyCompCd);
+ 			$('#bangoodsRegistForm select[name=supplyCompCd]').trigger('change');
+		} 
 	}
-
 	// 저장
  	$('#btnBangoodsSave').on('click', function() {
 
@@ -189,8 +210,8 @@
 	                var param = new Object;
 
 	                param.goodsCd     = item.goodsCd;
-	                param.colorCd     = item.colorCd;
-	                param.sizeCd      = item.sizeCd;
+	                param.optCd1      = item.optCd1;
+	                param.optCd2      = item.optCd2;
 	                param.delvBanStdt = delvBanStdt;
 	                param.delvBanEddt = delvBanEddt;
 	                param.delvLocCd   = delvLocCd;
@@ -209,6 +230,13 @@
 	$('#bangoodsRegistForm select[name=supplyCompCd]').on('change', function() {
 		var actionUrl = '/renderer/supplyCompany/brand/list/'+ $(this).val();
 		cfnCreateCombo(actionUrl, $('#bangoodsRegistForm select[name=brandCd]'), "[전체]");
+		
+		var actionUrl2 = '/renderer/delvloc/list/'+ $(this).val();	
+
+		cfnCreateCombo(actionUrl2, $('#bangoodsRegistForm select[name=popDelvLocCd]'), "[전체]");
+		
+
+		
 	});
 
 /*]]>*/

+ 37 - 9
src/main/webapp/WEB-INF/views/delivery/BangoodsListForm.html

@@ -39,9 +39,9 @@
 					<table class="frmStyle">
 						<colgroup>
 							<col style="width:8%;"/>
-							<col style="width:12%;"/>
+							<col style="width:30%;"/>
 							<col style="width:8%;"/>
-							<col style="width:12%;"/>
+							<col style="width:30%;"/>
 						</colgroup>
 						<tr>
 							<th class="dashR">업체/브랜드</th>
@@ -75,7 +75,8 @@
 							</td>
 							<th class="dashR">삭제여부</th>
 							<td class="dashR">
-								<select name="delYn" id="delYn">
+								<select name="delYn" id="delYn" class="w80">
+									<option value="">전체</option>
 									<option value="N">N</option>
 									<option value="Y">Y</option>
 								</select>
@@ -87,6 +88,16 @@
 								<span id="terms"></span>
 							</td>
 						</tr>
+						<tr>
+							<th class="dashR">출고금지시작일자</th>
+							<td colspan="" class="dashR">
+								<span id="terms2"></span>
+							</td>
+							<th class="dashR">출고금지종료일자</th>
+							<td colspan="" class="dashR">
+								<span id="terms3"></span>
+							</td>
+						</tr>			
 					</table>
 	
 					<ul class="panelBar">
@@ -132,7 +143,8 @@
 		{ width: 42, minWidth: 42, cellClass: 'text-center', headerCheckboxSelection: true, headerCheckboxSelectionFilteredOnly: true
 			, checkboxSelection: function (params) {
 				return  (params.data.delYn == 'N' ) ? true : false;
-			}	
+			},
+			
 		},
 		{headerName: "출고금지상품번호",			field: "delvBanGoodsSq",width: 50,	cellClass: 'text-center', hide: true},
 		{headerName: "삭제",					field: "delYn",			width: 50,	cellClass: 'text-center'},
@@ -157,16 +169,21 @@
 				}
 			}
 		},
-		{headerName: "컬러",		    field: "colorCd",		width: 80,	cellClass: 'text-center'},
-		{headerName: "사이즈",		field: "sizeCd",		width: 80,	cellClass: 'text-center'},
+		{headerName: "옵션1",		    field: "optCd1",		width: 80,	cellClass: 'text-center'},
+		{headerName: "옵션2",			field: "optCd2",		width: 80,	cellClass: 'text-center'},
 		{headerName: "상품상태",		field: "goodsStat",		width: 80,	cellClass: 'text-center'},
 		{headerName: "출고금지시작일자",	field: "delvBanStdt",	width: 150,	cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateFormat(params.value); }},
-		{headerName: "출고금지종료일자",	field: "delvBanEddt",	width: 150,	cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateFormat(params.value); }}
+		{headerName: "출고금지종료일자",	field: "delvBanEddt",	width: 150,	cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateFormat(params.value); }},
+		{headerName: "등록일자",		field: "regDt",			width: 100,	cellClass: 'text-center', cellRenderer: function (params) { return gagaAgGrid.toDateFormat(params.value); }}
 		
 	];
 
 	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
 	gridOptions.rowSelection = 'multiple';
+	gridOptions.suppressRowClickSelection = true;
+	gridOptions.isRowSelectable = function(rowNode) {
+		return rowNode.data.delYn == 'N';
+	}
 	
 	//gridOptions.rowHeight = 60;
 	/*************************************************************************
@@ -213,6 +230,11 @@
 	$('#searchForm select[name=supplyCompCd]').on('change', function() {
 		var actionUrl = '/renderer/supplyCompany/brand/list/'+ $(this).val();
 		cfnCreateCombo(actionUrl, $('#searchForm select[name=brandCd]'), "[전체]");
+		
+		var actionUrl2 = '/renderer/delvloc/list/'+ $(this).val();	
+
+		cfnCreateCombo(actionUrl2, $('#searchForm select[name=delvLocCd]'), "[전체]");
+		
 	});
 
 	/*************************************************************************
@@ -282,8 +304,8 @@
 
 	                param.delvBanGoodsSq = item.delvBanGoodsSq;
 	                param.goodsCd = item.goodsCd;
-	                param.colorCd = item.colorCd;
-	                param.sizeCd = item.sizeCd;
+	                param.optCd1  = item.optCd1;
+	                param.optCd2  = item.optCd2;
 
 	                createData.push(param);
 	            });
@@ -304,7 +326,13 @@
 
 	$(document).ready(function() {
 		gagaAgGrid.createGrid('gridList', gridOptions);
+		var hideList = ["btnThisWeek", "btnYesterWeek", "btnRecentMonth", "btnThisMonth", "btnYesterMonth", "btnRecent3Month"];
+		
 		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '출고금지상품관리');
+		cfnCreateCalendar('#terms2', 'stDate2', 'edDate2', true, '출고금지상품관리','',hideList);
+		cfnCreateCalendar('#terms3', 'stDate3', 'edDate3', true, '출고금지상품관리','',hideList);
+		
+		
 		//var hideList = ["btnThisWeek", "btnYesterWeek", "btnRecentMonth", "btnThisMonth", "btnYesterMonth", "btnRecent3Month"];
 		//cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '출고금지상품관리', '', hideList);
 		fnInitCalendar();

+ 50 - 6
src/main/webapp/WEB-INF/views/delivery/DeliveryListForm.html

@@ -69,8 +69,8 @@
 
 						<th>업체/브랜드<em class="required" title="필수"></em></th>
 						<td colspan="3">
-							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y"  checked/>자사</label>
-							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N"/>입점</label>
+							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y"  >자사</label>
+							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N" >입점</label>
 							<select name="supplyCompCd" id="supplyCompCd">
 								<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
 								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
@@ -230,6 +230,7 @@
 	**************************************************************************/
 	var shipCompanyList =  gagajf.convertToArray([[${shipCompanyList}]]);
 	var roleCd          = [[${sessionInfo.roleCd}]];
+	var currOrdNo       = 0;
 	var columnDefs = [
 		{
 			headerName: "결품",
@@ -247,7 +248,7 @@
 		{headerName: "주문번호",	field: "ordNo", width: 95, cellClass: 'text-center',
 			cellRenderer: function (params) {
 				if (roleCd.indexOf("C") < 0) {
-					return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenOrderDetailPopup('" + params.value + "');\">" + params.value + "</a>";
+					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailPopup('" + params.data.ordNo + "');\">" + params.data.ordNo + "</a>";
 				} else {
 					return params.value;
 				}
@@ -255,6 +256,15 @@
 		},
 		{headerName: "주문상세번호", 	field: "ordDtlNo", 		width: 90, cellClass: 'text-center'},
 		{headerName: "주문상세상태", 	field: "ordDtlStatNm", 	width: 120, cellClass: 'text-center'},
+		{headerName: "주문교환", 		field: "ordExchGb", 	width: 80, cellClass: 'text-center',
+			cellRenderer: function (params) {
+				if (params.value == "Y") {
+					return "교환";
+				} else {
+					return "주문";
+				}
+			}
+		},
 		// {headerName: "사이트", field: "siteNm", width: 120, cellClass: 'text-center'},
 		// {headerName: "판매몰", field: "sellStoreNm", width: 150, cellClass: 'text-left'},
 		{headerName: "판매몰명", 		field: "extmallNm", 	width: 150, cellClass: 'text-left'},
@@ -271,13 +281,14 @@
 		{headerName: "몰구분", 		field: "mallGbNm", 		width: 70, cellClass: 'text-center'},
 		{headerName: "주문자", 		field: "ordNm", 		width: 100, cellClass: 'text-center',
 			cellRenderer: function (params) {
-				if (roleCd.indexOf("C") < 0 && !gagajf.isNull(params.value) && params.data.mallGb === 'G011_10') {
+				if (roleCd.indexOf("C") < 0 && !gagajf.isNull(params.value) && params.data.mallGb === 'G011_10' && params.data.custNo > 0) {
 					return '<a href="javascript:void(0);" onclick=\"cfnOpenCustDetailPopup(' + params.data.custNo + ');\">' + params.data.ordNm + '</a>';
 				} else {
 					return params.data.ordNm;
 				}
 			}
 		},
+		{headerName: "휴대번호", 		field: "ordPhnno", 		width: 100, cellClass: 'text-center'},
 		{headerName: "수령인", 		field: "recipNm", 		width: 100, cellClass: 'text-center'},
 		{headerName: "공급업체", 		field: "supplyCompNm", 	width: 150, cellClass: 'text-center'},
 		{headerName: "브랜드", 		field: "supplyCompNm", 	width: 150, cellClass: 'text-center'},
@@ -323,6 +334,15 @@
 		{headerName: "출고택배사", 	field: "shipCompCd", 	width: 170, cellClass: 'text-center'
 			, valueGetter: function (params) { return gagaAgGrid.lookupValue(shipCompanyList, params.data.shipCompCd); }
 		},
+		{headerName: "배송추적", 		field: "invcTracking", 	width: 80, cellClass: 'text-center',
+			cellRenderer: function (params) {
+				if (params.value == "Y") {
+					return "요청";
+				} else {
+					return "미요청";
+				}
+			}
+		},
 		{headerName: "출고송장", 		field: "invoiceNo", 	width: 150, cellClass: 'text-left'},
 		{headerName: "송장등록수정", 	field: "invoiceNo", 	width: 120, cellClass: 'text-center'
 			, cellRenderer : function (params) {
@@ -348,7 +368,6 @@
 		{headerName: "에이전트주문번호", field: "agentOrderId", 	width: 150, cellClass: 'text-left'},
 		{headerName: "결품여부", 		field: "soldoutYn", 	width: 80, cellClass: 'text-center'},
 		{headerName: "배송메모", 		field: "delvMemo", 		width: 200, cellClass: 'text-left'},
-		{headerName: "교환여부", 		field: "ordExchGb", 	width: 80, cellClass: 'text-center'},
 		{headerName: "product_no", 	field: "productNo", 	width: 100, cellClass: 'text-center'},
 		{headerName: "product_code",field: "productCode", 	width: 100, cellClass: 'text-center'}
 		
@@ -375,6 +394,24 @@
 		$(".btnToday").trigger('click');
 	}
 	
+	
+	/*************************************************************************
+	*  주문상세 팝업  
+	**************************************************************************/		
+	var fnOrderDetailPopup = function(ordNo){
+		currOrdNo = ordNo;
+		cfnOpenOrderDetailPopup(currOrdNo);
+	}
+	
+	/*************************************************************************
+	*  팝업 콜백 
+	**************************************************************************/		
+	var fnReOpenOrderDetailPopup = function () {
+		cfnOpenOrderDetailPopup(currOrdNo);
+		fnSearchList();
+	};
+	
+	
 	/*************************************************************************
 	* 조회 클릭
 	**************************************************************************/
@@ -546,6 +583,12 @@
 		}
 
 		cfnCreateMultiCombo(actionUrl,"multiBrand",  "[전체]",null, 'Y');
+		
+		var actionUrl2 = '/renderer/delvloc/list/'+ $(this).val();	
+
+		cfnCreateCombo(actionUrl2, $('#searchForm select[name=delvLocCd]'), "[전체]");
+		
+		
 	});
 	
 	/*************************************************************************
@@ -558,7 +601,8 @@
 		$(".btnToday").trigger('click');
 		$('#searchForm select[name=mallGb]').trigger('change');
 		$("#searchForm input[name=selfYn]").trigger('click');
-		//uifnFitGrid('auto'); // TO-BE 지워야됨  
+		$("#searchForm input[name='selfYn']:radio[value='Y']").prop('checked',true);
+
 	});
 
 	/*]]>*/

+ 10 - 0
src/main/webapp/WEB-INF/views/delivery/DeliveryWithdrawDirectiveListForm.html

@@ -121,6 +121,7 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 	// 사이트목록
+	var currOrdNo = 0;
 	var siteList = gagajf.convertToArray([[${siteCdList}]]);
 
 	var columnDefs = [
@@ -156,6 +157,7 @@
 	// 셀 클릭 이벤트
 	gridOptions.onCellClicked = function(event) {
 		if (event.colDef.field == 'ordNo') {
+			currOrdNo = event.data.ordNo;
 			// 주문 상세
 			cfnOpenOrderDetailPopup(event.data.ordNo);
 		} else if (event.colDef.field == 'goodsCd') {
@@ -164,6 +166,14 @@
 		}
 	};
 
+	/*************************************************************************
+	*  팝업 콜백 
+	**************************************************************************/		
+	var fnReOpenOrderDetailPopup = function () {
+		cfnOpenOrderDetailPopup(currOrdNo);
+		fnSearchList();
+	};
+	
 	// 조회
 	$('#btnSearch').on('click', function() {
 		// Fetch data

+ 160 - 0
src/main/webapp/WEB-INF/views/delivery/ExchangeDelvFailListForm.html

@@ -0,0 +1,160 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : ExchangeDelvFailListForm.html
+ * @desc    : 교환배송 미출곡 목록 대상
+ *=============================================================
+ * ISTYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *=============================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  ==================================
+ * 1.0  2021.06.07   jsh77b        최초 작성
+ * 1.1  
+ ********************************************************************************
+ -->
+	<div id="main">
+		<!-- 메인타이틀 영역 -->
+		<div class="main-title">
+		</div>
+		<!-- //메인타이틀 영역 -->
+		
+		<!-- 메뉴 설명 -->
+		<div class="infoBox menu-desc">
+		</div>
+		<!-- //메뉴 설명 -->
+		
+		<!-- 검색조건 영역 -->
+		<div class="panelStyle">
+			<!-- TITLE -->
+			<div class="panelTitle">
+				<h3><i class="fa fa-info-circle"></i>아래 검색조건 중 <font color="red">등록일</font>은 꼭 입력해 주세요.</h3>
+				<span class="panelControl">
+					<i class="fa fa-chevron-up"></i>
+				</span>
+			</div>
+			<!-- //TITLE -->
+			
+			<div class="panelContent">	
+				<form id="searchForm" name="searchForm" action="#" th:action="@{'/delivery/exchangeDelvFail/list'}" onsubmit="fnSearchList(); return false;">
+					<table class="frmStyle">
+						<colgroup>
+							<col style="width:8%;"/>
+							<col style="width:12%;"/>
+							<col style="width:8%;"/>
+							<col style="width:12%;"/>
+							<col style="width:8%;"/>
+							<col style="width:12%;"/>
+						</colgroup>
+						<tr>
+							<th class="dashR">주문자명</th>
+							<td class="dashR">
+								<input type="text" class="w40p" name="ordNm" placeholder="" maxlength="20" />
+							</td>
+							<th class="dashR">주문번호</th>
+							<td class="dashR">
+								<input type="text" class="w40p" name="ordNo" placeholder="" maxlength="20" data-valid-type="numeric"/>
+							</td>
+							<th class="dashR">처리상태</th>
+							<td class="dashR">
+								<select name="delvCnclYn" id="delvCnclYn">
+									<option value="">전체</option>
+									<option value="N" selected>대기</option>
+									<option value="y">처리완료</option>
+								</select>
+							</td>
+						</tr>
+						<tr>
+							<th class="dashR">등록일</th>
+							<td colspan="4" class="dashR">
+								<span id="terms"></span>
+							</td>
+						</tr>
+					</table>
+	
+					<ul class="panelBar">
+						<li class="center">
+							<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
+							<button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset(); fnInitCalendar();">초기화</button>
+						</li>
+					</ul>
+				</form>
+			</div>
+		</div>
+		<!-- //검색조건 영역 -->
+
+		<!-- 리스트 영역 -->
+		<div class="panelStyle">
+			<div class="panelContent" style="overflow: hidden;">
+				<div id="gridList" style="width:100%; height: 500px;" class="ag-theme-balham"></div>
+			</div>
+		</div>
+		<!-- //리스트 영역 -->
+	</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/ 
+	var columnDefs = [
+		{headerName: "교환배송취소번호",	field: "exchangeDelvFailSq",	width: 50,	cellClass: 'text-center', hide: true},
+		{headerName: "변경요청번호",		field: "ordChgSq",				width: 150,	cellClass: 'text-center'},
+		{headerName: "주문번호",			field: "ordNo",					width: 150,	cellClass: 'text-center'},
+		{headerName: "주문상세번호",		field: "ordDtlNo",				width: 150,	cellClass: 'text-center'},
+		{headerName: "교환배송취소여부",	field: "delvCnclYn",			width: 150,	cellClass: 'text-center'},
+		{headerName: "출고가능수량",		field: "ordQty",				width: 150,	cellClass: 'text-center'},
+		{headerName: "품절취소수량",		field: "cnclRtnQty",			width: 150,	cellClass: 'text-center'},
+		{headerName: "품절취소사유",		field: "delvFailReason",		width: 150,	cellClass: 'text-center'},
+		{headerName: "상품코드",			field: "goodsCd",				width: 150,	cellClass: 'text-center'},
+		{headerName: "상품명",			field: "goodsNm",				width: 150,	cellClass: 'text-center'},
+		{headerName: "주문자",			field: "ordNm",					width: 150,	cellClass: 'text-center'},
+		{headerName: "핸드폰번호",			field: "ordPhnno",				width: 150,	cellClass: 'text-center'},
+		{headerName: "이메일",			field: "ordEmail",				width: 150,	cellClass: 'text-center'}
+	];
+
+	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+	gridOptions.rowSelection = 'multiple';
+	
+	$('#btnSearch').on('click', function() {
+		fnSearchList();
+	});
+
+	var fnSearchList = function() {
+		if ($('#stDate').val() == '') {
+			mcxDialog.alert('시작 기간을 입력하세요.');
+			return;
+		}
+
+		if ($('#edDate').val() == '') {
+			mcxDialog.alert('종료 기간을 입력하세요.');
+			return;
+		}
+
+		// 날짜 유효성 체크
+		if (Number($('#stDate').val().replaceAll("-", "")) > Number($('#edDate').val().replaceAll("-", ""))) {
+			mcxDialog.alert("시작일은 종료일보다 클 수 없습니다.");
+			return;
+		}
+
+		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm', function() {
+			
+		});
+	}
+
+	/*************************************************************************
+	*  달력 초기화 
+	**************************************************************************/
+	var fnInitCalendar = function() {
+		cfnChangeCalendar('1d', $('#stDate'), $('#edDate')); //달력 초기화
+	}
+
+	$(document).ready(function() {
+		gagaAgGrid.createGrid('gridList', gridOptions);
+		
+		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '출고금지상품관리');
+		fnInitCalendar();
+	});
+
+/*]]>*/
+</script>
+</html>

+ 9 - 2
src/main/webapp/WEB-INF/views/delivery/SaveInvoiceForm.html

@@ -63,12 +63,17 @@
 /* 이벤트 바인딩 관련 */
 	var ordDtlNo = [[${ordDelivery.ordDtlNo}]];
 	var ordDtlStat = [[${ordDelivery.ordDtlStat}]];
-
+	var orgInvoiceNo  = [[${ordDelivery.invoiceNo}]];
+	var orgShipCompCd = [[${ordDelivery.shipCompCd}]];  
 	/* 환불계좌번호 저장 */
 	var fnSaveAccount = function(){
 		var shipCompCd = $("#saveInvoiceForm select[name=shipCompany]").val();
 		var invoiceNo = $("#saveInvoiceForm input[name=invoiceNo]").val();
-
+		
+		if(orgInvoiceNo == invoiceNo && orgShipCompCd == shipCompCd){
+			mcxDialog.alert('변경된 내역이 없습니다.');
+			return;
+		}
 
 		if(gagajf.isNull(shipCompCd)) {
 			mcxDialog.alert('택배사 선택을 해주세요.');
@@ -89,9 +94,11 @@
 					param.shipCompCd = shipCompCd;
 					param.invoiceNo  = invoiceNo;
 					param.ordDtlNo   = ordDtlNo;
+					param.orgInvoiceNo = orgInvoiceNo;
 
 				var jsonData = JSON.stringify([param]);
 				gagajf.ajaxJsonSubmit('/delivery/orderDetail/save', jsonData, function (result) {
+					$('#btnSearch').trigger('click');
 					uifnPopupClose('popupChangeInvoice');
 				});
 			}

+ 6 - 1
src/main/webapp/WEB-INF/views/display/GoodsDispOrdChangePopupForm.html

@@ -150,7 +150,7 @@
 				html += '<li><span>재고 :</span><em>'+resultList[i].currStockQty+'</em></li>';
 				html += '<li>';
 				html += '<span>전시순서 :</span>';
-				html += '<input type="text" name="dispOrdEdit" value="" />';
+				html += '<input type="text" name="dispOrdEdit" value="'+resultList[i].dispOrd+'" />';
 				html += '<input type="hidden" name="setDispOrd" value="'+resultList[i].dispOrd+'"/>';
 				html += '</li>';
 				html += '</ul>';
@@ -166,6 +166,8 @@
 					$(".item").eq(ind-1).before($(".item").eq(ind));
 					$(".item").eq(ind).find("input[name=setDispOrd]").val(Number($(".item").eq(ind).find("input[name=setDispOrd]").val())+1);
 					$(".item").eq(ind-1).find("input[name=setDispOrd]").val(Number($(".item").eq(ind-1).find("input[name=setDispOrd]").val())-1);
+					$(".item").eq(ind).find("input[name=dispOrdEdit]").val(Number($(".item").eq(ind).find("input[name=dispOrdEdit]").val())+1);
+					$(".item").eq(ind-1).find("input[name=dispOrdEdit]").val(Number($(".item").eq(ind-1).find("input[name=dispOrdEdit]").val())-1);
 				}
 			});
 			$(".fa-arrow-down").off('click');
@@ -175,6 +177,8 @@
 					$(".item").eq(ind+1).after($(".item").eq(ind));
 					$(".item").eq(ind).find("input[name=setDispOrd]").val(Number($(".item").eq(ind).find("input[name=setDispOrd]").val())-1);
 					$(".item").eq(ind+1).find("input[name=setDispOrd]").val(Number($(".item").eq(ind+1).find("input[name=setDispOrd]").val())+1);
+					$(".item").eq(ind).find("input[name=dispOrdEdit]").val(Number($(".item").eq(ind).find("input[name=dispOrdEdit]").val())-1);
+					$(".item").eq(ind+1).find("input[name=dispOrdEdit]").val(Number($(".item").eq(ind+1).find("input[name=dispOrdEdit]").val())+1);
 				}
 			});
 			fnViewInit();
@@ -360,6 +364,7 @@
 					firstOrd = Number(firstOrd);
 				}
 				$(".item").each(function(i){
+					$(this).find("input[name=dispOrdEdit]").val(i+firstOrd);
 					$(this).find("input[name=setDispOrd]").val(i+firstOrd);
 				});
 			}

+ 10 - 2
src/main/webapp/WEB-INF/views/display/LookbookBannerPopupForm.html

@@ -408,8 +408,11 @@
 		html += '					<img id="bannerPreViewUrl_'+bannerImgRow+'" src="'+src+'" style="height:100px; max-width:500px;"/>';
 		html += '				</div>';
 		html += '			</td>';
-		html += '			<th>이미지설명</th>';
-		html += '			<td><textarea class="textareaR4" name="imgDesc" id="imgDesc'+bannerImgRow+'">'+desc+'</textarea></td>';
+		html += '			<th>이미지설명';
+		html += '			<br/>';
+		html += '			<span id="dpLocAnsContent'+bannerImgRow+'">0</span>/4,000Byte';
+		html += '			</th>';
+		html += '			<td><textarea class="textareaR4" style="resize: none;" name="imgDesc" id="imgDesc'+bannerImgRow+'" onkeyup="cfnGetTextLength(this, 4000, $(\'#dpLocAnsContent\'+'+bannerImgRow+'));" >'+desc+'</textarea></td>';
 		html += '			<td><input name="dispOrd" type="text" class="w80" placeholder="전시순서" style="margin-left:5px; text-align:center" value="'+dispord+'"/>';
 		if(imgPath!=''){
 			html += '				<button type="button" class="btn btn-success btn-lg" onclick="fnAddPicker(this,\''+imgPath+'\');">피커추가</button>';
@@ -423,6 +426,7 @@
 			bannerImgRow++;
 			return html;
 		}
+
 	}
 
 	var fnAddPicker = function (obj, imgpath){
@@ -495,6 +499,10 @@
 				fnResetIdx();
 			}
 		});
+
+		$(".bannerTableC").each(function (idx){
+			cfnGetTextLength($(this).find('textarea[name=imgDesc]'), 4000, $('#dpLocAnsContent'+idx));
+		});
 	});
 /*]]>*/
 </script>

+ 245 - 88
src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html

@@ -15,7 +15,7 @@
  * 1.0  2021.2.23    bin2107     최초 작성
  *******************************************************************************
  -->
-<div class="modalPopup" data-width="1500" >
+<div class="modalPopup" data-width="1500" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}, imgUrl=${@environment.getProperty('upload.image.view')}">
 	<div class="panelStyle">
 		<div class="panelTitle">
 			<h2 id="popTitle" th:text="${contentsLoc}"></h2>
@@ -154,16 +154,20 @@
 				html += '<tr class="cateTypeTr" name="tvY'+i+'">';
 				html += '	<th>미디어<br>컨텐츠키</th>';
 				html += '	<td colspan="3">';
-				html += '		<input name="tvMediaKey'+i+'" type="text" class="w150" maxlength="200" data-valid-name="미디어 컨텐츠키" value="'+result[i].strVar2+'"/>';
+				html += '		<input name="tvMediaKey'+i+'" type="text" class="w150" maxlength="200" data-valid-name="미디어 컨텐츠키" value="'+result[i].strVar2+'" ';
+				if(result[i].strVar1=='M'){
+					html += ' disabled="disabled" ';
+				}
+				html += '/>';
 				html += '	</td>';
 				html += '</tr>';
-				if(result[i].strVar1=='M'){
+				if(result[i].strVar1=='M' && (result[i].strVar2==null || result[i].strVar2=='')){
 					html += '<tr class="cateTypeTr" name="tvM'+i+'">';
-					html +='	<th>파일첨부<em className="required" title="필수"></em></th>';
-					html +='	<td className="infoTxt" colSpan="5">';
-					html +='		<div className="uFile w300">';
-					html +='			<input id="file'+i+'" name="file" type="file" className="uFileInput w300" onchange="fnVideoFileUpload(this, '+i+')"/>';
-					html +='			<label htmlFor="file'+i+'" className="uFileLabel">파일선택</label>';
+					html +='	<th>파일첨부<em class="required" title="필수"></em></th>';
+					html +='	<td class="infoTxt" colSpan="5">';
+					html +='		<div class="uFile w300">';
+					html +='			<input id="file'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnVideoFileUpload(this, '+i+')"/>';
+					html +='			<label for="file'+i+'" class="uFileLabel">파일선택</label>';
 					html +='			<input type="hidden" name="kufKey" value="'+result[i].strVar3+'"/>';
 					html +='			<input type="hidden" name="kmcKey"/>';
 					html +='		</div>';
@@ -207,18 +211,18 @@
 				html += '>';
 				html += '	<th>띠배너<br>이미지</th>';
 				html += '	<td><div class="uFile w300">';
-				html += '			<input id="filePop_0" name="file" type="file" class="uFileInput w300" onchange="fnPopFileUpload(this, 0)"/>';
-				html += '			<label for="filePop_0" class="uFileLabel">파일선택</label>';
+				html += '			<input id="filePop_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, '+i+', 0)"/>';
+				html += '			<label for="filePop_'+i+'" class="uFileLabel">파일선택</label>';
 				html += '			<input type="hidden" name="imgPath" value="'+result[i].imgPath1+'"/>';
 				html += '			<input type="hidden" name="newImgFile" value="" />';
 				html += '		</div>';
-				html += '	<div id="imgViewPop_0" class=';
+				html += '	<div id="imgViewPop_'+i+'" class=';
 				if(src!=''){
 					html += '"on">';
 				}else{
 					html += '"off">';
 				}
-				html += '		<img id="bannerPreViewUrlPop_0" src="'+src+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
+				html += '		<img id="bannerPreViewUrlPop_'+i+'" src="'+src+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
 				html += '	</div></td>';
 				html += '</tr>';
 
@@ -240,24 +244,29 @@
 				html += '</tr>';
 
 				html += '<tr name="imgPopRow" id="openBanner1" ';
-				if((result[i].contentsType!='IMG') || result[i].contentsType!='OPEN' && result[i].strVar7!='IMG'){
+				if(result[i].contentsType=='OPEN' && result[i].strVar7=='IMG'){
+					html += '	style="display:table-row;"';
+				}else{
 					html += '	style="display:none;"';
 				}
+				// if((result[i].contentsType!='IMG') || result[i].contentsType!='OPEN' && result[i].strVar7!='IMG'){
+				// 	html += '	style="display:none;"';
+				// }
 				html +='>';
 				html += '	<th>오픈배너<br>이미지</th>';
 				html += '	<td><div class="uFile w300">';
-				html += '			<input id="filePop_1" name="file" type="file" class="uFileInput w300" onchange="fnPopFileUpload(this, 1)"/>';
-				html += '			<label for="filePop_1" class="uFileLabel">파일선택</label>';
+				html += '			<input id="filePop_100'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, 100'+i+', 1)"/>';
+				html += '			<label for="filePop_100'+i+'" class="uFileLabel">파일선택</label>';
 				html += '			<input type="hidden" name="imgPath" value="'+result[i].imgPath2+'"/>';
 				html += '			<input type="hidden" name="newImgFile" value="" />';
 				html += '		</div>';
-				html += '	<div id="imgViewPop_1" class=';
-				if(src!=''){
+				html += '	<div id="imgViewPop_100'+i+'" class=';
+				if(src!='' && result[i].imgPath2 != ''){
 					html += '"on">';
 				}else{
 					html += '"off">';
 				}
-				html += '		<img id="bannerPreViewUrlPop_1" src="'+src2+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src2\'));"/>';
+				html += '		<img id="bannerPreViewUrlPop_100'+i+'" src="'+src2+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src2\'));"/>';
 				html += '	</div></td>';
 				html += '</tr>';
 
@@ -403,15 +412,27 @@
 						html += fnAddTitlePopRow(strTitle);
 					}
 					if(contentsLoc!='SGNB001' && contentsLoc!='SGNB002'){
-						if(imgPath!=null && imgPath!='null' && imgPath!='' ){
-							html += fnAddImgPopRow(imgPath, j);
+						if(contentsLoc=='SMM001' || contentsLoc=='SBM004' || contentsLoc=='SOM001'){
+							if(j<3){
+								html += fnAddImgPopRow(imgPath, j);
+							}
+						}else{
+							if(imgPath!=null && imgPath!='null' && imgPath!='' ){
+								html += fnAddImgPopRow(imgPath, j);
+							}
 						}
 					}
 					if(strVar!=null && strVar!='null' && strVar!='' ){
 						html += fnAddLinkPopRow(strVar);
 					}
-					if(subText!=null && subText!='null' && subText!='' ){
-						html += fnAddSubTextPopRow(subText);
+					if(contentsLoc=='SBM005'){
+						if(subText!=null && subText!='null' && subText!='' ){
+							html += fnAddBrandDescRow(subText);
+						}
+					}else{
+						if(subText!=null && subText!='null' && subText!='' ){
+							html += fnAddSubTextPopRow(subText);
+						}
 					}
 				}
 			}
@@ -431,6 +452,9 @@
 		if(contentsLoc=='SGNB001'){
 			fnOpenBannerSummernote();
 		}
+		if(contentsLoc=='SBM005'){
+			fnBrandDesc();
+		}
 
 		tableLen = $(".mcTable").length;
 	}
@@ -440,20 +464,12 @@
 			let idx = $(this).find('[name=tableIdx]').val();
 			let bannerCateType = $("#mcTable"+idx).find('input:radio[name=cateType'+idx+']:checked').val();
 
-			if(bannerCateType=='OPEN'){
+			// if(bannerCateType=='OPEN'){
 				let htmlDesc = $("#mcTable"+idx).find('input[name=htmlDesc'+idx+']').val();
 				var snOptions1 = gagaSn.getToolbarOptions('media');
 				gagaSn.createSummernote(snOptions1, '#openBannerDesc'+idx);
 				// gagaSn.setContents('#openBannerDesc'+idx, '');
 				$('#openBannerDesc'+idx).summernote('code', htmlDesc);
-			}
-			// if(bannerCateType=='OPEN'){
-			// 	let bannerType = $("#mcTable"+idx).find('input:radio[name=openBannerType'+idx+']:checked').val();
-			// 	if(bannerType=='HTML'){
-			// 		let htmlDesc = $("#mcTable"+idx).find('input[name=htmlDesc'+idx+']').val();
-			// 		gagaSn.setContents('#openBannerDesc'+idx, '');
-			// 		$('#openBannerDesc'+idx).summernote('code', htmlDesc);
-			// 	}
 			// }
 		});
 	}
@@ -464,9 +480,11 @@
 		if(tvPlayer == 'Y'){
 			$(obj).closest("table").find("[name=tvY"+idx+"]").show();
 			$(obj).closest("table").find("[name=tvM"+idx+"]").hide();
+			$(obj).closest("table").find("[name=tvMediaKey"+idx+"]").prop('disabled',false);
 		}else{
 			$(obj).closest("table").find("[name=tvY"+idx+"]").show();
 			$(obj).closest("table").find("[name=tvM"+idx+"]").show();
+			$(obj).closest("table").find("[name=tvMediaKey"+idx+"]").prop('disabled',true);
 		}
 	}
 
@@ -489,17 +507,24 @@
 			$(obj).closest("table").find("[name=tabBgColorRow"+idx+"]").show();
 			$(obj).closest("table").find("[name=tabShowYnRow"+idx+"]").show();
 			$(obj).closest("table").find("[name=openBannerTypeTr"+idx+"]").show();
-			$(obj).closest("table").find("input:radio[name=openBannerType"+idx+"]:input[value=IMG]").prop('checked',true);
+			console.log($(obj).closest("table").find("input:radio[name=openBannerType"+idx+"]:checked").val());
+			if($(obj).closest("table").find("input:radio[name=openBannerType"+idx+"]:checked").val()=='HTML'){
+				$(obj).closest("table").find("input:radio[name=openBannerType"+idx+"]:input[value=HTML]").prop('checked',true);
+				$(obj).closest("table").find("[id=openBanner2]").show();
+			}else{
+				$(obj).closest("table").find("input:radio[name=openBannerType"+idx+"]:input[value=IMG]").prop('checked',true);
+				$(obj).closest("table").find("[id=openBanner2]").hide();
+			}
 			$(obj).closest("table").find("[id=openBanner0]").show();
 			$(obj).closest("table").find("[id=openBanner1]").show();
-			$(obj).closest("table").find("[id=openBanner2]").hide();
-			$(obj).closest("table").find("[name=file]").closest('div').find('label').text('파일선택');
-			$(obj).closest("table").find("[name=imgPath]").val('');
-			$(obj).closest("table").find("[name=newImgFile]").val('');
-			$("#bannerPreViewUrlPop_0").attr('src', '');
-			$("#imgViewPop_0").removeClass("on").addClass("off");
-			$("#bannerPreViewUrlPop_1").attr('src', '');
-			$("#imgViewPop_1").removeClass("on").addClass("off");
+
+			// $(obj).closest("table").find("[name=file]").closest('div').find('label').text('파일선택');
+			// $(obj).closest("table").find("[name=imgPath]").val('');
+			// $(obj).closest("table").find("[name=newImgFile]").val('');
+			// $("#bannerPreViewUrlPop_0").attr('src', '');
+			// $("#imgViewPop_0").removeClass("on").addClass("off");
+			// $("#bannerPreViewUrlPop_1").attr('src', '');
+			// $("#imgViewPop_1").removeClass("on").addClass("off");
 		}else if(cateType=='IMG'){
 			$(obj).closest("table").find("[name=tabBgColorRow"+idx+"]").show();
 			$(obj).closest("table").find("[name=tabShowYnRow"+idx+"]").hide();
@@ -508,13 +533,13 @@
 			$(obj).closest("table").find("[id=openBanner0]").show();
 			$(obj).closest("table").find("[id=openBanner1]").hide();
 			$(obj).closest("table").find("[id=openBanner2]").hide();
-			$(obj).closest("table").find("[name=file]").closest('div').find('label').text('파일선택');
-			$(obj).closest("table").find("[name=imgPath]").val('');
-			$(obj).closest("table").find("[name=newImgFile]").val('');
-			$("#bannerPreViewUrlPop_0").attr('src', '');
-			$("#imgViewPop_0").removeClass("on").addClass("off");
-			$("#bannerPreViewUrlPop_1").attr('src', '');
-			$("#imgViewPop_1").removeClass("on").addClass("off");
+			// $(obj).closest("table").find("[name=file]").closest('div').find('label').text('파일선택');
+			// $(obj).closest("table").find("[name=imgPath]").val('');
+			// $(obj).closest("table").find("[name=newImgFile]").val('');
+			// $("#bannerPreViewUrlPop_0").attr('src', '');
+			// $("#imgViewPop_0").removeClass("on").addClass("off");
+			// $("#bannerPreViewUrlPop_1").attr('src', '');
+			// $("#imgViewPop_1").removeClass("on").addClass("off");
 		}else if(cateType=='TEXT'){
 			$(obj).closest("table").find("[name=tabBgColorRow"+idx+"]").hide();
 			$(obj).closest("table").find("[name=tabShowYnRow"+idx+"]").hide();
@@ -523,13 +548,19 @@
 			$(obj).closest("table").find("[id=openBanner0]").hide();
 			$(obj).closest("table").find("[id=openBanner1]").hide();
 			$(obj).closest("table").find("[id=openBanner2]").hide();
-			$(obj).closest("table").find("[name=file]").closest('div').find('label').text('파일선택');
-			$(obj).closest("table").find("[name=imgPath]").val('');
-			$(obj).closest("table").find("[name=newImgFile]").val('');
-			$("#bannerPreViewUrlPop_0").attr('src', '');
-			$("#imgViewPop_0").removeClass("on").addClass("off");
-			$("#bannerPreViewUrlPop_1").attr('src', '');
-			$("#imgViewPop_1").removeClass("on").addClass("off");
+			// $(obj).closest("table").find("[name=file]").closest('div').find('label').text('파일선택');
+			// $(obj).closest("table").find("[name=imgPath]").val('');
+			// $(obj).closest("table").find("[name=newImgFile]").val('');
+			// $("#bannerPreViewUrlPop_0").attr('src', '');
+			// $("#imgViewPop_0").removeClass("on").addClass("off");
+			// $("#bannerPreViewUrlPop_1").attr('src', '');
+			// $("#imgViewPop_1").removeClass("on").addClass("off");
+			if($(obj).closest("table").find("[name=title]").length < 1){
+				fnAddTitlePopRow($(obj));
+			}
+			if($(obj).closest("table").find("[name=link]").length < 1){
+				fnAddLinkPopRow($(obj));
+			}
 		}
 	}
 
@@ -603,7 +634,7 @@
 				html += ' id="addImg'+dataIdx+'" onclick="fnAddImgPopRow(this);">이미지추가</button>';
 			}
 			if(contentsLoc=='SMM001' || contentsLoc=='SOM001' || contentsLoc=='SBM004'){
-				html += '<button type="button" style="display: none;" class="btn btn-base btn-lg" id="addMobImg'+dataIdx+'" onclick="fnAddMobImgPopRow(this);">모바일이미지추가</button>';
+				html += '<button type="button" style="display: none;" class="btn btn-base btn-lg" id="addMobImg'+dataIdx+'" onclick="fnAddMobImgPopRow(this, '+dataIdx+');">모바일이미지추가</button>';
 			}
 			html += '<button type="button" class="btn btn-base btn-lg"';
 			if(contentsLoc=='SMM001' || contentsLoc=='SOM001' || contentsLoc=='SBM004' || contentsLoc=='SCM001'){
@@ -637,11 +668,11 @@
 			html += '	</td>';
 			html += '</tr>';
 			html += '<tr class="cateTypeTr" name="tvM'+dataIdx+'" style="display: none;">';
-			html +='	<th>파일첨부<em className="required" title="필수"></em></th>';
-			html +='	<td className="infoTxt" colSpan="5">';
-			html +='		<div className="uFile w300">';
-			html +='			<input id="file'+dataIdx+'" name="file" type="file" className="uFileInput w300" onchange="fnVideoFileUpload(this, '+dataIdx+')"/>';
-			html +='			<label htmlFor="file'+dataIdx+'" className="uFileLabel">파일선택</label>';
+			html +='	<th>파일첨부<em class="required" title="필수"></em></th>';
+			html +='	<td class="infoTxt" colSpan="5">';
+			html +='		<div class="uFile w300">';
+			html +='			<input id="file'+dataIdx+'" name="file" type="file" class="uFileInput w300" onchange="fnVideoFileUpload(this, '+dataIdx+')"/>';
+			html +='			<label for="file'+dataIdx+'" class="uFileLabel">파일선택</label>';
 			html +='			<input type="hidden" name="kufKey"/>';
 			html +='			<input type="hidden" name="kmcKey"/>';
 			html +='		</div>';
@@ -662,18 +693,18 @@
 			html += '<tr name="imgPopRow" id="openBanner0">';
 			html += '	<th>띠배너<br>이미지</th>';
 			html += '	<td><div class="uFile w300">';
-			html += '			<input id="filePop_0" name="file" type="file" class="uFileInput w300" onchange="fnPopFileUpload(this, 0)"/>';
-			html += '			<label for="filePop_0" class="uFileLabel">파일선택</label>';
+			html += '			<input id="filePop_'+dataIdx+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, '+dataIdx+', 0)"/>';
+			html += '			<label for="filePop_'+dataIdx+'" class="uFileLabel">파일선택</label>';
 			html += '			<input type="hidden" name="imgPath" value=""/>';
 			html += '			<input type="hidden" name="newImgFile" value="" />';
 			html += '		</div>';
-			html += '	<div id="imgViewPop_0" class=';
+			html += '	<div id="imgViewPop_'+dataIdx+'" class=';
 			if(src!=''){
 				html += '"on">';
 			}else{
 				html += '"off">';
 			}
-			html += '		<img id="bannerPreViewUrlPop_0" src="'+src+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
+			html += '		<img id="bannerPreViewUrlPop_'+dataIdx+'" src="'+src+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
 			html += '	</div></td>';
 			html += '</tr>';
 
@@ -688,18 +719,18 @@
 			html += '<tr name="imgPopRow" id="openBanner1">';
 			html += '	<th>오픈배너<br>이미지</th>';
 			html += '	<td><div class="uFile w300">';
-			html += '			<input id="filePop_1" name="file" type="file" class="uFileInput w300" onchange="fnPopFileUpload(this, 1)"/>';
-			html += '			<label for="filePop_1" class="uFileLabel">파일선택</label>';
+			html += '			<input id="filePop_100'+dataIdx+'" name="file" type="file" class="uFileInput w300" onchange="fnGnbFileUpload(this, 100'+dataIdx+', 1)"/>';
+			html += '			<label for="filePop_100'+dataIdx+'" class="uFileLabel">파일선택</label>';
 			html += '			<input type="hidden" name="imgPath" value=""/>';
 			html += '			<input type="hidden" name="newImgFile" value="" />';
 			html += '		</div>';
-			html += '	<div id="imgViewPop_1" class=';
+			html += '	<div id="imgViewPop_100'+dataIdx+'" class=';
 			if(src!=''){
 				html += '"on">';
 			}else{
 				html += '"off">';
 			}
-			html += '		<img id="bannerPreViewUrlPop_1" src="'+src+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
+			html += '		<img id="bannerPreViewUrlPop_100'+dataIdx+'" src="'+src+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
 			html += '	</div></td>';
 			html += '</tr>';
 
@@ -796,11 +827,15 @@
 				$("#addMobImg"+dataIdx).click();
 			}
 		}
+		if(contentsLoc=='SGNB002'){
+			$("#addTitle"+dataIdx).click();
+			$("#addLink"+dataIdx).click();
+		}
 
 		if(contentsLoc=='SGNB001'){
 			gagaSn.setContents('#openBannerDesc'+dataIdx, '');
 		}
-
+		fnResetDispOrd();
 		tableLen = tableLen+1;
 	});
 
@@ -849,8 +884,8 @@
 		$("#mcTable"+tableDataId).find("tr[name=subTextPopRow]").find("input[name=subText]").val(result[0].dtlTitle1);
 		$("#mcTable"+tableDataId).find("tr[name=linkPopRow]").find("input[name=link]").val('/planning/detail/form?planSq='+result[0].planSq);
 		$("#mcTable"+tableDataId).find("tr[id=mobImgPop]").find("input[name=imgPath]").val(result[0].mainPimg);
-		$("#mcTable"+tableDataId).find('.mobImg').find("#bannerPreViewUrlPop_0").attr('src',$("#uploadDefaultUrlPop").val().replace('/contents/', '')+result[0].mainPimg);
-		$("#mcTable"+tableDataId).find('.mobImg').find("#imgViewPop_0").removeClass("off").addClass("on");
+		$("#mcTable"+tableDataId).find('.mobImg').find("#bannerPreViewUrlPop_"+tableDataId).attr('src', $("#uploadDefaultUrlPop").val().replace('/contents/', '')+result[0].mainPimg);
+		$("#mcTable"+tableDataId).find('.mobImg').find("#imgViewPop_"+tableDataId).removeClass("off").addClass("on");
 
 		let stdt = result[0].dispStdt.split(" ");
 		let eddt = result[0].dispEddt.split(" ");
@@ -873,6 +908,7 @@
 
 	// SMM001 데이터 validation 체크
 	function smm001DataValidation(){
+		var dataBool = true;
 		$(".mcTable").each(function(i){
 			var thisIdx = $(this).find("input[name=tableIdx]").val();
 			var contentsTypeVal = $(this).find("input:radio[name=contentsType"+thisIdx+"]:checked").val();
@@ -880,21 +916,71 @@
 
 			if(gagajf.isNull(contentsTypeVal)){
 				mcxDialog.alert('컨텐츠 유형을 선택해주세요.');
-				return false;
+				dataBool = false;
 			}
 			if(contentsTypeVal=='P'){
 				if(gagajf.isNull($(this).find("input[name=planSq"+thisIdx+"]").val())){
 					mcxDialog.alert('기획전 번호를 입력해주세요.');
-					return false;
+					$(this).find("input[name=planSq"+thisIdx+"]").focus();
+					dataBool = false;
 				}
 			}
 			if(gagajf.isNull(textColorVal)){
 				mcxDialog.alert('썸네일 글자 색상을 선택해주세요.');
-				return false;
+				dataBool = false;
 			}
 		});
+		if(!dataBool){
+			return false;
+		}else{
+			return true;
+		}
+	}
 
-		return true;
+	// 전시 일시 체크
+	function dateValidation(){
+		var dateBool = true;
+		$(".mcTable").each(function(i){
+			var thisIdx = $(this).find("input[name=tableIdx]").val();
+			var dispStdt = $(this).find("[name=dispStdt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=stTimeHour]").val().replace('시', '') + "" +$(this).find("[name=stTimeMin]").val().replace('분', '') + "00";
+			var dispEddt = $(this).find("[name=dispEddt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=edTimeHour]").val().replace('시', '') + "" +$(this).find("[name=edTimeMin]").val().replace('분', '') + "59";
+
+			let fromDate = dispStdt.replace(/[^0-9]/g, '');
+			let toDate = dispEddt.replace(/[^0-9]/g, '');
+			if(fromDate > toDate){
+				mcxDialog.alert((i+1) +"번째 " +"시작일자는 종료일자 보다 클 수 없습니다.");
+				$(this).find('input[name=dispStdt]').focus();
+				dateBool = false;
+			}
+		});
+		if(!dateBool){
+			return false;
+		}else{
+			return true;
+		}
+	}
+
+	// 동영상 확장자 체크
+	function videoValidation(){
+		var dataBool = true;
+		$(".mcTable").each(function(i){
+			var thisIdx = $(this).find("input[name=tableIdx]").val();
+			if($(this).find("input:radio[name=tvPlayer"+thisIdx+"]:checked").val()=='M' && ($(this).find("input[name=tvMediaKey"+thisIdx+"]").val()==null || $(this).find("input[name=tvMediaKey"+thisIdx+"]").val()=='')){
+				var fileName = $(this).find("input:file[name=file]").val();
+				var ext =  fileName.split('.').pop().toLowerCase();
+				if(ext!='mp4'&&ext!='MP4'){
+					mcxDialog.alert((i+1) +'번째 ' +ext+'파일은 업로드 하실 수 없습니다.');
+					$(this).find("input:radio[name=tvPlayer"+thisIdx+"]").focus();
+					dataBool = false;
+				}
+			}
+		});
+
+		if(!dataBool){
+			return false;
+		}else{
+			return true;
+		}
 	}
 
 	/**
@@ -906,6 +992,17 @@
 			return;
 		}
 
+		// 전시일시 체크
+		if(!dateValidation()){
+			return false;
+		}
+
+		if(contentsLoc=='SMM011' || contentsLoc=='SBM012'){
+			if(!videoValidation()){
+				return false;
+			}
+		}
+
 		if(contentsLoc=='SMM001' || contentsLoc=='SOM001'){
 			if(!smm001DataValidation()){
 				return false;
@@ -974,6 +1071,7 @@
 				eval("strVar" + i + "='"+val+"'");
 				i++;
 			});
+
 			i = 1;
 			$(this).find('input[name=subText]').each(function(){
 				var subText = $(this).val().replace(/[\']/gi, "\\'");
@@ -981,6 +1079,11 @@
 				i++;
 			});
 
+			if(contentsLoc=='SBM005'){
+				var thisIdx = $(this).find("input[name=tableIdx]").val();
+				subText1 = $(this).find("textarea[id=brandDesc"+thisIdx+"]").val();
+			}
+
 			if(contentsLoc=='SMM011' || contentsLoc=='SBM012' || contentsLoc=='SBMM012'){
 				var thisIdx = $(this).find("input[name=tableIdx]").val();
 				strVar1 = $(this).find("input:radio[name=tvPlayer"+thisIdx+"]:checked").val();
@@ -1003,7 +1106,11 @@
 				strVar5 = $(this).find("input[name=gnbBgColor"+thisIdx+"]").val();
 				strVar6 = $(this).find("input[name=gnbTextColor"+thisIdx+"]").val();
 				strVar8 = $(this).find("input:radio[name=todayYn"+thisIdx+"]:checked").val();
-				strVar7 = $(this).find("input:radio[name=openBannerType"+thisIdx+"]:checked").val();
+				if(contentsType=='OPEN'){
+					strVar7 = $(this).find("input:radio[name=openBannerType"+thisIdx+"]:checked").val();
+				}else{
+					strVar7 = '';
+				}
 				if($(this).find("input:radio[name=openBannerType"+thisIdx+"]:checked").val() == 'HTML'){
 					html = $(this).find("textarea[name=openBannerDesc"+thisIdx+"]").val();
 				}
@@ -1110,7 +1217,7 @@
 		}
 
 		var jsonData = JSON.stringify(dataArr);
-		console.log('jsonData::'+jsonData);
+		// console.log('jsonData::'+jsonData);
 		mcxDialog.confirm('컨텐츠를 저장 하시겠습니까?', {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
@@ -1129,6 +1236,31 @@
 		if (typeof(file) == 'undefined'){
 			return;
 		}
+		console.log('ind>>>>'+ind);
+		// 파일 업로드
+		gagajf.ajaxFileUpload('/common/file/upload?subDir=/contents'
+				, file
+				, function(result) {
+					$(obj).closest('div').find('input:hidden[name=newImgFile]').val(result.newFileName);
+					$("#bannerPreViewUrlPop_"+ind).attr('src', $("#uploadDefaultUrlPop").val()+result.newFileName);
+					$("#imgViewPop_"+ind).removeClass("off").addClass("on");
+				}
+				, 'image'
+		);
+	}
+
+	/**
+	 * GNB배너 파일 첨부
+	 */
+	var fnGnbFileUpload = function (obj, ind, num){
+		var file = obj.files[0];
+		file.name = 'test';
+		if (typeof(file) == 'undefined'){
+			return;
+		}
+		var $obj = $(obj);
+		console.log('data-id::'+$("#mcTable"+ind).find('input[name=tableIdx]').val());
+
 		// 파일 업로드
 		gagajf.ajaxFileUpload('/common/file/upload?subDir=/contents'
 				, file
@@ -1149,7 +1281,7 @@
 		var html = '<tr name="linkPopRow">';
 		html += '<th>링크 (없으면 #)</th>';
 		html += '<td><input name="link" type="text" maxlength="200" required="required" data-valid-name="링크" value="'+val+'"/></td>';
-		if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001'){
+		if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001' && contentsLoc!='SBM004'){
 			html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
 		}
 		html += '</tr>';
@@ -1180,7 +1312,7 @@
 		var html = '<tr name="subTextPopRow">'
 		html += '<th>서브텍스트</th>';
 		html += '<td><input type="text" name="subText" maxlength="200" value="'+val+'"/></td>';
-		if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001'){
+		if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001' && contentsLoc!='SBM004'){
 			html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
 		}
 		html += '</tr>';
@@ -1198,20 +1330,28 @@
 	/**
 	 * 브랜드 소개추가
 	 */
+	var brandDescIndex = 0;
 	var fnAddBrandDescRow = function (param){
 		var val = typeof param=='object'?'':param;
 		var html = '<tr name="subTextPopRow">'
-		html += '<th>브랜드소개</th>';
-		html += '<td><input type="text" name="subText" maxlength="200" value="'+val+'"/></td>';
+		html += '<th>브랜드소개';
+		html += '<br/>';
+		html += '<span id="brandDescContent'+brandDescIndex+'">0</span>/4,000Byte';
+		html += '</th>';
+		html += '<td>';
+		html += '<textarea class="textareaR4" style="resize: none;" name="subText" id="brandDesc'+brandDescIndex+'" onkeyup="cfnGetTextLength(this, 4000, $(\'#brandDescContent'+brandDescIndex+'\'));" >'+val+'</textarea>';
+		html += '</td>';
 		html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
 		html += '</tr>';
 		if(typeof param == 'object'){
+			brandDescIndex++;
 			if($(param).closest("table").find("tbody").find("tr[name=subTextPopRow]").length>0){
 				mcxDialog.alert("브랜드소개는 1개까지 등록 가능합니다");
 				return;
 			}
 			$(param).closest("table").find("tbody").append(html);
 		}else{
+			brandDescIndex++;
 			return html;
 		}
 	}
@@ -1241,14 +1381,14 @@
 		html += '<input type="hidden" name="newImgFile" value="" />';
 		html += '</div>';
 		html += '<div id="imgViewPop_'+imgIndex+'" class=';
-		if(src!=''){
+		if(src!='' && imgPath !=''){
 			html += '"on">';
 		}else{
 			html += '"off">';
 		}
 		html += '<img id="bannerPreViewUrlPop_'+imgIndex+'" src="'+src+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
 		html += '</div></td>';
-		if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001'){
+		if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001' && contentsLoc!='SBM004'){
 			html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
 		}
 		html += '</tr>';
@@ -1266,6 +1406,7 @@
 			}
 			imgIndex++;
 			$(param).closest("table").find("tbody").append(html);
+			return html;
 		}else{
 			imgIndex++;
 			return html;
@@ -1275,8 +1416,9 @@
 	/**
 	 * 모바일용 이미지 추가
 	 */
-	var imgMobIndex = 5000;
-	var fnAddMobImgPopRow = function (param){
+	var imgMobIndex = 0;
+	var fnAddMobImgPopRow = function (param , idx){
+		imgMobIndex = idx;
 		var src = '';
 		var imgPath = '';
 		if(typeof param!='object'){
@@ -1300,7 +1442,7 @@
 		}
 		html += '<img id="bannerPreViewUrlPop_'+imgMobIndex+'" src="'+src+'" style="height:100px; max-width:500px;"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',$(this).attr(\'src\'));"/>';
 		html += '</div></td>';
-		if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001'){
+		if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001' && contentsLoc!='SBM004'){
 			html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
 		}
 		html += '</tr>';
@@ -1332,7 +1474,7 @@
 		var html = '<tr name="titlePopRow">';
 		html += '<th>타이틀</th>';
 		html += '<td><input name="title" type="text" maxlength="200" data-valid-name="타이틀" value="'+val+'"/></td>';
-		if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001'){
+		if(contentsLoc!='SMM001' && contentsLoc!='SOM001' && contentsLoc!='SCM001' && contentsLoc!='SBM004'){
 			html += '<td class="aL"><button type="button" class="btn icn" onclick="fnDeleteTrRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button></td>';
 		}
 		html += '</tr>';
@@ -1349,7 +1491,14 @@
 
 	// 컨텐츠 행삭제
 	var fnDeleteContentsRow = function (obj){
-		$(obj).closest("table").remove();
+		mcxDialog.confirm('삭제시 전시순서가 초기화됩니다. 삭제하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				$(obj).closest("table").remove();
+				fnResetDispOrd();
+			}
+		});
 	}
 
 	// 행삭제
@@ -1387,6 +1536,7 @@
 
 	// 동영상파일 선택 시
 	$('#popSortable input[name=file]').on('change', function() {
+		console.log('888');
 		var file = this.files[0];
 		gagaKollus.upload('Display', file, $('input[name=kufKey]'));
 	});
@@ -1402,6 +1552,12 @@
 		});
 	}
 
+	let fnBrandDesc = function (){
+		$(".mcTable").each(function (idx){
+			cfnGetTextLength($(this).find('textarea[name=subText]'), 4000, $('#brandDescContent'+idx));
+		});
+	}
+
 	$(document).ready(function() {
 		$("#popTitle").text("["+contentsLoc+"] "+gagaAgGrid.lookupValue(contentsLocArr, contentsLoc));
 
@@ -1414,6 +1570,7 @@
 				fnResetDispOrd();
 			}
 		});
+
 	});
 	/*]]>*/
 </script>

+ 36 - 2
src/main/webapp/WEB-INF/views/display/MainGnbContentsPopupForm.html

@@ -192,7 +192,7 @@
 			$("#brandListTd2").sortable();
 			$("#brandListTd3").sortable();
 		}
-
+		fnResetDispOrd();
 		tableIdx = tableIdx+1;
 	}
 
@@ -266,7 +266,36 @@
 
 	// 컨텐츠 행삭제
 	var fnDeleteContentsRow = function (obj){
-		$(obj).closest("table").remove();
+		mcxDialog.confirm('삭제시 전시순서가 초기화됩니다. 삭제하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				$(obj).closest("table").remove();
+				fnResetDispOrd();
+			}
+		});
+	}
+
+	// 전시 일시 체크
+	function dateValidation(){
+		var dateBool = true;
+		$(".tabTable").each(function(i){
+			var dispStdt = $(this).find("[name=dispStdt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=stTimeHour]").val().replace('시', '') + "" +$(this).find("[name=stTimeMin]").val().replace('분', '') + "00";
+			var dispEddt = $(this).find("[name=dispEddt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=edTimeHour]").val().replace('시', '') + "" +$(this).find("[name=edTimeMin]").val().replace('분', '') + "59";
+
+			let fromDate = dispStdt.replace(/[^0-9]/g, '');
+			let toDate = dispEddt.replace(/[^0-9]/g, '');
+			if(fromDate > toDate){
+				mcxDialog.alert("시작일자는 종료일자 보다 클 수 없습니다.");
+				$(this).find('input[name=dispStdt]').focus();
+				dateBool = false;
+			}
+		});
+		if(!dateBool){
+			return false;
+		}else{
+			return true;
+		}
 	}
 
 	/**
@@ -278,6 +307,11 @@
 			return;
 		}
 
+		// 전시일시 체크
+		if(!dateValidation()){
+			return false;
+		}
+
 		dataArr = [];
 		$("#gnbTabList .tabTable").each(function (){
 			var newImgFileArr = [];

+ 118 - 85
src/main/webapp/WEB-INF/views/display/MainListForm.html

@@ -115,7 +115,8 @@
 								</li>
 								<th:block th:if="${sessionInfo.roleCd == 'G001_0000'}">
 									<li class="right">
-										<span class="cRed">* 레이아웃 저장 버튼 클릭 시 수정 및 삭제 된 레이아웃이 즉시 적용 됩니다.</span>
+										<span class="cRed">* 레이아웃 저장 버튼 클릭 시 수정 및 삭제 된 레이아웃이 즉시 적용 됩니다.</span><br/>
+										<span class="cRed">* 화면 캡처파일 관리는 SUPER관리자, 어드민관리자만 가능합니다.</span>
 									</li>
 								</th:block>
 							</ul>
@@ -252,9 +253,9 @@
 			}
 
 			if(colCnt==1 || colNo==1){
-				html += '<tbody><tr style="height:170px;">';
+				html += '<tbody><tr style="height:170px;">\n';
 			}else if(colNo==tdSize){
-				html += '<tr style="height:170px;">';
+				html += '<tr style="height:170px;">\n';
 			}
 
 			if(colNo>=tdSize){
@@ -275,26 +276,28 @@
 			// if(colCnt>5){
 			// 	maxWidth = parseInt(tdWidth/(Number(colCnt)/tdSize), 10);
 			// }
-			html += '" style="text-align:center; max-width:'+maxWidth+'px;">';
-			html += '<div><span style="font-weight:bold">'+result[i].contentsLoc+'</span></div><div><span>[ '+gagaAgGrid.lookupValue(contentsLocArr, result[i].contentsLoc)+' ]</span></div>';
-			html += '<input type="text" class="w200" name="contentsTitle" placeholder="메인타이틀" value="'+result[i].contentsTitle+'"/>';
-			html += '<br/>';
-			if(result[i].contentsYn=='C'){
-				html += '<button type="button" class="btn btn-success btn-lg" onclick="fnChangeContents(this);">수정</button>';
-				html += '<button type="button" class="btn btn-default btn-lg" onclick="fnUpdateContents(\''+result[i].contentsLoc+'\');">적용</button>';
-			}else if(result[i].contentsYn=='G' || result[i].contentsYn=='A'){
-				if(result[i].contentsYn=='A'){
-					html += '<button type="button" class="btn btn-success btn-lg" onclick="fnChangeContents(this);">수정</button>';
-					html += '<button type="button" class="btn btn-default btn-lg" onclick="fnUpdateContents(\''+result[i].contentsLoc+'\');">적용</button>';
-					html += '<br/>';
-				}
-					html += '<button type="button" class="btn btn-success btn-lg" onclick="fnSearchCategory(\''+result[i].contentsLoc+'\');">상품관리</button>';
+			html += '" style="text-align:center; max-width:'+maxWidth+'px;">\n';
+			html += '<div><span style="font-weight:bold">'+result[i].contentsLoc+'</span></div><div><span>[ '+gagaAgGrid.lookupValue(contentsLocArr, result[i].contentsLoc)+' ]</span></div>\n';
+			html += '<input type="text" class="w200" name="contentsTitle" placeholder="메인타이틀" value="'+result[i].contentsTitle+'"/>\n';
+			html += '<br/>\n';
+			if(result[i].contentsYn=='C' || result[i].contentsYn=='A'){
+				html += '<button type="button" class="btn btn-success btn-lg" onclick="fnChangeContents(this);">수정</button>\n';
+				html += '<button type="button" class="btn btn-default btn-lg" onclick="fnUpdateContents(\''+result[i].contentsLoc+'\');">적용</button>\n';
+			}else if(result[i].contentsYn=='G'){
+				// if(result[i].contentsYn=='A'){
+				// 	html += '<button type="button" class="btn btn-success btn-lg" onclick="fnChangeContents(this);">수정</button>';
+				// 	html += '<button type="button" class="btn btn-default btn-lg" onclick="fnUpdateContents(\''+result[i].contentsLoc+'\');">적용</button>';
+				// 	html += '<br/>';
+				// }
+					html += '<button type="button" class="btn btn-success btn-lg" onclick="fnSearchCategory(\''+result[i].contentsLoc+'\');">상품관리</button>\n';
+			}else{
+				html += '<li>위치설정</li>\n';
 			}
-			html += '<input type="hidden" name="contentsLoc" value="'+result[i].contentsLoc+'"/>';
-			html += '<input type="hidden" name="colCnt" value="'+result[i].colCnt+'"/>';
-			html += '<input type="hidden" name="colNo" value="'+result[i].colNo+'"/>';
-			html += '<input type="hidden" name="contentsYn" value="'+result[i].contentsYn+'"/>';
-			html += '</td>';
+			html += '<input type="hidden" name="contentsLoc" value="'+result[i].contentsLoc+'"/>\n';
+			html += '<input type="hidden" name="colCnt" value="'+result[i].colCnt+'"/>\n';
+			html += '<input type="hidden" name="colNo" value="'+result[i].colNo+'"/>\n';
+			html += '<input type="hidden" name="contentsYn" value="'+result[i].contentsYn+'"/>\n';
+			html += '</td>\n';
 
 			if(colNo=='1'){
 				if(result[i].orgFileNm!=null && result[i].orgFileNm!='null' && result[i].orgFileNm!="" ){
@@ -311,45 +314,51 @@
 			}
 			if(tdSize==10){
 				if(colCnt==1 || colNo==colCnt){
-					html += '<td name="imgTd" style="width:300px;">';
-					html += '<div id="imgView_'+i+'" class="'+onOff+'">';
-					html += '<img id="bannerPreViewUrl_'+i+'" src="'+imgSrc+'" style="width:300px; height:120px"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',\''+imgSrc+'\');"/>';
-					html += '</div>';
-					html += '<div class="uFile w300">';
-					html += '<input id="file_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnFileUpload(this, '+i+');"/>';
-					html += '<label for="file_'+i+'" class="uFileLabel">파일선택</label>';
-					html += '<input type="hidden" name="orgFileNm" value="'+orgFileNm+'"/>';
-					html += '<input type="hidden" name="sysFileNm" value="'+sysFileNm+'"/>';
-					html += '<input type="hidden" name="newSysFileNm" value=""/>';
-					html += '</div>';
-					html += '</td>';
-					html += '<td name="deleteTd" style="max-width:50px;">';
+					html += '<td name="imgTd" style="width:300px;">\n';
+					html += '<div id="imgView_'+i+'" class="'+onOff+'">\n';
+					html += '<img id="bannerPreViewUrl_'+i+'" src="'+imgSrc+'" style="width:300px; height:120px"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',\''+imgSrc+'\');"/>\n';
+					html += '</div>\n';
+					// SUPER관리자,어드민관리자만 파일관리 가능
+					if(roleCd=='G001_0000' || roleCd=='G001_A000'){
+						html += '<div class="uFile w300">\n';
+						html += '<input id="file_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnFileUpload(this, '+i+');"/>\n';
+						html += '<label for="file_'+i+'" class="uFileLabel">파일선택</label>\n';
+						html += '<input type="hidden" name="orgFileNm" value="'+orgFileNm+'"/>\n';
+						html += '<input type="hidden" name="sysFileNm" value="'+sysFileNm+'"/>\n';
+						html += '<input type="hidden" name="newSysFileNm" value=""/>\n';
+						html += '</div>\n';
+					}
+					html += '</td>\n';
+					html += '<td name="deleteTd" style="max-width:50px;">\n';
 					if(roleCd=='G001_0000'){
-						html += '<button type="button" class="btn icn" onclick="fnDeleteRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button>';
+						html += '<button type="button" class="btn icn" onclick="fnDeleteRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button>\n';
 					}
-					html += '</td></tr></tbody>';
+					html += '</td></tr></tbody>\n';
 				}
 			}else{
 				if(colNo==(tdSize-1)){
-					html += '<td name="imgTd" rowspan="2" style="width:300px;">';
-					html += '<div id="imgView_'+i+'" class="'+onOff+'">';
-					html += '<img id="bannerPreViewUrl_'+i+'" src="'+imgSrc+'" style="width:300px; height:120px"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',\''+imgSrc+'\');"/>';
-					html += '</div>';
-					html += '<div class="uFile w300">';
-					html += '<input id="file_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnFileUpload(this, '+i+');"/>';
-					html += '<label for="file_'+i+'" class="uFileLabel">파일선택</label>';
-					html += '<input type="hidden" name="orgFileNm" value="'+orgFileNm+'"/>';
-					html += '<input type="hidden" name="sysFileNm" value="'+sysFileNm+'"/>';
-					html += '<input type="hidden" name="newSysFileNm" value=""/>';
-					html += '</div>';
-					html += '</td>';
-					html += '<td name="deleteTd" rowspan="2" style="max-width:50px;">';
+					html += '<td name="imgTd" rowspan="2" style="width:300px;">\n';
+					html += '<div id="imgView_'+i+'" class="'+onOff+'">\n';
+					html += '<img id="bannerPreViewUrl_'+i+'" src="'+imgSrc+'" style="width:300px; height:120px"  onclick="cfnOpenImagePreViewPopup(\'bannerPreimgViewPop\',\''+imgSrc+'\');"/>\n';
+					html += '</div>\n';
+					// SUPER관리자,어드민관리자만 파일관리 가능
+					if(roleCd=='G001_0000' || roleCd=='G001_A000'){
+						html += '<div class="uFile w300">\n';
+						html += '<input id="file_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnFileUpload(this, '+i+');"/>\n';
+						html += '<label for="file_'+i+'" class="uFileLabel">파일선택</label>\n';
+						html += '<input type="hidden" name="orgFileNm" value="'+orgFileNm+'"/>\n';
+						html += '<input type="hidden" name="sysFileNm" value="'+sysFileNm+'"/>\n';
+						html += '<input type="hidden" name="newSysFileNm" value=""/>\n';
+						html += '</div>\n';
+					}
+					html += '</td>\n';
+					html += '<td name="deleteTd" rowspan="2" style="max-width:50px;">\n';
 					if(roleCd=='G001_0000'){
-						html += '<button type="button" class="btn icn" onclick="fnDeleteRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button>';
+						html += '<button type="button" class="btn icn" onclick="fnDeleteRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button>\n';
 					}
-					html += '</td></tr>';
+					html += '</td></tr>\n';
 				}else if(colNo==colCnt){
-					html += '</tr></tbody>';
+					html += '</tr></tbody>\n';
 				}
 			}
 		}
@@ -364,18 +373,33 @@
 	 * 중분류 리스트
 	 */
 	var fnCate2NoCallBack = function (result){
-		var html = '<option value="">[선택]</option>';
+		var html = '<option value="">[선택]</option>\n';
 		for (var i=0; i<result.length; i++){
-			html += '<option value="'+result[i].cateNo+','+result[i].leafYn+'">['+result[i].cateNo+']'+result[i].cateNm+'</option>';
+			html += '<option value="'+result[i].cateNo+','+result[i].leafYn+'">['+result[i].cateNo+']'+result[i].cateNm+'</option>\n';
 		}
 		$("#searchForm select[name=cate2No]").html(html);
 		// grid 높이 조절
 		//uifnFitGrid();
 	}
 
+	var fnTest = function (obj,idx){
+		var $obj = $(obj);
+		var index = $("#contentsBox"+idx+" option").index($("#contentsBox"+idx+" option:selected"));
+		var contentsType = $("#contentsBox"+idx+" option:eq("+index+")").attr('data-idx');
+		console.log(index);
+		console.log(contentsType);
+		// var dataSelect = document.getElementsByName("contentsLocEdit");
+		// var value = dataSelect.options[document.getElementsByName("contentsLocEdit").selectedIndex].value;
+		// $("select[name=contentsLocEdit]").val();
+		console.log($(obj).val());
+		// $("#id").val("1").prop("selected", true);
+		$("#contentsYn"+idx).val(contentsType).prop('selected',true);
+	}
+
 	/**
 	* 레이아웃 행추가 버튼
 	*/
+	let contentsIdx = 0;
 	$("#btnAddRow").on("click", function (){
 		var val = $("#searchForm select[name=cate1No]").val();
 		var cate1No = val.split(',')[0];
@@ -408,17 +432,17 @@
 		});
 
 		if(cate1No=='1700'){
-			contentsLocHtml += '<option value="SGNB001">[SGNB001] STYLE24MALL > GNB > TOP배너</option>';
-			contentsLocHtml += '<option value="SGNB002">[SGNB002] STYLE24MALL > GNB > TOP배너(모바일)</option>';
-			contentsLocHtml += '<option value="STAB001">[STAB001] STYLE24MALL > GNB > 브랜드</option>';
-			contentsLocHtml += '<option value="STAB002">[STAB002] STYLE24MALL > GNB > 카테고리</option>';
-			contentsLocHtml += '<option value="SKEY001">[SKEY001] STYLE24MALL > GNB > 검색어</option>';
+			contentsLocHtml += '<option value="SGNB001" data-idx="C">[SGNB001] STYLE24MALL > GNB > TOP배너</option>';
+			contentsLocHtml += '<option value="SGNB002" data-idx="C">[SGNB002] STYLE24MALL > GNB > TOP배너(모바일)</option>';
+			contentsLocHtml += '<option value="STAB001" data-idx="C">[STAB001] STYLE24MALL > GNB > 브랜드</option>';
+			contentsLocHtml += '<option value="STAB002" data-idx="C">[STAB002] STYLE24MALL > GNB > 카테고리</option>';
+			contentsLocHtml += '<option value="SKEY001" data-idx="C">[SKEY001] STYLE24MALL > GNB > 검색어</option>';
 		}
 		if(cate1No=='1720'){
-			contentsLocHtml += '<option value="SGNB002">[SGNB002] STYLE24MALL > GNB > TOP배너(모바일)</option>';
-			contentsLocHtml += '<option value="STAB001">[STAB001] STYLE24MALL > GNB > 브랜드</option>';
-			contentsLocHtml += '<option value="STAB002">[STAB002] STYLE24MALL > GNB > 카테고리</option>';
-			contentsLocHtml += '<option value="SKEY001">[SKEY001] STYLE24MALL > GNB > 검색어</option>';
+			contentsLocHtml += '<option value="SGNB002" data-idx="C">[SGNB002] STYLE24MALL > GNB > TOP배너(모바일)</option>';
+			contentsLocHtml += '<option value="STAB001" data-idx="C">[STAB001] STYLE24MALL > GNB > 브랜드</option>';
+			contentsLocHtml += '<option value="STAB002" data-idx="C">[STAB002] STYLE24MALL > GNB > 카테고리</option>';
+			contentsLocHtml += '<option value="SKEY001" data-idx="C">[SKEY001] STYLE24MALL > GNB > 검색어</option>';
 		}
 		for(var i=0; i<contentsLocList.length; i++){
 			var contentsLocCd = contentsLocList[i].cd;
@@ -426,14 +450,14 @@
 			if(contentsLocCd==clocPrefix){
 				if(cate1No=='1700'){
 					if(contentsLocList[i].cd != 'SMM012'){
-						contentsLocHtml += '<option value="'+contentsLocList[i].cd+'">['+contentsLocList[i].cd+'] '+contentsLocList[i].cdNm+'</option>';
+						contentsLocHtml += '<option value="'+contentsLocList[i].cd+'" data-idx="'+contentsLocList[i].cdDesc+'">['+contentsLocList[i].cd+'] '+contentsLocList[i].cdNm+'</option>';
 					}
 				}else if(cate1No=='1720'){
 					if(contentsLocList[i].cd != 'SMM009'){
-						contentsLocHtml += '<option value="'+contentsLocList[i].cd+'">['+contentsLocList[i].cd+'] '+contentsLocList[i].cdNm+'</option>';
+						contentsLocHtml += '<option value="'+contentsLocList[i].cd+'" data-idx="'+contentsLocList[i].cdDesc+'">['+contentsLocList[i].cd+'] '+contentsLocList[i].cdNm+'</option>';
 					}
 				}else{
-					contentsLocHtml += '<option value="'+contentsLocList[i].cd+'">['+contentsLocList[i].cd+'] '+contentsLocList[i].cdNm+'</option>';
+					contentsLocHtml += '<option value="'+contentsLocList[i].cd+'" data-idx="'+contentsLocList[i].cdDesc+'">['+contentsLocList[i].cd+'] '+contentsLocList[i].cdNm+'</option>';
 				}
 			}
 		}
@@ -464,9 +488,9 @@
 
 			html += '" style="text-align:center; max-width:'+maxWidth+'px;">';
 			html += '<div>';
-			html += '<select name="contentsLocEdit" required="required" style="max-width:300px;" data-valid-name="컨텐츠 위치">'+contentsLocHtml+'</select>';
+			html += '<select name="contentsLocEdit" id="contentsBox'+contentsIdx+'" required="required" style="max-width:300px;" data-valid-name="컨텐츠 위치" onchange="fnTest(this,'+contentsIdx+');">'+contentsLocHtml+'</select>';
 			html += '</div>';
-			html += '<select name="contentsYn" required="required" style="max-width:160px;" data-valid-name="컨텐츠 타입"><option value="C">[C] 컨텐츠</option><option value="G">[G] 상품</option><option value="A">[A] 컨텐츠 + 상품</option></select>';
+			html += '<select name="contentsYn" id="contentsYn'+contentsIdx+'" required="required" style="max-width:160px;" data-valid-name="컨텐츠 타입" disabled="disabled"><option value="C">[C] 컨텐츠</option><option value="G">[G] 상품</option><option value="A">[A] 컨텐츠 + 상품</option><option value="E">[E] 위치설정</option></select>';
 			html += '<input type="hidden" name="contentsLoc" value=""/>';
 			html += '<input type="hidden" name="colCnt" value="'+colCnt+'"/>';
 			html += '<input type="hidden" name="colNo" value="'+colNo+'"/>';
@@ -478,13 +502,16 @@
 			if(tdSize==10){
 				if(colCnt==1 || colNo==colCnt){
 					html += '<td name="imgTd" style="width:300px;">';
-					html += '<div class="uFile w300">';
-					html += '<input id="file_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnFileUpload(this, '+i+');"/>';
-					html += '<label for="file_'+i+'" class="uFileLabel">파일선택</label>';
-					html += '<input type="hidden" name="orgFileNm"/>';
-					html += '<input type="hidden" name="sysFileNm"/>';
-					html += '<input type="hidden" name="newSysFileNm"/>';
-					html += '</div>';
+					// SUPER관리자,어드민관리자만 파일관리 가능
+					if(roleCd=='G001_0000' || roleCd=='G001_A000'){
+						html += '<div class="uFile w300">';
+						html += '<input id="file_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnFileUpload(this, '+i+');"/>';
+						html += '<label for="file_'+i+'" class="uFileLabel">파일선택</label>';
+						html += '<input type="hidden" name="orgFileNm"/>';
+						html += '<input type="hidden" name="sysFileNm"/>';
+						html += '<input type="hidden" name="newSysFileNm"/>';
+						html += '</div>';
+					}
 					html += '<div id="imgView_'+i+'" class="off">';
 					html += '<img id="bannerPreViewUrl_'+i+'" src="" style="width:300px; height:120px"/>';
 					html += '</div>';
@@ -498,13 +525,16 @@
 			}else{
 				if(colNo==(tdSize-1)){
 					html += '<td name="imgTd" rowspan="2" style="width:300px;">';
-					html += '<div class="uFile w300">';
-					html += '<input id="file_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnFileUpload(this, '+i+');"/>';
-					html += '<label for="file_'+i+'" class="uFileLabel">파일선택</label>';
-					html += '<input type="hidden" name="orgFileNm"/>';
-					html += '<input type="hidden" name="sysFileNm"/>';
-					html += '<input type="hidden" name="newSysFileNm" value=""/>';
-					html += '</div>';
+					// SUPER관리자,어드민관리자만 파일관리 가능
+					if(roleCd=='G001_0000' || roleCd=='G001_A000'){
+						html += '<div class="uFile w300">';
+						html += '<input id="file_'+i+'" name="file" type="file" class="uFileInput w300" onchange="fnFileUpload(this, '+i+');"/>';
+						html += '<label for="file_'+i+'" class="uFileLabel">파일선택</label>';
+						html += '<input type="hidden" name="orgFileNm"/>';
+						html += '<input type="hidden" name="sysFileNm"/>';
+						html += '<input type="hidden" name="newSysFileNm" value=""/>';
+						html += '</div>';
+					}
 					html += '<div id="imgView_'+i+'" class="off">';
 					html += '<img id="bannerPreViewUrl_'+i+'" src="" style="width:300px; height:120px"/>';
 					html += '</div>';
@@ -524,6 +554,7 @@
 			$("#mainSortable").sortable();
 		}
 		//uifnFitGrid();
+		contentsIdx ++;
 	});
 
 	/**
@@ -622,7 +653,8 @@
 			}
 		});
 		if(!contentLocCheck){
-			mcxDialog.alert('위치코드가 중복 되었습니다.');
+			// mcxDialog.alert('위치코드가 중복 되었습니다.');
+			mcxDialog.alert('이미 레이아웃 설정된 컨텐츠입니다.');
 			return;
 		}
 
@@ -660,7 +692,8 @@
 		var contentsLoc = $(obj).closest("td").find('input:hidden[name="contentsLoc"]').val();
 
 		// 브랜드픽, MD추천 다른 팝업 사용
-		if(contentsLoc=='SMM007'||contentsLoc=='SMM009'||contentsLoc=='SMM012'){
+		if(contentsLoc=='SMM007'||contentsLoc=='SMM009'||contentsLoc=='SMM012'||contentsLoc=='SMM003'||contentsLoc=='SBM007'||contentsLoc=='SBM008'||contentsLoc=='SBM009'
+			||contentsLoc=='SBM017'||contentsLoc=='SBM018'||contentsLoc=='SBM019'||contentsLoc=='SOM003'||contentsLoc=='SCM002'||contentsLoc=='SCM003'){
 			cfnOpenMainMultiContentsPopup(cateNo, contentsLoc, brandGroupNo);
 		}else if(contentsLoc=='STAB001' || contentsLoc=='STAB002' || contentsLoc=='SBM002' || contentsLoc=='SBMM002'){
 			cfnOpenMainGnbContentsPopup(cateNo, contentsLoc, brandGroupNo);

+ 225 - 68
src/main/webapp/WEB-INF/views/display/MainMultiContentsPopupForm.html

@@ -28,6 +28,9 @@
 					<li class="aR">
 						<button type="button" class="btn btn btn-base btn-sm" th:if="${contentsLoc == 'SMM007'}" onclick="fnAddBrand(this);">브랜드 추가</button> <!--id="btnBrandAddRow"-->
 						<button type="button" class="btn btn btn-base btn-sm" th:if="${contentsLoc == 'SMM009' or contentsLoc == 'SMM012'}" onclick="fnAddBrand(this);">MD 탭 추가</button>
+						<button type="button" class="btn btn btn-base btn-sm"
+								th:if="${contentsLoc == 'SMM003' or contentsLoc == 'SBM007' or contentsLoc == 'SBM008' or contentsLoc == 'SBM009' or contentsLoc == 'SBM017' or contentsLoc == 'SBM018' or contentsLoc == 'SBM019' or contentsLoc == 'SOM003' or contentsLoc == 'SCM002' or contentsLoc == 'SCM003'}"
+								onclick="fnAddBrand(this);">컨텐츠 추가</button>
 						<button type="button" class="btn btn btn-dark btn-sm" id="btnMultiPopSave">임시저장</button>
 						<input type="hidden" name="uploadDefaultUrlMultiPop" id="uploadDefaultUrlMultiPop" th:value="${@environment.getProperty('upload.image.view') + '/contents/'}"/>
 						<input type="hidden" name="uploadDefaultBrandUrlPop" id="uploadDefaultBrandUrlPop" th:value="${@environment.getProperty('upload.image.view') + '/contents/brand/'}"/>
@@ -45,11 +48,13 @@
 /*<![CDATA[*/
 	var cateNo = [[${cateNo}]];
 	var contentsLoc = [[${contentsLoc}]];
+	var brandGroupNo = [[${brandGroupNo}]];
 	var contentsLocArr = gagajf.convertToArray([[${contentsLocList}]]);
 	var tdWidth = $("#sortable").find("td").width();
 	var tdDeleteWidth = parseInt(tdWidth/11, 10);
 	tdWidth = tdWidth - tdDeleteWidth;
-
+	let tableLen = 0;		// 테이블 ID
+console.log('brandGroupNo:'+brandGroupNo);
 	/**
 	 * 컨텐츠 미리보기 리스트
 	 */
@@ -58,6 +63,7 @@
 		$("#multiPopSortable").html('');
 		var data = {cateNo : cateNo
 			,contentsLoc : contentsLoc
+			,brandGroupNo : brandGroupNo
 		};
 		var jsonData = JSON.stringify(data);
 		gagajf.ajaxJsonSubmit('/display/contents/preview/list', jsonData, fnCreatePopLayout);
@@ -70,7 +76,8 @@
 			var dispEddt = result[i].dispEddt.split(" ");
 			var brandGroupImg = result[i].brandGroupImg;
 
-			html += '<table class="frmStyle tableTest" style="margin-bottom:30px" id="tabTable'+i+'" tableIdx="'+i+'">';
+			html += '<table class="frmStyle tableTest" style="margin-bottom:30px" id="tabTable'+i+'">';
+			html += '<input type="hidden" name="tableIdx" value="'+i+'" data-id="'+i+'">';
 			html += '<colgroup>';
 			html += '<col style="width:10%;"/>';
 			html += '<col style="width:55%;"/>';
@@ -99,7 +106,7 @@
 				html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddTitlePopRow(this);">타이틀추가</button>';
 				html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>';
 			}
-			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddGoodsRow(this,this,this);">상품추가</button>';
+			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddGoodsRow(this);">상품추가</button>';
 			html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteBrandRow(this);">삭제</button></td>';
 			html += '</tr>';
 			if(contentsLoc=='SMM009' || contentsLoc=='SMM012'){
@@ -117,6 +124,38 @@
 				html += '</tr>';
 				/*html += fnAddBrandImgRow(result[i].brandGroupImg);*/
 			}
+			if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
+				html += '		<tr>';
+				html += '			<th>전시 설정</th>';
+				html += '			<td>';
+				if(result[i].useYn=='Y'){
+					html += '				<label class="rdoBtn"><input type="radio" name="dispYn'+i+'" value="Y" checked="checked"/>노출</label>';
+					html += '				<label class="rdoBtn"><input type="radio" name="dispYn'+i+'" value="N"/>비노출</label>';
+				}else{
+					html += '				<label class="rdoBtn"><input type="radio" name="dispYn'+i+'" value="Y"/>노출</label>';
+					html += '				<label class="rdoBtn"><input type="radio" name="dispYn'+i+'" value="N" checked="checked"/>비노출</label>';
+				}
+				html += '			</td>';
+				if(result[i].contentsLoc=='SCM003'){
+					html += '			<th>상품 노출 개수</th>';
+					html += '			<td>';
+					if(result[i].strVar1=='10'){
+						html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+i+'" value="10" checked="checked"/>10개</label>';
+						html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+i+'" value="20"/>20개</label>';
+						html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+i+'" value="30"/>30개</label>';
+					}else if(result[i].strVar1=='20'){
+						html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+i+'" value="10"/>10개</label>';
+						html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+i+'" value="20" checked="checked"/>20개</label>';
+						html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+i+'" value="30"/>30개</label>';
+					}else{
+						html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+i+'" value="10"/>10개</label>';
+						html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+i+'" value="20"/>20개</label>';
+						html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+i+'" value="30" checked="checked"/>30개</label>';
+					}
+					html += '			</td>';
+				}
+				html += '		</tr>';
+			}
 			html += '</thead><tbody>';
 			if(contentsLoc=='SMM007') {
 				for (var j = 1; j < 8; j++) {
@@ -135,20 +174,30 @@
 					}
 				}
 			}
-			if(!gagajf.isNull(result[i].goodsCdList)){
-				html += fnAddGoodsRow(result[i].goodsCdList,result[i].goodsNmList,result[i].goodsImgList);
+			if(!gagajf.isNull(result[i].contentsGoodsList)){
+				// console.log(fnAddGoodsRow(result[i].contentsGoodsList));
+				html += fnAddGoodsRow(result[i].contentsGoodsList);
 			}
 			html += '</tbody></table>';
 		}
 		$("#multiPopSortable").append(html);
 		$("#multiPopSortable").sortable();
-		$(".itemWrap").sortable();
+		$(".itemWrap").sortable({
+			stop : function (event, table){
+				$('.tableTest').each(function (i){
+					$('#goodsListTd'+i).find('.goodsClass').each(function (j){
+						$(this).find('input[name=dispOrdEdit]').val(j+1);
+					});
+				});
+			}
+		});
 		$('.schDate').datepicker("destroy");
 		$('.schDate').datepicker({
 			changeMonth: true,
 			changeYear: true,
 			defaultDate: $('.schDate').val()
 		});
+		tableLen = $(".tableTest").length;
 	}
 
 	/**
@@ -190,6 +239,7 @@
 	 */
 	var brandIdx = 0;
 	var fnAddBrand = function (param) {
+		brandIdx = tableLen;
 		var src = '';
 		var imgPath = '';
 		if (typeof param != 'object') {
@@ -197,7 +247,8 @@
 			imgPath = param;
 		}
 
-		var html = '<table class="frmStyle tableTest" style="margin-bottom:30px" id="tabTable'+brandIdx+'" tableIdx="'+brandIdx+'">';
+		var html = '<table class="frmStyle tableTest" style="margin-bottom:30px" id="tabTable'+brandIdx+'" >';
+		html += '<input type="hidden" name="tableIdx" value="'+brandIdx+'" data-id="'+brandIdx+'">';
 		html += '<colgroup>';
 		html += '<col style="width:10%;"/>';
 		html += '<col style="width:55%;"/>';
@@ -226,7 +277,7 @@
 			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddTitlePopRow(this);">타이틀추가</button>';
 			html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddSubTextPopRow(this);">서브텍스트추가</button>';
 		}
-		html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddGoodsRow(this,this,this);">상품추가</button>';
+		html += '<button type="button" class="btn btn-base btn-lg" onclick="fnAddGoodsRow(this);">상품추가</button>';
 		html += '<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteBrandRow(this);">삭제</button></td>';
 		html += '</tr>';
 		if(contentsLoc=='SMM009' || contentsLoc=='SMM012'){
@@ -262,9 +313,26 @@
 			html += '</td>';
 			html += '</tr>';*/
 		}
+		if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
+			html += '		<tr>';
+			html += '			<th>전시 설정</th>';
+			html += '			<td>';
+			html += '				<label class="rdoBtn"><input type="radio" name="dispYn'+brandIdx+'" value="Y" checked="checked"/>노출</label>';
+			html += '				<label class="rdoBtn"><input type="radio" name="dispYn'+brandIdx+'" value="N"/>비노출</label>';
+			html += '			</td>';
+			if(contentsLoc=='SCM003'){
+				html += '			<th>상품 노출 개수</th>';
+				html += '			<td>';
+				html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+brandIdx+'" value="10" checked="checked"/>10개</label>';
+				html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+brandIdx+'" value="20"/>20개</label>';
+				html += '				<label class="rdoBtn"><input type="radio" name="dispCnt'+brandIdx+'" value="30"/>30개</label>';
+				html += '			</td>';
+			}
+			html += '		</tr>';
+		}
 		html += '</thead><tbody></tbody></table>';
 
-		brandIdx++;
+		// brandIdx++;
 
 		$("#multiPopSortable").prepend(html);
 		$("#multiPopSortable").sortable();
@@ -283,6 +351,8 @@
 			defaultDate: $('.schDate').val()
 		});
 		fnReloadIdx();
+
+		tableLen = tableLen+1;
 	}
 
 	var fnReloadIdx = function (){
@@ -434,8 +504,14 @@
 
 	// 컨텐츠 행삭제
 	var fnDeleteBrandRow = function (obj){
-		$(obj).closest("table").remove();
-		fnReloadIdx();
+		mcxDialog.confirm('삭제시 전시순서가 초기화됩니다. 삭제하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				$(obj).closest("table").remove();
+				fnReloadIdx();
+			}
+		});
 	}
 
 	// 행삭제
@@ -476,6 +552,28 @@
 		uifnPopupClose('popupMainMultiContents');
 	}
 
+	// 전시 일시 체크
+	function dateValidation(){
+		var dateBool = true;
+		$(".tableTest").each(function(i){
+			var dispStdt = $(this).find("[name=dispStdt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=stTimeHour]").val().replace('시', '') + "" +$(this).find("[name=stTimeMin]").val().replace('분', '') + "00";
+			var dispEddt = $(this).find("[name=dispEddt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=edTimeHour]").val().replace('시', '') + "" +$(this).find("[name=edTimeMin]").val().replace('분', '') + "59";
+
+			let fromDate = dispStdt.replace(/[^0-9]/g, '');
+			let toDate = dispEddt.replace(/[^0-9]/g, '');
+			if(fromDate > toDate){
+				mcxDialog.alert("시작일자는 종료일자 보다 클 수 없습니다.");
+				$(this).find('input[name=dispStdt]').focus();
+				dateBool = false;
+			}
+		});
+		if(!dateBool){
+			return false;
+		}else{
+			return true;
+		}
+	}
+
 	/**
 	 * 임시저장
 	 */
@@ -485,6 +583,11 @@
 			return;
 		}
 
+		// 전시일시 체크
+		if(!dateValidation()){
+			return false;
+		}
+
 		dataArr = [];
 		$("#multiPopSortable .tableTest").each(function(){	//$("#multiPopSortable table").each(function(){
 			var newImgFileArr = [];
@@ -512,9 +615,10 @@
 			var subText2 = '';
 			var subText3 = '';
 			var subText4 = '';
-			var goodsImgArr = [];
+			// var goodsImgArr = [];
 			var goodsCdArr = [];
-			var goodsNmArr = [];
+			// var goodsNmArr = [];
+			var goodsDispOrdArr = [];
 			var i = 1;
 			$(this).find('input[name=planImgPath]').each(function(){
 				eval("imgPath" + i + "='"+$(this).val()+"'");
@@ -547,16 +651,20 @@
 				i++;
 			});
 
-			$(this).find('input[name=goodsImgPath]').each(function(){
-				goodsImgArr.push($(this).val());
-			});
+			// $(this).find('input[name=goodsImgPath]').each(function(){
+			// 	goodsImgArr.push($(this).val());
+			// });
 
 			$(this).find('input[name=goodsCd]').each(function(){
 				goodsCdArr.push($(this).val());
 			});
 
-			$(this).find('input[name=goodsNm]').each(function(){
-				goodsNmArr.push($(this).val());
+			// $(this).find('input[name=goodsNm]').each(function(){
+			// 	goodsNmArr.push($(this).val());
+			// });
+
+			$(this).find('input[name=dispOrdEdit]').each(function(){
+				goodsDispOrdArr.push($(this).val());
 			});
 
 			var dispStdt = $(this).find("[name=dispStdt]").val().replace(/[^0-9]/g, '') + "" +$(this).find("[name=stTimeHour]").val().replace('시', '') + "" +$(this).find("[name=stTimeMin]").val().replace('분', '') + "00";
@@ -564,10 +672,27 @@
 
 			var dispOrd = $(this).find("[name=dispOrd]").val();
 
-			var brandGroupNo = $(this).find("[name=brandGroupNo]").val();
+			var brandGroupNo;
+			if(contentsLoc=='SBM007'||contentsLoc=='SBM008'||contentsLoc=='SBM009'||contentsLoc=='SBM017'||contentsLoc=='SBM018'||contentsLoc=='SBM019'||contentsLoc=='SOM003'||contentsLoc=='SCM002'||contentsLoc=='SCM003'){
+				brandGroupNo = [[${brandGroupNo}]];
+			}else{
+				brandGroupNo = $(this).find("[name=brandGroupNo]").val();
+			}
 			var brandGroupImg = $(this).find("[name=brandNewImgFile]").val();
 			var mdTitle = $(this).find("[name=mdTitle]").val();
 
+			var useYn = 'Y';
+			if(contentsLoc=='SCM002' || contentsLoc=='SCM003'){
+				var thisIdx = $(this).find("input[name=tableIdx]").val();
+				useYn = $(this).find("input:radio[name=dispYn"+thisIdx+"]:checked").val();
+			}else{
+				useYn = 'Y';
+			}
+			if(contentsLoc=='SCM003'){
+				var thisIdx = $(this).find("input[name=tableIdx]").val();
+				strVar1 = $(this).find("input:radio[name=dispCnt"+thisIdx+"]:checked").val();
+			}
+
 			var data = {cateNo : cateNo
 				, contentsLoc : contentsLoc
 				, dispStdt : dispStdt
@@ -600,12 +725,13 @@
 				, brandGroupNo : brandGroupNo
 				, brandGroupImg : brandGroupImg
 				, mdTitle : mdTitle
-				, useYn : 'Y'
+				, useYn : useYn
 				, dispOrd : dispOrd
 				, multiContentsYn : 'Y'
 				, goodsCdArr : goodsCdArr
-				, goodsNmArr : goodsNmArr
-				, goodsImgArr : goodsImgArr
+				// , goodsNmArr : goodsNmArr
+				// , goodsImgArr : goodsImgArr
+				, goodsDispOrdArr : goodsDispOrdArr
 			};
 
 			dataArr.push(data);
@@ -653,6 +779,7 @@
 		}
 
 		var jsonData = JSON.stringify(dataArr);
+		// console.log(jsonData);
 		mcxDialog.confirm('컨텐츠를 저장 하시겠습니까?', {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
@@ -662,64 +789,94 @@
 		});
 	});
 
+	var fnUpBtn = function (obj, idx){
+		var ind = $(obj).closest('.item').index();
+		if(ind>0){
+			$('#goodsListTd'+idx).find(".item").eq(ind-1).before($('#goodsListTd'+idx).find(".item").eq(ind));
+			$('#goodsListTd'+idx).find(".item").eq(ind).find("input[name=setDispOrd]").val(Number($('#goodsListTd'+idx).find(".item").eq(ind).find("input[name=setDispOrd]").val())+1);
+			$('#goodsListTd'+idx).find(".item").eq(ind-1).find("input[name=setDispOrd]").val(Number($('#goodsListTd'+idx).find(".item").eq(ind-1).find("input[name=setDispOrd]").val())-1);
+			$('#goodsListTd'+idx).find(".item").eq(ind).find("input[name=dispOrdEdit]").val(Number($('#goodsListTd'+idx).find(".item").eq(ind).find("input[name=dispOrdEdit]").val())+1);
+			$('#goodsListTd'+idx).find(".item").eq(ind-1).find("input[name=dispOrdEdit]").val(Number($('#goodsListTd'+idx).find(".item").eq(ind-1).find("input[name=dispOrdEdit]").val())-1);
+		}
+	}
+
+	var fnDownBtn = function (obj, idx){
+		var ind = $(obj).closest('.item').index();
+		if(ind<$("#goodsListTd"+idx).find('.goodsClass').length){
+			$('#goodsListTd'+idx).find(".item").eq(ind+1).after($('#goodsListTd'+idx).find(".item").eq(ind));
+			$('#goodsListTd'+idx).find(".item").eq(ind).find("input[name=setDispOrd]").val(Number($('#goodsListTd'+idx).find(".item").eq(ind).find("input[name=setDispOrd]").val())-1);
+			$('#goodsListTd'+idx).find(".item").eq(ind+1).find("input[name=setDispOrd]").val(Number($('#goodsListTd'+idx).find(".item").eq(ind+1).find("input[name=setDispOrd]").val())+1);
+			$('#goodsListTd'+idx).find(".item").eq(ind).find("input[name=dispOrdEdit]").val(Number($('#goodsListTd'+idx).find(".item").eq(ind).find("input[name=dispOrdEdit]").val())-1);
+			$('#goodsListTd'+idx).find(".item").eq(ind+1).find("input[name=dispOrdEdit]").val(Number($('#goodsListTd'+idx).find(".item").eq(ind+1).find("input[name=dispOrdEdit]").val())+1);
+		}
+	}
+
+	var fnUpdownBtn = function (obj, gubun, idx){
+		if(gubun=='up'){
+			var ind = $(obj).closest('.item').index();
+			$('#goodsListTd'+idx).find(".item").eq(0).before($('#goodsListTd'+idx).find(".item").eq(ind));
+			$('#goodsListTd'+idx).find('.goodsClass').each(function (j){
+				$(this).find('input[name=dispOrdEdit]').val(j+1);
+			});
+		}else{
+			var ind = $(obj).closest('.item').index();
+			let lastNum = $("#goodsListTd"+idx).find('.goodsClass').length;
+			$('#goodsListTd'+idx).find(".item").eq(lastNum-1).after($('#goodsListTd'+idx).find(".item").eq(ind));
+			$('#goodsListTd'+idx).find('.goodsClass').each(function (j){
+				$(this).find('input[name=dispOrdEdit]').val(j+1);
+			});
+		}
+
+	}
+
 	/**
 	 * 상품추가
 	 */
 	var goodsIdx = 0;
-	var fnAddGoodsRow = function (param, param2, param3){
+	var fnAddGoodsRow = function (param){
 		var addRow = "goodsListTd"+goodsIdx;
-		//console.log('addRow::'+addRow);
 
 		var html = '<tr name="goodsRow">';
 		html += '<th>상품추가<br><button type="button" class="btn btn-base btn-lg" onclick="fnSearchGoods(\''+addRow+'\');">상품조회</button>';
 		html += '<br></br><button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteTrRow(this);">삭제</button>';
 		html += '</th>';
 		html += '<td colspan="3">';
-		//html += '<table style="border-style: solid;border-color: #ac2925; width:100%; height:20px;">';
-		//html += '<colgroup>';
-		//html += '<col style="width:90%;"/>';
-		//html += '<col style="width:10%;"/>';
-		//html += '<col/>';
-		//html += '</colgroup>';
-		//html += '<thead>';
 		html += '<div class="sortableWrap" data-unit="7" style="overflow-y:scroll;">';
 		html += '<div class="itemWrap" id="goodsListTd'+goodsIdx+'">';
-		if(typeof param!='object'){
-			var goodsCdList = [];
-			var goodsNmList = [];
-			var goodsImgList = [];
-			goodsCdList = param;
-			goodsNmList = param2;
-			goodsImgList = param3;
-			// 여기서 부터 시작! 상품불러오는거 똑같이 html 추가해서 체크
-			// +) 저장할때 TMP_CONTENTS_GOODS 에 상품코드, 상품명, 상품이미지경로 추가해서 3개다 불러와서 데이터 뿌릴수 있게
-			$.each(goodsCdList.split(','),function (i){
-				html += '<ul id="goodsUl'+i+'" class="item ui-state-default goodsClass" style="min-height:120px;"> ';
-				goodsImg = goodsImgList.split(',')[i];
-				goodsCd = goodsCdList.split(',')[i];
-				goodsNm = goodsNmList.split(',')[i];
+		// if(typeof param!='object'){
+			var imgPath = _goodsUrl;
+			for(let i=0; i<param.length; i++){
+				html += '<ul id="goodsUl'+i+'" class="item ui-state-default goodsClass" style="min-height:200px;"> ';
 				html += '<li class="img">';
-				var imgPath = _goodsUrl;
-				html += '<img src="'+imgPath+ "/" +goodsImg+'" onerror="this.src=\'/image/no.png\';"/>';
+				html += '<img src="'+imgPath+ "/" +param[i].sysImgNm+'" onerror="this.src=\'/image/no.png\';"/>';
+				html += '<div class="btnArea">';
+				html += '<button type="button" class="icnSm" title="맨위로" onclick="fnUpdownBtn(this, \'up\', \''+goodsIdx+'\');"><i class="fa fa-play-circle fa-rotate-270" aria-hidden="true"></i></button>';
+				html += '<button type="button" class="icnSm" title="위로" onclick="fnUpBtn(this, \''+goodsIdx+'\');"><i class="fa fa-arrow-up" aria-hidden="true"></i></button>';
+				html += '<button type="button" class="icnSm" title="맨아래로" onclick="fnUpdownBtn(this, \'down\', \''+goodsIdx+'\');"><i class="fa fa-play-circle fa-rotate-90" aria-hidden="true"></i></button>';
+				html += '<button type="button" class="icnSm" title="아래로" onclick="fnDownBtn(this, \''+goodsIdx+'\');"><i class="fa fa-arrow-down" aria-hidden="true"></i></button>';
+				html += '</div>';
 				html += '</li>';
 				html += '<li class="cont">';
 				html += '<ul>';
-				html += '<li class="no" name="goodsCdLi"><span>'+goodsCd+'</span>';
-				html += '<input type="hidden" name="goodsImgPath" value="'+goodsImg+'">';
-				html += '<input type="hidden" name="goodsCd" value="'+goodsCd+'">';
-				html += '<input type="hidden" name="goodsNm" value="'+goodsNm+'">';
+				html += '<li class="no" name="goodsCdLi"><span>'+param[i].goodsCd+'</span>';
+				// html += '<input type="hidden" name="goodsImgPath" value="'+param[i].sysImgNm+'">';
+				html += '<input type="hidden" name="goodsCd" value="'+param[i].goodsCd+'">';
+				// html += '<input type="hidden" name="goodsNm" value="'+param[i].goodsNm+'">';
 				html += '<span style="margin-left:5px;"><a href="javascript:void(0);" id="delId" onclick="fnRemoveGoods(this,'+i+');">X</a></span>';
 				html += '</li>';
 				html += '</li>';
-				html += '<li class="title">'+goodsNm+'</li>';
+				html += '<li class="title">'+param[i].goodsNm+'</li>';
+				html += '<li>';
+				html += '<span>전시순서 :</span>';
+				html += '<input type="text" name="dispOrdEdit" value="'+param[i].contentsDispOrd+'" />';
+				html += '<input type="hidden" name="setDispOrd" value="'+param[i].contentsDispOrd+'"/>';
+				html += '</li>';
 				html += '</ul>';
 				html += '</ul>';
-			});
-		}
+			}
+		// }
 		html += '</div>';
 		html += '</div>';
-		//html += '</thead>';
-		//html += '</table>';
 		html += '</td>';
 		html += '</tr>';
 		if(typeof param == 'object'){
@@ -729,7 +886,7 @@
 			}
 			goodsIdx++;
 			$(param).closest("table").find("tbody").append(html);
-
+			return html;
 		}else{
 			goodsIdx++;
 			return html;
@@ -756,7 +913,7 @@
 			if(i==0){
 				firstOrd = result[i].dispOrd;
 			}
-			html+='<ul id="goodsUl'+i+'" class="item ui-state-default goodsClass" style="min-height:120px;" ';
+			html+='<ul id="goodsUl'+i+'" class="item ui-state-default goodsClass" style="min-height:200px;" ';
 			if(result[i].goodsStat!="G008_90" || result[i].currStockQty<1){
 				html += 'background:#f5f5f5;';
 			}
@@ -771,24 +928,24 @@
 			html += '<li class="cont">';
 			html += '<ul>';
 			html += '<li class="no" name="goodsCdLi"><span>'+result[i].goodsCd+'</span>';
-			html += '<input type="hidden" name="goodsImgPath" value="'+result[i].sysImgNm+'">';
+			// html += '<input type="hidden" name="goodsImgPath" value="'+result[i].sysImgNm+'">';
 			html += '<input type="hidden" name="goodsCd" value="'+result[i].goodsCd+'">';
-			html += '<input type="hidden" name="goodsNm" value="'+result[i].goodsNm+'">';
+			// html += '<input type="hidden" name="goodsNm" value="'+result[i].goodsNm+'">';
 			html += '<span style="margin-left:5px;"><a href="javascript:void(0);" id="delId" onclick="fnRemoveGoods(this,'+i+');">X</a></span>';
 			html += '</li>';
 			html += '<li class="title">'+result[i].goodsNm+'</li>';
-			/*html += '<li>';
+			html += '<li>';
 			html += '<span>전시순서 :</span>';
-			html += '<input type="text" name="dispOrdEdit" value="" />';
-			html += '<input type="text" name="setDispOrd" value="'+result[i].dispOrd+'"/>';
-			html += '</li>';*/
+			html += '<input type="text" name="dispOrdEdit" value="'+(i+1)+'" />';
+			html += '<input type="hidden" name="setDispOrd" value="'+(i+1)+'"/>';
+			html += '</li>';
 			html += '</ul>';
 			html += '</li>';
 			html += '</ul>';
 		}
 		$("#"+addRowTd).append(html);
-		$("#"+addRowTd).sortable();
-		/*$("#"+addRowTd).sortable({
+		// $("#"+addRowTd).sortable();
+		$("#"+addRowTd).sortable({
 			stop: function(event, ui) {
 				if(gagajf.isNull(firstOrd)){
 					firstOrd = 1;
@@ -796,10 +953,10 @@
 					firstOrd = Number(firstOrd);
 				}
 				$("#"+addRowTd+" .item").each(function(i){
-					$(this).find("input[name=setDispOrd]").val(i+firstOrd);
+					$(this).find("input[name=dispOrdEdit]").val(i+firstOrd);
 				});
 			}
-		});*/
+		});
 		$("#"+addRowTd).disableSelection();
 		uifnPopupClose('popupGoods');
 		fnReloadGoodsListIdx(addRowTd);

+ 3 - 1
src/main/webapp/WEB-INF/views/envset/BasicEnvsetForm.html

@@ -185,7 +185,9 @@
 					<tr>
 						<th>장바구니보관기간(일)</th>
 						<td>
-							장바구니 보관기간은 <input name="g11StrSetVal1" type="text" class="w50 aR" maxlength="3" data-valid-type="integer" data-valid-name="장바구니보관기간"/><span class="cRed">일</span> 입니다. 보관기간 경과 시 자동 삭제됩니다.
+							<!-- 2021-06-08 장바구니 보관 기간 30일 고정 > 지하 1층 회의실B 에서 한수인리더 확인.
+							     장바구니 20일 경과 상품 구매 알림톡 보내기 위해 수정되지 않도록 변경 -xodud1202 -->
+							장바구니 보관기간은 <input name="g11StrSetVal1" type="text" class="w50 aR" maxlength="3" data-valid-type="integer" readonly disabled data-valid-name="장바구니보관기간"/><span class="cRed">일</span> 입니다. 보관기간 경과 시 자동 삭제됩니다. (보관기간 30일 고정)
 							<span class="infoTxt cBlue"><i class="fa fa-info-circle marL20" aria-hidden="true"></i>0으로 설정하면 자동으로 삭제 처리를 하지 않습니다.</span>
 						</td>
 					</tr>

+ 1 - 0
src/main/webapp/WEB-INF/views/marketing/CouponPubForCustPopupForm.html

@@ -23,6 +23,7 @@
 		<div class="panelContent">
 			<form id="custSearchForm" name="custSearchForm" action="#" th:action="@{'/customer/active/list'}" >
 				<input type="hidden" name="cpnPubPopYn" value="Y"/>
+				<input type="hidden" name="searchDateGb" value="joinDt"/>
 				<table class="frmStyle">
 					<colgroup>
 						<col width="10%">

+ 29 - 17
src/main/webapp/WEB-INF/views/marketing/CouponRetrievePopupForm.html

@@ -96,15 +96,23 @@
 	let usableCustGbList = gagajf.convertToArray([[${usableCustGbList}]]);
 	let cpnTypeList = gagajf.convertToArray([[${cpnTypeList}]]);
 	let dcWayList = gagajf.convertToArray([[${dcWayList}]]);
+	let cpnStatList = gagajf.convertToArray([[${cpnStatList}]]);
+	let pdGbList = { "P":"기간", "D":"일수" };
 	
 	let columnDefsCouponList = [
-// 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{width: 40, minWidth: 40, cellClass: 'text-center', pinned: 'left', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{
 			headerName: "사이트", field: "siteCd", width: 80, cellClass: "text-center", pinned: 'left',
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(siteList, params.value); }
 		},
 		{headerName: "쿠폰ID", field: "cpnId", width: 90, cellClass: 'text-center', pinned: 'left'},
 		{headerName: "쿠폰명", field: "cpnNm", width: 150, pinned: 'left'},
+		{headerName: "쿠폰상태", field: "cpnStat", width: 140, cellClass: 'text-center' ,
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(cpnStatList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(cpnStatList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(cpnStatList, params.newValue); }
+		},
 		{
 			headerName: "사용가능고객", field: "usableCustGb", width: 120, cellClass: "text-center",
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(usableCustGbList, params.value); }
@@ -127,25 +135,29 @@
 		},
 		{
 			headerName: "최고할인값", field: "maxDcAmt", width: 100, cellClass: "text-center",
-			cellRenderer: function(params) { return (!gagajf.isNull(params.value) ? gagaAgGrid.toAddComma(params.value) : '') + (params.data.dcWay == 'G240_10' ? '원' : '%'); }
+			cellRenderer: function(params) { return (!gagajf.isNull(params.value) ? gagaAgGrid.toAddComma(params.value) : '') + ('원'); }
 		},
+		{headerName: "기간/일수구분", field: "pdGb", width: 140, cellClass: 'text-center' ,
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(pdGbList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(pdGbList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(pdGbList, params.newValue); }
+		},
+		{headerName: "유효시작일시", field: "availStdt", width: 140, cellClass: 'text-center' ,
+			cellRenderer: function(params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		},
+		{headerName: "유효종료일시", field: "availEddt", width: 140, cellClass: 'text-center' ,
+			cellRenderer: function(params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		},
+		{headerName: "유효일수", field: "availDays", width: 140, cellClass: 'text-center'},
 // 		{
-// 			headerName: "기간/일수", field: "pdGb", width: 100, cellClass: "text-center", hide: true,
-// 			cellRenderer: function(params) { return (params.value == 'P' ? '기간' : '일수'); }
-// 		},
-// 		{
-// 			headerName: "유효시작일시", field: "availStdt", width: 150, cellClass: "text-center", hide: true,
-// 			cellRenderer: function(params) { return !gagajf.isNull(params.value) ? gagaAgGrid.toDateTimeFormat(params.value) : ''; }
-// 		},
-// 		{
-// 			headerName: "유효종료일시", field: "availEddt", width: 150, cellClass: "text-center", hide: true,
-// 			cellRenderer: function(params) { return !gagajf.isNull(params.value) ? gagaAgGrid.toDateTimeFormat(params.value) : ''; }
+// 			headerName: "유효기간", field: "availPeriod", width: 300, cellClass: "text-center",
+// 			cellRenderer: function(params) { return params.data.pdGb == 'P' ? gagaAgGrid.toDateTimeFormat(params.data.availStdt) + '~' + gagaAgGrid.toDateTimeFormat(params.data.availStdt) : gagaAgGrid.toAddComma(params.data.availDays) + '일'; }
 // 		},
-// 		{headerName: "유효일수", field: "availDays", width: 100, cellClass: "text-center", hide: true},
-		{
-			headerName: "유효기간", field: "availPeriod", width: 300, cellClass: "text-center",
-			cellRenderer: function(params) { return params.data.pdGb == 'P' ? gagaAgGrid.toDateTimeFormat(params.data.availStdt) + '~' + gagaAgGrid.toDateTimeFormat(params.data.availStdt) : gagaAgGrid.toAddComma(params.data.availDays) + '일'; }
-		},
 		{headerName: "발행제한여부", field: "pubLimitYn", width: 100, cellClass: "text-center"},
 		{
 			headerName: "고객당발행제한수량", field: "custPubLimitQty", width: 100, cellClass: "text-center",

+ 1 - 1
src/main/webapp/WEB-INF/views/marketing/MailTemplateDetailForm.html

@@ -831,7 +831,7 @@
 	
 	$(document).ready(function() {
 		// Create a summernote
-		let snOptions = gagaSn.getToolbarOptions();
+		let snOptions = gagaSn.getToolbarOptions('media');
 		gagaSn.createSummernote(snOptions, '#mailContent');
 		
 		gagaAgGrid.createGrid("mtcgGridList1", mtcgGridOptions1);

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

@@ -172,6 +172,7 @@
 		}
 	}
 
+	
 	// 코너 상품 조회
 	var fnConnerGoodsSearch = function() {
 		var actionUrl = '/marketing/planning/corner/goods/list';
@@ -438,7 +439,7 @@
 					,excelFileNm : result.excelFileNm
 					};
 		var jsonData = JSON.stringify(data);
-		gagajf.ajaxJsonSubmit('/marketing/planning/corner/goods/excelupload', jsonData, fnCornerSearch);
+		gagajf.ajaxJsonSubmit('/marketing/planning/corner/goods/excelupload', jsonData, fnConnerGoodsSearch);
 	}
 
 	var fnOpenGoodsPopup = function() {

+ 119 - 96
src/main/webapp/WEB-INF/views/marketing/PlanDetailPopupForm.html

@@ -484,7 +484,7 @@
 					<tr>
 						<th>기획전명<em class="required" title="필수"></em></th>
 						<td>
-							<input type="text" name="planNm" id="planNm" maxlength="50" required="required" data-valid-name="기획전명"/>
+							<input type="text" name="planNm" id="planNm" maxlength="50" required="required" />
 						</td>
 						<th>서브제목</th>
 						<td>
@@ -532,7 +532,7 @@
 						<th>노출여부<em class="required" title="필수"></em></th>
 						<td colspan="3">
 							<select name="openYn" required="required" data-valid-name="오픈여부">
-								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:selected="${oneData.cd} == 'Y'" th:text="|${oneData.cdNm}|"></option>
+								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:selected="${oneData.cd} == 'N'" th:text="|${oneData.cdNm}|"></option>
 							</select>
 						</td>
 					</tr>
@@ -622,8 +622,8 @@
 						<th class="custJoinTr" colspan="1">신규회원여부<em class="required" title="필수"></em></th>
 						<td>
 							<select name="newCustYn" id="newCustYn" onchange="newCustYnChange(this)" required="required" data-valid-name="신규회원여부">
-								<option value="Y" selected="selected">Y</option>
-								<option value="N" >N</option>
+								<option value="Y" >Y</option>
+								<option value="N" selected="selected">N</option>
 							</select>
 						</td>
 						<th>댓글여부<em class="required" title="필수"></em></th>
@@ -855,7 +855,7 @@
 		$("#searchTxt").val("[" + result[0].planSq + "] " +result[0].planNm);
 		
 	}
-	
+
 	// 댓글여부에 입력창 추가
 	/* $('select[name=replyYn]').on('change', function() {
 		if($('select[name=replyYn]').val() == 'Y'){
@@ -887,15 +887,6 @@
 				}
 			}
 			
-			if(planInfo.newCustYn == 'Y'){
-				$('.custJoinDateTr').css('display' , '');
-				$('#custJoinStdt').attr('required' , true);
-				$('#custJoinEddt').attr('required' , true);
-			} else {
-				$('.custJoinDateTr').css('display' , 'none');
-				$('#custJoinStdt').attr('required' , false);
-				$('#custJoinEddt').attr('required' , false);
-			}
 			
 			if(planInfo.replyLoc == "D"){
 				$('#planUpdateForm input:radio[name=replyLoc]:radio[value="D"]').prop('checked', true);
@@ -996,7 +987,6 @@
 		$("#append3").css('display','none');
 	} */
 	
-	
 
 	// 기획전 복사
 	var fnPlanCopyPopup = function() {
@@ -1030,9 +1020,84 @@
 	}
 
 	 var fnPlanSave = function(formId) {
-		/* if (!gagajf.validation(formId))
-			return;  */
+		var attendData = gagaAgGrid.getAllRowData(gridOptionsAttendList);
+		if ($('#planRegisterForm select[name=planGb]').val() == "C" || $('#planUpdateForm select[name=planGb]').val() == "C" ) {
+			var arr = []; 
+			$.each(attendData, function(idx, item) {
+				arr[idx] = item.basDays;
+			});
+			
+			var dupYn = false;
+			for(let i = 0; i < arr.length; i++) {
+			  const currElem = arr[i];
+			  for(let j = i+1; j < arr.length; j++) {
+				if (currElem != "" && arr[j] != "") {
+					if(currElem === arr[j]) {
+				      dupYn = true;
+				      break;
+				    }
+				}
+			    
+			  }
+			}
+			
+			if (dupYn == true) {
+				mcxDialog.alert('혜택적용 일수가 동일합니다.');
+				return;
+			}
+			
+			for(let i = 0; i < attendData.length; i++) {
 
+				if (attendData[i].benefitGb == 'A') {
+					if (attendData[i].basDays == "") {
+						mcxDialog.alert('혜택(포인트/혜택) 적용 일수를 입력하세요.');
+						return false;
+					}
+					else if (attendData[i].cpnId == "") {
+						mcxDialog.alert('혜택(포인트/혜택) 적용 쿠폰ID를 입력하세요.');
+						return false;
+					}
+					else if (attendData[i].pntAmt == "") {
+						mcxDialog.alert('혜택(포인트/혜택) 적용 포인트를 입력하세요.');
+						return false;
+					}else if (attendData[i].pntUsableDay == "") {
+						mcxDialog.alert('혜택(포인트/혜택) 유효기간 일수를 입력하세요.');
+						return false;
+					}else if(attendData[i].cpnYn == "N"){
+						mcxDialog.alert('혜택(포인트/혜택) 유효한 쿠폰ID를 입력하세요.');
+						return false;
+					}
+				}
+				if (attendData[i].benefitGb == 'P') {
+					if (attendData[i].basDays == "") {
+						mcxDialog.alert('혜택(포인트) 적용 일수를 입력하세요.');
+						return false;
+					}
+					else if (attendData[i].pntAmt == "") {
+						mcxDialog.alert('혜택(포인트) 적용 포인트를 입력하세요.');
+						return false;
+					}else if (attendData[i].pntUsableDay == "") {
+						mcxDialog.alert('혜택(포인트) 유효기간 일수를 입력하세요.');
+						return false;
+					}
+				}
+				if (attendData[i].benefitGb == 'C') {
+					if (attendData[i].basDays == "") {
+						mcxDialog.alert('혜택(쿠폰) 적용 일수를 입력하세요.');
+						return false;
+					}
+					else if (attendData[i].cpnId == "") {
+						mcxDialog.alert('혜택(쿠폰) 적용 쿠폰ID를 입력하세요.');
+						return false;
+					}else if(attendData[i].cpnYn == "N"){
+						mcxDialog.alert('혜택(쿠폰) 유효한 쿠폰ID를 입력하세요.');
+						return false;
+					}
+				}
+			}
+		}
+			
+		
 		// 날짜 유효성 체크
 		var stDate = $(formId + ' input[name=startSearchDate]').val().replaceAll("-", "");
 		var edDate = $(formId + ' input[name=endSearchDate]').val().replaceAll("-", "");
@@ -1131,19 +1196,12 @@
 			multiBrand.push(item.brandGroupNo);
 		});
 		
-		//let allCateData = gagaAgGrid.getAllRowData(gridOptionsFGCateList);
-		/* var multiCate = [];
-		$.each(allCateData, function(idx, item) {
-			multiCate.push(item.cateNo);
-		}); */
-		
 		let allChannelData = gagaAgGrid.getAllRowData(gridOptionsAfList);
 		var multiChannel = [];
 		$.each(allChannelData, function(idx, item) {
 			multiChannel.push(item.afLinkCd);
 		});
-		
-		let attendData = gagaAgGrid.getAllRowData(gridOptionsAttendList);
+
 		
 		// poll 관리일련번호 유효성 체크
 		if (!gagajf.isNull($(formId + ' input[name=pollSq]').val())) {
@@ -1161,7 +1219,9 @@
 				cancelBtnText: "취소",
 				sureBtnText: "확인",
 				sureBtnClick: function() {
-					if(!validationPlanDetail()){
+					
+					if( $('#planRegisterForm input[name=planNm]').val() == ''){
+						mcxDialog.alert('기획전명을 입력하세요.');
 						return false;
 					}
 					
@@ -1173,7 +1233,6 @@
 					} 
 					
 					var chkFrontGb = $('#planRegisterForm input:checkbox[name=frontGb]:checked');
-					
 					if(chkFrontGb.length < 1){
 						mcxDialog.alert("프론트구분을 체크해주세요.");
 						return false;
@@ -1256,6 +1315,7 @@
 						}	
 					
 					var jsonData =  JSON.stringify(data);
+					
 					gagajf.ajaxJsonSubmit("/marketing/planning/detail/create", jsonData, fnPlanDetailCallBack); 
 					uifnPopupClose('popupPlanDetail');
 					fnPlanListSearch();
@@ -1268,7 +1328,8 @@
 				cancelBtnText: "취소",
 				sureBtnText: "확인",
 				sureBtnClick: function() {
-					if(!validationPlanDetail()){
+					if( $('#planUpdateForm input[name=planNm]').val() == ''){
+						mcxDialog.alert('기획전명을 입력하세요.');
 						return false;
 					}
 					
@@ -1501,55 +1562,6 @@
 		}
 	};
 	
-	// 카테고리 리스트 설정
-/* 	var columnCateList = [
-		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-		{headerName: "사이트", field: "siteCd", width: 120, cellClass: 'text-center'},
-		{headerName: "카테고리 구분", field: "cateGb", width: 110, cellClass: 'text-center'},
-		{headerName: "카테고리 이름", field: "cateNm", width: 120, cellClass: 'text-center'},
-		{headerName: "번호", field: "cateNo", width: 150, cellClass: 'text-center', hide: true},
-	]; */ 
-	
-	// 카테고리 그리드 설정
-	/* var gridOptionsFGCateList = gagaAgGrid.getGridOptions(columnCateList);
-	gridOptionsFGCateList.rowSelection = "multiple";
-	gridOptionsFGCateList.suppressRowClickSelection = true; */
-	
-	// 브랜드 설정 선택삭제 버튼 클릭시
-   /*  $('#btnDeleteCate').on('click', function() {
-    	gridOptionsFGCateList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGCateList)});
-    });
-	 */
-
-	
-	// 카테고리 추가
-	/* $('#btnAddCate').on('click' , function () {
-		cfnOpenCategoryPopup("fnSetPopupCategoryInfo");
-	}); */
-	
-	// 카테고리 추가 콜백 함수
-	/* var fnSetPopupCategoryInfo = function (result) {
-		// 기존 리스트 데이터 for
-		for(let i = 0 ; i < result.length ; i++) {
-			let addChk = true, gridListValue = gagaAgGrid.getAllRowData(gridOptionsFGCateList);		// 받아온 모든 데이터
-
-			// 받아온 data for
-			for(let j = 0 ; j < gridListValue.length ; j++) {
-				// 동일한 data는 추가하지 않음
-				if(gridListValue[j].cateNo == result[i].cateNo) {	addChk = false;	}		// 중복체크
-			}
-
-			// 중복되지 않은 데이터 리스트에 추가
-			if(addChk) {
-				if(result[i].cate2No!=null)
-				{
-					mcxDialog.alert('카테고리1에서 선택하세요.');
-					return;
-				}
-				gagaAgGrid.addRowData(gridOptionsFGCateList, {"siteCd":result[i].siteCd , "cateGb":result[i].cateGb, "cateNm":result[i].cateNm, "cateNo":result[i].cateNo});
-			}
-		}
-	} */
 	
 	// 제휴채널 추가
 	$('#btnAddAf').on('click' , function () {
@@ -1580,15 +1592,6 @@
     	gridOptionsAfList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsAfList)});
     });
 	
-	// validation 체크
-	function validationPlanDetail() {
-		if( $('#planUpdateForm input[name=planNm]').val() == '' || $('#planRegisterForm input[name=planNm]').val() == ''){
-			mcxDialog.alert('기획전명을 입력하세요.');
-			return false;
-		}
-		return true;
-	} 
-	
 	// 신규회원여부 변경시
 	function newCustYnChange(pThis){
 		var selectVal = $(pThis).val();
@@ -1618,8 +1621,8 @@
 		{headerName: "혜택", field: "benefit", width: 110, cellClass: 'text-center',
 			cellEditor: 'agRichSelectCellEditor',cellEditorParams: { values: ['포인트', '쿠폰', '포인트/쿠폰'] },
 	    },
-	    {headerName: "", field: "benefitGb", width: 50, cellClass: 'text-center', hide:true
-    	}, 
+	    {headerName: "", field: "benefitGb", width: 50, cellClass: 'text-center', hide:true	},
+	    {headerName: "", field: "cpnYn", width: 50, cellClass: 'text-center', hide:true	},
 	    {headerName: "일수", field: "basDays", width: 50, cellClass: 'text-center', cellEditor: 'numericCellEditor'},
 		{headerName: "포인트", field: "pntAmt", width: 80, cellClass: 'text-center', cellEditor: 'numericCellEditor'
 			,cellEditorParams: { maxlength: 3, required: true }
@@ -1666,7 +1669,7 @@
 			return;
 		} else {
 	
-			var data = { benefit: '포인트',benefitGb: 'P', pntAmt:'', cpnId: ''};
+			var data = { benefit: '포인트',benefitGb: 'P', cpnYn:'Y', basDays:'' ,pntAmt:'', cpnId: '', pntUsableDay:''};
 			gagaAgGrid.addRowData(gridOptionsAttendList, data);
 		}
 
@@ -1684,32 +1687,46 @@
 	
 		if (event.colDef.field == "benefit"){
 			if (event.data.benefit == "쿠폰"){
-				
 				gridOptionsAttendList.api.forEachNode(function(rowNode, index) {
 					if (rowNode.data.benefit == "쿠폰"){
-						event.data.benefitGb = "C"
-							gridOptionsAttendList.api.updateRowData({update: [event.data]});
+						event.data.benefitGb = "C";
+						gridOptionsAttendList.api.updateRowData({update: [event.data]});
 						return;
 					}
 				});
 			}else if(event.data.benefit == "포인트"){
 				gridOptionsAttendList.api.forEachNode(function(rowNode, index) {
 					if (rowNode.data.benefit == "포인트"){
-						event.data.benefitGb = "P"
-							gridOptionsAttendList.api.updateRowData({update: [event.data]});
+						event.data.benefitGb = "P";
+						gridOptionsAttendList.api.updateRowData({update: [event.data]});
 						return;
 					}
 				});
 			}else{
 				gridOptionsAttendList.api.forEachNode(function(rowNode, index) {
 					if (rowNode.data.benefit == "포인트/쿠폰"){
-						event.data.benefitGb = "A"
-							gridOptionsAttendList.api.updateRowData({update: [event.data]});
+						event.data.benefitGb = "A";
+						gridOptionsAttendList.api.updateRowData({update: [event.data]});
 						return;
 					}
 				});
 			}	
 		}
+		
+		if (event.colDef.field == "cpnId"){
+			var param = {cpnId : event.data.cpnId};
+			var jsonData = JSON.stringify(param);
+			
+			gagajf.ajaxJsonSubmit('marketing/planning/attend/coupon', jsonData, function(result) {
+				if (result.length < 1) {
+					mcxDialog.alert('입력하신 쿠폰 ID ' + event.data.cpnId + '은(는) 유효하지 않습니다.');
+					event.data.cpnYn = "N";
+					return false;
+				}else{
+					event.data.cpnYn = "Y";
+				}
+			});
+		}
 	}
 	
 	$(document).ready(function() {
@@ -1726,8 +1743,14 @@
 		gagaAgGrid.createGrid("gridAfPlanList", gridOptionsAfList);
 		gagaAgGrid.createGrid("gridAttendPlanList", gridOptionsAttendList);
 		
+		$('.custJoinDateTr').css('display' , 'none');
+		$('#custJoinStdt').attr('required' , false);
+		$('#custJoinEddt').attr('required' , false);
+		
+		
 		 if (mode =='U') {
 			 if(planInfo.newCustYn == 'Y'){
+				 $('.custJoinDateTr').show();
 				 $("#planUpdateForm input[name=custJoinStDay]").val(planInfo.custJoinStdt.split(' ')[0]);
 				 $("#planUpdateForm input[name=custJoinEdDay]").val(planInfo.custJoinEddt.split(' ')[0]);
 			 }

+ 39 - 41
src/main/webapp/WEB-INF/views/marketing/PlanTemplatePopupForm.html

@@ -207,7 +207,7 @@
 															</td>                                                                                                                    
 														</tr>        
 														<tr>
-															<th>상품 링크</th>
+															<th>이미지 링크</th>
 															<td><input type="text" th:name="${'fileLinkUrl' + num}" class="w300 aL">
 															</td>
 														</tr>
@@ -396,7 +396,7 @@
 										</colgroup>
 										<tr>
 											<th>상품 구분 1<br/>[전시여부<label class="chkBox" style="padding-left: 0px;"><input type="checkbox" name="goodsDispYn1" value="Y" checked></label>]<br>
-												<button type="button" class="btn btn-danger btn-lg" id="" onclick="btnDeleteGridNum1();">구분 삭제</button>
+												<button type="button" class="btn btn-danger btn-lg" id="" onclick="btnDeleteGridNum1('gridOptions_c1');">구분 삭제</button>
 											</th>
 											<td>
 												<div class="">
@@ -462,7 +462,7 @@
 											<th>상품 구분 2<br/>[전시여부<label class="chkBox" style="padding-left: 0px;"><input type="checkbox" name="goodsDispYn2" value="Y" checked></label>]<br>
 											<br>
 												<button type="button" class="btn btn-danger btn-lg" id=""
-													onclick="btnDeleteGridNum2();">구분 삭제</button>
+													onclick="btnDeleteGridNum2('gridOptions_c2');">구분 삭제</button>
 											</th>
 											<td>
 												<div class="">
@@ -1370,7 +1370,8 @@
 			$("#planTemplateForm input[name=goodsTitle1]").val('');
 			$("#planTemplateForm input[name=goodsUrl1]").val('');
 			$("#planTemplateForm input[name=goodsDispOrd1]").val('');
-			gridOptions_p1.api.updateRowData();
+			//gagaAgGrid.removeRowData(gridOptions_p1, false);
+			gridOptions_p1.api.updateRowData({remove:gagaAgGrid.getAllRowData(gridOptions_p1)});
 		}
 	}		
 	function btnDeleteGridNum2(param){
@@ -1385,7 +1386,7 @@
 			$("#planTemplateForm input[name=goodsTitle2]").val('');
 			$("#planTemplateForm input[name=goodsUrl2]").val('');
 			$("#planTemplateForm input[name=goodsDispOrd2]").val('');
-			gridOptions_p2.api.updateRowData();
+			gridOptions_p2.api.updateRowData({remove:gagaAgGrid.getAllRowData(gridOptions_p2)});
 		}			
 	}			
 	function btnDeleteGridNum3(param){
@@ -1400,7 +1401,7 @@
 			$("#planTemplateForm input[name=goodsTitle3]").val('');
 			$("#planTemplateForm input[name=goodsUrl3]").val('');
 			$("#planTemplateForm input[name=goodsDispOrd3]").val('');
-			gridOptions_p3.api.updateRowData();
+			gridOptions_p3.api.updateRowData({remove:gagaAgGrid.getAllRowData(gridOptions_p3)});
 		}			
 	}		
 	function btnDeleteGridNum4(param){
@@ -1415,7 +1416,7 @@
 			$("#planTemplateForm input[name=goodsTitle4]").val('');
 			$("#planTemplateForm input[name=goodsUrl4]").val('');
 			$("#planTemplateForm input[name=goodsDispOrd4]").val('');
-			gridOptions_p4.api.updateRowData();
+			gridOptions_p4.api.updateRowData({remove:gagaAgGrid.getAllRowData(gridOptions_p4)});
 		}			
 	}
 	function btnDeleteGridNum5(param){
@@ -1430,7 +1431,7 @@
 			$("#planTemplateForm input[name=goodsTitle5]").val('');
 			$("#planTemplateForm input[name=goodsUrl5]").val('');
 			$("#planTemplateForm input[name=goodsDispOrd5]").val('');
-			gridOptions_p5.api.updateRowData();
+			gridOptions_p5.api.updateRowData({remove:gagaAgGrid.getAllRowData(gridOptions_p5)});
 		}
 	} 
 	function btnDeleteGridNum6(param){
@@ -1445,7 +1446,7 @@
 			$("#planTemplateForm input[name=goodsTitle6]").val('');
 			$("#planTemplateForm input[name=goodsUrl6]").val('');
 			$("#planTemplateForm input[name=goodsDispOrd6]").val('');
-			gridOptions_p6.api.updateRowData();
+			gridOptions_p6.api.updateRowData({remove:gagaAgGrid.getAllRowData(gridOptions_p6)});
 		}
 	} 
 	function btnDeleteGridNum7(param){
@@ -1460,7 +1461,7 @@
 			$("#planTemplateForm input[name=goodsTitle7]").val('');
 			$("#planTemplateForm input[name=goodsUrl7]").val('');
 			$("#planTemplateForm input[name=goodsDispOrd7]").val('');
-			gridOptions_p7.api.updateRowData();
+			gridOptions_p7.api.updateRowData({remove:gagaAgGrid.getAllRowData(gridOptions_p7)});
 		}
 	} 
 	function btnDeleteGridNum8(param){
@@ -1475,7 +1476,7 @@
 			$("#planTemplateForm input[name=goodsTitle8]").val('');
 			$("#planTemplateForm input[name=goodsUrl8]").val('');
 			$("#planTemplateForm input[name=goodsDispOrd8]").val('');
-			gridOptions_p8.api.updateRowData();
+			gridOptions_p8.api.updateRowData({remove:gagaAgGrid.getAllRowData(gridOptions_p8)});
 		}
 	} 
 	function btnDeleteGridNum9(param){
@@ -1490,7 +1491,7 @@
 			$("#planTemplateForm input[name=goodsTitle9]").val('');
 			$("#planTemplateForm input[name=goodsUrl9]").val('');
 			$("#planTemplateForm input[name=goodsDispOrd9]").val('');
-			gridOptions_p9.api.updateRowData();
+			gridOptions_p9.api.updateRowData({remove:gagaAgGrid.getAllRowData(gridOptions_p9)});
 		}
 	} 
 	function btnDeleteGridNum10(param){
@@ -1505,7 +1506,7 @@
 			$("#planTemplateForm input[name=goodsTitle10]").val('');
 			$("#planTemplateForm input[name=goodsUrl10]").val('');
 			$("#planTemplateForm input[name=goodsDispOrd10]").val('');
-			gridOptions_p10.api.updateRowData();
+			gridOptions_p10.api.updateRowData({remove:gagaAgGrid.getAllRowData(gridOptions_p10)});
 		}
 	} 	
 	
@@ -1687,7 +1688,7 @@
 			}else{
 				multiPlanFile.push($('#fileItemVal'+(i+1)).val());
 				multiPlanFile2.push($('#planTemplateForm input[name=fileLinkUrl'+(i+1)+']').val());
-				multiPlanFile3.push($('#planTemplateForm input:radio[name=linkOpenGb'+(i+1)+']:checked').val());
+				multiPlanFile3.push($('#planTemplateForm input:radio[name=fileLinkOpenGb'+(i+1)+']:checked').val());
 			}
 		}
 		
@@ -2072,10 +2073,6 @@ $(document).ready(function() {
 		})
 		
 		
-		
-		
-		
-		
 		if(mode == 'U'){
 			if(typeof reviewList[0] != 'undefined'){
 				// 리뷰
@@ -2246,8 +2243,7 @@ $(document).ready(function() {
 					$('#planTemplateForm input[name=goodsPlanContSq'+(i+1)+']').val(goodsList[i].planContSq);
 					$('#planTemplateForm input[name=goodsPlanContItemSq'+(i+1)+']').val(goodsList[i].planContItemSq);
 					
-					if (goodsList[i].title != '' || goodsList[i].linkUrl != ''){
-						console.log(goodsList[i].dispYn);
+					if (goodsList[i].title != '' || goodsList[i].linkUrl != '' ){
 						if (goodsList[i].dispYn == 'Y') {
 							$('#planTemplateForm input:checkbox[name=goodsDispYn'+(i+1)+']').prop('checked', true);
 						}else{
@@ -2268,47 +2264,49 @@ $(document).ready(function() {
 							$('#planTemplateForm input:radio[name=linkOpenGb'+(i+1)+']:radio[value="N"]').prop('checked', true);
 						}
 						$('#btnAddGridNum' + (i + 1)).show();
-						gridOptions_p1.api.setRowData(goodsDetailList1);
-						gridOptions_p2.api.setRowData(goodsDetailList2);
-						gridOptions_p3.api.setRowData(goodsDetailList3);
-						gridOptions_p4.api.setRowData(goodsDetailList4);
-						gridOptions_p5.api.setRowData(goodsDetailList5);
-						gridOptions_p6.api.setRowData(goodsDetailList6);
-						gridOptions_p7.api.setRowData(goodsDetailList7);
-						gridOptions_p8.api.setRowData(goodsDetailList8);
-						gridOptions_p9.api.setRowData(goodsDetailList9);
-						gridOptions_p10.api.setRowData(goodsDetailList10);
-					}else if(goodsDetailList1.length > 0){
+						
+					}
+					
+					if(goodsDetailList1.length > 0){
 						gridOptions_p1.api.setRowData(goodsDetailList1);
 						$('#btnAddGridNum1').show();
-					}else if(goodsDetailList2.length > 0){
+					}
+					if(goodsDetailList2.length > 0){
 						gridOptions_p2.api.setRowData(goodsDetailList2);
 						$('#btnAddGridNum2').show();
-					}else if(goodsDetailList3.length > 0){
+					}
+					if(goodsDetailList3.length > 0){
 						gridOptions_p3.api.setRowData(goodsDetailList3);
 						$('#btnAddGridNum3').show();
-					}else if(goodsDetailList4.length > 0){
+					}
+					if(goodsDetailList4.length > 0){
 						gridOptions_p4.api.setRowData(goodsDetailList4);
 						$('#btnAddGridNum4').show();
-					}else if(goodsDetailList5.length > 0){
+					}
+					if(goodsDetailList5.length > 0){
 						gridOptions_p5.api.setRowData(goodsDetailList5);
 						$('#btnAddGridNum5').show();
-					}else if(goodsDetailList6.length > 0){
+					}
+					if(goodsDetailList6.length > 0){
 						gridOptions_p6.api.setRowData(goodsDetailList6);
 						$('#btnAddGridNum6').show();
-					}else if(goodsDetailList7.length > 0){
+					}
+					if(goodsDetailList7.length > 0){
 						gridOptions_p7.api.setRowData(goodsDetailList7);
 						$('#btnAddGridNum7').show();
-					}else if(goodsDetailList8.length > 0){
+					}
+					if(goodsDetailList8.length > 0){
 						gridOptions_p8.api.setRowData(goodsDetailList8);
 						$('#btnAddGridNum8').show();
-					}else if(goodsDetailList9.length > 0){
+					}
+					if(goodsDetailList9.length > 0){
 						gridOptions_p9.api.setRowData(goodsDetailList9);
 						$('#btnAddGridNum9').show();
-					}else if(goodsDetailList10.length > 0){
+					}
+					if(goodsDetailList10.length > 0){
 						gridOptions_p10.api.setRowData(goodsDetailList10);
 						$('#btnAddGridNum10').show();
-					}
+					} 
 						
 				}
 			}

+ 4 - 31
src/main/webapp/WEB-INF/views/marketing/SocialShoppingListForm.html

@@ -445,41 +445,13 @@
 			}
 		}
 		
-		$(formId + ' input[name=socialStdt]').val($(formId + ' input[name=stDate]').val() + ' ' + stTime);
-		$(formId + ' input[name=socialEddt]').val($(formId + ' input[name=edDate]').val() + ' ' + '23:59:59');
+		$(formId + ' input[name=socialStdt]').val($(formId + ' input[name=stDate]').val() + ' ' + stTime + ':00:00');
+		$(formId + ' input[name=socialEddt]').val($(formId + ' input[name=edDate]').val() + ' ' + edTime + ':59:59');
 		
 		//fnPlanCheck(planSq, msg);
 		fnSocialSave(msg);
 	}
-	
-	// 기획전 체크
-	/* var fnPlanCheck = function(planSq, msg) {
-		if (gagajf.isNull(planSq)) {
-			fnSocialSave(msg);
-			return;
-		}
-		
-		var params = new Object();
-		params.planSq = planSq;
-		var jsonData = JSON.stringify(params);
-		
-		gagajf.ajaxJsonSubmit('marketing/social/list', jsonData, function(result) {
-			if (result.length > 0) {
-				
-				var checkFlag = false;
-				var socialSq = $('#detailForm input[name=socialSq]').val();
-				$(result).each(function(idx, data) {
-					if (data.socialSq != socialSq) checkFlag = true;
-				});
-				
-				if (checkFlag) {
-					mcxDialog.alert('선택한 기획전은 이미 다른 소셜에 적용되어있습니다.');
-					return;
-				}
-			} 
-			fnSocialSave(msg);
-		});
-	} */
+
 	
 	// 소셜 저장
 	var fnSocialSave = function(msg) {
@@ -689,6 +661,7 @@
 			}
 		}
 		mcxDialog.alert('상품이 적용되었습니다.');
+		uifnPopupClose('popupGoods')
 		gridOptionsGoods.api.setRowData(oldGoodsList);
 	}
 	

+ 0 - 1092
src/main/webapp/WEB-INF/views/order/CancelRequestFormBack01.html

@@ -1,1092 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : CancelRequestForm.html
- * @desc    : 취소요청 화면
- *============================================================================
- * STYLE24
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.12.12   jsh77b       최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="1400" data-height="600">
-	<div class="panelStyle">
-		<div class="panelTitle">
-			<h2>취소요청</h2>
-			<button type="button" class="close" onclick="uifnPopupClose('popupCancelRequestForm');"><i class="fa fa-times"></i></button>
-		</div>
-			
-		<div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
-			<form id="cancelRequestFrm" name="cancelRequestFrm" action="/order/cancel" method="post" target="hdFrameForOrderCancel">
-				<input type="hidden" name="chgGb" 		value="30" />
-				<input type="hidden" name="ordDtlNos" 	value="" />
-				<input type="hidden" name="chgQtys" 	value="" />
-				<input type="hidden" name="ordNo" 	 	th:value="${ordNo}" />
-				<input type="hidden" name="mallGb" 		th:value="${orderInfo.mallGb}" />
-				<input type="hidden" name="delvFee" 	value="0" />
-				<input type="hidden" name="pgStat"	 	value="" />
-				<input type="hidden" name="chgReason"	value="" />
-				<input type="hidden" name="chgReasonDesc" value="" />
-				<input type="hidden" name="cncWait" 	th:value="${cncWait}" />
-		
-				<h3>주문정보</h3>
-				<div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
-
-				<h3>취소정보</h3>
-				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
-				
-				<h3>배송비정보</h3>
-				<div id="gridDelvCdList" style="width:100%; height: 140px;" class="ag-theme-balham"></div>
-				
-				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
-					<button type="button" class="btn btn-success" id="btnCancelRequestEscrow" onclick="fnCancelRequestEscrow();" style="display:none;">에스크로 결제생성</button>
-					<label th:if="${sessionInfo.userId == 'jsshin'
-									|| sessionInfo.userId == 'dlffyd7942'
-									|| sessionInfo.userId == 'card007'
-									|| sessionInfo.userId == 'hrkim'
-									|| sessionInfo.userId =='666badboy'
-									|| sessionInfo.userId =='yjyy83'}">
-						<input type="checkbox" name="pgStats" value="N">PG 전문 미전송
-					</label>
-					<button type="button" class="btn btn-success" id="btnCancelRequestPartOk" onclick="fnCancelRequestPartOk();">요청</button>
-				</div>
-				
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:160px;" />
-						<col style="width:320px;" />
-						<col style="width:160px;" />
-						<col />
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>취소사유 <i class="star"></i></th>
-							<td>
-								<select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
-									<option value="">[선택하세요]</option>
-									<option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}:${oneData.cdNm}|" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-								</select>
-							</td>
-							<th>귀책사유</th>
-							<td><span id="imputeReason"></span></td>
-						</tr>
-						<tr>
-							<th>요청메모</th>
-							<td colspan="3">
-								<textarea name="chgMemo" style="height:80px;" placeholder="취소사유를 300자내외로 작성해 주세요"></textarea>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-				
-				<h4>환불예정금액</h4>
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:20%;"/>
-						<col style="width:30%;"/>
-						<col style="width:20%;"/>
-						<col style="width:30%;"/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>총 결제 금액</th>
-							<td colspan="3"><span id="spanPayAmt"></span>원 (상품 실결제 금액 : <span id="spanSumRealOrdAmt"></span>원, 배송금액 : <span id="spanSumDeliveryFee"></span>원) </td>
-						</tr>
-						<tr>
-							<th>주문 상품 금액</th>
-							<td><span id="spanOrdAmt"></span>원</td>
-							<th>취소 상품 금액</th>
-							<td><span id="spanCnclRtnAmt"></span>원</td>
-						</tr>
-						<tr>
-							<th>취소 사용 포인트</th>
-							<td colspan="3"><span id="spanTotPntDcAmt"></span>원 (고객 포인트 : <span id="spanPntDcAmt"></span>원 + 상품 선포인트 : <span id="spanPrePntDcAmt"></span>원) </td>
-						</tr>
-						<tr>
-							<th>취소 사용 쿠폰금액</th>
-							<td colspan="3"><span id="spanCpnDcAmt"></span>원 (즉시할인쿠폰 : <span id="spanCpn1DcAmt"></span>원 + 상품쿠폰 : <span id="spanGoodsCpnDcAmt"></span>원 + 장바구니쿠폰 : <span id="spanCartCpnDcAmt"></span>원)</td>
-						</tr>
-						<tr>
-							<th>취소 다다익선 금액</th>
-							<td colspan="3"><span id="spanTmtbDcAmt"></span>원 (수량할인 : <span id="spanTmtb1DcAmt"></span>원 + 금액할인 : <span id="spanTmtb2DcAmt"></span>원)</td>
-						</tr>
-						
-						<tr>
-							<th>취소 고객 상품권 금액</th>
-							<td colspan="3"><span id="spanGfcdUseAmt"></span>원</td>
-						</tr>
-						
-						<tr>
-							<th>취소 상품 실결제 금액</th>
-							<td><span id="spanRealCnclRtnAmt"></span>원</td>
-							<th>추가 배송 금액</th>
-							<td><span id="spanTotDeliveryFee"></span>원 </td>
-						</tr>
-						<tr>
-							<th>환불 금액 합계</th>
-							<td colspan="3"><span id="spanRefundAmt"></span>원</td>
-						</tr>
-					</tbody>
-				</table>
-				
-			</form>
-		</div>
-	</div>
-</div>
-
-<!-- data -->
-<script th:inline="javascript">
-/*<![CDATA[*/
-var cancelRequestTargetList = [[${cancelRequestTargetList}]];
-
-var temp1 = true;
-var temp2 = false;
-
-// specify the columns
-var columnCancelReqList = [
-	{
-		headerName	: "주문상세정보",
-		children	: [
-			{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: "goodsCd"			, width: 100	, cellClass: 'text-center', hide: temp1},
-			{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-center', hide: temp1},
-			{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2}
-		]
-	},
-	{
-		headerName	: "주문상세단품정보",
-		children	: [
-			{headerName: "단품코드"		, field: "itemCd"			, width: 100	, cellClass: 'text-center', hide: temp2},
-			{headerName: "단품명"			, field: "itemNm"			, width: 200	, cellClass: 'text-center', hide: temp2},
-			{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		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "단품금액"		
-				, field			: "itemPrice"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "단품옵션금액"		
-				, field			: "optAddPrice"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문상세수량",
-		children	: [
-			{
-				headerName		: "주문"		
-				, field			: "ordQty"			
-				, width			: 80		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "취소/요청"		
-				, field			: "cnclRtnQty"			
-				, width			: 80		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
-					return cnclRtnReqQty;
-				}
-			},
-			{
-				headerName		: "취소"		
-				, field			: "ordCanChgQty"			
-				, width			: 100		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					var ordQty 			= parseInt(params.data.ordQty);
-					var cnclRtnQty 		= parseInt(params.data.cnclRtnQty);
-					var ordReqChgQty 	= parseInt(params.data.ordReqChgQty);
-					var ordCanChgQty 	= ordQty - (cnclRtnQty +  ordReqChgQty);
-					
-					var strVal 			= "";
-					strVal += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
-					
-					for (i=0 ; i<=ordCanChgQty ; i++) {
-						if (i == params.data.ordCanChgQty) {
-							strVal += "	<option value='"+i+"' selected>"+i+"</option>";
-						} else {
-							strVal += "	<option value='"+i+"'>"+i+"</option>";
-						}
-					}
-				
-					strVal += "</select>";
-					return strVal;
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문단품금액",
-		children	: [
-			{
-				headerName		: "주문"
-				, field			: "ordAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "취소"		
-				, field			: "cnclRtnAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "즉시할인"		
-				, field			: "cpn1DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "다다익선1"		
-				, field			: "tmtb1DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "다다익선2"		
-				, field			: "tmtb2DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "상품쿠폰"		
-				, field			: "goodsCpnDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "장바구니쿠폰"		
-				, field			: "cartCpnDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "포인트"		
-				, field			: "pntDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "선포인트"		
-				, field			: "prePntDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "상품권"		
-				, field			: "gfcdUseAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "실결제금액"		
-				, field			: "realOrdAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문배송비정보",
-		children	: [
-			{
-				headerName		: "배송비"		
-				, field			: "delvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{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		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "기본배송비"		
-				, field			: "orgDelvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
-		]
-	}
-];
-var gridOptionsCancelReqList = orderAgGrid.getGridOptions(columnCancelReqList);
-// Add on options
-gridOptionsCancelReqList.suppressRowClickSelection = true;
-gridOptionsCancelReqList.rowSelection = 'multiple';
-
-
-//specify the columns
-var columnCancelReqToBeList = [
-	{
-		headerName	: "주문상세정보",
-		children	: [
-			{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: "goodsCd"			, width: 100	, cellClass: 'text-center', hide: temp1},
-			{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-center', hide: temp1},
-			{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2}
-		]
-	},
-	{
-		headerName	: "주문상세단품정보",
-		children	: [
-			{headerName: "단품코드"		, field: "itemCd"			, width: 100	, cellClass: 'text-center', hide: temp2},
-			{headerName: "단품명"			, field: "itemNm"			, width: 200	, cellClass: 'text-center', hide: temp2},
-			{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		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "단품금액"		
-				, field			: "itemPrice"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "단품옵션금액"		
-				, field			: "optAddPrice"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문상세수량",
-		children	: [
-			{
-				headerName		: "주문"		
-				, field			: "ordQty"			
-				, width			: 80		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "취소/요청"		
-				, field			: "cnclRtnQty"			
-				, width			: 80		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
-					return cnclRtnReqQty;
-				}
-			},
-			{
-				headerName		: "취소"		
-				, field			: "ordCanChgQty"			
-				, width			: 100		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문단품금액",
-		children	: [
-			{
-				headerName		: "주문"
-				, field			: "ordAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "취소"		
-				, field			: "cnclRtnAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "즉시할인"		
-				, field			: "cpn1DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "다다익선1"		
-				, field			: "tmtb1DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "다다익선2"		
-				, field			: "tmtb2DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "상품쿠폰"		
-				, field			: "goodsCpnDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "장바구니쿠폰"		
-				, field			: "cartCpnDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "포인트"		
-				, field			: "pntDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "선포인트"		
-				, field			: "prePntDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "상품권"		
-				, field			: "gfcdUseAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "환불금액"		
-				, field			: "realOrdAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문배송비정보",
-		children	: [
-			{
-				headerName		: "배송비"		
-				, field			: "delvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{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		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "기본배송비"		
-				, field			: "orgDelvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
-		]
-	}
-];
-var gridOptionsCancelReqToBeList = orderAgGrid.getGridOptions(columnCancelReqToBeList);
-
-//specify the columns
-var columnDelvCdList = [
-	{
-		headerName	: "배송코드기준금액",
-		children	: [
-			{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
-			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
-			{
-				headerName		: "주문"
-				, field			: "ordAmt"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "취소"		
-				, field			: "cnclRtnAmt"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "환불"		
-				, field			: "realOrdAmt"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "배송비정보",
-		children	: [
-			{
-				headerName		: "배송비"		
-				, field			: "delvFee"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "무료배송비"		
-				, field			: "minOrdAmt"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "기본배송비"		
-				, field			: "orgDelvFee"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{headerName: "추가배송비여부"		, field: "addDelvFeeYn"		, width: 140	, cellClass: 'text-center', hide: temp2},
-			{
-				headerName		: "추가배송비"		
-				, field			: "addDelvFee"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
-		]
-	}
-];
-var gridOptionsDelvCdList = orderAgGrid.getGridOptions(columnDelvCdList);
-</script>
-
-<!-- AgGrid 컬럼 세팅 -->
-<script>
-// 공통1. 주문상세 그리드 옵션 정보 적용
-var orderAgGrid = {
-	getGridOptions : function(colDefs) {
-		return {
-			columnDefs					: colDefs
-			, detailCellRendererParams	: {
-				detailGridOptions	: {
-					columnDefs				: []
-					, defaultColDef			: {
-						resizable: true
-					}
-					, suppressLoadingOverlay: false
-					, onGridReady			: function (params) {
-						params.api.setDomLayout('autoHeight');
-					}
-					, onFirstDataRendered	: function (params) {
-						params.api.sizeColumnsToFit();
-					}
-				}
-				, getDetailRowData: function (params) {
-					params.successCallback(params.data.orderDetailList);
-				}
-			}
-			, defaultColDef: {
-				resizable: true
-			}
-			, isRowMaster: function (dataItem) {
-				return dataItem ? dataItem.orderDetailList.length > 1 : false;
-			}
-			, suppressRowTransform: true
-			, enableRangeSelection: true
-		};
-	}
-}
-</script>
-
-<script>
-// 취소정보계산
-var fnCalculateRefundAmt = function (obj) {
-	// 취소정보담은목록
-	var cancelRequestTargetToBeList = [];
-
-	if (obj != null) {
-		for (i=0 ; i<cancelRequestTargetList.length ; i++) {
-			var orDtlNo 		= $(obj).attr("ordDtlNo");
-			var ordCanChgQty 	= $(obj).val();
-			
-			if (cancelRequestTargetList[i].ordDtlNo == orDtlNo) {
-				cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
-			}
-		}
-		// 주문정보 다시 셋팅 (체크해봐야할문제)
-		gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
-	}
-	
-	/*
-	// 취소 후 발생되는 배송정보 설정
-	var delvFeeList 		= [];
-	var delvObj				= new Object();
-	var k					= 0;
-	
-	// 공급업체 와 배송정책코드가 같지안으면 주문금액, 취소금액 RESET
-	delvObj.ordAmt 			= 0;
-	delvObj.cnclRtnAmt 		= 0;
-	delvObj.realOrdAmt 		= 0;
-	delvObj.delvFee 		= cancelRequestTargetList[k].delvFee;
-	delvObj.minOrdAmt 		= cancelRequestTargetList[k].minOrdAmt;
-	delvObj.orgDelvFee 		= cancelRequestTargetList[k].orgDelvFee;
-	delvObj.supplyCompCd 	= cancelRequestTargetList[k].supplyCompCd;
-	delvObj.delvFeeCd 		= cancelRequestTargetList[k].delvFeeCd;
-	delvObj.allCanYn		= cancelRequestTargetList[k].allCanYn;
-
-	delvFeeList[k] 			= delvObj;
-	
-	var spanPayAmt			= 0; // 총 결제 금액
-	var spanSumRealOrdAmt	= 0; // 상품 실결제 금액
-	var spanSumDeliveryFee	= 0; // 배송금액
-	var spanOrdAmt			= 0; // 주문 상품 금액
-	var spanCnclRtnAmt		= 0; // 취소 상품 금액
-	var spanTotPntDcAmt		= 0; // 취소 사용 포인트
-	var spanPntDcAmt		= 0; // 고객 포인트
-	var spanPrePntDcAmt		= 0; // 상품 선포인트
-	var spanCpnDcAmt		= 0; // 취소 사용 쿠폰금액
-	var spanCpn1DcAmt		= 0; // 즉시할인쿠폰
-	var spanGoodsCpnDcAmt	= 0; // 상품쿠폰
-	var spanCartCpnDcAmt	= 0; // 장바구니쿠폰
-	var spanTmtbDcAmt		= 0; // 취소 다다익선 금액
-	var spanTmtb1DcAmt		= 0; // 수량할인
-	var spanTmtb2DcAmt		= 0; // 금액할인
-	var spanGfcdUseAmt		= 0; // 취소 고객 상품권 금액
-	var spanRealCnclRtnAmt	= 0; // 취소 상품 실결제 금액
-	var spanTotDeliveryFee	= 0; // 환불 배송 금액
-	var spanRefundAmt		= 0; // 환불 금액 합계
-
-	// 취소정보 설정
-	for (i=0 ; i<cancelRequestTargetList.length ; i++) {
-		var obj 			= new Object();
-		
-		var itemQty 		= cancelRequestTargetList[i].itemQty;
-		var ordQty 			= cancelRequestTargetList[i].ordQty;
-		var cnclRtnQty 		= cancelRequestTargetList[i].cnclRtnQty;
-		var ordReqChgQty 	= cancelRequestTargetList[i].ordReqChgQty;
-		var ordCanChgQty 	= cancelRequestTargetList[i].ordCanChgQty;
-		var itemPrice 		= cancelRequestTargetList[i].itemPrice;
-		var optAddPrice 	= cancelRequestTargetList[i].optAddPrice;
-		var ordAmt 			= cancelRequestTargetList[i].ordAmt;
-		
-		var cnclRtnAmt 		= cancelRequestTargetList[i].cnclRtnAmt;
-		var cpn1DcAmt 		= cancelRequestTargetList[i].cpn1DcAmt;
-		var tmtb1DcAmt 		= cancelRequestTargetList[i].tmtb1DcAmt;
-		var tmtb2DcAmt 		= cancelRequestTargetList[i].tmtb2DcAmt;
-		var goodsCpnDcAmt 	= cancelRequestTargetList[i].goodsCpnDcAmt;
-		var cartCpnDcAmt 	= cancelRequestTargetList[i].cartCpnDcAmt;
-		var pntDcAmt 		= cancelRequestTargetList[i].pntDcAmt;
-		var prePntDcAmt 	= cancelRequestTargetList[i].prePntDcAmt;
-		var gfcdUseAmt 		= cancelRequestTargetList[i].gfcdUseAmt;
-		var realOrdAmt 		= cancelRequestTargetList[i].realOrdAmt;
-		
-		obj.ordNo			= cancelRequestTargetList[i].ordNo;
-		obj.ordDtlNo		= cancelRequestTargetList[i].ordDtlNo;
-		obj.goodsCd			= cancelRequestTargetList[i].goodsCd;
-		obj.goodsNm			= cancelRequestTargetList[i].goodsNm;
-		obj.itemCd			= cancelRequestTargetList[i].itemCd;
-		obj.itemNm			= cancelRequestTargetList[i].itemNm;
-		obj.optCd1			= cancelRequestTargetList[i].optCd1;
-		obj.optCd2			= cancelRequestTargetList[i].optCd2;
-		obj.itemQty			= itemQty;
-		obj.ordQty			= ordQty;
-		obj.cnclRtnQty		= cnclRtnQty;
-		obj.ordReqChgQty	= ordReqChgQty;
-		obj.ordCanChgQty	= ordCanChgQty;
-		obj.itemPrice		= itemPrice;
-		obj.optAddPrice		= optAddPrice;
-		obj.ordAmt			= ordAmt;
-		
-		obj.cnclRtnAmt 		= ((itemPrice + optAddPrice) * itemQty) * ordCanChgQty;
-		obj.cpn1DcAmt 		= cpn1DcAmt 		* (ordCanChgQty/ordQty);
-		obj.tmtb1DcAmt 		= tmtb1DcAmt 		* (ordCanChgQty/ordQty);
-		obj.tmtb2DcAmt 		= tmtb2DcAmt 		* (ordCanChgQty/ordQty);
-		obj.goodsCpnDcAmt 	= goodsCpnDcAmt 	* (ordCanChgQty/ordQty);
-		obj.cartCpnDcAmt 	= cartCpnDcAmt 		* (ordCanChgQty/ordQty);
-		obj.pntDcAmt 		= pntDcAmt 			* (ordCanChgQty/ordQty);
-		obj.prePntDcAmt 	= prePntDcAmt 		* (ordCanChgQty/ordQty);
-		obj.gfcdUseAmt 		= gfcdUseAmt 		* (ordCanChgQty/ordQty);
-		
-		obj.realOrdAmt 		= obj.cnclRtnAmt - (obj.cpn1DcAmt  + obj.tmtb1DcAmt + obj.tmtb2DcAmt + obj.goodsCpnDcAmt + obj.cartCpnDcAmt + obj.pntDcAmt + obj.prePntDcAmt + obj.gfcdUseAmt);
-		
-		// 배송관련 설정		
-		obj.ordDtlNo		= cancelRequestTargetList[i].ordDtlNo;
-		obj.goodsTypeNm		= cancelRequestTargetList[i].goodsTypeNm;
-		obj.delvFee			= cancelRequestTargetList[i].delvFee;
-		obj.supplyCompCd	= cancelRequestTargetList[i].supplyCompCd;
-		obj.delvFeeCd		= cancelRequestTargetList[i].delvFeeCd;
-		obj.minOrdAmt		= cancelRequestTargetList[i].minOrdAmt;
-		obj.orgDelvFee		= cancelRequestTargetList[i].orgDelvFee;
-		
-		// 주문상세상태
-		obj.ordDtlStat		= cancelRequestTargetList[i].ordDtlSat;
-		obj.ordDtlSatNm		= cancelRequestTargetList[i].ordDtlSatNm;
-		obj.allCanYn		= cancelRequestTargetList[i].allCanYn;
-		
-		cancelRequestTargetToBeList[i] = obj;
-
-		// 배송비 정책 기준으로 조건 처리
-		if (delvFeeList[k].supplyCompCd == obj.supplyCompCd && delvFeeList[k].delvFeeCd == obj.delvFeeCd) {
-			// 공급업체 와 배송정책코드가 같으면 주문금액, 취소금액 SUM
-			delvFeeList[k].ordAmt 		+= obj.ordAmt;
-			delvFeeList[k].cnclRtnAmt 	+= obj.cnclRtnAmt;
-			delvFeeList[k].realOrdAmt 	+= obj.realOrdAmt;
-			
-			if (obj.allCanYn == "N") {
-				delvFeeList[k].allCanYn = "N";
-			}
-		} else {			
-			k++;
-			
-			var delvObj					= new Object();
-			
-			// 공급업체 와 배송정책코드가 같지안으면 주문금액, 취소금액 RESET
-			delvObj.ordAmt 				= obj.ordAmt;
-			delvObj.cnclRtnAmt 			= obj.cnclRtnAmt;
-			delvObj.realOrdAmt 			= obj.realOrdAmt;
-			
-			delvObj.delvFee 			= obj.delvFee;
-			delvObj.minOrdAmt 			= obj.minOrdAmt;			
-			delvObj.orgDelvFee 			= obj.orgDelvFee;
-			delvObj.supplyCompCd 		= obj.supplyCompCd;
-			delvObj.delvFeeCd 			= obj.delvFeeCd;
-			delvObj.allCanYn			= obj.allCanYn;
-			
-			delvFeeList[k] 				= delvObj;
-		}
-		
-		spanSumRealOrdAmt	+= realOrdAmt;
-		spanPntDcAmt		+= obj.pntDcAmt;
-		spanPrePntDcAmt		+= obj.prePntDcAmt;
-		spanCpn1DcAmt		+= obj.cpn1DcAmt;
-		spanGoodsCpnDcAmt	+= obj.goodsCpnDcAmt;
-		spanCartCpnDcAmt	+= obj.cartCpnDcAmt;
-		spanTmtb1DcAmt		+= obj.tmtb1DcAmt;
-		spanTmtb2DcAmt		+= obj.tmtb2DcAmt;
-		spanGfcdUseAmt		+= obj.gfcdUseAmt;
-		spanRealCnclRtnAmt	+= obj.realOrdAmt;
-	}
-	
-	// 추가배송비 발생여부 , 추가배송비, 배송비정책단위 전체취소 여부
-	for (i=0 ; i<delvFeeList.length ; i++) {
-		var obj = delvFeeList[i];
-		
-		// 무료배송비용 > (주문금액 - 취소금액)
-		if (obj.minOrdAmt > (obj.ordAmt - obj.cnclRtnAmt)) {
-			// 2020.12.28 
-			// case : 배송정책 기준으로 1,2 상품 주문 후 1번 출고 후 1번반품 2번취소 할 경우 전체 취소 가 아니므로 배송비 부과 있을지 모르겠음 주문업체 단위로 배송되기 때문에 발생하지 않을것 같음
-			if ((obj.ordAmt - obj.cnclRtnAmt) == 0) {
-				if (obj.allCanYn == "N") {
-					obj.addDelvFeeYn 	= "Y";
-					obj.addDelvFee 		= obj.orgDelvFee;
-				} else {
-					// 전체취소의 경우에 해당
-					obj.addDelvFeeYn 	= "N";
-					obj.addDelvFee 		= 0;
-				}
-			} else {
-				// 취소신청화면에서 대부분 아래의 조건에 해당
-				obj.addDelvFeeYn 	= "Y";
-				obj.addDelvFee 		= obj.orgDelvFee;
-			}
-			
-			//obj.addDelvFeeYn 	= "Y";
-			//obj.addDelvFee 		= obj.orgDelvFee;
-		} else {
-			obj.addDelvFeeYn 	= "N";
-			obj.addDelvFee 		= 0;
-		}
-		
-		spanSumDeliveryFee	+= obj.delvFee;
-		spanOrdAmt			+= obj.ordAmt;
-		spanCnclRtnAmt		+= obj.cnclRtnAmt;
-		spanTotDeliveryFee  += obj.addDelvFee;
-				
-		delvFeeList[i] = obj;
-	}
-
-	gridOptionsCancelReqToBeList.api.setRowData(cancelRequestTargetToBeList);
-	gridOptionsDelvCdList.api.setRowData(delvFeeList);
-	
-	// 환불금액표시
-	spanPayAmt 			= spanSumRealOrdAmt + spanSumDeliveryFee;
-	spanTotPntDcAmt 	= spanPntDcAmt + spanPrePntDcAmt;
-	spanCpnDcAmt 		= spanCpn1DcAmt + spanGoodsCpnDcAmt + spanCartCpnDcAmt;
-	spanTmtbDcAmt 		= spanTmtb1DcAmt + spanTmtb2DcAmt;
-	spanRefundAmt 		= spanRealCnclRtnAmt - spanTotDeliveryFee;
-	
-	$("#spanPayAmt").text(spanPayAmt.addComma());					//총 결제 금액
-	$("#spanSumRealOrdAmt").text(spanSumRealOrdAmt.addComma());		//상품 실결제 금액
-	$("#spanSumDeliveryFee").text(spanSumDeliveryFee.addComma());	//배송금액
-	
-	$("#spanOrdAmt").text(spanOrdAmt.addComma());					//주문 상품 금액
-	$("#spanCnclRtnAmt").text(spanCnclRtnAmt.addComma());			//취소 상품 금액
-	
-	$("#spanTotPntDcAmt").text(spanTotPntDcAmt.addComma());			//취소 사용 포인트
-	$("#spanPntDcAmt").text(spanPntDcAmt.addComma());				//고객 포인트
-	$("#spanPrePntDcAmt").text(spanPrePntDcAmt.addComma());			//상품 선포인트
-	
-	$("#spanCpnDcAmt").text(spanCpnDcAmt.addComma());				//취소 사용 쿠폰금액
-	$("#spanCpn1DcAmt").text(spanCpn1DcAmt.addComma());				//즉시할인쿠폰
-	$("#spanGoodsCpnDcAmt").text(spanGoodsCpnDcAmt.addComma());		//상품쿠폰
-	$("#spanCartCpnDcAmt").text(spanCartCpnDcAmt.addComma());		//장바구니쿠폰
-	
-	$("#spanTmtbDcAmt").text(spanTmtbDcAmt.addComma());				//취소 다다익선 금액
-	$("#spanTmtb1DcAmt").text(spanTmtb1DcAmt.addComma());			//수량할인
-	$("#spanTmtb2DcAmt").text(spanTmtb2DcAmt.addComma());			//금액할인
-	
-	$("#spanGfcdUseAmt").text(spanGfcdUseAmt.addComma());			//취소 고객 상품권 금액
-	
-	$("#spanRealCnclRtnAmt").text(spanRealCnclRtnAmt.addComma());	//취소 상품 실결제 금액
-	$("#spanTotDeliveryFee").text(spanTotDeliveryFee.addComma());	//환불 배송 금액
-	
-	$("#spanRefundAmt").text(spanRefundAmt.addComma());				//환불 금액 합계
-	*/
-	
-	// 환불금액계산호출
-	var jsonData = JSON.stringify(cancelRequestTargetList);
-	gagajf.ajaxJsonSubmit(
-		'/order/cancel/refundAmt'
-		, jsonData
-		, function(result) {
-			gridOptionsCancelReqToBeList.api.setRowData(result.cancelOrderRefundList);
-			gridOptionsDelvCdList.api.setRowData(result.cancelDelvRefundList);
-			
-			$("#spanPayAmt").text(result.spanPayAmt.addComma());					//총 결제 금액
-			$("#spanSumRealOrdAmt").text(result.spanSumRealOrdAmt.addComma());		//상품 실결제 금액
-			$("#spanSumDeliveryFee").text(result.spanSumDeliveryFee.addComma());	//배송금액
-			
-			$("#spanOrdAmt").text(result.spanOrdAmt.addComma());					//주문 상품 금액
-			$("#spanCnclRtnAmt").text(result.spanCnclRtnAmt.addComma());			//취소 상품 금액
-			
-			$("#spanTotPntDcAmt").text(result.spanTotPntDcAmt.addComma());			//취소 사용 포인트
-			$("#spanPntDcAmt").text(result.spanPntDcAmt.addComma());				//고객 포인트
-			$("#spanPrePntDcAmt").text(result.spanPrePntDcAmt.addComma());			//상품 선포인트
-			
-			$("#spanCpnDcAmt").text(result.spanCpnDcAmt.addComma());				//취소 사용 쿠폰금액
-			$("#spanCpn1DcAmt").text(result.spanCpn1DcAmt.addComma());				//즉시할인쿠폰
-			$("#spanGoodsCpnDcAmt").text(result.spanGoodsCpnDcAmt.addComma());		//상품쿠폰
-			$("#spanCartCpnDcAmt").text(result.spanCartCpnDcAmt.addComma());		//장바구니쿠폰
-			
-			$("#spanTmtbDcAmt").text(result.spanTmtbDcAmt.addComma());				//취소 다다익선 금액
-			$("#spanTmtb1DcAmt").text(result.spanTmtb1DcAmt.addComma());			//수량할인
-			$("#spanTmtb2DcAmt").text(result.spanTmtb2DcAmt.addComma());			//금액할인
-			
-			$("#spanGfcdUseAmt").text(result.spanGfcdUseAmt.addComma());			//취소 고객 상품권 금액
-			
-			$("#spanRealCnclRtnAmt").text(result.spanRealCnclRtnAmt.addComma());	//취소 상품 실결제 금액
-			$("#spanTotDeliveryFee").text(result.spanTotDeliveryFee.addComma());	//환불 배송 금액
-			
-			$("#spanRefundAmt").text(result.spanRefundAmt.addComma());				//환불 금액 합계
-			
-			//alert("a");
-			//$('#btnSearch').trigger('click');
-		}
-	);
-}
-
-//  사유
-var fnChangeChgReason = function(reasonCd){
-	var arrREasonCd = reasonCd.split(":");
-	
-	// 취소, 반품, 교환 사유 판단
-	if (arrREasonCd[0] == 'G686_10') {
-		$("#imputeReason").text("고객");
-		isImputationCustomers = true;
-	} else {
-		$("#imputeReason").text("회사");
-		isImputationCustomers = false;
-	}
-
-	$('#cancelRequestFrm input[name=chgReason]').val(arrREasonCd[0]);
-	$('#cancelRequestFrm input[name=chgReasonDesc]').val(arrREasonCd[1]);
-
-	//fnCalculateRefundAmt();			//환불예정금액 계산.
-}
-
-// 에스크로 전체취소, 부분취소 요청
-var fnCancelRequestPartOk = function () {
-	// 취소, 반품, 교환 신청 정보 목록
-	//cancelRequestTargetList;
-	
-	var jsonData = JSON.stringify(cancelRequestTargetList);
-	
-	gagajf.ajaxJsonSubmit(
-		'/order/cancel/'
-		, jsonData
-		, function() {
-			$('#btnSearch').trigger('click');
-		}
-	);
-	
-}
-
-$(document).ready(function() {	
-	// Create a agGrid
-	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsCancelReqList);			// 주문정보
-	gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
-	
-	gagaAgGrid.createGrid('gridOrderCancelRequestToBeList'	, gridOptionsCancelReqToBeList);		// 취소정보
-	
-	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비 정보
-	
-	// 취소정보계산
-	fnCalculateRefundAmt(null);
-});
-</script>
-</html>
-
-
-
-
-

+ 0 - 1054
src/main/webapp/WEB-INF/views/order/CancelRequestFormBack02.html

@@ -1,1054 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : CancelRequestForm.html
- * @desc    : 취소요청 화면
- *============================================================================
- * STYLE24
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.12.12   jsh77b       최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="1400" data-height="600">
-	<div class="panelStyle">
-		<div class="panelTitle">
-			<h2>취소요청</h2>
-			<button type="button" class="close" onclick="uifnPopupClose('popupCancelRequestForm');"><i class="fa fa-times"></i></button>
-		</div>
-			
-		<div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
-			<form id="cancelRequestFrm" name="cancelRequestFrm" action="/orderChange/cancel" method="post" target="hdFrameForOrderCancel">
-				<input type="hidden" name="ordNo" th:value="${ordNo}"/>
-				<input type="hidden" name="chgReason" value=""/>
-				<input type="hidden" name="chgReasonDesc" value=""/>
-				
-				<h4>주문정보</h4>
-				<div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
-
-				<h4>취소정보</h4>
-				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
-				
-				<h4>배송비정보</h4>
-				<div id="gridDelvCdList" style="width:100%; height: 140px;" class="ag-theme-balham"></div>
-				
-				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
-					<button type="button" class="btn btn-success" onclick="fnCnclReq('req');">취소신청</button>
-					<button type="button" class="btn btn-success" onclick="fnCnclReq('complete');">취소완료</button>
-				</div>
-				
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:160px;" />
-						<col style="width:320px;" />
-						<col style="width:160px;" />
-						<col />
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>취소사유 <i class="star"></i></th>
-							<td>
-								<select name="selectChgReason" onchange="fnChangeChgReason($(this).val());">
-									<option value="">[선택하세요]</option>
-									<option th:if="${chgReasonList}" th:each="oneData, status : ${chgReasonList}" th:value="|${oneData.cd}:${oneData.cdNm}|" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-								</select>
-							</td>
-							<th>귀책사유</th>
-							<td><span id="imputeReason"></span></td>
-						</tr>
-						<tr>
-							<th>요청메모</th>
-							<td colspan="3">
-								<textarea id="chgMemo" name="chgMemo" style="height:80px;" placeholder="취소사유를 300자내외로 작성해 주세요"></textarea>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-				
-				<h4>환불예정금액</h4>
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:20%;"/>
-						<col style="width:30%;"/>
-						<col style="width:20%;"/>
-						<col style="width:30%;"/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>총 결제 금액</th>
-							<td colspan="3"><span id="spanPayAmt"></span>원 (상품 실결제 금액 : <span id="spanSumRealOrdAmt"></span>원, 배송금액 : <span id="spanSumDeliveryFee"></span>원) </td>
-						</tr>
-						<tr>
-							<th>주문 상품 금액</th>
-							<td><span id="spanOrdAmt"></span>원</td>
-							<th>취소 상품 금액</th>
-							<td><span id="spanCnclRtnAmt"></span>원</td>
-						</tr>
-						<tr>
-							<th>취소 사용 포인트</th>
-							<td colspan="3"><span id="spanTotPntDcAmt"></span>원 (고객 포인트 : <span id="spanPntDcAmt"></span>원 + 상품 선포인트 : <span id="spanPrePntDcAmt"></span>원) </td>
-						</tr>
-						<tr>
-							<th>취소 사용 쿠폰금액</th>
-							<td colspan="3"><span id="spanCpnDcAmt"></span>원 (즉시할인쿠폰 : <span id="spanCpn1DcAmt"></span>원 + 상품쿠폰 : <span id="spanGoodsCpnDcAmt"></span>원 + 장바구니쿠폰 : <span id="spanCartCpnDcAmt"></span>원)</td>
-						</tr>
-						<tr>
-							<th>취소 다다익선 금액</th>
-							<td colspan="3"><span id="spanTmtbDcAmt"></span>원 (수량할인 : <span id="spanTmtb1DcAmt"></span>원 + 금액할인 : <span id="spanTmtb2DcAmt"></span>원)</td>
-						</tr>
-						
-						<tr>
-							<th>취소 고객 상품권 금액</th>
-							<td colspan="3"><span id="spanGfcdUseAmt"></span>원</td>
-						</tr>
-						
-						<tr>
-							<th>취소 상품 실결제 금액</th>
-							<td><span id="spanRealCnclRtnAmt"></span>원</td>
-							<th>추가 배송 금액</th>
-							<td><span id="spanTotDeliveryFee"></span>원 </td>
-						</tr>
-						
-						<tr>
-							<th>환불 금액 합계</th>
-							<td colspan="3"><span id="spanRefundAmt"></span>원</td>
-						</tr>
-					</tbody>
-				</table>
-				
-				<div id="wrapRefundAccount" style="width:50%;">
-					<h4>환불계좌정보</h4>
-					<button type="button" id="btnSaveAccount" class="btn btnRight btn-base btn-sm" style="margin-left:10px;" onclick="fnCreateOrderRfAccount();">등록</button>
-					<div id="gridRefundAccountInfo" style="height: 150px;" class="ag-theme-balham"></div>
-				</div>
-				
-			</form>
-		</div>
-	</div>
-</div>
-
-<!-- data -->
-<script th:inline="javascript">
-/*<![CDATA[*/
-var cancelRequestTargetList = [[${cancelRequestTargetList}]];				// 취소대상목록
-var ordNo 					= [[${ordNo}]];									// 주문번호
-var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
-var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
-
-var temp1 = true;
-var temp2 = false;
-
-// 1. 주문정보(반품대상)
-var columnCancelReqList = [
-	{
-		headerName	: "주문상세정보",
-		children	: [
-			{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: "goodsCd"			, width: 100	, cellClass: 'text-center', hide: temp1},
-			{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-center', hide: temp1},
-			{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2}
-		]
-	},
-	{
-		headerName	: "주문상세단품정보",
-		children	: [
-			{headerName: "단품번호"		, field: "ordDtlItemSq"		, width: 100	, cellClass: 'text-center', hide: temp2},
-			{headerName: "단품코드"		, field: "itemCd"			, width: 100	, cellClass: 'text-center', hide: temp2},
-			{headerName: "단품명"			, field: "itemNm"			, width: 200	, cellClass: 'text-center', hide: temp2},
-			{headerName: "옵션1"			, field: "optCd1"			, width: 80		, cellClass: 'text-center', hide: temp1},
-			{headerName: "옵션2"			, field: "optCd2"			, width: 80		, cellClass: 'text-center', hide: temp2},
-			{
-				headerName		: "단품수량"		
-				, field			: "itemQty"			
-				, width			: 80		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "단품금액"		
-				, field			: "itemPrice"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "단품옵션금액"		
-				, field			: "optAddPrice"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문상세수량",
-		children	: [
-			{
-				headerName		: "주문"		
-				, field			: "ordQty"			
-				, width			: 80		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "취소/요청"		
-				, field			: "cnclRtnQty"			
-				, width			: 80		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
-					return cnclRtnReqQty;
-				}
-			},
-			{
-				headerName		: "취소/반품"		
-				, field			: "ordCanChgQty"			
-				, width			: 100		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					var ordQty 			= parseInt(params.data.ordQty);
-					var cnclRtnQty 		= parseInt(params.data.cnclRtnQty);
-					var ordReqChgQty 	= parseInt(params.data.ordReqChgQty);
-					var ordCanChgQty 	= ordQty - (cnclRtnQty +  ordReqChgQty);
-					
-					var strVal 			= "";
-					strVal += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
-					
-					for (i=0 ; i<=ordCanChgQty ; i++) {
-						if (i == params.data.ordCanChgQty) {
-							strVal += "	<option value='"+i+"' selected>"+i+"</option>";
-						} else {
-							strVal += "	<option value='"+i+"'>"+i+"</option>";
-						}
-					}
-				
-					strVal += "</select>";
-					return strVal;
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문단품금액",
-		children	: [
-			{
-				headerName		: "주문"
-				, field			: "ordAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "취소"		
-				, field			: "cnclRtnAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "즉시할인"		
-				, field			: "cpn1DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "다다익선1"		
-				, field			: "tmtb1DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "다다익선2"		
-				, field			: "tmtb2DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "상품쿠폰"		
-				, field			: "goodsCpnDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "장바구니쿠폰"		
-				, field			: "cartCpnDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "포인트"		
-				, field			: "pntDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "선포인트"		
-				, field			: "prePntDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "상품권"		
-				, field			: "gfcdUseAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "실결제금액"		
-				, field			: "realOrdAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문배송비정보",
-		children	: [
-			{
-				headerName		: "배송비"		
-				, field			: "delvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{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		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "기본배송비"		
-				, field			: "orgDelvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "반품배송비"		
-				, field			: "rtnDelvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "교환배송비"		
-				, field			: "excDelvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
-		]
-	}
-];
-var gridOptionsCancelReqList = gagaAgGrid.getGridOptions(columnCancelReqList);
-
-// Add on options
-gridOptionsCancelReqList.suppressRowClickSelection = true;
-gridOptionsCancelReqList.rowSelection = 'multiple';
-
-// 2. 취소정보(환불정보)
-var columnCancelReqToBeList = [
-	{
-		headerName	: "주문상세정보",
-		children	: [
-			{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: "goodsCd"			, width: 100	, cellClass: 'text-center', hide: temp1},
-			{headerName: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-center', hide: temp1},
-			{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center', hide: temp2}
-		]
-	},
-	{
-		headerName	: "주문상세단품정보",
-		children	: [
-			{headerName: "단품번호"		, field: "ordDtlItemSq"		, width: 100	, cellClass: 'text-center', hide: temp2},
-			{headerName: "단품코드"		, field: "itemCd"			, width: 100	, cellClass: 'text-center', hide: temp2},
-			{headerName: "단품명"			, field: "itemNm"			, width: 200	, cellClass: 'text-center', hide: temp2},
-			{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		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "단품금액"		
-				, field			: "itemPrice"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "단품옵션금액"		
-				, field			: "optAddPrice"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문상세수량",
-		children	: [
-			{
-				headerName		: "주문"		
-				, field			: "ordQty"			
-				, width			: 80		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "취소/요청"		
-				, field			: "cnclRtnQty"			
-				, width			: 80		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					var cnclRtnReqQty = parseInt(params.data.cnclRtnQty) + parseInt(params.data.ordReqChgQty);
-					return cnclRtnReqQty;
-				}
-			},
-			{
-				headerName		: "취소/반품"		
-				, field			: "ordCanChgQty"			
-				, width			: 100		
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문단품금액",
-		children	: [
-			{
-				headerName		: "주문"
-				, field			: "ordAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "취소"		
-				, field			: "cnclRtnAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "즉시할인"		
-				, field			: "cpn1DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "다다익선1"		
-				, field			: "tmtb1DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "다다익선2"		
-				, field			: "tmtb2DcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "상품쿠폰"		
-				, field			: "goodsCpnDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "장바구니쿠폰"		
-				, field			: "cartCpnDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "포인트"		
-				, field			: "pntDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "선포인트"		
-				, field			: "prePntDcAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "상품권"		
-				, field			: "gfcdUseAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "환불금액"		
-				, field			: "realOrdAmt"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문배송비정보",
-		children	: [
-			{
-				headerName		: "배송비"		
-				, field			: "delvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{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		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "기본배송비"		
-				, field			: "orgDelvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "반품배송비"		
-				, field			: "rtnDelvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "교환배송비"		
-				, field			: "excDelvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
-		]
-	}
-];
-var gridOptionsCancelReqToBeList = gagaAgGrid.getGridOptions(columnCancelReqToBeList);
-
-// 3. 배송비정보(환불정보)
-var columnDelvCdList = [
-	{
-		headerName	: "배송코드기준금액",
-		children	: [
-			{headerName: "업체"			, field: "supplyCompCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
-			{headerName: "배송비코드"		, field: "delvFeeCd"		, width: 100	, cellClass: 'text-center', hide: temp2},
-			{
-				headerName		: "주문"
-				, field			: "ordAmt"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "취소"		
-				, field			: "cnclRtnAmt"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "환불"		
-				, field			: "realOrdAmt"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "배송비정보",
-		children	: [
-			{
-				headerName		: "배송비"		
-				, field			: "delvFee"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "무료배송비"		
-				, field			: "minOrdAmt"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "기본배송비"		
-				, field			: "orgDelvFee"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "반품배송비"		
-				, field			: "rtnDelvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{
-				headerName		: "교환배송비"		
-				, field			: "excDelvFee"			
-				, width			: 80		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{headerName: "추가배송비여부"		, field: "addDelvFeeYn"		, width: 140	, cellClass: 'text-center', hide: temp2},
-			{
-				headerName		: "추가배송비"		
-				, field			: "addDelvFee"			
-				, width			: 100		
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-				, hide			: temp2
-			},
-			{headerName: "전체취소가능"		, field: "allCanYn"			, width: 100	, cellClass: 'text-center', hide: temp2},
-		]
-	}
-];
-var gridOptionsDelvCdList = gagaAgGrid.getGridOptions(columnDelvCdList);
-
-// 4. 무통장 계좌정보
-var columnDefsRefundAccountInfo = [
-	{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: false, checkboxSelection: true, filter: false},
-	{headerName: "은행명"		, field: "bankNm"		, width: 140	, cellClass: 'text-center'},
-	{headerName: "은행코드"	, field: "bankCd"		, width: 120	, cellClass: 'text-center', hidden:true},
-	{headerName: "계좌번호"	, field: "accountNo"	, width: 150	, cellClass: 'text-center'},
-	{headerName: "예금주"		, field: "accountNm"	, width: 120	, cellClass: 'text-center'},
-	{headerName: "기본"		, field: "defaultYn"	, width: 100	, cellClass: 'text-center'}
-];
-
-var gridOptionsRefundAccountInfo = gagaAgGrid.getGridOptions(columnDefsRefundAccountInfo);
-</script>
-
-<script>
-// 현재 사유는 고객 입니다.
-var isCustomer = true;
-
-// 취소정보계산
-var fnCalculateRefundAmt = function (obj) {
-	// 취소정보담은목록
-	var cancelRequestTargetToBeList = [];
-
-	if (obj != null) {
-		for (i=0 ; i<cancelRequestTargetList.length ; i++) {
-			var orDtlNo 		= $(obj).attr("ordDtlNo");
-			var ordCanChgQty 	= $(obj).val();
-			
-			if (cancelRequestTargetList[i].ordDtlNo == orDtlNo) {
-				cancelRequestTargetList[i].ordCanChgQty = ordCanChgQty;
-			}
-		}
-		// 주문정보 다시 셋팅 (체크해봐야할문제)
-		gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
-	}
-	
-	if (cancelRequestTargetList.length == 0) {
-		alert("요청 대상정보가 존재 하지 않습니다.");
-		uifnPopupClose('popupCancelRequestForm');
-		return false;
-	}
-	
-	// 환불금액계산호출
-	var jsonData = JSON.stringify(cancelRequestTargetList);
-	gagajf.ajaxJsonSubmit(
-		'/orderChange/cancel/refundAmt'
-		, jsonData
-		, function(result) {
-			gridOptionsCancelReqToBeList.api.setRowData(result.cancelOrderRefundList);
-			gridOptionsDelvCdList.api.setRowData(result.cancelDelvRefundList);
-			
-			$("#spanPayAmt").text(result.spanPayAmt.addComma());					//총 결제 금액
-			$("#spanSumRealOrdAmt").text(result.spanSumRealOrdAmt.addComma());		//상품 실결제 금액
-			$("#spanSumDeliveryFee").text(result.spanSumDeliveryFee.addComma());	//배송금액
-			
-			$("#spanOrdAmt").text(result.spanOrdAmt.addComma());					//주문 상품 금액
-			$("#spanCnclRtnAmt").text(result.spanCnclRtnAmt.addComma());			//취소 상품 금액
-			
-			$("#spanTotPntDcAmt").text(result.spanTotPntDcAmt.addComma());			//취소 사용 포인트
-			$("#spanPntDcAmt").text(result.spanPntDcAmt.addComma());				//고객 포인트
-			$("#spanPrePntDcAmt").text(result.spanPrePntDcAmt.addComma());			//상품 선포인트
-			
-			$("#spanCpnDcAmt").text(result.spanCpnDcAmt.addComma());				//취소 사용 쿠폰금액
-			$("#spanCpn1DcAmt").text(result.spanCpn1DcAmt.addComma());				//즉시할인쿠폰
-			$("#spanGoodsCpnDcAmt").text(result.spanGoodsCpnDcAmt.addComma());		//상품쿠폰
-			$("#spanCartCpnDcAmt").text(result.spanCartCpnDcAmt.addComma());		//장바구니쿠폰
-			
-			$("#spanTmtbDcAmt").text(result.spanTmtbDcAmt.addComma());				//취소 다다익선 금액
-			$("#spanTmtb1DcAmt").text(result.spanTmtb1DcAmt.addComma());			//수량할인
-			$("#spanTmtb2DcAmt").text(result.spanTmtb2DcAmt.addComma());			//금액할인
-			
-			$("#spanGfcdUseAmt").text(result.spanGfcdUseAmt.addComma());			//취소 고객 상품권 금액
-			
-			$("#spanRealCnclRtnAmt").text(result.spanRealCnclRtnAmt.addComma());	//취소 상품 실결제 금액
-			$("#spanTotDeliveryFee").text(result.spanTotDeliveryFee.addComma());	//취소 환불 배송 금액
-			
-			$("#spanTotRtnDelvFee").text(result.spanTotRtnDelvFee.addComma());		//반품 환불 배송 금액
-			$("#spanTotExcDelvFee").text(result.spanTotExcDelvFee.addComma());		//교환 환불 배송 금액
-			
-			if (result.spanRealCnclRtnAmt > 0) {
-				// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
-				if (isCustomer) {
-					result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee) - result.spanTotDeliveryFee;
-				} 
-				// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
-				else {
-					result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee);
-				}
-			}
-			
-			$("#spanRefundAmt").text(result.spanRefundAmt.addComma());				//환불 금액 합계
-		}
-	);
-}
-
-//  사유
-var fnChangeChgReason = function(reasonCd){
-	var arrReasonCd = reasonCd.split(":");
-	var customerReasonArr = ['G686_10'];
-
-	isCustomer = false;
-	
-	// 취소, 반품, 교환 사유 판단
-	for (i=0 ; i<customerReasonArr.length ; i++) {
-		if (customerReasonArr[i] == arrReasonCd[0]) {
-			isCustomer = true;
-		}
-	}
-	
-	// 귀책사유설정 회사, 고객
-	if (isCustomer) {
-		$("#imputeReason").text("고객");
-	} else {
-		$("#imputeReason").text("회사");
-	}
-
-	$('#cancelRequestFrm input[name=chgReason]').val(arrReasonCd[0]);
-	$('#cancelRequestFrm input[name=chgReasonDesc]').val(arrReasonCd[1]);
-
-	fnCalculateRefundAmt();			//환불예정금액 계산.
-}
-
-// 취소신청/완료
-var fnCnclReq = function (reqGbn) {
-	
-	var temp 		= false;
-	var ordDtlStat	= cancelRequestTargetList[0].ordDtlStat; 
-	var allCanYn 	= "N";
-	
-	// 1. 취소수량 체크
-	for (i=0 ; i<cancelRequestTargetList.length ; i++) {		
-		if (cancelRequestTargetList[i].ordCanChgQty > 0) {
-			temp = true;
-		}
-	}
-	
-	if (temp == false) {
-		mcxDialog.alert('취소신청수량을 입력하세요.');
-		return;
-	}
-	
-	// 2. 입금대기건 & 전체취소 체크
-	if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() != $("#spanRefundAmt").text()) {
-		alert("입금대기건은 전체 취소만 가능합니다.");
-		return;
-	}
-	
-	// 2.1 전체취소 여부 적용
-	if (ordDtlStat == "G013_10" && $("#spanPayAmt").text() == $("#spanRefundAmt").text()) {
-		allCanYn = "Y";	
-	}
-	
-	// 3. 취소사유 체크
-	var chgReason = $("#cancelRequestFrm select[name=selectChgReason]").val();
-	
-	if (gagajf.isNull(chgReason)) {
-		mcxDialog.alert("취소사유를 입력하세요."); 
-		return ;
-	}
-	
-	// 4. 환불계좌 체크
-	var accountNo 	= "";
-	var accountNm 	= "";
-	var bankCd 		= "";
-	
-	// 결제타입 무통장입금시 환불계좌 등록
-	if (payMeans == 'G014_20') {
-		var refundAccount = gridOptionsRefundAccountInfo.api.getSelectedRows();
-		
-		if (refundAccount.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-		
-		accountNo 	= refundAccount[0].accountNo;
-		accountNm 	= refundAccount[0].accountNm;
-		bankCd 		= refundAccount[0].bankCd;
-	}
-	
-	// 5. 추가정보설정
-	var chgerNm 	= orderInfoList[0].ordNm;
-	var chgerEmail 	= orderInfoList[0].ordEmail;
-	var chgerPhnno 	= orderInfoList[0].ordPhnno;
-	var chgerTelno 	= orderInfoList[0].ordTelno;
-	
-	var jsonObj = {
-		"ordNo"				: $('#cancelRequestFrm input[name=ordNo]').val()
-		,"chgReason" 		: $('#cancelRequestFrm input[name=chgReason]').val()
-		,"chgMemo"			: $('#chgMemo').val()
-		,"cancelReqList" 	: cancelRequestTargetList
-		,"accountNo" 		: accountNo
-		,"accountNm" 		: accountNm
-		,"bankCd" 			: bankCd
-		,"allCanYn" 		: allCanYn
-		,"isCustomer" 		: isCustomer
-		,"chgerNm"			: chgerNm
-		,"chgerEmail"		: chgerEmail
-		,"chgerZipcode"		: ""
-		,"chgerBaseAddr"	: ""
-		,"chgerDtlAddr"		: ""
-		,"chgerPhnno"		: chgerPhnno
-		,"chgerTelno"		: chgerTelno
-	}
-	
-	// 6. 취소신청, 취소완료 여부 체크
-	// 취소완료
-	if (reqGbn == "complete") {
-		cnclUrl = '/orderChange/cnclComplete/';
-	}
-	// 취소신청
-	else if (reqGbn == "req") {
-		cnclUrl = '/orderChange/cnclReq/';
-	}
-	// 취소신청 완료
-	else if (reqGbn == "reqComplete"){
-		cnclUrl = '/orderChange/cnclReqComplete/';
-	}
-
-	// 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
-	var jsonData = JSON.stringify(jsonObj);
-	
-	mcxDialog.confirm('취소요청하시겠습니까?', {
-		cancelBtnText		: "취소",
-		sureBtnClick		: function(){
-			// 취소 실행
-			gagajf.ajaxJsonSubmit(
-				cnclUrl
-				, jsonData
-				, function() {
-					uifnPopupClose('popupOrderDetail');
-					fnReOpenOrderDetailPopup();
-					uifnPopupClose('popupCancelRequestForm');
-				}
-			);
-		}
-	});
-}
-
-// 환불계좌 등록
-var fnCreateOrderRfAccount = function () {	
-	var actionUrl = "/orderChange/refund/account/create/form?ordNo=" + ordNo ;
-	cfnOpenModalPopup(actionUrl, 'popupCreateRefundAccount');
-};
-
-// 환불계좌 정보
-var fnBindOrderRfAccountInfo = function () {
-	gagaAgGrid.fetch(
-		"/orderChange/refund/account/info/list?ordNo=" + ordNo
-		, gridOptionsRefundAccountInfo
-		, null
-		, function (result) {
-		}
-	)
-};
-
-$(document).ready(function() {
-	// 1. 그리드생성
-	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsCancelReqList);			// 주문정보
-	gagaAgGrid.createGrid('gridOrderCancelRequestToBeList'	, gridOptionsCancelReqToBeList);		// 취소정보
-	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비정보
-	gagaAgGrid.createGrid('gridRefundAccountInfo'			, gridOptionsRefundAccountInfo);		// 환불계좌정보
-	
-	// 2. 그리드 데이타 싱크작업
-	gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);								// 주문정보
-	
-	// 2.1 TOTAL ROWS 없애기
-	gagaAgGrid.hideStatusBar('gridOrderCancelRequestList');
-	gagaAgGrid.hideStatusBar('gridOrderCancelRequestToBeList');
-	gagaAgGrid.hideStatusBar('gridDelvCdList');
-	gagaAgGrid.hideStatusBar('gridRefundAccountInfo');
-	
-	// 3. 환불정보계산
-	fnCalculateRefundAmt(null);
-	
-	// 4. 무통장입금아일때 환불계좌 그리드 숨김처리
-	if (payMeans !== 'G014_20') {
-		$('#wrapRefundAccount').addClass("off");
-		fnBindOrderRfAccountInfo();
-	}
-});
-</script>
-</html>
-
-
-
-
-

+ 62 - 38
src/main/webapp/WEB-INF/views/order/CnclReqForm.html

@@ -38,7 +38,7 @@
 				<div id="gridDelvCdList" style="width:100%; height: 140px;" class="ag-theme-balham"></div>
 				
 				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
-					<th:block th:if="${userId} == 'jsh77b1'">
+					<th:block th:if="${userId} == 'jsh77b'">
 						<button type="button" class="btn btn-success" id="cnclReqBtn" onclick="fnCnclReq('cnclReq');">취소접수</button>
 					</th:block>
 					<button type="button" class="btn btn-success" id="cnclCompleteBtn" onclick="fnCnclReq('cnclComplete');">취소완료</button>
@@ -129,12 +129,40 @@
 					</tbody>
 				</table>
 				
-				<div id="wrapRefundAccount" style="width:50%;">
+				<div id="refundAccount" style="width:100%">
 					<h4>환불계좌정보</h4>
 					<button type="button" id="btnSaveAccount" class="btn btnRight btn-base btn-sm" style="margin-left:10px;" onclick="fnCreateOrderRfAccount();">등록</button>
-					<div id="gridRefundAccountInfo" style="height: 150px;" class="ag-theme-balham"></div>
+					
+					<!-- TABLE -->
+					<table class="tableStyle">
+						<colgroup>
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+						</colgroup>
+						<thead>
+							<tr>
+								<th>은행명</th>
+								<th>은행코드</th>
+								<th>계좌번호</th>
+								<th>예금주</th>
+								<th>기본여부</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr style="height:30px;">
+								<td class="bankNm"></td>
+								<td class="bankCd"></td>
+								<td class="accountNo"></td>
+								<td class="accountNm"></td>
+								<td class="defaultYn"></td>
+							</tr>
+						</tbody>
+					</table>
 				</div>
-				
+				<br>
 			</form>
 		</div>
 	</div>
@@ -170,7 +198,7 @@ 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: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-left'	, hide: temp2},
 	{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center'	, hide: temp2},
@@ -219,7 +247,7 @@ var columnCancelReqList = [
 			if (ordChgSq > 0) {
 				rtnStr = ordCanChgQty;
 			} else {
-				ordCanChgQty 	= ordQty - (cnclRtnQty +  ordReqChgQty);
+				ordCanChgQty = ordQty - (cnclRtnQty +  ordReqChgQty);
 				
 				rtnStr += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
 				
@@ -750,18 +778,6 @@ var columnDelvCdList = [
 	}
 ];
 var gridOptionsDelvCdList = gagaAgGrid.getGridOptions(columnDelvCdList);
-
-// 4. 무통장 계좌정보
-var columnDefsRefundAccountInfo = [
-	{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: false, checkboxSelection: true, filter: false},
-	{headerName: "은행명"		, field: "bankNm"		, width: 140	, cellClass: 'text-center'},
-	{headerName: "은행코드"	, field: "bankCd"		, width: 120	, cellClass: 'text-center', hidden:true},
-	{headerName: "계좌번호"	, field: "accountNo"	, width: 150	, cellClass: 'text-center'},
-	{headerName: "예금주"		, field: "accountNm"	, width: 120	, cellClass: 'text-center'},
-	{headerName: "기본"		, field: "defaultYn"	, width: 100	, cellClass: 'text-center'}
-];
-
-var gridOptionsRefundAccountInfo = gagaAgGrid.getGridOptions(columnDefsRefundAccountInfo);
 </script>
 
 <script>
@@ -923,7 +939,7 @@ var fnCnclReq = function (reqGbn) {
 	var bankCd 					= "";
 	
 	// 취소완료, 취소승인
-	if (reqGbn == "cnclReq" || reqGbn == "cnclComplete") {
+	if (reqGbn == "cnclReq" || reqGbn == "cnclReqComplete" || reqGbn == "cnclComplete") {
 		
 		// 2021.05.25 수정
 		var ordDtlNoArr 		= [];
@@ -935,7 +951,6 @@ var fnCnclReq = function (reqGbn) {
 				// 취소신청값설정
 				ordDtlNoArr.push(cancelRequestTargetList[i].ordDtlNo);
 				cnclRtnReqQtyArr.push(cancelRequestTargetList[i].ordCanChgQty);
-				
 				temp = true;
 			}
 		}
@@ -967,18 +982,16 @@ var fnCnclReq = function (reqGbn) {
 			return false;
 		}
 		
-		// 4. 환불계좌 체크
-		// 결제타입이 무통장 입금일때 사용
+		// 3. 환불계좌체크 (결제타입이 무통장 입금일때 사용)
 		if (payMeans == 'G014_20') {
-			var refundAccount = gridOptionsRefundAccountInfo.api.getSelectedRows();
-			if (refundAccount.length == 0) {
-				mcxDialog.alert('선택된 행이 없습니다.');
+			if ($("#refundAccount .bankNm").eq(0).text() == null || $("#refundAccount .bankNm").eq(0).text() == '') {
+				mcxDialog.alert('환불계좌가 미등록 되어 있습니다.');
 				return false;
-			}
+			} 
 			
-			accountNo 	= refundAccount[0].accountNo;
-			accountNm 	= refundAccount[0].accountNm;
-			bankCd 		= refundAccount[0].bankCd;
+			accountNo 	= $("#refundAccount .accountNo").eq(0).text();
+			accountNm 	= $("#refundAccount .accountNm").eq(0).text();
+			bankCd 		= $("#refundAccount .bankCd").eq(0).text();
 		}
 	}
 	
@@ -1074,13 +1087,25 @@ var fnCreateOrderRfAccount = function () {
 
 // 환불계좌 정보
 var fnBindOrderRfAccountInfo = function () {
-	gagaAgGrid.fetch(
-		"/orderChange/refund/account/info/list?ordNo=" + ordNo
-		, gridOptionsRefundAccountInfo
-		, null
+	var jsonObj = {
+		"ordNo" : ordNo
+	}
+	
+	var jsonData = JSON.stringify(jsonObj);
+	
+	gagajf.ajaxJsonSubmit(
+		'/orderChange/refund/account/info/list'
+		, jsonData
 		, function (result) {
+			if (result.orderRfAccountInfo[0].bankNm != null && result.orderRfAccountInfo[0].bankNm != '') {
+				$("#refundAccount .bankNm").text(result.orderRfAccountInfo[0].bankNm);
+				$("#refundAccount .bankCd").text(result.orderRfAccountInfo[0].bankCd);
+				$("#refundAccount .accountNo").text(result.orderRfAccountInfo[0].accountNo);
+				$("#refundAccount .accountNm").text(result.orderRfAccountInfo[0].accountNm);
+				$("#refundAccount .defaultYn").text(result.orderRfAccountInfo[0].defaultYn);
+			}
 		}
-	)
+	);
 };
 
 $(document).ready(function() {
@@ -1088,7 +1113,6 @@ $(document).ready(function() {
 	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsCancelReqList);			// 주문정보
 	gagaAgGrid.createGrid('gridOrderCancelRequestToBeList'	, gridOptionsCancelReqToBeList);		// 취소정보
 	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비정보
-	gagaAgGrid.createGrid('gridRefundAccountInfo'			, gridOptionsRefundAccountInfo);		// 환불계좌정보
 	
 	// 2. 그리드 데이타 싱크작업
 	gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);								// 주문정보
@@ -1097,14 +1121,14 @@ $(document).ready(function() {
 	gagaAgGrid.hideStatusBar('gridOrderCancelRequestList');
 	gagaAgGrid.hideStatusBar('gridOrderCancelRequestToBeList');
 	gagaAgGrid.hideStatusBar('gridDelvCdList');
-	gagaAgGrid.hideStatusBar('gridRefundAccountInfo');
 	
 	// 3. 환불예상금액계산
 	fnCalculateRefundAmt(null);
 	
-	// 4. 무통장입금아일때 환불계좌 그리드 숨김처리
+	// 4. 무통장입금아닌경우 환불계좌 그리드 숨김처리
 	if (payMeans !== 'G014_20') {
-		$('#wrapRefundAccount').addClass("off");
+		$('#refundAccount').addClass("off");
+	} else {
 		fnBindOrderRfAccountInfo();
 	}
 	

+ 0 - 145
src/main/webapp/WEB-INF/views/order/CnclReqViewForm.html

@@ -1,145 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : CancelRequestForm.html
- * @desc    : 취소요청 화면
- *============================================================================
- * STYLE24
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.12.12   jsh77b       최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="1400" data-height="350">
-	<div class="panelStyle">
-		<div class="panelTitle">
-			<h2>취소요청정보</h2>
-			<button type="button" class="close" onclick="uifnPopupClose('popupCancelRequestForm');"><i class="fa fa-times"></i></button>
-		</div>
-			
-		<div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
-			<form id="cancelRequestFrm" name="cancelRequestFrm" action="/orderChange/cancel" method="post" target="hdFrameForOrderCancel">
-				<input type="hidden" name="ordNo" th:value="${ordNo}"/>
-				<input type="hidden" name="ordChgSq" th:value="${ordChgSq}"/>
-				<input type="hidden" name="chgReason" value=""/>
-				<input type="hidden" name="chgReasonDesc" value=""/>
-
-				<h4>(취소/반품/교환) 요청 정보</h4>
-				<div id="gridOrderChangeList" style="width:100%; height: 180px; min-height:99px;" class="ag-theme-balham"></div>
-				
-				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
-					<button type="button" class="btn btn-success" onclick="fnCnclReq('cancel');">취소철회</button>
-					<button type="button" class="btn btn-success" onclick="fnCnclReq('confirm');">취소승인</button>
-				</div>
-			</form>
-		</div>
-	</div>
-</div>
-
-<!-- data -->
-<script th:inline="javascript">
-/*<![CDATA[*/
-var ordNo 					= [[${ordNo}]];									// 주문번호
-var ordChgSq 				= [[${ordChgSq}]];								// 주문변경번호
-var orderChangeList 		= [[${orderChangeList}]];						// 취소/반품/교환요청 정보
-
-//
-//var orderInfoList 		= [[${orderInfoList}]];							// 주문기본정보
-//var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
-//var chgReason				= orderChangeList[0].chgReason;					// 변경사유코드
-//var chgMemo				= orderChangeList[0].chgMemo;					// 변경사유메모
-
-var temp1 = true;
-var temp2 = false;
-
-// 6. 반품/교환 정보
-var columnDefsOrderChangeList = [
-	{
-		headerName		: "요청번호"		
-		, field			: "ordChgSq"		
-		, width			: 100	
-		, cellClass		: 'text-center'
-	},
-	{headerName: "요청구분"		, field: "chgGbNm"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "상품코드"		, field: "goodsCd"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "옵션1"			, field: "optCd1"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "옵션2"			, field: "optCd2"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "수량"			, field: "chgQty"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "요청상태"		, field: "chgStatNm"	, width: 100	, cellClass: 'text-center'},
-	{
-		headerName		: "요청일자"		
-		, field			: "regDt"		
-		, width			: 150		
-		, cellClass		: 'text-center'
-		, cellRenderer	: function(params) {
-			return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-		}
-	},
-	{headerName: "변경사유"		, field: "chgReasonNm"	, width: 100	, cellClass: 'text-center'},
-	{headerName: "요청메모"		, field: "chgMemo"		, width: 150	, cellClass: 'text-center'},
-	{headerName: "변경자명"		, field: "chgerNm"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "변경자핸드폰"		, field: "chgerPhnno"	, width: 120	, cellClass: 'text-center'}
-];
-var gridOptionsOrderChangeList = gagaAgGrid.getGridOptions(columnDefsOrderChangeList);
-</script>
-
-<!-- function -->
-<script>
-// 취소승인
-var fnCnclReq = function (cnclGbn) {
-	var confirmStr 		= "";
-	var cnclLinkStr	 	= "";
-	
-	if (cnclGbn == "cancel") {
-		confirmStr 		= "요청번호 [" + ordChgSq + "] 에 대한 요청철회 처리를 하시겠습니까?";
-		cnclLinkStr 	= "/orderChange/cnclReqCancel";
-	} else {
-		confirmStr 		= "요청번호 [" + ordChgSq + "] 에 대한 취소승인 처리를 하시겠습니까?";
-		cnclLinkStr 	= "/orderChange/cnclReqComplete";
-	}
-	
-	mcxDialog.confirm(confirmStr, {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			var data = new Object();
-			data.ordNo 		= ordNo;	//전역변수
-			data.ordChgSq 	= ordChgSq;
-
-			var jsonData = JSON.stringify(data);
-			
-			gagajf.ajaxJsonSubmit(
-				cnclLinkStr
-				, jsonData
-				, function (result) {
-					uifnPopupClose('popupOrderDetail');
-					fnReOpenOrderDetailPopup();
-					uifnPopupClose('popupCancelRequestForm');
-				}
-			);
-		}
-	});
-};
-</script>
-
-<script>
-$(document).ready(function() {
-	// 1. 그리드생성
-	gagaAgGrid.createGrid('gridOrderChangeList'				, gridOptionsOrderChangeList);			// 취소/반품/교환 요청 정보
-	
-	// 2. 그리드 데이타 싱크작업
-	gridOptionsOrderChangeList.api.setRowData(orderChangeList);										// 취소/반품/교환요청 정보
-	
-	// 2.1 TOTAL ROWS 없애기
-	gagaAgGrid.hideStatusBar('gridOrderChangeList');
-});
-</script>
-</html>
-
-
-
-
-

+ 0 - 19
src/main/webapp/WEB-INF/views/order/OrderDetailForm.html

@@ -958,7 +958,6 @@ var fnOrderDetailClose = function(){
 $(document).ready(function () {
 	
 	// 1. 그리드 그리기
-	//gagaAgGrid.createGrid('gridOrderInfo'					, gridOptionsOrderInfo);			// 기본정보
 	gagaAgGrid.createGrid('gridOrderGoodsInfo'				, gridOptionsGoodsInfo);			// 상품정보
 	gagaAgGrid.createGrid('gridOrderFreeGiftInfo'			, gridOptionsOrderFreeGiftInfo);	// 사은품정보
 	gagaAgGrid.createGrid('gridDeliveryAddrInfo'			, gridOptionsDeliveryInfo);			// 배송정보
@@ -970,7 +969,6 @@ $(document).ready(function () {
 	gagaAgGrid.createGrid('gridOrderMemoInfo'				, gridOptionsOrderMemoInfo);		// 관리자메모
 	
 	// 2. 그리드 데이터 바인딩
-	//gridOptionsOrderInfo.api.setRowData(orderInfo);								// 기본정보
 	gridOptionsGoodsInfo.api.setRowData(orderGoodsInfo);							// 상품정보
 	gridOptionsOrderFreeGiftInfo.api.setRowData(orderFreeGiftInfo);					// 사은품품정보
 	gridOptionsDeliveryInfo.api.setRowData(orderDeliveryAddrInfo);					// 배송정보
@@ -996,7 +994,6 @@ $(document).ready(function () {
 	fnSetGridHeightInit();
 	
 	// 4. 그리드 숨김 처리
-	
 	if (orderFreeGiftInfo == null || orderFreeGiftInfo.length === 0) {
 		$("#wrapOrderFregift").addClass("off");
 	}
@@ -1091,10 +1088,6 @@ $(document).ready(function () {
 	$('#btnUpdateOrderAddr').on('click', function () {
 		fnUpdateOrderAddr();
 	});
-	// 환불계좌 등록
-	$('#btnSaveAccount').on('click', function () {
-		fnCreateOrderRfAccount(ordNo, custNo);
-	});
 });
 </script>
 
@@ -1321,18 +1314,6 @@ var fnBindOrderChangeInfo = function() {
 	);
 };
 
-// 환불계좌 정보
-var fnBindOrderRfAccountInfo = function () {
-	gagaAgGrid.fetch(
-		"/order/refund/account/info/list?ordNo=" + ordNo+"&custNo="+custNo
-		, gridOptionsRefundAccountInfo
-		, null
-		, function (result) {
-			$('#gridOptionsRefundAccountInfo').css('height', 31 + 33 * ((result.length == 0 || result == null) ? 1 : result.length));
-		}
-	);
-};
-
 // 배송비 DATA 바인딩
 var fnBindDeliveryAddr = function(delvAddrSq) {
 	if (typeof (delvAddrSq) != 'undefined') {

+ 0 - 1397
src/main/webapp/WEB-INF/views/order/OrderDetailForm20210122.html

@@ -1,1397 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderListForm.html
- * @desc    : 주문상세화면
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.11.16   jsh77b       최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="1500" data-height="700"> <!-- data-width="1500" data-height="870" -->
-	<div class="panelStyle">
-		<div class="panelTitle">
-			<h2>주문상세내역</h2>
-			<button type="button" class="close" onclick="fnOrderDetailClose()"><i class="fa fa-times"></i></button>
-		</div>
-			
-		<div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
-			<form id="orderDetailInfo" name="orderDetailInfo" action="#" th:method="post">
-				<input type="hidden" name="custNo"/>
-				<input type="hidden" name="orderNm"/>
-				<input type="hidden" name="orderPhnno"/>
-				<input type="hidden" name="orderEmail"/>
-				
-				<h4>기본정보</h4>
-				<!-- <div id="gridOrderInfo" style="width:100%; height:100px;" class="ag-theme-balham"></div> -->
-
-				<!-- TABLE -->
-				<table class="tableStyle">
-					<colgroup>
-						<col width="">
-						<col width="">
-						<col width="">
-						<col width="">
-						<col width="">
-						<col width="">
-						<col width="">
-						<col width="">
-						<col width="">
-						<col width="">
-						<col width="">
-						<col width="">
-						<col width="">
-					</colgroup>
-					<thead>
-						<tr>
-							<th>사이트</th>
-							<th>몰구분</th>
-							<th>웹구분</th>
-							<th>외부몰</th>
-							<th>주문일시</th>
-							<th>주문자</th>
-							<th>고객번호</th>
-							<th>주문번호</th>
-							<th>이메일</th>
-							<th>핸드폰번호</th>
-							<th>회원구분</th>
-							<th>관리대상</th>
-							<th>등급</th>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td th:text="${orderInfo[0].siteCdNm}"></td>
-							<td th:text="${orderInfo[0].mallGbNm}"></td>
-							<td th:text="${orderInfo[0].frontGbNm}"></td>
-							<td th:text="${orderInfo[0].extmallNm}"></td>
-							<td th:text="${orderInfo[0].ordDt}"></td>
-							<td th:text="${orderInfo[0].ordNm}"></td>
-							<td th:text="${orderInfo[0].custNo}"></td>
-							<td th:text="${orderInfo[0].ordNo}"></td>
-							<td th:text="${orderInfo[0].ordEmail}"></td>
-							<td th:text="${orderInfo[0].ordPhnno}"></td>
-							<td th:text="${orderInfo[0].custGbNm}"></td>
-							<td th:text="${orderInfo[0].managedRsnNm}"></td>
-							<td th:text="${orderInfo[0].custGradeNm}"></td>
-						</tr>
-					</tbody>
-				</table>
-				<!-- //TABLE -->
-									
-				<h4>주문상품정보</h4>
-				<button type="button" class="btn btnRight btn-base btn-sm off" id="btnExchange" style="margin-left:10px;" >교환요청</button>
-				<button type="button" class="btn btnRight btn-base btn-sm off" id="btnReturn">반품요청</button>
-				<button type="button" class="btn btnRight btn-base btn-sm off" id="btnCancel">취소요청</button>
-				<div id="gridOrderGoodsInfo" style="width:100%; height:200px;" class="ag-theme-balham"></div>
-				
-				<h4>주문사은품정보</h4>
-				<button type="button" class="btn btnRight btn-base btn-sm off" id="btnFreeGiftCancel" style="margin-left:10px;" >사은품취소</button>
-				<div id="gridOrderFreeGiftInfo" style="width:100%; height:120px;" class="ag-theme-balham"></div>
-				
-				<h4>배송정보</h4>
-				<div id="gridDeliveryAddrInfo" style="width:100%; height:100px;" class="ag-theme-balham"></div>
-				
-				<table style="width:100%;">
-					<colgroup>
-						<col style="width:65%;"/>
-						<col/>                                                                                  
-					</colgroup>
-					<tbody>
-						<tr>
-							<td style="">
-								<h4>결제정보</h4>
-								<div id="gridPaymentInfo" style="width:100%; height: 100px;" class="ag-theme-balham"></div>
-							</td>
-							<td style="">
-								<h4>배송비정보</h4>
-								<div id="gridDeliveryFeeInfo" style="width:100%; height: 100px;" class="ag-theme-balham"></div>
-							</td>
-						<tr>
-					</tbody>
-				</table>
-
-				<div id="wrapOrderChange">
-					<h4>(취소/반품/교환)요청 정보</h4>
-					<div id="gridOrderChangeInfo" style="width:100%; height: 180px; min-height:99px;" class="ag-theme-balham"></div>
-				</div>
-
-				<div id="wrapRefund">
-					<h4>환불정보</h4>
-					<div id="gridOrderRefundInfo" style="width:100%; height: 100px;" class="ag-theme-balham"></div>
-				</div>
-
-				<table style="width:100%;">
-					<colgroup>
-						<col style="width:65%;"/>
-						<col/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<td style="">
-								<h4>상담내역</h4>
-								<div id="gridOrderCounselInfo" style="width:100%; height: 100px;" class="ag-theme-balham"></div>
-							</td>
-							<td style="">
-								<h4>관리자메모</h4>
-								<button type="button" id="btnCreateOrderMemo" class="btn btnRight btn-base btn-sm" style="margin-left:10px;"> +</button>
-								<div id="gridOrderMemoInfo" style="width:100%; height: 100px;" class="ag-theme-balham"></div>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-				
-			</form>
-		</div>
-	</div>
-</div>
-
-<!-- data -->
-<script th:inline="javascript">
-var ordNo 					= [[${ordNo}]];							// 주문번호
-var userNo 					= [[${userNo}]]							// 관리자번호
-
-var orderInfo 				= [[${orderInfo}]];						// 기본정보
-var orderGoodsInfo 			= [[${orderGoodsInfo}]];				// 주문상세정보
-var orderFreeGiftInfo 		= [[${orderFreeGiftInfo}]];				// 주문사은품정보
-var orderDeliveryAddrInfo	= [[${orderDeliveryAddrInfo}]];			// 배송정보
-var orderPaymentInfo 		= [[${orderPaymentInfo}]];				// 결제정보
-var orderDeliveryFeeInfo 	= [[${orderDeliveryFeeInfo}]];			// 배송비정보
-var orderChangeInfo 		= [[${orderChangeInfo}]];				// 취소/반품/교환요청 정보
-var orderRefundInfo 		= [[${orderRefundInfo}]];				// 환불정보
-var orderCounselInfo 		= [[${orderCounselInfo}]];				// 상담내역
-var orderAdminMemoInfo 		= [[${orderAdminMemoInfo}]];			// 관리자메모
-</script>
-
-<!-- AgGrid 컬럼 세팅 -->
-<script>
-// 1.주문기본정보 그리드 바인딩
-// 2.상품별 상세정보
-var columnDefsGoodsInfo = [
-	{
-		headerName	: "주문상세",
-		children	: [
-			{headerName: "번호"		, field: "ordDtlNo"		, width: 80, cellClass: 'text-center'},
-			{headerName: "주문구분"	, field: "exchGbNm"		, width: 80, cellClass: 'text-center'},
-		],
-	},
-	{
-		headerName	: "상품정보",
-		children	: [
-			{headerName: "상품코드"	, field: "goodsCd"		, width: 80, cellClass: 'text-center'},
-			{
-				headerName		: "상품명"
-				, field			: "goodsNm"
-				, width			: 200
-				, cellClass		: 'text-left'
-				, cellRenderer: function (params) {
-					return '<a href="javascript:void(0);" onclick="cfnOpenFrontGoodsPopup(\'' + params.data.goodsCd + '\',\'' + params.data.siteCd + '\');">' + params.value + '</a>';
-				}
-			},
-			{headerName: "상품타입"	, field: "goodsTypeNm"	, width: 100, cellClass: 'text-center'},
-			{headerName: "브랜드"		, field: "brandEnm"		, width: 80, cellClass: 'text-center'}
-		]
-	},
-	{
-		headerName	: "단품정보",
-		children	: [
-			{headerName: "단품코드"	, field: "itemCd"		, width: 80, cellClass: 'text-center'},
-			{
-				headerName		: "단품명"
-				, field			: "itemNm"
-				, width			: 200
-				, cellClass		: 'text-left'
-				, cellRenderer: function (params) {
-					return '<a href="javascript:void(0);" onclick="cfnOpenFrontGoodsPopup(\'' + params.data.itemCd + '\',\'' + params.data.siteCd + '\');">' + params.value + '</a>';
-				}
-			},
-			{headerName: "옵션1"		, field: "optCd1"		, width: 80, cellClass: 'text-center'},
-			{headerName: "옵션2"		, field: "optCd2"		, width: 80, cellClass: 'text-center'},
-			{headerName: "단품수량"	, field: "itemQty"		, width: 80, cellClass: 'text-center'},
-			{
-				headerName		: "단품금액"
-				, field			: "itemPrice"
-				, width			: 100
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "옵션추가금액"
-				, field			: "optAddPrice"
-				, width			: 100
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return params.value.addComma();
-				}
-			}
-		]
-	},
-	{
-		headerName	: "주문상세단품",
-		children	: [
-			{headerName: "주문수량"	, field: "ordQty"		, width: 80, cellClass: 'text-center'},
-			{headerName: "취소수량"	, field: "cnclRtnQty"	, width: 80, cellClass: 'text-center'},
-			{headerName: "변경요청수량"	, field: "ordReqChgQty"	, width: 100, cellClass: 'text-center'},
-			{headerName: "상세상태"	, field: "ordDtlStat"	, width: 120, cellClass: 'text-center', hide: true},
-			{
-				headerName		: "상세상태"
-				, field			: "ordDtlStatNm"
-				, width			: 120
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					var retVal = "";
-					retVal += (params.data.cancelRequestQty > 0) ? " 취" + params.data.cancelRequestQty : "";
-					retVal += (params.data.returnRequestQty > 0) ? " 반" + params.data.returnRequestQty : "";
-					retVal += (params.data.exchangeRequestQty > 0) ? " 교" + params.data.exchangeRequestQty : "";
-					
-					if (!gagajf.isNull(retVal)) {
-						retVal = "-" + retVal;
-					}
-					
-					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailChangeHst('" + params.data.ordDtlNo + "');\">" + params.value + retVal + "</a>";
-				}
-			},
-			{
-				headerName		: "상태변경"
-				, field			: "ordDtlStatChg"
-				, width			: 120
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {				
-					var strVal 		= "";
-					var strCheck	= "";
-					
-					// 현재상태에 따라서 갈수 있는 상태 정리
-					// @ 자사 : 결제완료, 배송준비중, 배송중, 배송완료
-					// @ 입점 : 결제완료, 상품준비중, 출고완료
-					// @ 모든상태값 변경 기준 (상세내역의 상택값 이력으로만 이동가능)
-					// G013_00	주문접수
-					// G013_10	입금대기
-					// G013_18	발주대기-가격차이
-					// G013_19	발주대기-우편번호상이
-					// G013_20	결제완료
-					// G013_30	상품준비중
-					// G013_40	배송준비중
-					// G013_50	배송중
-					// G013_55	출고완료
-					// G013_60	배송완료
-					// G013_98	결제전주문취소
-					// G013_99	결제후주문취소
-					// 2020.12.22 추가적인 개발은 추후 물류개발이 완료된 후 추가할 예정
-					// To Do List
-					// @ 재고정보수정
-					// @ 정산정보수정
-					strVal += "<select class='ordDtlStatChg' name='ordDtlStatChg' ordDtlNo='"+params.data.ordDtlNo+"' ordNo='"+params.data.ordNo+"' onChange='fnChangOrdDtlStat(this);'>";
-					strVal += "	<option value=''>선택</option>";
-					
-					if (!gagajf.isNull(params.data.g20)) {
-						strVal += "	<option value='G013_20'>결제완료</option>";
-					}
-					if (!gagajf.isNull(params.data.g30)) {
-						strVal += "	<option value='G013_30'>상품준비중</option>";
-					}
-					if (!gagajf.isNull(params.data.g40)) {
-						strVal += "	<option value='G013_40'>배송준비중</option>";
-					}
-					if (!gagajf.isNull(params.data.g50)) {
-						strVal += "	<option value='G013_50'>배송중</option>";
-					}
-					if (!gagajf.isNull(params.data.g55)) {
-						strVal += "	<option value='G013_55'>출고완료</option>";
-					}
-					if (!gagajf.isNull(params.data.g60)) {
-						strVal += "	<option value='G013_60'>배송완료</option>";
-					}
-					strVal += "</select>";
-					
-					return strVal;
-				}
-			}
-		]
-	},
-	{
-		headerName	: "쿠폰",
-		children	: [
-			{
-				headerName		: "즉시할인"
-				, field			: "cpn1DcAmt"
-				, width			: 80
-				, cellClass		: 'text-right' //goodsCpnDcAmtClass
-				, cellRenderer: function (params) {
-					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderCouponHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
-				}
-			},
-			{
-				headerName		: "상품"
-				, field			: "goodsCpnDcAmt"
-				, width			: 80
-				, cellClass		: 'text-right' //goodsCpnDcAmtClass
-				, cellRenderer: function (params) {
-					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderCouponHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
-				}
-			},
-			{
-				headerName		: "장바구니"
-				, field			: "cartCpnDcAmt"
-				, width			: 80
-				, cellClass		: 'text-right' //cartCpnDcAmtClass
-				, cellRenderer	: function (params) {
-					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderCouponHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
-				}
-			}
-		]
-	},
-	{
-		headerName	: "다다익선",
-		children	: [
-			{
-				headerName		: "수량"
-				, field			: "tmtb1DcAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderTmtbHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
-				}
-			},
-			{
-				headerName		: "금액"
-				, field			: "tmtb2DcAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderTmtbHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
-				}
-			}
-		]
-	},
-	{
-		headerName	: "포인트",
-		children	: [
-			{
-				headerName		: "사용"
-				, field			: "pntDcAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderPointHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
-				}
-			},
-			{
-				headerName		: "즉시사용"
-				, field			: "prePntDcAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderPointHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
-				}
-			},
-			{
-				headerName		: "적립"
-				, field			: "savePntAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderPointHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
-				}
-			}
-		]
-	},
-	{
-		headerName	: "상품권",
-		children	: [
-			{
-				headerName		: "사용"
-				, field			: "gfcdUseAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, cellRenderer	: function (params) {
-					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderGiftcardHst('" + params.data.ordNo + "');\">" + params.value.addComma() + "</a>";
-				}
-			}
-		]
-	},
-	{
-		headerName	: "금액(원/단위)",
-		children	: [
-			{
-				headerName		: "주문"
-				, field			: "ordAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, valueFormatter: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "실결제"
-				, field			: "realOrdAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, valueFormatter: function (params) {
-					return params.value.addComma();
-				}
-			},
-			{
-				headerName		: "취소"
-				, field			: "cnclRtnAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, valueFormatter: function (params) {
-					return params.value.addComma();
-				}
-			},
-		]
-	},
-	{headerName: "결품", field: "soldoutYn", width: 60, cellClass: 'text-center'},
-	{
-		headerName	: "배송",
-		children	: [
-			{
-				headerName		: "송장번호"
-				, field			: "invoiceNo"
-				, width			: 100
-				, cellClass		: 'text-center'
-				, cellRenderer	: function (params) {
-					var retStr = '';
-					if (!gagajf.isNull(params.value)) retStr = '<a href="javascript:void(0);" onclick="fnSearchDelivery(\'' + params.data.trackingUrl + '\',\'' + params.data.invoiceNo + '\');">' + params.value + '</a>';
-					return retStr;
-				}
-			},
-			{headerName: "출고처"		, field: "delvLocNm"	, width: 120, cellClass: 'text-center'},
-			{headerName: "배송지번호"	, field: "delvAddrSq"	, width: 120, cellClass: 'text-center'}
-		]
-	}
-];
-var gridOptionsGoodsInfo = gagaAgGrid.getGridOptions(columnDefsGoodsInfo);
-
-// 2.5 주문사은품정보
-var columnDefsOrderFreeGiftInfo = [
-	{headerName: "주문사은품번호"	, field: "ordFreegiftSq"	, width: 120, cellClass: 'text-center', hide: true},
-	{headerName: "주문번호"		, field: "ordNo"			, width: 120, cellClass: 'text-center'},
-	{headerName: "사은품프로모션"	, field: "freegiftSq"		, width: 100, cellClass: 'text-center', hide: true},
-	{headerName: "사은품프로모션명"	, field: "freegiftNm"		, width: 250, cellClass: 'text-center'},
-	{headerName: "사은품혜택번호"	, field: "freegiftValSq"	, width: 100, cellClass: 'text-center', hide: true},
-	{
-		headerName			: "사용포인트"		
-		, field				: "usePoint"			
-		, width				: 100
-		, cellClass			: 'text-right'
-		, valueFormatter	: function (params) {
-			return params.value.addComma();
-		}
-	},
-	{headerName: "사은품코드"		, field: "itemCd"			, width: 100, cellClass: 'text-center'},
-	{headerName: "사은품명"		, field: "itemNm"			, width: 100, cellClass: 'text-center'},
-	{headerName: "사은품수량"		, field: "itemQty"			, width: 100, cellClass: 'text-center'},
-	{headerName: "옵션명"			, field: "optCd"			, width: 100, cellClass: 'text-center'},
-	{headerName: "옵션코드1"		, field: "optCd1"			, width: 100, cellClass: 'text-center'},
-	{headerName: "옵션코드2"		, field: "optCd2"			, width: 100, cellClass: 'text-center'},
-	{headerName: "삭제여부"		, field: "delYn"			, width: 100, cellClass: 'text-center'}
-];
-var gridOptionsOrderFreeGiftInfo = gagaAgGrid.getGridOptions(columnDefsOrderFreeGiftInfo);
-
-// 3.배송정보
-var columnDefsDeliveryInfo = [
-	{headerName: "배송지번호"		, field: "delvAddrSq"		, width: 80, cellClass: 'text-center'},
-	{headerName: "주문구분"		, field: "exchGbNm"			, width: 80, cellClass: 'text-center'},
-	{headerName: "수정여부"		, field: "delvAddrEditYn"	, width: 80, cellClass: 'text-center', hide: true},
-	{headerName: "받는분"			, field: "recipNm"			, width: 80, cellClass: 'text-left', editable: true},
-	{headerName: "핸드폰번호"		, field: "recipPhnno"		, width: 120, cellClass: 'text-left', editable: true},
-	{headerName: "전화번호"		, field: "recipTelno"		, width: 120, cellClass: 'text-left', editable: true},
-	{
-		headerName		: "우편번호"		
-		, field			: "recipZipNo"
-		, width			: 220
-		, cellClass		: 'text-center'
-		, cellRenderer	: function (params) {
-			var rtnStr = ""
-			
-			if (params.data.delvAddrEditYn < 1) {
-				// 배송지 수정 (주문배송, 교환배송)
-				rtnStr += params.value;			
-				rtnStr += "<button type=\"button\" style=\"margin-left:10px\" class=\"btn btn-info\" onclick=\"fnOpenDaumAddr('" + params.node.rowIndex + "', 'ADDR');\">POST</button>";
-				rtnStr += "<button type=\"button\" class=\"btn btn-info\" onclick=\"fnUpdateOrderAddr('" + params.node.rowIndex + "');\">저장</button>";
-			} else {
-				rtnStr += params.value;
-			}
-			
-			return rtnStr;
-		}
-	},
-	{headerName: "주소(기본)"		, field: "recipBaseAddr"	, width: 220, cellClass: 'text-left'},
-	{headerName: "주소(상세)"		, field: "recipDtlAddr"		, width: 220, cellClass: 'text-left', editable: true},
-	{headerName: "배송메모"		, field: "delvMemo"			, width: 250, cellClass: 'text-left', editable: true}
-];
-var gridOptionsDeliveryInfo = gagaAgGrid.getGridOptions(columnDefsDeliveryInfo);
-
-// 4.결제정보
-var columnDefsPaymentInfo = [
-	{headerName: "결제수단"		, field: "payMeansNm"	, width: 100	, cellClass: 'text-center'},
-	{headerName: "카드(은행)"		, field: "cardNm"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "할부(입금계좌)"	, field: "cardMips"		, width: 150	, cellClass: 'text-center'},
-	{
-		headerName		: "승인번호"
-		, field			: "pgTradeNo"
-		, width			: 100
-		, cellClass		: 'text-center'
-		, cellRenderer	: function (params) {
-			var retStr = '';
-
-			if (!gagajf.isNull(params.value)) {
-				retStr = '<a href="javascript:void(0);" onclick="fnReceiptPage(\'' + params.data.pgTid + '\');">' + params.value + '</a>';
-			}
-
-			if (gagajf.isNull(params.value) && !gagajf.isNull(params.data.pgTid)) {
-				retStr = '<a href="javascript:void(0);" onclick="fnReceiptPage(\'' + params.data.pgTid + '\');">' + '거래내역' + '</a>';
-			}
-
-			return retStr;
-		}
-	},
-	{
-		headerName			: "결제일시"	
-		, field				: "payDt"
-		, width				: 130
-		, cellClass			: 'text-center' 
-		, cellRenderer: function(params) {
-			return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-		}
-	},
-	{headerName: "결제상태"	, field: "payStatNm"	, width: 80		, cellClass: 'text-center'},
-	{
-		headerName			: "결제금액"
-		, field				: "payAmt"
-		, width				: 80
-		, cellClass			: 'text-right'
-		, valueFormatter	: function (params) {
-			return params.value.addComma();
-		}
-	},
-	{headerName: "계좌만료일"	, field: "vaDeadline"	, width: 150	, cellClass: 'text-center'}
-];
-var gridOptionsPaymentInfo = gagaAgGrid.getGridOptions(columnDefsPaymentInfo);
-
-// 5.배송비
-var columnDefsDeliveryFeeInfo = [
-	{headerName: "배송비종류"		, field: "delvFeeGbNm", width: 120, cellClass: 'text-center'},
-	{
-		headerName			: "배송비"
-		, field				: "delvFee"
-		, width				: 100
-		, cellClass			: 'text-right'
-		, valueFormatter	: function (params) {
-			return params.value.addComma();
-		}
-	},
-	{headerName: "배송비정산여부"	, field: "delvUsacYn", width: 120, cellClass: 'text-center'},
-	{
-		headerName			: "배송비정산일시"	
-		, field				: "delvUsacDt"
-		, width				: 140
-		, cellClass			: 'text-center' 
-		, cellRenderer: function(params) {
-			return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-		}
-	}
-];
-var gridOptionsDeliveryFeeInfo = gagaAgGrid.getGridOptions(columnDefsDeliveryFeeInfo);
-
-// 6. 반품/교환 정보
-var columnDefsOrderChangeInfo = [
-	{headerName: "요청번호"		, field: "ordChgSq"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "요청구분"		, field: "chgGbNm"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "상품코드"		, field: "goodsCd"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "옵션1"			, field: "optCd1"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "옵션2"			, field: "optCd2"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "수량"			, field: "chgQty"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "요청상태"		, field: "chgStatNm"	, width: 100	, cellClass: 'text-center'},
-	{
-		headerName		: "요청일자"		
-		, field			: "regDt"		
-		, width			: 150		
-		, cellClass		: 'text-center'
-		, cellRenderer	: function(params) {
-			return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-		}
-	},
-	{headerName: "변경사유"		, field: "chgReasonNm"	, width: 100	, cellClass: 'text-center'},
-	{headerName: "요청메모"		, field: "chgMemo"		, width: 150	, cellClass: 'text-center'},
-	{headerName: "변경자명"		, field: "chgerNm"		, width: 100	, cellClass: 'text-center'},
-	{headerName: "변경자핸드폰"		, field: "chgerPhnno"	, width: 120	, cellClass: 'text-center', editable: true},
-	{
-		headerName		: "우편번호"		
-		, field			: "chgerZipNo"
-		, width			: 220
-		, cellClass		: 'text-center'
-		, cellRenderer	: function (params) {
-			var rtnStr = ""
-			
-			if (params.data.chgStat == 'G685_30' || params.data.chgStat == 'G685_40' ) {
-				// 배송지 수정 (주문배송, 교환배송)
-				rtnStr += params.value;			
-				rtnStr += "<button type=\"button\" style=\"margin-left:10px\" class=\"btn btn-info\" onclick=\"fnOpenDaumAddr('" + params.node.rowIndex + "', 'CLAIM');\">POST</button>";
-				rtnStr += "<button type=\"button\" class=\"btn btn-info\" onclick=\"fnSaveChgerAddr('" + params.node.rowIndex + "');\">저장</button>";
-			} else {
-				rtnStr = "";
-			}
-			
-			return rtnStr;
-		}
-	},
-	{headerName: "주소(기본)"		, field: "chgerBaseAddr"	, width: 220, cellClass: 'text-left'},
-	{headerName: "주소(상세)"		, field: "chgerDtlAddr"	, width: 150	, cellClass: 'text-center'	, editable: true},
-	{
-		headerName		: "택배사전송"
-		, field			: "wdInvoiceSendYn"
-		, width			: 120
-		, cellClass		: 'text-center'
-		, cellRenderer	: function (params) {
-			return (params.value == 'N') ? '미전송' : '전송';
-		}
-	},
-	{
-		headerName		: "요청취소"
-		, field			: "ordDtlNo"
-		, width			: 100
-		, cellClass		: 'text-center'
-		, cellRenderer	: function (params) {
-			var retStr = "";
-
-			if (params.data.chgGb == "G680_30" && params.data.chgStat == "G685_40") {
-				retStr = ' <button type="button" class="btn btn-success" onclick="fnReturnReqeustCancel(\'' + params.data.ordChgSq + '\',\'' + params.value + '\',\'' + params.node.rowIndex + '\');">반품취소</button>';
-			} else if (params.data.chgGb == "G680_40" && params.data.chgStat == "G685_30") {
-				retStr = ' <button type="button" class="btn btn-success" onclick="fnExchangeReqeustCancel(\'' + params.data.ordChgSq + '\',\'' + ordNo + '\',\'' + params.value + '\',\'' + params.node.rowIndex + '\');">교환취소</button>';
-			} else if (params.data.chgGb == "G680_20" && params.data.chgStat == "G685_20") {
-				retStr = '<button type="button" class="btn btn-success" onclick="fnCancelConfirmRequestCancel(\'' + params.data.ordChgSq + '\')">요청철회</button>';
-			}
-
-			return retStr;
-		}
-	},
-	{
-		headerName		: "회수지시전송"
-		, field			: "wdInvoiceSendYn"
-		, width			: 120
-		, cellClass		: 'text-center'
-	},
-	{headerName: "회수송장번호", field: "wdInvoiceNo", width: 90, cellClass: 'text-center'}
-];
-var gridOptionsOrderChangeInfo = gagaAgGrid.getGridOptions(columnDefsOrderChangeInfo);
-
-// 7.환불정보
-var columnDefsRefundInfo = [
-	{headerName: "환불수단"		, field: "payMeansNm"	, width: 80		, cellClass: 'text-center'},
-	{headerName: "환불은행(카드)"	, field: "cardNm"		, width: 120	, cellClass: 'text-center'},
-	{headerName: "환불은행계좌번호"	, field: "raNo"			, width: 150	, cellClass: 'text-center'},
-	{headerName: "예금주"			, field: "raNm"			, width: 80		, cellClass: 'text-center'},
-	{
-		headerName			: "환불금액"
-		, field				: "refundAmt"
-		, width				: 100
-		, cellClass			: 'text-right'
-		, valueFormatter	: function (params) {
-			return params.value.addComma();
-		}
-	},
-	{
-		headerName		: "환불완료일자"		
-		, field			: "updDt"		
-		, width			: 140	
-		, cellClass		: 'text-center'
-		, cellRenderer	: function(params) {
-			return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-		}
-	},
-	{headerName: "환불처리자"		, field: "updNm"		, width: 120		, cellClass: 'text-center'}
-];
-var gridOptionsRefundInfo = gagaAgGrid.getGridOptions(columnDefsRefundInfo);
-
-// 8.상담내역
-var columnDefsOrderCounselInfo = [
-	{headerName: "상담구분"		, field: "counselClsfNm"	, width: 120	, cellClass: 'text-center'},
-	{headerName: "상품코드"		, field: "goodsCd"			, width: 120	, cellClass: 'text-center'},
-	{
-		headerName		: "질문제목"
-		, field			: "questTitle"
-		, width			: 250
-		, cellClass		: 'text-center'
-		, cellRenderer	: function (params) {
-			return '<a href="javascript:void(0);" onclick="cfnOpenOneToOneAskDetailPopup(\'' + params.data.counselSq + '\')">' + params.value + '</a>';
-		}
-	},
-	{
-		headerName		: "등록일"			
-		, field			: "questDt"	
-		, width			: 120	
-		, cellClass		: 'text-center'
-		, cellRenderer	: function(params) {
-			return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-		}
-	},
-	{
-		headerName		: "답변일"			
-		, field			: "ansDt"	
-		, width			: 120	
-		, cellClass		: 'text-center'
-		, cellRenderer	: function(params) {
-			return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-		}
-	},
-	{headerName: "답변자"			, field: "ansNm"	, width: 80		, cellClass: 'text-center'},
-	{headerName: "삭제여부"		, field: "delYn"	, width: 80		, cellClass: 'text-center'}
-];
-var gridOptionsOrderCounselInfo = gagaAgGrid.getGridOptions(columnDefsOrderCounselInfo);
-
-// 9.주문메모
-var columnDefsOrderMemoInfo = [
-	{headerName: "등록일시"		, field: "regDt"	, width: 135	, cellClass: 'text-center'},
-	{
-		headerName		: "등록자"
-		, field			: "regNm"
-		, width			: 100
-		, cellClass		: 'text-center'
-	},
-	{
-		headerName		: "관리메모"
-		, field			: "memo"
-		, width			: 150
-		, cellClass		: 'text-left'
-		, cellRenderer	: function (params) {
-			var retStr = '';
-			
-			if (!gagajf.isNull(params.value)) {
-				retStr = '<a href="javascript:void(0);" onclick="fnCreateOrderMemo(\'' + params.data.ordNo + '\',\'' + params.data.orderMemoSq + '\',\'U' + '\');">' + params.value + '</a>';
-			}
-			return retStr;
-		}
-	},
-	{
-		headerName		: "삭제"
-		, field			: "orderMemoSq"
-		, width			: 80
-		, cellClass		: 'text-center'
-		, cellRenderer	: function (params) {
-			var retStr = '';
-			
-			if (params.data.updNo == userNo) {
-				retStr = '<button type="button" class="btn btn-danger" onclick="fnDeleteOrderMemo(\'' + params.data.ordNo + '\',\'' + params.value + '\');"> - </button>';
-			}
-			return retStr;
-		}
-	},
-];
-var gridOptionsOrderMemoInfo = gagaAgGrid.getGridOptions(columnDefsOrderMemoInfo);
-</script>
-
-<script>
-var fnSetGridHeightInit = function () {
-	if (_windowWidth < 1780) {
-		_girdRowH1 = 33 + _scrollH;
-		_girdRowH2 = 80 + _scrollH;
-	} else {
-		_girdRowH1 = 33
-		_girdRowH2 = 80;
-	}
-}
-</script>
-
-<!-- 버튼 이벤트 바인딩 -->
-<script>
-var _windowWidth 	= $(window).width();		/* 위도우창 넓이 */
-var _girdRowH 		= 33;						/* 그리드 Row 줄 높이 */
-var _girdRowH1 		= 33;						/* 그리드 타이틀 1줄 짜리 높이*/
-var _girdRowH2 		= 62;						/* 그리드 타이틀 2줄 짜리 높이*/
-var _scrollH 		= 27;						/* 가로스크롤bar 높이 */
-
-$(window).resize(function () {
-	_windowWidth = $(window).width();
-	fnSetGridHeightInit();
-});
-
-</script>
-<!-- AgGrid 생성 -->
-<script>
-// 팝업닫기
-var fnOrderDetailClose = function(){
-	uifnPopupClose('popupOrderDetail');
-}
-
-$(document).ready(function () {
-	
-	// 1. 그리드 그리기
-	//gagaAgGrid.createGrid('gridOrderInfo'					, gridOptionsOrderInfo);			// 기본정보
-	gagaAgGrid.createGrid('gridOrderGoodsInfo'				, gridOptionsGoodsInfo);			// 상품정보
-	gagaAgGrid.createGrid('gridOrderFreeGiftInfo'			, gridOptionsOrderFreeGiftInfo);	// 사은품정보
-	gagaAgGrid.createGrid('gridDeliveryAddrInfo'			, gridOptionsDeliveryInfo);			// 배송정보
-	gagaAgGrid.createGrid('gridPaymentInfo'					, gridOptionsPaymentInfo);			// 결제정보
-	gagaAgGrid.createGrid('gridDeliveryFeeInfo'				, gridOptionsDeliveryFeeInfo);		// 배송비정보
-	gagaAgGrid.createGrid('gridOrderChangeInfo'				, gridOptionsOrderChangeInfo);		// 취소/반품/교환 요청 정보
-	gagaAgGrid.createGrid('gridOrderRefundInfo'				, gridOptionsRefundInfo);			// 환불정보
-	gagaAgGrid.createGrid('gridOrderCounselInfo'			, gridOptionsOrderCounselInfo);		// 상담내역
-	gagaAgGrid.createGrid('gridOrderMemoInfo'				, gridOptionsOrderMemoInfo);		// 관리자메모
-	
-	// 2. 그리드 데이터 바인딩
-	//gridOptionsOrderInfo.api.setRowData(orderInfo);								// 기본정보
-	gridOptionsGoodsInfo.api.setRowData(orderGoodsInfo);							// 상품정보
-	gridOptionsOrderFreeGiftInfo.api.setRowData(orderFreeGiftInfo);					// 사은품품정보
-	gridOptionsDeliveryInfo.api.setRowData(orderDeliveryAddrInfo);					// 배송정보
-	gridOptionsPaymentInfo.api.setRowData(orderPaymentInfo);						// 결제정보
-	gridOptionsDeliveryFeeInfo.api.setRowData(orderDeliveryFeeInfo);				// 배송비정보
-	gridOptionsOrderChangeInfo.api.setRowData(orderChangeInfo);						// 취소/반품/교환요청 정보
-	gridOptionsRefundInfo.api.setRowData(orderRefundInfo);							// 환불정보
-	gridOptionsOrderCounselInfo.api.setRowData(orderCounselInfo);					// 상담내역
-	gridOptionsOrderMemoInfo.api.setRowData(orderAdminMemoInfo);					// 관리자메모
-	
-	// 2.1 TOTAL ROWS 없애기
-	gagaAgGrid.hideStatusBar('gridOrderGoodsInfo');
-	gagaAgGrid.hideStatusBar('gridOrderFreeGiftInfo');
-	gagaAgGrid.hideStatusBar('gridDeliveryAddrInfo');
-	gagaAgGrid.hideStatusBar('gridPaymentInfo');
-	gagaAgGrid.hideStatusBar('gridDeliveryFeeInfo');
-	gagaAgGrid.hideStatusBar('gridOrderChangeInfo');
-	gagaAgGrid.hideStatusBar('gridOrderRefundInfo');
-	gagaAgGrid.hideStatusBar('gridOrderCounselInfo');
-	gagaAgGrid.hideStatusBar('gridOrderMemoInfo');
-	
-	// 3. 그리드 높이 설정
-	fnSetGridHeightInit();
-	
-	// 4. 그리드 숨김 처리
-	if (orderChangeInfo == null || orderChangeInfo.length === 0) {
-		$("#wrapOrderChange").addClass("off");
-	}
-	
-	if (orderRefundInfo == null || orderRefundInfo.length === 0) {
-		$("#wrapRefund").addClass("off");
-	}
-	
-	// 5. 버튼처리
-	// G013_00	주문접수
-	// G013_10	입금대기
-	// G013_18	발주대기-가격차이
-	// G013_19	발주대기-우편번호상이
-	// G013_20	결제완료
-	// G013_30	상품준비중
-	// G013_40	배송준비중
-	// G013_50	배송중
-	// G013_55	출고완료
-	// G013_60	배송완료
-	// G013_98	결제전주문취소
-	// G013_99	결제후주문취소
-	
-	// G685_10	결제전취소
-	// G685_20	취소요청
-	// G685_21	취소완료
-	// G685_30	교환요청
-	// G685_31	교환요청취소
-	// G685_32	교환완료
-	// G685_40	반품요청
-	// G685_41	반품요청취소
-	// G685_42	반품완료
-
-	var addrBtnChkCnt = 0;
-	gridOptionsGoodsInfo.api.forEachNode(function (rowNode, index) {
-		
-		// 입금대기, 결제완료, 상품준비중, 배송준비중 일때 취소가능
-		if (rowNode.data.ordDtlStat == 'G013_10' || rowNode.data.ordDtlStat == 'G013_20' || rowNode.data.ordDtlStat == 'G013_30' || rowNode.data.ordDtlStat == 'G013_40') {
-			$("#btnCancel").removeClass("off");	//취소요청
-		}
-		
-		// 배송중, 출고완료, 배송완료 일때 반품, 교환 가능
-		if ((rowNode.data.ordDtlStat == 'G013_50' || rowNode.data.ordDtlStat == 'G013_55' || rowNode.data.ordDtlStat == 'G013_60') && rowNode.data.ordQty > rowNode.data.ordReqChgQty) {
-			$("#btnReturn, #btnExchange").removeClass("off");
-		}
-		
-		// 입금대기, 결제완료, 상품준비중, 배송준비중 일때 취소가능
-		if (rowNode.data.ordDtlStat == 'G013_10' || rowNode.data.ordDtlStat == 'G013_20' || rowNode.data.ordDtlStat == 'G013_30' || rowNode.data.ordDtlStat == 'G013_40') {
-			addrBtnChkCnt++;
-		}
-	});
-
-	// 주소변경 버튼 히든처리
-	if (addrBtnChkCnt > 0) {
-		$("#btnUpdateOrderAddr").removeClass("off");
-	}
-});
-
-$(document).ready(function () {
-	$('#orderDetailContents').css("width", "97%").css("height", "96%");
-	
-	// 취소요청
-	$('#btnCancel').on('click', function () {
-		fnCancelRequest(ordNo, 'N');
-	});
-	// 반품요청
-	$('#btnReturn').on('click', function () {
-		fnReturnRequest(ordNo, 'N');
-	});
-	// 교환요청
-	$('#btnExchange').on('click', function () {
-		fnExchangeRequest(ordNo, 'N');
-	});
-	// 메모등록
-	$('#btnCreateOrderMemo').on('click', function () {
-		fnCreateOrderMemo(ordNo, 0, 'N');
-	});
-	// 배송 정보 수정
-	$('#btnUpdateOrderAddr').on('click', function () {
-		fnUpdateOrderAddr();
-	});
-	// 환불계좌 등록
-	$('#btnSaveAccount').on('click', function () {
-		fnCreateOrderRfAccount(ordNo, custNo);
-	});
-});
-</script>
-
-<!-- function -->
-<script>
-var gridOrderChangeInfoSelectedIdx = '';
-
-// 배송지변경
-var fnUpdateOrderAddr = function (rowIdx) {	
-	gridOptionsDeliveryInfo.api.stopEditing();
-	var jsonData = JSON.stringify(gridOptionsDeliveryInfo.api.getRowNode(rowIdx).data);
-	
-	mcxDialog.confirm("주소를 변경하시겠습니까?", {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			gagajf.ajaxJsonSubmit(
-				"/order/deliver/addr/update"
-				, jsonData
-				, function () {
-					
-				}
-			);
-		}
-	});
-}
-
-// 취소요청
-var fnCancelRequest = function () {
-	var actionUrl = "/orderChange/cncl/req/form?ordNo=" + ordNo;
-	cfnOpenModalPopup(actionUrl, 'popupCancelRequestForm');
-};
-
-// 반품요청
-var fnReturnRequest = function () {
-	var actionUrl = "/orderChange/rtn/req/form?ordNo=" + ordNo;
-	cfnOpenModalPopup(actionUrl, 'popupReturnRequestForm');
-};
-
-// 교환요청
-var fnExchangeRequest = function () {
-	var actionUrl = "/orderChange/exchange/request/form?ordNo=" + ordNo;
-	cfnOpenModalPopup(actionUrl, 'popupExchangeRequestForm');
-};
-
-// 취소승인
-var fnCancelConfirmRequest = function (ordChgSq) {
-	mcxDialog.confirm("요청번호 [" + ordChgSq + "] 에 대한 취소승인 처리를 하시겠습니까?", {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			var data = new Object();
-			data.ordNo 		= ordNo;	//전역변수
-			data.ordChgSq 	= ordChgSq;
-
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit(
-				'/orderChange/cancel/confirm'
-				, jsonData
-				, function (result) {
-					uifnPopupClose('popupOrderDetail');
-					fnReOpenOrderDetailPopup();
-				}
-			);
-		}
-	});
-};
-
-// 취소요청철회
-var fnCancelConfirmRequestCancel = function (ordChgSq) {
-	mcxDialog.confirm("요청번호 [" + ordChgSq + "] 에 대한 요청철회 처리를 하시겠습니까?", {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			var data = new Object();
-			data.ordChgSq = ordChgSq;
-			
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit(
-				'/orderChange/cancel/wait/cancel'
-				, jsonData
-				, function (result) {
-					uifnPopupClose('popupOrderDetail');
-					fnReOpenOrderDetailPopup();
-			});
-		}
-	});
-}
-
-// 주문상품 상세 변경 이력 팝업
-var fnOrderDetailChangeHst = function (ordDtlNo) {
-	var actionUrl = "/order/detail/change/hst/form/" + ordDtlNo;
-	cfnOpenModalPopup(actionUrl, 'popupOrderDetailChangeHstForm');
-};
-
-// 쿠폰내역 팝업
-var fnOrderCouponHst = function (ordNo) {
-	var actionUrl = "/order/detail/coupon/hst/form/" + ordNo;
-	cfnOpenModalPopup(actionUrl, 'popupOrderDetailCouponHstForm');
-};
-
-// 다다익선내역 팝업
-var fnOrderTmtbHst = function (ordNo) {
-	var actionUrl = "/order/detail/tmtb/hst/form/" + ordNo;
-	cfnOpenModalPopup(actionUrl, 'popupOrderDetailTmtbHstForm');
-};
-
-// 포인트내역 팝업
-var fnOrderPointHst = function (ordNo) {
-	var actionUrl = "/order/detail/point/hst/form/" + ordNo;
-	cfnOpenModalPopup(actionUrl, 'popupOrderDetailPointHstForm');
-};
-
-// 상품권내역 팝업
-var fnOrderGiftcardHst = function (ordNo) {
-	var actionUrl = "/order/detail/giftcard/hst/form/" + ordNo;
-	cfnOpenModalPopup(actionUrl, 'popupOrderDetailGiftcardHstForm');
-};
-
-// 관리자메모 등록
-var fnCreateOrderMemo = function (ordNo, seq, mode) {
-	var actionUrl = "/order/memo/create/form?ordNo=" + ordNo + "&seq=" + seq + "&mode=" + mode;
-	cfnOpenModalPopup(actionUrl, 'popupCreateOrderMemo');
-};
-
-// 환불계좌 등록
-var fnCreateOrderRfAccount = function (ordNo, custNo) {
-	var actionUrl = "/order/refund/account/create/form?ordNo=" + ordNo + "&custNo="+custNo;
-	cfnOpenModalPopup(actionUrl, 'popupCreateRefundAccount');
-};
-
-// 주문메모 삭제
-var fnDeleteOrderMemo = function (ordNo, orderMemoSq) {
-	mcxDialog.confirm('삭제하시겠습니까?', {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			var data = new Object();
-			data.ordNo 	= ordNo;
-			data.seq 	= orderMemoSq;
-			
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit(
-				'/order/memo/delete'
-				, jsonData
-				, function () {
-					fnBindOrderMemo();
-				}
-			);
-		}
-	});
-}
-
-// 주문메모 바인딩
-var fnBindOrderMemo = function() {
-	gagaAgGrid.fetch(
-		"/order/admin/memo/list/" + ordNo
-		, gridOptionsOrderMemoInfo
-		, null
-		, function (result) {
-		}
-	);
-};
-
-// 주문 변경요청정보 바인딩
-var fnBindOrderChangeInfo = function() {
-	gagaAgGrid.fetch(
-		"/order/return/info/list/" + ordNo
-		, gridOptionsOrderChangeInfo
-		, null
-		, function (result) {
-			$('#gridOrderChangeInfo').css('height', 31 + 33 * ((result.length == 0 || result == null) ? 1 : result.length));
-		}
-	);
-};
-
-// 환불계좌 정보
-var fnBindOrderRfAccountInfo = function () {
-	gagaAgGrid.fetch(
-		"/order/refund/account/info/list?ordNo=" + ordNo+"&custNo="+custNo
-		, gridOptionsRefundAccountInfo
-		, null
-		, function (result) {
-			$('#gridOptionsRefundAccountInfo').css('height', 31 + 33 * ((result.length == 0 || result == null) ? 1 : result.length));
-		}
-	);
-};
-
-// 배송비 DATA 바인딩
-var fnBindDeliveryAddr = function(delvAddrSq) {
-	if (typeof (delvAddrSq) != 'undefined') {
-		var strLink = '/order/deliver/addr/info/' + delvAddrSq;
-		var jsonData = JSON.stringify([]);
-		gagajf.ajaxJsonSubmit(strLink, jsonData, fnBindDeliveryAddrCallBack);
-	}
-};
-
-// 배송정보
-var fnBindDeliveryAddrCallBack = function(result) {
-	gridOptionsDeliveryInfo.api.setRowData(result);
-};
-
-// 변경요청 > 회수지정보 저장
-var fnSaveChgerAddr = function (rowIdx) {
-	gridOptionsOrderChangeInfo.api.stopEditing();
-	
-	var jsonData = JSON.stringify(gridOptionsOrderChangeInfo.api.getRowNode(rowIdx).data);
-	
-	mcxDialog.confirm("주소를 변경하시겠습니까?", {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			gagajf.ajaxJsonSubmit(
-				"/order/change/info/addr/update"
-				, jsonData
-				, function () {
-					
-				}
-			);
-		}
-	});
-}
-
-// 반품요청 철회
-var fnReturnReqeustCancel = function (ordChgSq, ordDtlNo, rowIdx) {
-	mcxDialog.confirm('반품요청을 철회하시겠습니까?', {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			var data = new Object();
-			data.ordChgSq = ordChgSq;
-			data.ordDtlNo = ordDtlNo;
-			
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit(
-				'/order/return/request/cancel'
-				, jsonData
-				, function (result) {
-					if (result.message != '회수컨펌 된 내역이 있습니다.') {
-						var selectedRow = gridOptionsOrderChangeInfo.api.getRowNode(rowIdx).data;
-						gridOptionsOrderChangeInfo.api.updateRowData({remove: [selectedRow]});
-					}
-				}
-			);
-		}
-	});
-};
-
-// 교환요청 철회
-var fnExchangeReqeustCancel = function (ordChgSq, ordNo, ordDtlNo, rowIdx) {
-	mcxDialog.confirm('교환요청을 취소하시겠습니까?', {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			var data = new Object();
-			data.ordNo 		= ordNo;
-			data.ordDtlNo 	= ordDtlNo;
-			data.ordChgSq 	= ordChgSq;
-			
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit(
-				'/order/exchange/request/cancel'
-				, jsonData, function () {
-					uifnPopupClose('popupOrderDetail');
-					fnReOpenOrderDetailPopup();
-				}
-			);
-		}
-	});
-};
-
-// LMS 전송
-var fnOpenLmsForm = function (orderPhnno, custNo) {
-	if (gagajf.isNull(custNo) && gagajf.isNull(orderPhnno)) {
-		mcxDialog.alert("정보가 올바르지 않습니다.");
-		return false;
-	}
-
-	$('#orderDetailInfo input[name=orderPhnno]').val(orderPhnno);
-	$('#orderDetailInfo input[name=custNo]').val(custNo);
-
-	var param = {};
-	param.elementCellPhnno = '#orderDetailInfo input[name=orderPhnno]';
-	param.elementCustNo = '#orderDetailInfo input[name=custNo]';
-	cfnOpenLmsPopup(param);
-};
-
-// EMAIL 전송
-var fnOpenEmailForm = function (orderEmail, orderNm, custNo) {
-	if (gagajf.isNull(orderEmail) && gagajf.isNull(orderNm) && gagajf.isNull(custNo)) {
-		mcxDialog.alert("정보가 올바르지 않습니다.");
-		return false;
-	}
-	$('#orderDetailInfo input[name=orderEmail]').val(orderEmail);
-	$('#orderDetailInfo input[name=orderNm]').val(orderNm);
-	$('#orderDetailInfo input[name=custNo]').val(custNo);
-
-	var param = {};
-	param.elementRecipEmail = '#orderDetailInfo input[name=orderEmail]';
-	param.elementCustNm = '#orderDetailInfo input[name=orderNm]';
-	param.elementCustNo = '#orderDetailInfo input[name=custNo]';
-
-	cfnOpenEmailPopup(param);
-};
-
-// 송장조회
-var fnSearchDelivery = function (url, invoiceNo) {
-	var fullUrl = url + invoiceNo;
-	window.open(fullUrl, '_blank');
-};
-
-// 카드전표 영수증 조회
-var fnReceiptPage = function (tid) {
-	var fullUrl = "https://npg.nicepay.co.kr/issue/IssueLoader.do?TID=" + tid + "&type=0";
-	window.open(fullUrl, '_blank');
-};
-
-// 수동 회수 지시 
-var fnWdinvocieSend = function (ordChgSq) {
-	mcxDialog.confirm("요청번호 [" + ordChgSq + "] 회수지시 처리 하시겠습니까? <br> 시스템에서 회수지시를 보내지는않습니다.", {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			var data = new Object();
-			data.ordChgSq = ordChgSq;
-			
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit(
-				'/order/wdinvoice/send/save'
-				, jsonData
-				, function (result) {
-					uifnPopupClose('popupOrderDetail');
-					fnReOpenOrderDetailPopup();
-				}
-			);
-		}
-	});
-};
-
-// 구매확정철회
-var fnChangedCompleteDelivery = function (ordNo, ordDtlNo, ordDtlStat) {
-	if ('70' !== ordDtlStat) {
-		mcxDialog.alert("구매확정철회는 구매확정인 상태여만 가능합니다.");
-		return false;
-	}
-	
-	var data = {};
-	data.ordDtlNo = ordDtlNo;
-	data.ordNo = ordNo;
-	var jsonData = JSON.stringify(data);
-	
-	gagajf.ajaxJsonSubmit('/order/check/status', jsonData, fnChangedCompleteDeliveryCallback);
-};
-
-var fnChangedCompleteDeliveryCallback = function (result) {
-	// 구매확정 처리 가능 하지 않으면 얼럿 노출 끝
-	if (!result.isPossible) {
-		mcxDialog.alert("구매확정철회는 구매확정인 상태여만 가능합니다.");
-		return false;
-	} else {
-		mcxDialog.confirm("구매확정 철회 하시겠습니까? <br> 지급된 포인트에 대한 처리는 별도로 하셔야 합니다. ", {
-			cancelBtnText	: "취소",
-			sureBtnText		: "확인",
-			sureBtnClick	: function () {
-				var data = {};
-				data.ordDtlNo = result.ordDtlNo;
-				data.ordNo = result.ordNo;
-				
-				var jsonData = JSON.stringify(data);
-				gagajf.ajaxJsonSubmit(
-					'/order/complete/delivery/changed'
-					, jsonData
-					, function (result) {
-						uifnPopupClose('popupOrderDetail');
-						fnReOpenOrderDetailPopup();
-					}
-				);
-			}
-		});
-	}
-};
-
-// 주문상세 상태값 변경
-var fnChangOrdDtlStat = function (obj) {
-	var ordNo 			= $(obj).attr("ordNo");
-	var ordDtlNo 		= $(obj).attr("ordDtlNo");
-	var ordDtlStat 		= $(obj).val();
-	var ordDtlStatNm 	= $(obj).children("option:selected").text();
-	var strConfirm		= "주문상태를 " + ordDtlStatNm + "(으)로 변경 하시겠습니까?"
-	
-	mcxDialog.confirm(strConfirm, {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function () {
-			var data = new Object();
-			data.ordNo			= ordNo;
-			data.ordDtlNo 		= ordDtlNo;
-			data.ordDtlStat 	= ordDtlStat;
-
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit(
-				'/order/detail/ordDtlStat/changed'
-				, jsonData
-				, function (result) {
-					uifnPopupClose('popupOrderDetail');
-					fnReOpenOrderDetailPopup();
-				}
-			);
-		}
-	});
-};
-
-// DAUM을 이용한 우편번호 팝업 레이어
-var fnOpenDaumAddr = function(idx, addrGb) {
-		
-	let daumZip = new daum.Postcode({
-		oncomplete: function(data) {
-			// 배송지주소 수정
-			if ("ADDR" == addrGb) {
-				gridOptionsDeliveryInfo.api.gre
-				gridOptionsDeliveryInfo.api.getRowNode(idx).data.recipZipNo 		= data.zonecode;
-				gridOptionsDeliveryInfo.api.getRowNode(idx).data.recipBaseAddr 		= cfnGetDaumRoadAddr(data);
-				gridOptionsDeliveryInfo.api.getRowNode(idx).data.recipDtlAddr 		= "";
-				gridOptionsDeliveryInfo.api.refreshCells();
-			}
-			// 회수지주소 수정
-			else {
-				gridOptionsOrderChangeInfo.api.getRowNode(idx).data.chgerZipNo 		= data.zonecode;
-				gridOptionsOrderChangeInfo.api.getRowNode(idx).data.chgerBaseAddr 	= cfnGetDaumRoadAddr(data);
-				gridOptionsOrderChangeInfo.api.getRowNode(idx).data.chgerDtlAddr 	= "";
-				gridOptionsOrderChangeInfo.api.refreshCells();
-			}
-			
-			cfnCloseDaumAddr();
-		},
-		width: '100%'
-	});
-	
-	cfnOpenDaumAddr(daumZip);
-}
-</script>
-
-</html>
-
-
-
-
-

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

@@ -310,7 +310,7 @@ var columnDefsOrderList = [
 			}
 		}
 	},
-	{headerName: "고객고유번호"	, field: "custNo"		, width: 120, cellClass: 'text-center', hide: true},
+	{headerName: "고객고유번호", field: "custNo"		, width: 120, cellClass: 'text-center', hide: true},
 	{headerName: "외부몰"		, field: "extmallNm"	, width: 100, cellClass: 'text-center', sortable: true},
 	{headerName: "휴대폰번호"	, field: "orderPhnno"	, width: 120, cellClass: 'text-center', hide: true},
 	{

+ 0 - 764
src/main/webapp/WEB-INF/views/order/OrderListForm20210511.html

@@ -1,764 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderListForm.html
- * @desc    : 주문목록 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.11.16   jsh77b       최초 작성
- *******************************************************************************
- -->
- <style>
- .ag-neo .ag-cell.top-row-span {
-     border-bottom: 0px;
-}
-.ag-neo .ag-cell.bottom-row-span {
-     border-top: 0px;
-     text-indent: -100em;
-}
- </style>
- 
-<div id="main">
-	<!-- 메인타이틀 영역 -->
-	<div class="main-title">
-	</div>
-	<!-- //메인타이틀 영역 -->
-	
-	<!-- 메뉴 설명 -->
-	<div class="infoBox menu-desc">
-	</div>
-	
-	<form id="searchForm" name="searchForm" action="#" th:action="@{'/order/list'}">
-		<input type="hidden" id="searchGb" name="searchGb" />
-		
-		<!-- 패널 영역1 -->
-		<div class="panelStyle" >
-			<!-- 검색조건 영역 -->
-			<!-- TITLE -->
-			<div class="panelTitle">
-				<h3>
-					<i class="fa fa-info-circle"></i>아래 검색조건 중 <font color="red">주문번호</font> 또는 <font color="red">검색조건</font> 하나를 꼭 입력해 주세요.
-				</h3>
-				<span class="panelControl">
-					<i class="fa fa-chevron-up"></i>
-				</span>
-			</div>
-			
-			<div class="panelContent">
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-					</colgroup>
-					<tr>
-						<th>사이트</th>
-						<td>
-							<select name="siteCd">
-								<option value="">[전체]</option>
-								<option th:if="${siteCdList}" th:each="oneData, status : ${siteCdList}" th:value="${oneData.cd}"
-										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-							</select>
-						</td>
-						<th>몰구분</th>
-						<td>
-							<select name="mallCd">
-								<option value="">[전체]</option>
-								<option th:if="${mallGbList}" th:each="oneData, status : ${mallGbList}" th:value="${oneData.cd}"
-										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-							</select>
-						</td>
-						<th>업체/브랜드<em class="required" title="필수"></em></th>
-						<td colspan="3">
-							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y"  checked/>자사</label>
-							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N"/>입점</label>
-							<select name="supplyCompCd" id="supplyCompCd">
-								<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
-								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-							<span id="multiBrand"></span>
-						</td>
-					</tr>
-					<tr>
-						<th>주문상세상태</th>
-						<td colspan="5">
-							<div class="multiCheckBox" style="width:270px">
-								<button type="button" class="sltBtn" style="overflow-x: hidden; padding-right:5px;">[전체]</button>
-								<ul style="display: none; box-shadow: 3px 3px 3px; overflow-y: scroll; height: 112px;">
-									<th:block th:each="oneData, status : ${ordDtlStatList}">
-										<li>
-											<label class="chkBox">
-												<!-- 주문상세상태 주문접수 코드값 강제 설정 (입금대기) -->
-												<th:block th:if="${oneData.cd} == G013_00">
-													<input type="checkbox" name="multiOrdDtlStat" th:value="G013_10" th:text="|[G013_10] ${oneData.cdNm}|">
-												</th:block>
-												<th:block th:unless="${oneData.cd} == G013_00">
-													<input type="checkbox" name="multiOrdDtlStat" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|">
-												</th:block>
-												<!-- //주문상세상태 주문접수 코드값 강제 설정 (입금대기) -->
-											</label>
-										</li>
-									</th:block>
-								</ul>
-							</div>
-						</td>
-						<th rowspan="5">키워드<i class="star"></i></th>
-						<td rowspan="5">
-							<select name="search" id="search">
-								<option value="searchOrdNo">주문번호</option>
-								<option value="searchExtmallOrderId">외부몰주문번호</option>
-								<option value="searchAgentOrderId">에이전트주문번호</option>
-							</select>
-							<textarea class="textareaR3 w70p" name="condition" id="condition"></textarea>
-						</td>
-					</tr>
-					<tr>
-						<th>변경구분</th>
-						<td>
-							<select name="chgGb">
-								<option value="">[전체]</option>
-								<th:block th:each="oneData, status : ${chgGbList}">
-									<th:block th:unless="${oneData.cd} == 'G680_10'">
-										<option th:if="${chgGbList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-									</th:block>
-								</th:block>
-							</select>
-						</td>
-						<th>변경요청처리상태</th>
-						<td>
-							<select name="chgStat">
-								<option value="">[전체]</option>
-								<option value="9999">[품절취소]</option>
-								<option th:if="${chgStatList}" th:each="oneData, status : ${chgStatList}" th:value="${oneData.cd}"
-										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-							</select>
-						</td>
-						<th>결제수단</th>
-						<td>
-							<select name="payMeans">
-								<option value="">[전체]</option>
-								<option th:if="${payMeansList}" th:each="oneData, status : ${payMeansList}" th:value="${oneData.cd}"
-										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<th>주문자명</th>
-						<td>
-							<input type="text" name="orderNm" placeholder="" maxlength="20"/>
-						</td>
-						<th>고객ID</th>
-						<td>
-							<input type="text" name="custId" placeholder="" maxlength="20"/>
-						</td>
-						<th>주문자휴대폰번호</th>
-						<td>
-							<input type="text" name="orderPhnno" placeholder="" maxlength="20"/>
-						</td>
-					</tr>
-					<tr>
-						<th>상품코드</th>
-						<td>
-							<input type="text" name="goodsCd" placeholder="" maxlength="20"/>
-						</td>
-						<!--  2021.05.11 주문상세단위목록조회 변경 -->
-						<!-- 
-						<th>사이즈</th>
-						<td>
-							<input type="text" name="sizeCd" placeholder="" maxlength="20"/>
-						</td>
-						<th>단품명</th>
-						<td>
-							<input type="text" name="goodsNm" placeholder="" maxlength="20"/>
-						</td>
-						 -->
-					</tr>
-					<tr>
-						<th>수취인명</th>
-						<td>
-							<input type="text" name="recipNm" placeholder="" maxlength="20"/>
-						</td>
-						<th>송장번호</th>
-						<td>
-							<input type="text" name="invoiceNo" placeholder="" maxlength="20"/>
-						</td>
-						<th>회수지시전송여부</th>
-						<td>
-							<select name="wdInvoiceSendYn" class="w150">
-								<option value="">전체</option>
-								<option value="Y">전송</option>
-								<option value="N">미전송</option>
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<th>조회일자</th>
-						<td colspan="7">
-							<select name="searchDateGb">
-								<option value="ordDt">주문일자</option>
-								<option value="delvStdt">출고일자</option>
-								<option value="soldoutDt">품절일자</option>
-							</select>
-							<span id="terms"></span>
-						</td>
-					</tr>
-				</table>
-				
-				<ul class="panelBar">
-					<li class="center">
-						<button type="button" class="btn btn-info btn-lg" id="btnOrderSearch">조회</button>
-						<button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</button>
-					</li>
-				</ul>
-				
-			</div>
-		</div>
-
-		<div class="panelStyle">
-			<ul class="panelBar">
-				<li>
-					<button type="button" class="btn btn-info btn-lg" onclick="fnOrderExcelList();">엑셀다운로드</button>
-					<button type="button" class="btn btn-info btn-lg" th:if="${userNo == 8 or userNo == 14 or userNo == 11}" onclick="fnCreateSampleOrder();">주문생성</button>
-				</li>
-				<li class="aR">
-					검색결과 : <strong><span id="rowCntOrderList">0</span> 건</strong>&nbsp;
-					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
-					<select id="pageSize" name="pageSize">
-						<option value="100" selected="selected">100개씩 보기</option>
-						<option value="500">500개씩 보기</option>
-						<option value="1000">1000개씩 보기</option>
-						<option value="5000">5000개씩 보기</option>
-					</select>
-					<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
-				</li>
-			</ul>
-			
-			<div class="panelContent" style="overflow: hidden;">
-				<div id="gridOrderList" style="width: 100%; height: 600px;" class="ag-theme-balham lh60"></div>
-			</div>
-
-			<ul class="panelBar">
-				<li class="center">
-					<div class="tablePaging" id="orderListPagination"></div>
-				</li>
-			</ul>
-		</div>
-
-	</form>
-</div>
-
-<label class="off">
-	<a href="javascript:void(0);" id="hdOrderExcelList" style="display: none;">엑셀다운로드</a>
-</label>
-
-<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=20210114"></script>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-var sessRoleCd 		= [[${sessionInfo.roleCd}]];
-var siteCdList 		= gagajf.convertToArray([[${siteCdList}]]);
-var mallGbList 		= gagajf.convertToArray([[${mallGbList}]]);
-var ordDtlStatList 	= gagajf.convertToArray([[${ordDtlStatList}]]);
-var payMeansList 	= gagajf.convertToArray([[${payMeansList}]]);
-var chgStatList 	= gagajf.convertToArray([[${chgStatList}]]);
-var chgGbList 		= gagajf.convertToArray([[${chgGbList}]]);
-var formalGbList 	= gagajf.convertToArray([[${formalGbList}]]);
-var frontGbList 	= {'P': 'PC', 'M': 'MO'};
-var uploadGoodsUrl 	= [[${@environment.getProperty('upload.goods.view')}]];
-
-// 1. 주문기본정보
-var columnDefsOrderList = [
-	{
-		headerName	: "주문기본정보"
-		, cellClass	: 'text-center'
-		, children	: [
-			{
-				headerName		: "주문번호"
-				, field			: 'ordNo'
-				, width			: 80
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, cellRenderer	: function (params) {
-					var roleCd = [[${sessionInfo.roleCd}]];
-					if (!roleCd.startsWith("C")) {
-						return "<a href=\"javascript:void(0);\" onclick=\"fnOpenOrderDetailPopup('" + params.value + "');\">" + params.value + "</a>";
-					} else {
-						return params.value;
-					}
-				}
-			},
-			{
-				headerName		: "주문자"
-				, field			: "ordNm"
-				, width			: 100
-				, cellClass		: 'text-left'
-				, sortable		: true
-				, cellRenderer	: function (params) {
-					var custNo = '';
-					if (!gagajf.isNull(params.data.custNo)) {
-						custNo = params.data.custNo;
-					}
-					
-					var roleCd = [[${sessionInfo.roleCd}]];
-					if (!roleCd.startsWith("C") && !gagajf.isNull(params.data.custNo)  && params.data.mallGb === '10' ) {
-						return '<a href="javascript:void(0);" onclick=\"cfnOpenCustDetailPopup(' + params.data.custNo + ');\">' + params.value + '(' + custNo + ')' + '</a>';
-					} else {
-						return params.value + '(' + custNo + ')';
-					}
-				}
-			},
-			{headerName: "고객고유번호"	, field: "custNo"		, width: 120, cellClass: 'text-center', hide: true},
-			{headerName: "외부몰"		, field: "extmallNm"	, width: 100, cellClass: 'text-center', sortable: true},
-			{headerName: "휴대폰번호"	, field: "orderPhnno"	, width: 120, cellClass: 'text-center', hide: true},
-			{
-				headerName		: "사이트"
-				, field			: "siteCd"
-				, width			: 80
-				, cellClass		: 'text-center'
-				, hide			: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(siteCdList, params.data.siteCd); 
-				}
-			},
-			{
-				headerName		: "프론트"
-				, field			: "frontGb"
-				, width			: 80
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(frontGbList, params.data.frontGb); 
-				}
-			},
-			{
-				headerName		: "몰구분"
-				, field			: "mallGb"
-				, width			: 60
-				, cellClass		: 'text-center'
-				, hide			: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(mallGbList, params.data.mallGb); 
-				}
-			},
-			{
-				headerName		: "주문일시"
-				, field			: "ordDt"
-				, width			: 140
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.toDateTimeFormat(params.data.ordDt); 
-				}
-			},
-			{
-				headerName		: "결제수단"
-				, field			: "payMeans"
-				, width			: 100
-				, cellClass		: 'text-center'
-				, hide			: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(payMeansList, params.data.payMeans); 
-				}
-			},
-			{
-				headerName		: "신규/교환"
-				, field			: "ordExchGb"
-				, width			: 100
-				, cellClass		: 'text-center',
-				valueGetter 	: function (params) {
-					return params.data.ordExchGb === 'O' ? '신규' : '교환';
-				}
-			},
-			{
-				headerName		: "주문상세상태"
-				, field			: "ordDtlStat"
-				, width			: 120
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, valueGetter	: function (params) {
-					var ordDtlStat = gagaAgGrid.lookupValue(ordDtlStatList, params.data.ordDtlStat);
-					var chgStat='';
-					if (params.data.ordDtlStat === '99') {
-						chgStat = gagaAgGrid.lookupValue(chgStatList, params.data.chgStat);
-						if (!gagajf.isNull(chgStat)) {
-							chgStat = chgStat.substr(0, 2);
-							if (params.data.soldoutYn === 'Y') {
-								chgStat = '품절';
-							}
-							ordDtlStat = ordDtlStat + '-' + chgStat;
-						}
-
-					}
-					return ordDtlStat;
-				}
-			},
-			{headerName: "출고처", field: "delvLocNm", width: 110, cellClass: 'text-center', sortable: true, hide:true},
-		]
-	},
-	{
-		headerName	: "상품정보"
-		, cellClass	: 'text-center'
-		, children	: [
-			{headerName: "상품코드"	, field: "goodsCd"		, width: 100	, cellClass: 'text-center'	, sortable: true},
-			{headerName: "브랜드"		, field: "brandEnm"		, width: 100	, cellClass: 'text-center'	, sortable: true},
-			{headerName: "구성유형"	, field: "goodsTypeNm"	, width: 100	, cellClass: 'text-center'	, sortable: true},
-			{headerName: "상품명"		, field: "goodsNm"		, width: 200	, cellClass: 'text-center'	, sortable: true}
-		]
-	},
-	{
-		headerName	: "단품정보"
-		, cellClass	: 'text-center'
-		, children	: [
-			{
-				headerName		: "이미지"
-				, field			: "sysImgNm"
-				, width			: 100
-				, height		: 60
-				, cellClass		: 'text-center'
-				,cellRenderer	: function(params) {
-					return '<img width="60" src="'+ _goodsUrl+ "/" + params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
-				}
-			},			
-			{
-				headerName		: "단품코드"
-				, field			: "itemCd"
-				, width			: 100
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, cellRenderer: function (params) {
-					var roleCd = [[${sessionInfo.roleCd}]];
-					if (!roleCd.startsWith("C")) {
-						return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenGoodsDetailPopup('U','" + params.value + "');\">" + params.value + "</a>";
-					} else {
-						return params.value;
-					}
-				}
-			},
-			//{headerName: "옵션1"		, field: "optCd1"		, width: 60	, cellClass: 'text-center'	, sortable: true},
-			{headerName: "옵션1"		, field: "colorNm"		, width: 60		, cellClass: 'text-center'	, sortable: true},
-			{headerName: "옵션2"		, field: "optCd2"		, width: 60		, cellClass: 'text-center'	, sortable: true},
-			{headerName: "단품명"		, field: "itemNm"		, width: 200	, cellClass: 'text-left'	, sortable: true},
-			{
-				headerName		: "외부몰벤더"
-				, field			: "vendorId"
-				, width			: 110
-				, cellClass		: 'text-center'
-				, hide			: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(vendorList, params.data.vendorId); 
-				}
-			},
-			{headerName: "외부몰주문번호"	, field: "extmallOrderId"	, width: 150, cellClass: 'textFormat', sortable: true},
-			{headerName: "외부몰부주문번호"	, field: "agentOrderId"		, width: 120, cellClass: 'textFormat', sortable: true},
-			{
-				headerName		: "주문수량"
-				, field			: "ordQty"
-				, width			: 80
-				, cellClass		: 'text-center'
-				, valueGetter: function (params) { 
-					return params.data.ordQty.addComma(); 
-				}
-			},
-			{
-				headerName		: "취소수량"
-				, field			: "cnclRtnQty"
-				, width			: 80
-				, cellClass		: 'text-center'
-				, valueGetter	: function (params) { 
-					return params.data.cnclRtnQty.addComma(); 
-				}
-			},
-			{
-				headerName		: "주문금액"
-				, field			: "ordAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, valueGetter	: function (params) { 
-					return params.data.ordAmt.addComma(); 
-				}
-			},
-			{
-				headerName		: "취소반품금액"
-				, field			: "cnclRtnAmt"
-				, width			: 120
-				, cellClass		: 'text-right'
-				, valueGetter	: function (params) { 
-					return params.data.cnclRtnAmt.addComma(); 
-				}
-			},
-			{
-				headerName		: "총할인금액"
-				, field			: "totDcAmt"
-				, width			: 120
-				, cellClass		: 'text-right'
-				, valueGetter: function (params) { 
-					return params.data.totDcAmt.addComma(); 
-				}
-			},
-			{
-				headerName		: "실판매금액"
-				, field			: "realOrdAmt"
-				, width			: 100
-				, cellClass		: 'text-right'
-				, valueGetter	: function (params) { 
-					return params.data.realOrdAmt.addComma(); 
-				}
-			},
-			{headerName: "원코드"		, field: "supplyGoodsCd"	, width: 130, cellClass: 'text-center', sortable: true},
-			{
-				headerName		: "정상/이월"
-				, field			: "formalGb"
-				, width			: 100
-				, cellClass		: 'text-center'
-				, sortable		: true 
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(formalGbList, params.data.formalGb); 
-				}
-			},
-			{
-				headerName		: "출고처지정일시"
-				, field			: "delvAssignDt"
-				, width			: 150
-				, cellClass		: 'text-center'
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.toDateTimeFormat(params.data.delvAssignDt); 
-				}
-			},
-			{
-				headerName		: "송장출력일시"
-				, field			: "invoiceDt"
-				, width			: 150
-				, cellClass		: 'text-center'
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.toDateTimeFormat(params.data.invoiceDt); 
-				}
-			},
-			{headerName: "출고택배사"		, field: "shipCompNm"	, width: 150, cellClass: 'text-center'},
-			{headerName: "출고송장"		, field: "invoiceNo"	, width: 150, cellClass: 'text-center'},
-			{
-				headerName		: "출고일시"
-				, field			: "delvResDt"
-				, width			: 150
-				, cellClass		: 'text-center'
-				, valueGetter: function (params) { 
-					return gagaAgGrid.toDateTimeFormat(params.data.delvResDt); 
-				}
-			},
-			{headerName: "품절여부"		, field: "soldoutYn"	, width: 90		, cellClass: 'text-center', sortable: true},
-			{headerName: "품절메모"		, field: "soldoutMemo"	, width: 120	, cellClass: 'text-left'},
-			{
-				headerName		: "품절일시"
-				, field			: "soldoutRegDt"
-				, width			: 150
-				, cellClass		: 'text-center'
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.toDateTimeFormat(params.data.soldoutRegDt); 
-				}
-			},
-			{headerName: "품절처리자", field: "soldoutRegId", width: 120, cellClass: 'text-center'},
-			//{
-			//	headerName		: "변경요청번호"
-			//	, field			: "ordChgSq"
-			//	, width			: 120
-			//	, cellClass		: 'text-center'
-			//	, valueGetter	: function (params) {
-			//		return params.data.ordChgSq === 0 ? '' : params.data.ordChgSq;
-			//	}
-			//},
-			//{
-			//	headerName		: "변경구분"
-			//	, field			: "chgGb"
-			//	, width			: 120
-			//	, cellClass		: 'text-center'
-			//	, valueGetter: function (params) { 
-			//		return gagaAgGrid.lookupValue(chgGbList, params.data.chgGb); 
-			//	}
-			//},
-			//{
-			//	headerName		: "변경상태"
-			//	, field			: "chgStat"
-			//	, width			: 120
-			//	, cellClass		: 'text-center'
-			//	, valueGetter	: function (params) { 
-			//		return gagaAgGrid.lookupValue(chgStatList, params.data.chgStat); 
-			//	}
-			//},
-			//{headerName: "회수지시여부"		, field: "wdInvoiceSendYn"		, width: 100, cellClass: 'text-center'},
-			//{headerName: "회수택배사"		, field: "wdShipCompNm"			, width: 100, cellClass: 'text-center'},
-			//{headerName: "회수송장"		, field: "wdInvoiceNo"			, width: 120, cellClass: 'text-center'},
-			{headerName: "수취인명"		, field: "recipNm"				, width: 100, cellClass: 'text-center'},
-			{headerName: "수취인연락처"		, field: "recipPhnno"			, width: 120, cellClass: 'text-center'},
-			{headerName: "수취인주소"		, field: "recipAddr"			, width: 500, cellClass: 'text-left'},
-			{
-				headerName		: "배송메모"
-				, field			: "delvMemo"
-				, width			: 200
-				, cellClass		: 'left'
-				, valueGetter: function (params) {
-					var delvMemo = '';
-					if (!gagajf.isNull(params.data.delvMemo)) {
-						delvMemo = fnRemoveEmojis(params.data.delvMemo);
-					}
-					return delvMemo;
-				}
-			},
-			{headerName: "출고메모", field: "dstrbtNote", width: 200, cellClass: 'left'}
-		]
-	}
-];
-
-var gridOptionsOrderList = gagaAgGrid.getGridOptions(columnDefsOrderList);
-
-gridOptionsOrderList.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
-
-// 최근상세보기한 주문번호
-var currOrdNo = '';
-
-// 조회
-$('#btnOrderSearch').on('click', function () {
-	fnSearchList();
-});
-
-var fnSearchList = function () {
-	var ordNo 	= $('#condition').val();
-	var stDate 	= $('#stDate').val();
-	var edDate 	= $('#edDate').val();
-
-	if (gagajf.isNull(ordNo)) {
-		if (gagajf.isNull(stDate)) {
-			mcxDialog.alert('시작 기간을 입력하세요.');
-			return;
-		}
-
-		if (gagajf.isNull(edDate)) {
-			mcxDialog.alert('종료 기간을 입력하세요.');
-			return;
-		}
-	}
-	
-	gagaPaging.init('searchForm', fnSearchCallBack, 'orderListPagination', $('#searchForm').find('#pageSize').val());
-	gagaPaging.load($("#searchForm input[name=pageNo]").val());
-	
-	// 2020.12.08 페이징 처리 때문에 주석 처리
-	//gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptionsOrderList, '#searchForm', function (result) {
-		//$("#rowCntOrderList").text(gridOptionsOrderList.api.getDisplayedRowCount());
-		// 주문리스트 합계 정보
-		//gagajf.ajaxFormSubmit('/order/list/sum/info', '#searchForm', fnOrderListSumInfoCallback);
-	//});
-};
-
-var fnSearchCallBack = function(result){
-	$('#searchForm').find('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
-	$('#searchForm').find('#pageNo').val(result.pageing.pageable.pageNo.addComma());
-	$('#searchForm').find('#pgNo').html(result.pageing.pageable.pageNo.addComma());
-	$('#searchForm').find('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
-	
-	gridOptionsOrderList.api.setRowData(result.orderList);
-	gagaPaging.createPagination(result.pageing.pageable);
-}
-
-// 엑셀조회
-$("#btnSearchExcel").on('click', function () {
-	cfnExcelUploadPopup('', 'fnExcelUpoadCallback');
-});
-
-var fnExcelUpoadCallback = function (data) {
-	$("#excelFileNm").val(data.excelFileNm);
-	gagaAgGrid.fetch('/order/excel/search', gridOptionsOrderList, '#searchForm', function () {
-		$("#rowCntOrderList").text(gridOptionsOrderList.api.getDisplayedRowCount());
-	});
-};
-
-// 초기화 클릭시
-$('#btnInit').on('click', function() {
-	$('#searchForm')[0].reset();
-	$("#multiBrand").empty();
-});
-
-// 엑셀 다운로드
-// 2020.12.11 현재는 그리드의 조회 목록을 엑셀 다운로드 하고 있지만 추후 에는 조건의 엑셀 조회 후 다운로드 기능으로 변경 해야 할듯함
-// 기존의 주문목록은 페이징 기능이 없었지만 페이징 기능을 추가 하면서 엑셀다운로드시 조회 후 파일다운 기능 필요  
-var fnOrderExcelList = function () {
-	gagaAgGrid.showOrHideColumn(gridOptionsOrderList	, "custNo", true);
-	gagaAgGrid.exportToExcel('주문목록'					, gridOptionsOrderList);
-	gagaAgGrid.showOrHideColumn(gridOptionsOrderList	, "custNo", false);
-};
-
-var fnOpenOrderDetailPopup = function (ordNo) {
-	currOrdNo = ordNo;
-	cfnOpenOrderDetailPopup(ordNo);
-};
-
-var fnReOpenOrderDetailPopup = function () {
-	cfnOpenOrderDetailPopup(currOrdNo);
-};
-	
-// 자사/입점 변경여부
-$("#searchForm input[name=selfYn]").bind('click change', function () {
-	var radioValue = $(this).val();
-	var selfGb = "S";	// 자사 공급 업체
-	
-	if (radioValue == "N"){
-		selfGb = "E";	//입점 공급업체
-	}
-	
-	var actionUrl = '/renderer/supply/company/list/'+ selfGb;	
-
-	$('#searchForm').find('#multiBrand').empty();
-
-	cfnCreateCombo(actionUrl, $('#searchForm select[name=supplyCompCd]'), "[전체]", "");
-});
-	
-// 업체변경시
-$('#searchForm select[name=supplyCompCd]').on('change', function() {
-	var actionUrl = '/renderer/supplyCompany/brand/list/' + $(this).val();
-
-	if(sessRoleCd == "G001_B000"){
-		actionUrl = '/renderer/brand/AuthBrandlist';
-	}
-
-	cfnCreateMultiCombo(actionUrl, "multiBrand",  "[전체]", null, 'Y');
-});
-
-// 페이징
-$('#searchForm select[name=pageSize]').on('change', function() {
-	$("#searchForm input[name=pageNo]").val('1');
-	fnGoodsListSearch($("#searchForm input[name=searchGb]").val());
-});
-
-// 초기설정
-$(document).ready(function() {
-	// 달력기능 활성화
-	cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '주문', 'X');
-	$('.btnToday').trigger('click');
-	gagaAgGrid.createGrid('gridOrderList', gridOptionsOrderList);
-	gridOptionsOrderList.api.hideOverlay();
-});
-
-var fnCreateSampleOrder = function() {
-	var actionUrl = "/order/sample/create/form";
-	cfnOpenModalPopup(actionUrl, "popupOrderSample");
-}
-
-var fnRemoveEmojis = function (str) {
-	var regex = /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/g;
-	return str.replace(regex, '');
-};
-</script>
-
-</html>
-
-
-
-
-

+ 0 - 766
src/main/webapp/WEB-INF/views/order/OrderListFormBack.html

@@ -1,766 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderListForm.html
- * @desc    : 주문목록 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.11.16   jsh77b       최초 작성
- *******************************************************************************
- -->
- <style>
- .ag-neo .ag-cell.top-row-span {
-     border-bottom: 0px;
-}
-.ag-neo .ag-cell.bottom-row-span {
-     border-top: 0px;
-     text-indent: -100em;
-}
- </style>
- 
-<div id="main">
-	<!-- 메인타이틀 영역 -->
-	<div class="main-title">
-	</div>
-	<!-- //메인타이틀 영역 -->
-	
-	<!-- 메뉴 설명 -->
-	<div class="infoBox menu-desc">
-	</div>
-	
-	<form id="searchForm" name="searchForm" action="#" th:action="@{'/order/list'}">
-		<input type="hidden" id="searchGb" name="searchGb" />
-		
-		<!-- 패널 영역1 -->
-		<div class="panelStyle" >
-			<!-- 검색조건 영역 -->
-			<!-- TITLE -->
-			<div class="panelTitle">
-				<h3>
-					<i class="fa fa-info-circle"></i>아래 검색조건 중 <font color="red">주문번호</font> 또는 <font color="red">검색조건</font> 하나를 꼭 입력해 주세요.
-				</h3>
-				<span class="panelControl">
-					<i class="fa fa-chevron-up"></i>
-				</span>
-			</div>
-			
-			<div class="panelContent">
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-					</colgroup>
-					<tr>
-						<th>사이트</th>
-						<td>
-							<select name="siteCd">
-								<option value="">[전체]</option>
-								<option th:if="${siteCdList}" th:each="oneData, status : ${siteCdList}" th:value="${oneData.cd}"
-										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-							</select>
-						</td>
-						<th>몰구분</th>
-						<td>
-							<select name="mallCd">
-								<option value="">[전체]</option>
-								<option th:if="${mallGbList}" th:each="oneData, status : ${mallGbList}" th:value="${oneData.cd}"
-										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-							</select>
-						</td>
-						<th>업체/브랜드<em class="required" title="필수"></em></th>
-						<td colspan="3">
-							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y"  checked/>자사</label>
-							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N"/>입점</label>
-							<select name="supplyCompCd" id="supplyCompCd">
-								<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
-								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-							</select>
-							<span id="multiBrand"></span>
-						</td>
-					</tr>
-					<tr>
-						<th>주문상태</th>
-						<td>
-							<div class="multiCheckBox" style="width:270px">
-								<button type="button" class="sltBtn" style="overflow-x: hidden; padding-right:5px;">[전체]</button>
-								<ul style="display: none; box-shadow: 3px 3px 3px; overflow-y: scroll; height: 112px;">
-									<li th:if="${ordStatList}" th:each="oneData, status : ${ordStatList}">
-										<label class="chkBox">
-											<input type="checkbox" name="multiOrdStat" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|">
-										</label>
-									</li>
-								</ul>
-							</div>
-						</td>
-						<th>주문상세상태</th>
-						<td colspan="3">
-							<div class="multiCheckBox" style="width:270px">
-								<button type="button" class="sltBtn" style="overflow-x: hidden; padding-right:5px;">[전체]</button>
-								<ul style="display: none; box-shadow: 3px 3px 3px; overflow-y: scroll; height: 112px;">
-									<li th:if="${ordDtlStatList}" th:each="oneData, status : ${ordDtlStatList}">
-										<label class="chkBox">
-											<input type="checkbox" name="multiOrdDtlStat" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|">
-										</label>
-									</li>
-								</ul>
-							</div>
-						</td>
-						<th rowspan="5">키워드<i class="star"></i></th>
-						<td rowspan="5">
-							<select name="search" id="search">
-								<option value="searchOrdNo">주문번호</option>
-								<option value="searchExtmallOrderId">외부몰주문번호</option>
-								<option value="searchAgentOrderId">에이전트주문번호</option>
-							</select>
-							<textarea class="textareaR3 w70p" name="condition" id="condition"></textarea>
-						</td>
-					</tr>
-					<tr>
-						<th>변경구분</th>
-						<td>
-							<select name="chgGb">
-								<option value="">[전체]</option>
-								<option th:if="${chgGbList}" th:each="oneData, status : ${chgGbList}" th:value="${oneData.cd}"
-										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-							</select>
-						</td>
-						<th>변경요청처리상태</th>
-						<td>
-							<select name="chgStat">
-								<option value="">[전체]</option>
-								<option value="9999">[품절취소]</option>
-								<option th:if="${chgStatList}" th:each="oneData, status : ${chgStatList}" th:value="${oneData.cd}"
-										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-							</select>
-						</td>
-						<th>결제수단</th>
-						<td>
-							<select name="payMeans">
-								<option value="">[전체]</option>
-								<option th:if="${payMeansList}" th:each="oneData, status : ${payMeansList}" th:value="${oneData.cd}"
-										th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<th>주문자명</th>
-						<td>
-							<input type="text" name="orderNm" placeholder="" maxlength="20"/>
-						</td>
-						<th>고객ID</th>
-						<td>
-							<input type="text" name="custId" placeholder="" maxlength="20"/>
-						</td>
-						<th>주문자휴대폰번호</th>
-						<td>
-							<input type="text" name="orderPhnno" placeholder="" maxlength="20"/>
-						</td>
-					</tr>
-					<tr>
-						<th>상품코드</th>
-						<td>
-							<input type="text" name="goodsCd" placeholder="" maxlength="20"/>
-						</td>
-						<th>사이즈</th>
-						<td>
-							<input type="text" name="sizeCd" placeholder="" maxlength="20"/>
-						</td>
-						<th>단품명</th>
-						<td>
-							<input type="text" name="goodsNm" placeholder="" maxlength="20"/>
-						</td>
-					</tr>
-					<tr>
-						<th>수취인명</th>
-						<td>
-							<input type="text" name="recipNm" placeholder="" maxlength="20"/>
-						</td>
-						<th>송장번호</th>
-						<td>
-							<input type="text" name="invoiceNo" placeholder="" maxlength="20"/>
-						</td>
-						<th>회수지시전송여부</th>
-						<td>
-							<select name="wdInvoiceSendYn" class="w150">
-								<option value="">전체</option>
-								<option value="Y">전송</option>
-								<option value="N">미전송</option>
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<th>조회일자</th>
-						<td colspan="7">
-							<select name="searchDateGb">
-								<option value="ordDt">주문일자</option>
-								<option value="delvStdt">출고일자</option>
-								<option value="cnclReqDt">@취소요청일자</option>
-								<option value="changReqDt">@교환요청일자</option>
-								<option value="rtnReqDt">@반품요청일자</option>
-								<option value="soldoutDt">품절일자</option>
-							</select>
-							<span id="terms"></span>
-						</td>
-					</tr>
-				</table>
-				
-				<ul class="panelBar">
-					<li class="center">
-						<button type="button" class="btn btn-info btn-lg" id="btnOrderSearch">조회</button>
-						<button type="button" class="btn btn-gray btn-lg" id="btnInit">초기화</button>
-					</li>
-				</ul>
-				
-			</div>
-		</div>
-
-		<div class="panelStyle">
-			<ul class="panelBar">
-				<li>
-					<button type="button" class="btn btn-info btn-lg" onclick="fnOrderExcelList();">엑셀다운로드</button>
-				</li>
-				<li class="aR">
-					검색결과 : <strong><span id="rowCntOrderList">0</span> 건</strong>&nbsp;
-					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
-					<select id="pageSize" name="pageSize">
-						<option value="100" selected="selected">100개씩 보기</option>
-						<option value="500">500개씩 보기</option>
-						<option value="1000">1000개씩 보기</option>
-						<option value="5000">5000개씩 보기</option>
-					</select>
-					<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
-				</li>
-			</ul>
-			
-			<div class="panelContent" style="overflow: hidden;">
-				<div id="gridOrderList" style="width: 100%; height: 600px;" class="ag-theme-balham lh60"></div>
-			</div>
-
-			<ul class="panelBar">
-				<li class="center">
-					<div class="tablePaging" id="orderListPagination"></div>
-				</li>
-			</ul>
-		</div>
-
-	</form>
-</div>
-
-<label class="off">
-	<a href="javascript:void(0);" id="hdOrderExcelList" style="display: none;">엑셀다운로드</a>
-</label>
-
-<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=20210114"></script>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-var sessRoleCd 		= [[${sessionInfo.roleCd}]];
-var siteCdList 		= gagajf.convertToArray([[${siteCdList}]]);
-var mallGbList 		= gagajf.convertToArray([[${mallGbList}]]);
-var ordDtlStatList 	= gagajf.convertToArray([[${ordDtlStatList}]]);
-var payMeansList 	= gagajf.convertToArray([[${payMeansList}]]);
-var chgStatList 	= gagajf.convertToArray([[${chgStatList}]]);
-var chgGbList 		= gagajf.convertToArray([[${chgGbList}]]);
-var formalGbList 	= gagajf.convertToArray([[${formalGbList}]]);
-var frontGbList 	= {'P': 'PC', 'M': 'MO'};
-var uploadGoodsUrl 	= [[${@environment.getProperty('upload.goods.view')}]];
-
-// 1. 주문기본정보
-var columnDefsOrderList = [
-	{
-		headerName	: "주문기본정보"
-		, cellClass	: 'text-center'
-		, children	: [
-			{
-				headerName		: "주문번호"
-				, field			: 'ordNo'
-				, width			: 80
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, cellRenderer	: function (params) {
-					var roleCd = [[${sessionInfo.roleCd}]];
-					if (!roleCd.startsWith("C")) {
-						return "<a href=\"javascript:void(0);\" onclick=\"fnOpenOrderDetailPopup('" + params.value + "');\">" + params.value + "</a>";
-					} else {
-						return params.value;
-					}
-				}
-			},
-			{
-				headerName		: "주문자"
-				, field			: "ordNm"
-				, width			: 100
-				, cellClass		: 'text-left'
-				, sortable		: true
-				, cellRenderer	: function (params) {
-					var custNo = '';
-					if (!gagajf.isNull(params.data.custNo)) {
-						custNo = params.data.custNo;
-					}
-					
-					var roleCd = [[${sessionInfo.roleCd}]];
-					if (!roleCd.startsWith("C") && !gagajf.isNull(params.data.custNo)  && params.data.mallGb === '10' ) {
-						return '<a href="javascript:void(0);" onclick=\"cfnOpenCustDetailPopup(' + params.data.custNo + ');\">' + params.value + '(' + custNo + ')' + '</a>';
-					} else {
-						return params.value + '(' + custNo + ')';
-					}
-				}
-			},
-			{headerName: "고객고유번호"	, field: "custNo"		, width: 120, cellClass: 'text-center', hide: true},
-			{headerName: "외부몰"		, field: "extmallNm"	, width: 100, cellClass: 'text-center', sortable: true},
-			{headerName: "휴대폰번호"	, field: "orderPhnno"	, width: 120, cellClass: 'text-center', hide: true},
-			{
-				headerName		: "사이트"
-				, field			: "siteCd"
-				, width			: 80
-				, cellClass		: 'text-center'
-				, hide			: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(siteCdList, params.data.siteCd); 
-				}
-			},
-			{
-				headerName		: "프론트"
-				, field			: "frontGb"
-				, width			: 80
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(frontGbList, params.data.frontGb); 
-				}
-			},
-			{
-				headerName		: "몰구분"
-				, field			: "mallGb"
-				, width			: 60
-				, cellClass		: 'text-center'
-				, hide			: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(mallGbList, params.data.mallGb); 
-				}
-			},
-			{
-				headerName		: "주문일시"
-				, field			: "ordDt"
-				, width			: 140
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.toDateTimeFormat(params.data.ordDt); 
-				}
-			},
-			{
-				headerName		: "결제수단"
-				, field			: "payMeans"
-				, width			: 100
-				, cellClass		: 'text-center'
-				, hide			: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(payMeansList, params.data.payMeans); 
-				}
-			},
-			{
-				headerName		: "신규/교환"
-				, field			: "ordExchGb"
-				, width			: 100
-				, cellClass		: 'text-center',
-				valueGetter 	: function (params) {
-					return params.data.ordExchGb === 'O' ? '신규' : '교환';
-				}
-			},
-			{
-				headerName		: "주문상세상태"
-				, field			: "ordDtlStat"
-				, width			: 120
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, valueGetter	: function (params) {
-					var ordDtlStat = gagaAgGrid.lookupValue(ordDtlStatList, params.data.ordDtlStat);
-					var chgStat='';
-					if (params.data.ordDtlStat === '99') {
-						chgStat = gagaAgGrid.lookupValue(chgStatList, params.data.chgStat);
-						if (!gagajf.isNull(chgStat)) {
-							chgStat = chgStat.substr(0, 2);
-							if (params.data.soldoutYn === 'Y') {
-								chgStat = '품절';
-							}
-							ordDtlStat = ordDtlStat + '-' + chgStat;
-						}
-
-					}
-					return ordDtlStat;
-				}
-			},
-			{headerName: "출고처", field: "delvLocNm", width: 110, cellClass: 'text-center', sortable: true, hide:true},
-		]
-	},
-	{
-		headerName	: "상품정보"
-		, cellClass	: 'text-center'
-		, children	: [
-			{headerName: "상품코드"	, field: "goodsCd"		, width: 100	, cellClass: 'text-center'	, sortable: true},
-			{headerName: "브랜드"		, field: "brandEnm"		, width: 100	, cellClass: 'text-center'	, sortable: true},
-			{headerName: "구성유형"	, field: "goodsTypeNm"	, width: 100	, cellClass: 'text-center'	, sortable: true},
-			{
-				headerName		: "상품명"
-				, field			: 'goodsNm'
-				, width			: 200
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, cellRenderer	: function (params) {
-					var roleCd = [[${sessionInfo.roleCd}]];
-					if (!roleCd.startsWith("C")) {
-						return "<a href=\"javascript:void(0);\" onclick=\"fnOpenOrderDetailPopup('" + params.value + "');\">" + params.value + "</a>";
-					} else {
-						return params.value;
-					}
-				}
-			}
-		]
-	},
-	{
-		headerName	: "단품정보"
-		, cellClass	: 'text-center'
-		, children	: [
-			{
-				headerName		: "이미지"
-				, field			: "sysImgNm"
-				, width			: 100
-				, height		: 60
-				, cellClass		: 'text-center'
-				,cellRenderer	: function(params) {
-					return '<img width="60" src="'+ _goodsUrl+ "/" + params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
-				}
-			},			
-			{
-				headerName		: "단품코드"
-				, field			: "itemCd"
-				, width			: 100
-				, cellClass		: 'text-center'
-				, sortable		: true
-				, cellRenderer: function (params) {
-					var roleCd = [[${sessionInfo.roleCd}]];
-					if (!roleCd.startsWith("C")) {
-						return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenGoodsDetailPopup('U','" + params.value + "');\">" + params.value + "</a>";
-					} else {
-						return params.value;
-					}
-				}
-			},
-			{headerName: "옵션1"		, field: "optCd1"		, width: 60	, cellClass: 'text-center'	, sortable: true},
-			{headerName: "옵션2"		, field: "optCd2"		, width: 60		, cellClass: 'text-center'	, sortable: true},
-			{headerName: "단품명"		, field: "itemNm"		, width: 200	, cellClass: 'text-left'	, sortable: true},
-			{
-				headerName		: "외부몰벤더"
-				, field			: "vendorId"
-				, width			: 110
-				, cellClass		: 'text-center'
-				, hide			: true
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(vendorList, params.data.vendorId); 
-				}
-			},
-			{headerName: "외부몰주문번호"	, field: "extmallOrderId"	, width: 150, cellClass: 'textFormat', sortable: true},
-			{headerName: "외부몰부주문번호"	, field: "agentOrderId"		, width: 120, cellClass: 'textFormat', sortable: true},
-			{
-				headerName		: "주문수량"
-				, field			: "ordQty"
-				, width			: 80
-				, cellClass		: 'text-center'
-				, valueGetter: function (params) { 
-					return params.data.ordQty.addComma(); 
-				}
-			},
-			{
-				headerName		: "취소수량"
-				, field			: "cnclRtnQty"
-				, width			: 80
-				, cellClass		: 'text-center'
-				, valueGetter	: function (params) { 
-					return params.data.cnclRtnQty.addComma(); 
-				}
-			},
-			{
-				headerName		: "주문금액"
-				, field			: "ordAmt"
-				, width			: 80
-				, cellClass		: 'text-right'
-				, valueGetter	: function (params) { 
-					return params.data.ordAmt.addComma(); 
-				}
-			},
-			{
-				headerName		: "취소반품금액"
-				, field			: "cnclRtnAmt"
-				, width			: 120
-				, cellClass		: 'text-right'
-				, valueGetter	: function (params) { 
-					return params.data.cnclRtnAmt.addComma(); 
-				}
-			},
-			{
-				headerName		: "총할인금액"
-				, field			: "totDcAmt"
-				, width			: 120
-				, cellClass		: 'text-right'
-				, valueGetter: function (params) { 
-					return params.data.totDcAmt.addComma(); 
-				}
-			},
-			{
-				headerName		: "실판매금액"
-				, field			: "realOrdAmt"
-				, width			: 100
-				, cellClass		: 'text-right'
-				, valueGetter	: function (params) { 
-					return params.data.realOrdAmt.addComma(); 
-				}
-			},
-			{headerName: "원코드"		, field: "supplyGoodsCd"	, width: 130, cellClass: 'text-center', sortable: true},
-			{
-				headerName		: "정상/이월"
-				, field			: "formalGb"
-				, width			: 100
-				, cellClass		: 'text-center'
-				, sortable		: true 
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(formalGbList, params.data.formalGb); 
-				}
-			},
-			{
-				headerName		: "출고처지정일시"
-				, field			: "delvAssignDt"
-				, width			: 150
-				, cellClass		: 'text-center'
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.toDateTimeFormat(params.data.delvAssignDt); 
-				}
-			},
-			{
-				headerName		: "송장출력일시"
-				, field			: "invoiceDt"
-				, width			: 150
-				, cellClass		: 'text-center'
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.toDateTimeFormat(params.data.invoiceDt); 
-				}
-			},
-			{headerName: "출고택배사"		, field: "shipCompNm"	, width: 150, cellClass: 'text-center'},
-			{headerName: "출고송장"		, field: "invoiceNo"	, width: 150, cellClass: 'text-center'},
-			{
-				headerName		: "출고일시"
-				, field			: "delvResDt"
-				, width			: 150
-				, cellClass		: 'text-center'
-				, valueGetter: function (params) { 
-					return gagaAgGrid.toDateTimeFormat(params.data.delvResDt); 
-				}
-			},
-			{headerName: "품절여부"		, field: "soldoutYn"	, width: 90		, cellClass: 'text-center', sortable: true},
-			{headerName: "품절메모"		, field: "soldoutMemo"	, width: 120	, cellClass: 'text-left'},
-			{
-				headerName		: "품절일시"
-				, field			: "soldoutRegDt"
-				, width			: 150
-				, cellClass		: 'text-center'
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.toDateTimeFormat(params.data.soldoutRegDt); 
-				}
-			},
-			{headerName: "품절처리자", field: "soldoutRegId", width: 120, cellClass: 'text-center'},
-			{
-				headerName		: "변경요청번호"
-				, field			: "ordChgSq"
-				, width			: 120
-				, cellClass		: 'text-center'
-				, valueGetter	: function (params) {
-					return params.data.ordChgSq === 0 ? '' : params.data.ordChgSq;
-				}
-			},
-			{
-				headerName		: "변경구분"
-				, field			: "chgGb"
-				, width			: 120
-				, cellClass		: 'text-center'
-				, valueGetter: function (params) { 
-					return gagaAgGrid.lookupValue(chgGbList, params.data.chgGb); 
-				}
-			},
-			{
-				headerName		: "변경상태"
-				, field			: "chgStat"
-				, width			: 120
-				, cellClass		: 'text-center'
-				, valueGetter	: function (params) { 
-					return gagaAgGrid.lookupValue(chgStatList, params.data.chgStat); 
-				}
-			},
-			{headerName: "회수지시여부"		, field: "wdInvoiceSendYn"		, width: 100, cellClass: 'text-center'},
-			{headerName: "회수택배사"		, field: "wdShipCompNm"			, width: 100, cellClass: 'text-center'},
-			{headerName: "회수송장"		, field: "wdInvoiceNo"			, width: 120, cellClass: 'text-center'},
-			{headerName: "수취인명"		, field: "recipNm"				, width: 100, cellClass: 'text-center'},
-			{headerName: "수취인연락처"		, field: "recipPhnno"			, width: 120, cellClass: 'text-center'},
-			{headerName: "수취인주소"		, field: "recipAddr"			, width: 500, cellClass: 'text-left'},
-			{
-				headerName		: "배송메모"
-				, field			: "delvMemo"
-				, width			: 200
-				, cellClass		: 'left'
-				, valueGetter: function (params) {
-					var delvMemo = '';
-					if (!gagajf.isNull(params.data.delvMemo)) {
-						delvMemo = fnRemoveEmojis(params.data.delvMemo);
-					}
-					return delvMemo;
-				}
-			},
-			{headerName: "출고메모", field: "dstrbtNote", width: 200, cellClass: 'left'}
-		]
-	}
-];
-
-var gridOptionsOrderList = gagaAgGrid.getGridOptions(columnDefsOrderList);
-
-gridOptionsOrderList.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
-
-// 최근상세보기한 주문번호
-var currOrdNo = '';
-
-// 조회
-$('#btnOrderSearch').on('click', function () {
-	fnSearchList();
-});
-
-var fnSearchList = function () {
-	var ordNo 	= $('#searchForm input[name=ordNo]').val();
-	var stDate 	= $('#stDate').val();
-	var edDate 	= $('#edDate').val();
-
-	if (gagajf.isNull(ordNo)) {
-		if (gagajf.isNull(stDate)) {
-			mcxDialog.alert('시작 기간을 입력하세요.');
-			return;
-		}
-
-		if (gagajf.isNull(edDate)) {
-			mcxDialog.alert('종료 기간을 입력하세요.');
-			return;
-		}
-	}
-	
-	gagaPaging.init('searchForm', fnSearchCallBack, 'orderListPagination', $('#searchForm').find('#pageSize').val());
-	gagaPaging.load($("#searchForm input[name=pageNo]").val());
-	
-	// 2020.12.08 페이징 처리 때문에 주석 처리
-	//gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptionsOrderList, '#searchForm', function (result) {
-		//$("#rowCntOrderList").text(gridOptionsOrderList.api.getDisplayedRowCount());
-		// 주문리스트 합계 정보
-		//gagajf.ajaxFormSubmit('/order/list/sum/info', '#searchForm', fnOrderListSumInfoCallback);
-	//});
-};
-
-var fnSearchCallBack = function(result){
-	$('#searchForm').find('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
-	$('#searchForm').find('#pageNo').val(result.pageing.pageable.pageNo.addComma());
-	$('#searchForm').find('#pgNo').html(result.pageing.pageable.pageNo.addComma());
-	$('#searchForm').find('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
-	
-	gridOptionsOrderList.api.setRowData(result.orderList);
-	gagaPaging.createPagination(result.pageing.pageable);
-}
-
-// 엑셀조회
-$("#btnSearchExcel").on('click', function () {
-	cfnExcelUploadPopup('', 'fnExcelUpoadCallback');
-});
-
-var fnExcelUpoadCallback = function (data) {
-	$("#excelFileNm").val(data.excelFileNm);
-	gagaAgGrid.fetch('/order/excel/search', gridOptionsOrderList, '#searchForm', function () {
-		$("#rowCntOrderList").text(gridOptionsOrderList.api.getDisplayedRowCount());
-	});
-};
-
-// 초기화 클릭시
-$('#btnInit').on('click', function() {
-	$('#searchForm')[0].reset();
-	$("#multiBrand").empty();
-});
-
-// 엑셀 다운로드
-// 2020.12.11 현재는 그리드의 조회 목록을 엑셀 다운로드 하고 있지만 추후 에는 조건의 엑셀 조회 후 다운로드 기능으로 변경 해야 할듯함
-// 기존의 주문목록은 페이징 기능이 없었지만 페이징 기능을 추가 하면서 엑셀다운로드시 조회 후 파일다운 기능 필요  
-var fnOrderExcelList = function () {
-	gagaAgGrid.showOrHideColumn(gridOptionsOrderList	, "custNo", true);
-	gagaAgGrid.exportToExcel('주문목록'					, gridOptionsOrderList);
-	gagaAgGrid.showOrHideColumn(gridOptionsOrderList	, "custNo", false);
-};
-
-var fnOpenOrderDetailPopup = function (ordNo) {
-	currOrdNo = ordNo;
-	cfnOpenOrderDetailPopup(ordNo);
-};
-
-var fnReOpenOrderDetailPopup = function () {
-	cfnOpenOrderDetailPopup(currOrdNo);
-};
-	
-//자사/입점 변경여부
-$("#searchForm input[name=selfYn]").bind('click change', function () {
-	var radioValue = $(this).val();
-	var selfGb = "S";	// 자사 공급 업체
-	
-	if (radioValue == "N"){
-		selfGb = "E";	//입점 공급업체
-	}
-	
-	var actionUrl = '/renderer/supply/company/list/'+ selfGb;	
-
-	$('#searchForm').find('#multiBrand').empty();
-
-	cfnCreateCombo(actionUrl, $('#searchForm select[name=supplyCompCd]'), "[전체]", "");
-});
-	
-// 업체변경시
-$('#searchForm select[name=supplyCompCd]').on('change', function() {
-	var actionUrl = '/renderer/supplyCompany/brand/list/' + $(this).val();
-
-	if(sessRoleCd == "G001_B000"){
-		actionUrl = '/renderer/brand/AuthBrandlist';
-	}
-
-	cfnCreateMultiCombo(actionUrl,"multiBrand",  "[전체]",null, 'Y');
-});
-
-//페이징
-$('#searchForm select[name=pageSize]').on('change', function() {
-	$("#searchForm input[name=pageNo]").val('1');
-	fnGoodsListSearch($("#searchForm input[name=searchGb]").val());
-});
-
-// 초기설정
-$(document).ready(function() {
-	// 달력기능 활성화
-	cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '주문');
-	gagaAgGrid.createGrid('gridOrderList', gridOptionsOrderList);
-	gridOptionsOrderList.api.hideOverlay();
-});
-</script>
-
-</html>
-
-
-
-
-

+ 0 - 160
src/main/webapp/WEB-INF/views/order/OrderSellerDelvListForm.html

@@ -1,160 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderSellerDelvListForm.html
- * @desc    : 입점발주최종확인 Page
- *============================================================================
- * SISUN
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2021.04.20   xodud1202   최초 작성
- *******************************************************************************
- -->
- 
-<div id="main">
-	<!-- 메인타이틀 영역 -->
-	<div class="main-title">
-	</div>
-	<!-- //메인타이틀 영역 -->
-	
-	<!-- 메뉴 설명 -->
-	<div class="infoBox menu-desc">
-	</div>
-	
-	<form id="searchForm" name="searchForm" action="#" th:action="@{'/order/seller/unorder/list'}">
-		<input type="hidden" name="ordDtlStat" value="G013_40" />
-		<input type="hidden" name="supplyCompCd" th:value="${supplyCompCd}" />
-		<div class="panelStyle">
-			<ul class="panelBar">
-				<li class="aR">
-					<button type="button" id="btnSave" class="btn btn-success btn-lg">저장</button>
-				</li>
-			</ul>
-			
-			<div class="panelContent" style="overflow: hidden;">
-				<div id="gridList" style="width: 100%; height: 700px;" class="ag-theme-balham lh30"></div>
-			</div>
-		</div>
-	</form>
-</div>
-
-<script th:inline="javascript">
-var shipCompanyList = gagajf.convertToArray([[${shipCompanyList}]]);
-var columnDefs = [
-	{width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-	{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-	{headerName: "입점업체",			field:"supplyCompNm",		width:70, cellClass: 'text-center'},
-	{headerName: "입점업체코드",		field:"supplyCompCd",		width:80, cellClass: 'text-center', hide: true},
-	{headerName: "브랜드",				field:"brandKnm",			width:80, cellClass: 'text-center'},
-	{headerName: "주문번호",			field:"ordNo",				width:70, cellClass: 'text-center'},
-	{headerName: "주문상세번호",		field:"ordDtlNo",			width:100, cellClass: 'text-center'},
-	{headerName: "업체상품코드",		field:"supplyGoodsCd",		width:100, cellClass: 'text-center'},
-	{headerName: "상품코드",			field:"goodsCd",			width:100, cellClass: 'text-center'},
-	{headerName: "상품명",				field:"goodsNm",			width:100, cellClass: 'text-center'},
-	{headerName: "옵션1",				field:"optCd1",				width:100, cellClass: 'text-center'},
-	{headerName: "옵션2",				field:"optCd2",				width:100, cellClass: 'text-center'},
-	{headerName: "배송업체",			field:"shipCompCd",			width:120, cellClass: 'text-center'
-		, valueFormatter: function (params) {
-			return gagaAgGrid.lookupValue(shipCompanyList, params.value);
-		}
-		, valueParser: function (params) {
-			return gagaAgGrid.lookupKey(shipCompanyList, params.newValue);
-		}
-	},
-	{headerName: "송장",				field:"invoiceNo",			width:120, cellClass: 'text-center'},
-	{headerName: "주문수량",			field:"ordQty",				width:100, cellClass: 'text-center'},
-	{headerName: "취소수량",			field:"cnclRtnQty",			width:100, cellClass: 'text-center'},
-	{headerName: "출고수량",			field:"delvQty",			width:100, cellClass: 'text-center'},
-	{headerName: "미출고수량",		field:"cancelQty",			width:100, cellClass: 'text-center'
-		, editable 			: true
-		, cellEditor		: 'agRichSelectCellEditor'
-		, cellStyle			: {color: '#fffff', 'background-color': '#aaaaff'}
-		, cellEditorParams	: function(params){
-			if(params.data.ordExchGb == "E") {
-				return {value : [0]};
-			} else {
-				var qtyList = new Array();
-				for(var i = 0 ; i <= params.data.ordQty ; i++) qtyList.push(i);
-				return {values: qtyList};
-			}
-		},
-		onCellValueChanged : function(params) {
-			if(params.data.cancelQty > -1) {
-				params.data.cnclRtnQty = params.data.cancelQty;
-				params.data.delvQty = params.data.ordQty - params.data.cancelQty;
-				gridOptions.api.refreshCells();
-			}
-		}
-	},
-	{headerName: "결품수량",			field: "cnclRtnQty",		width: 100, cellClass: 'text-center', hide: true},
-	{headerName: "결제PG",				field: "pgGb",				width: 100, cellClass: 'text-center', hide: true},
-	{headerName: "결제수단",			field: "payMeans",			width: 100, cellClass: 'text-center', hide: true},
-	{headerName: "고객번호",			field: "custNo",			width: 100, cellClass: 'text-center', hide: true},
-	{headerName: "주문고객명",			field: "ordNm",				width: 100, cellClass: 'text-center', hide: true},
-	{headerName: "환불계좌은행코드",	field: "bankCd",			width: 100, cellClass: 'text-center', hide: true},
-	{headerName: "환불계좌예금주명",	field: "accountNm",			width: 100, cellClass: 'text-center', hide: true},
-	{headerName: "환불계좌번호",		field: "accountNo",			width: 100, cellClass: 'text-center', hide: true}
-];
-
-var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-gridOptions.suppressRowClickSelection = true;
-gridOptions.rowSelection = 'multiple';
-gridOptions.stopEditingWhenGridLosesFocus = true;
-
-// 검색
-var fnSearch = function() {
-	var formId = '#searchForm';
-	gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
-}
-
-//초기설정
-$(document).ready(function() {
-	// 달력기능 활성화
-	gagaAgGrid.createGrid('gridList', gridOptions);
-	gridOptions.api.hideOverlay();
-
-	fnSearch();
-});
-
-$("#btnSave").on("click", function(e) {
-	var selectedData = gridOptions.api.getSelectedRows();
-
-	if (selectedData.length == 0) {
-		mcxDialog.alert('선택된 행이 없습니다.');
-		return;
-	}
-
-	for(let i = 0 ; i < selectedData.length ; i++) {
-		let rowData = selectedData[i];
-		if(typeof rowData.cancelQty == "undefined") {
-			mcxDialog.alert('선택된 행의 미출고수량을 입력해주세요.');
-			return;
-		}
-	}
-
-	mcxDialog.confirm('선택된 주문을 배송중으로 변경하시겠습니까?', {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function(){
-			var jsonData = JSON.stringify(selectedData);
-			gagajf.ajaxJsonSubmit('/order/seller/delv/started', jsonData, fnEndFunction);
-		}
-	});
-
-	// 엑셀다운로드
-	var fnEndFunction = function(result){
-		mcxDialog.alert("성공적으로 저장되었습니다.");
-		fnSearch();
-	}
-});
-</script>
-
-</html>
-
-
-
-
-

+ 24 - 17
src/main/webapp/WEB-INF/views/order/OrderSellerListForm.html

@@ -27,6 +27,7 @@
 	<form id="searchForm" name="searchForm" action="#" th:action="@{'/order/seller/unorder/list'}">
 		<input type="hidden" id="searchGb" name="searchGb" />
 		<input type="hidden" id="imageViewYn" name="imageViewYn" />
+		<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
 		
 		<!-- 패널 영역1 -->
 		<div class="panelStyle" >
@@ -109,7 +110,7 @@
 		</div>
 
 		<div class="panelStyle">
-			<ul class="panelBar">
+			<!--<ul class="panelBar">
 				<li>
 					<button type="button" class="btn btn-info btn-lg" onclick="cfnDownloadSampleFile('SF020');">입점송장번호등록다운로드</button>
 				</li>
@@ -118,7 +119,7 @@
 					<button type="button" id="btnInvoiceExcelUpLoad" class="btn btn-success btn-lg">송장엑셀업로드</button>
 					<button type="button" id="btnSave" class="btn btn-success btn-lg">저장</button>
 				</li>
-			</ul>
+			</ul>-->
 			
 			<div class="panelContent" style="overflow: hidden;">
 				<div id="gridList" style="width: 100%; height: 600px;" class="ag-theme-balham lh30"></div>
@@ -136,8 +137,8 @@
 <label class="off">
 	<a href="javascript:void(0);" id="hdOrderExcelList" style="display: none;">엑셀다운로드</a>
 </label>
-	
-<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=2019072202"></script>
+
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=20210114"></script>
 
 <script th:inline="javascript">
 /*<![CDATA[*/
@@ -169,19 +170,14 @@ var columnDefs = [
 	{headerName: "수령자상세주소",		field:"recipDtlAddr",		width:120, cellClass: 'text-center'},
 	{headerName: "업체상품코드",		field:"supplyGoodsCd",		width:100, cellClass: 'text-center'},
 	{headerName: "상품코드",			field:"goodsCd",			width:100, cellClass: 'text-center'},
-	{headerName: "상품명",				field:"goodsNm",			width:100, cellClass: 'text-center'},
-	{headerName: "사이즈",				field:"optCd2",				width:100, cellClass: 'text-center'},
+	{headerName: "상품명",			field:"goodsNm",			width:100, cellClass: 'text-center'},
+	{headerName: "사이즈",			field:"optCd2",				width:100, cellClass: 'text-center'},
 	{headerName: "주문수량",			field:"ordQty",				width:100, cellClass: 'text-center'},
+	{headerName: "취소수량",			field:"cnclRtnQty",			width:100, cellClass: 'text-center'},
 	{headerName: "주문금액",			field:"ordAmt",				width:100, cellClass: 'text-center'},
 	{headerName: "할인금액",			field:"totDcAmt",			width:100, cellClass: 'text-center'},
-	{headerName: "실결제금액",			field:"realOrdAmt",			width:100, cellClass: 'text-center'},
+	{headerName: "실결제금액",		field:"realOrdAmt",			width:100, cellClass: 'text-center'},
 	{headerName: "배송업체",			field:"shipCompCd",			width:150, cellClass: 'text-left'
-		, editable 			: true
-		, cellEditor		: 'agRichSelectCellEditor'
-		, cellStyle			: {color: '#fffff', 'background-color': '#aaaaff'}
-		, cellEditorParams	: {
-			values: gagaAgGrid.extractValues(shipCompanyList)
-		}
 		, valueFormatter: function (params) {
 			return gagaAgGrid.lookupValue(shipCompanyList, params.value);
 		}
@@ -189,8 +185,7 @@ var columnDefs = [
 			return gagaAgGrid.lookupKey(shipCompanyList, params.newValue);
 		}
 	},
-	{headerName: "송장",				field:"invoiceNo",			width:150, cellClass: 'text-left', editable : true
-		, cellStyle			: {color: '#fffff', 'background-color': '#aaaaff'}	}
+	{headerName: "송장",				field:"invoiceNo",			width:150, cellClass: 'text-left'}
 ];
 
 var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
@@ -221,8 +216,20 @@ var fnSearch = function() {
 			return;
 		}
 	}
-	
-	gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
+
+	gagaPaging.init('searchForm', fnSearchCallBack, 'orderListPagination', 100);
+	gagaPaging.load($("#searchForm input[name=pageNo]").val());
+	// gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
+}
+
+var fnSearchCallBack = function(result){
+	$('#searchForm').find('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
+	$('#searchForm').find('#pageNo').val(result.pageing.pageable.pageNo.addComma());
+	$('#searchForm').find('#pgNo').html(result.pageing.pageable.pageNo.addComma());
+	$('#searchForm').find('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
+
+	gridOptions.api.setRowData(result.orderList);
+	gagaPaging.createPagination(result.pageing.pageable);
 }
 
 // 엑셀다운로드 시 주문상태 변경

+ 67 - 57
src/main/webapp/WEB-INF/views/order/RefundAccountRegistForm.html

@@ -13,7 +13,7 @@
  * 1.0  2021.01.04   jsh77b       최초 작성
  *******************************************************************************
  -->
-<div class="modalPopup" data-width="900">
+<div class="modalPopup" data-width="1000">
 	<div class="panelStyle">
 		<div class="panelTitle">
 			<h2>환불계좌정보</h2>
@@ -38,7 +38,7 @@
 						<td>
 							<select name="bankCd">
 								<option value="">[선택하세요]</option>
-								<option th:if="${bankList}" th:each="oneData, status : ${bankList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+								<option th:if="${bankList}" th:each="oneData, status : ${bankList}" th:value="${oneData.cd}" th:bankNm="${oneData.cdNm}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
 							</select>
 						</td>
 						<th>계좌번호</th>
@@ -58,65 +58,75 @@
 </div>
 
 <script th:inline="javascript">
-	/*<![CDATA[*/
-	/* 이벤트 바인딩 관련 */
-	var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
-	var ordNo 					= orderInfoList[0].ordNo;
-	var custNo 					= orderInfoList[0].custNo;
-
-	/* 환불계좌번호 저장 */
-	var fnSaveAccount = function(){
-		var bankCd 		= $("#orderRefundAccontForm select[name=bankCd]").val();
-		var accountNo 	= $("#orderRefundAccontForm input[name=accountNo]").val();
-		var accountNm 	= $("#orderRefundAccontForm input[name=accountNm]").val();
-
-		if (gagajf.isNull(bankCd)) {
-			mcxDialog.alert('은행을 선택하세요.');
-			return;
-		}
-
-		if (gagajf.isNull(accountNo)) {
-			mcxDialog.alert('계좌번호를 입력하세요.');
-			return;
-		}
-
-		if (gagajf.isNull(accountNm)) {
-			mcxDialog.alert('예금주를 입력하세요.');
-			return;
-		}
-
-		if (gagajf.isNull(ordNo) || gagajf.isNull(custNo)) {
-			mcxDialog.alert('주문정보를 다시 확인하시기 바랍니다..');
-			return;
-		}
-
-		mcxDialog.confirm("환불계좌를 저장하시겠습니까?", {
-			cancelBtnText	: "취소",
-			sureBtnText		: "확인",
-			sureBtnClick	: function(){
-				var data = {};
-				data.ordNo 			= ordNo;
-				data.custNo 		= custNo;
-				data.bankCd 		= bankCd;
-				data.accountNo 		= accountNo;
-				data.accountNm 		= accountNm;
-
-				var jsonData = JSON.stringify(data);
-
-				gagajf.ajaxJsonSubmit('/order/account/save', jsonData, function(result){
-					uifnPopupClose('popupCreateRefundAccount');
+/*<![CDATA[*/
+/* 이벤트 바인딩 관련 */
+var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
+var ordNo 					= orderInfoList[0].ordNo;
+var custNo 					= orderInfoList[0].custNo;
+
+/* 환불계좌번호 저장 */
+var fnSaveAccount = function(){
+	var bankCd 		= $("#orderRefundAccontForm select[name=bankCd]").val();
+	var bankNm 		= $("#orderRefundAccontForm select[name=bankCd] option:selected").attr("banknm");
+	var accountNo 	= $("#orderRefundAccontForm input[name=accountNo]").val();
+	var accountNm 	= $("#orderRefundAccontForm input[name=accountNm]").val();
+
+	if (gagajf.isNull(bankCd)) {
+		mcxDialog.alert('은행을 선택하세요.');
+		return;
+	}
+
+	if (gagajf.isNull(accountNo)) {
+		mcxDialog.alert('계좌번호를 입력하세요.');
+		return;
+	}
+
+	if (gagajf.isNull(accountNm)) {
+		mcxDialog.alert('예금주를 입력하세요.');
+		return;
+	}
+
+	if (gagajf.isNull(ordNo) || gagajf.isNull(custNo)) {
+		mcxDialog.alert('주문정보를 다시 확인하시기 바랍니다..');
+		return;
+	}
+
+	mcxDialog.confirm("환불계좌를 저장하시겠습니까?", {
+		cancelBtnText	: "취소",
+		sureBtnText		: "확인",
+		sureBtnClick	: function(){
+			var data = {};
+			data.ordNo 			= ordNo;
+			data.custNo 		= custNo;
+			data.bankCd 		= bankCd;
+			data.accountNo 		= accountNo;
+			data.accountNm 		= accountNm;
+
+			var jsonData = JSON.stringify(data);
+
+			gagajf.ajaxJsonSubmit('/orderChange/account/save', jsonData, function(result){
+				uifnPopupClose('popupCreateRefundAccount');
+				
+				if (custNo > 0) {
 					fnBindOrderRfAccountInfo();
-				});
-			}
-		});
-	};
-
-	$(document).ready(function() {
+				} else {
+					$("#refundAccount .accountNo").eq(0).text(accountNo);
+					$("#refundAccount .accountNm").eq(0).text(accountNm);
+					$("#refundAccount .bankCd").eq(0).text(bankCd);
+					$("#refundAccount .bankNm").eq(0).text(bankNm);
+					$("#refundAccount .defaultYn").eq(0).text("N");
+				}
+				
+			});
+		}
+	});
+};
 
+$(document).ready(function() {
 
-	});
+});
 
-	/*]]>*/
+/*]]>*/
 </script>
 
 </html>

+ 65 - 38
src/main/webapp/WEB-INF/views/order/RtnReqForm.html

@@ -188,11 +188,40 @@
 				</div>
 				<!--  //회수지정보 -->
 				
-				<div id="wrapRefundAccount" style="width:50%;">
+				<div id="refundAccount" style="width:100%">
 					<h4>환불계좌정보</h4>
 					<button type="button" id="btnSaveAccount" class="btn btnRight btn-base btn-sm" style="margin-left:10px;" onclick="fnCreateOrderRfAccount();">등록</button>
-					<div id="gridRefundAccountInfo" style="height: 150px;" class="ag-theme-balham"></div>
+					
+					<!-- TABLE -->
+					<table class="tableStyle">
+						<colgroup>
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+							<col width="">
+						</colgroup>
+						<thead>
+							<tr>
+								<th>은행명</th>
+								<th>은행코드</th>
+								<th>계좌번호</th>
+								<th>예금주</th>
+								<th>기본여부</th>
+							</tr>
+						</thead>
+						<tbody>
+							<tr style="height:30px;">
+								<td class="bankNm"></td>
+								<td class="bankCd"></td>
+								<td class="accountNo"></td>
+								<td class="accountNm"></td>
+								<td class="defaultYn"></td>
+							</tr>
+						</tbody>
+					</table>
 				</div>
+				<br>
 				
 			</form>
 		</div>
@@ -233,7 +262,7 @@ 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: "상품명"			, field: "goodsNm"			, width: 200	, cellClass: 'text-left'	, hide: temp2},
 	{headerName: "상품타입"		, field: "goodsTypeNm"		, width: 100	, cellClass: 'text-center'	, hide: temp2},
@@ -813,18 +842,6 @@ var columnDelvCdList = [
 	}
 ];
 var gridOptionsDelvCdList = gagaAgGrid.getGridOptions(columnDelvCdList);
-
-// 4. 무통장 계좌정보
-var columnDefsRefundAccountInfo = [
-	{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: false, checkboxSelection: true, filter: false},
-	{headerName: "은행명"		, field: "bankNm"		, width: 140	, cellClass: 'text-center'},
-	{headerName: "은행코드"	, field: "bankCd"		, width: 120	, cellClass: 'text-center', hidden:true},
-	{headerName: "계좌번호"	, field: "accountNo"	, width: 150	, cellClass: 'text-center'},
-	{headerName: "예금주"		, field: "accountNm"	, width: 120	, cellClass: 'text-center'},
-	{headerName: "기본"		, field: "defaultYn"	, width: 100	, cellClass: 'text-center'}
-];
-
-var gridOptionsRefundAccountInfo = gagaAgGrid.getGridOptions(columnDefsRefundAccountInfo);
 </script>
 
 <script>
@@ -1035,17 +1052,16 @@ var fnCnclReq = function (reqGbn) {
 			return false;
 		}
 		
-		// 3. 환불계좌체크
-		// 결제타입이 무통장 입금일때 사용
+		// 3. 환불계좌체크 (결제타입이 무통장 입금일때 사용)
 		if (payMeans == 'G014_20') {
-			var refundAccount = gridOptionsRefundAccountInfo.api.getSelectedRows();
-			if (refundAccount.length == 0) {
-				mcxDialog.alert('선택된 행이 없습니다.');
+			if ($("#refundAccount .bankNm").eq(0).text() == null || $("#refundAccount .bankNm").eq(0).text() == '') {
+				mcxDialog.alert('환불계좌가 미등록 되어 있습니다.');
 				return false;
-			}
-			accountNo 	= refundAccount[0].accountNo;
-			accountNm 	= refundAccount[0].accountNm;
-			bankCd 		= refundAccount[0].bankCd;
+			} 
+			
+			accountNo 	= $("#refundAccount .accountNo").eq(0).text();
+			accountNm 	= $("#refundAccount .accoutNm").eq(0).text();
+			bankCd 		= $("#refundAccount .bankCd").eq(0).text();
 		}
 		
 		// 4. 회수지정보설정 (회수요청일때실행)
@@ -1170,15 +1186,27 @@ var fnCreateOrderRfAccount = function () {
 	cfnOpenModalPopup(actionUrl, 'popupCreateRefundAccount');
 };
 
-// 환불계좌 정보
+//환불계좌 정보
 var fnBindOrderRfAccountInfo = function () {
-	gagaAgGrid.fetch(
-		"/orderChange/refund/account/info/list?ordNo=" + ordNo
-		, gridOptionsRefundAccountInfo
-		, null
+	var jsonObj = {
+		"ordNo" : ordNo
+	}
+	
+	var jsonData = JSON.stringify(jsonObj);
+	
+	gagajf.ajaxJsonSubmit(
+		'/orderChange/refund/account/info/list'
+		, jsonData
 		, function (result) {
+			if (result.orderRfAccountInfo[0].bankNm != null && result.orderRfAccountInfo[0].bankNm != '') {
+				$("#refundAccount .bankNm").text(result.orderRfAccountInfo[0].bankNm);
+				$("#refundAccount .bankCd").text(result.orderRfAccountInfo[0].bankCd);
+				$("#refundAccount .accountNo").text(result.orderRfAccountInfo[0].accountNo);
+				$("#refundAccount .accountNm").text(result.orderRfAccountInfo[0].accountNm);
+				$("#refundAccount .defaultYn").text(result.orderRfAccountInfo[0].defaultYn);
+			}
 		}
-	)
+	);
 };
 
 // 우편번호 DAUM을 이용한 우편번호 팝업 레이어
@@ -1249,7 +1277,7 @@ var fnSetChger = function(){
 	}
 }
 
-// 회수방법설이벤트
+// 회수방법설이벤트
 var fnChangeWdGb = function(param) {
 	let wdGb = $(param).val();
 	
@@ -1269,7 +1297,6 @@ $(document).ready(function() {
 	gagaAgGrid.createGrid('gridOrderCancelRequestList'		, gridOptionsCancelReqList);			// 주문정보
 	gagaAgGrid.createGrid('gridOrderCancelRequestToBeList'	, gridOptionsCancelReqToBeList);		// 취소정보
 	gagaAgGrid.createGrid('gridDelvCdList'					, gridOptionsDelvCdList);				// 배송비정보
-	gagaAgGrid.createGrid('gridRefundAccountInfo'			, gridOptionsRefundAccountInfo);		// 환불계좌정보
 	
 	gridOptionsCancelReqList.api.setRowData(cancelRequestTargetList);
 	
@@ -1277,7 +1304,6 @@ $(document).ready(function() {
 	gagaAgGrid.hideStatusBar('gridOrderCancelRequestList');
 	gagaAgGrid.hideStatusBar('gridOrderCancelRequestToBeList');
 	gagaAgGrid.hideStatusBar('gridDelvCdList');
-	gagaAgGrid.hideStatusBar('gridRefundAccountInfo');
 	
 	// 2. 회수구분처리
 	if (wdGb == 'D') {
@@ -1288,7 +1314,8 @@ $(document).ready(function() {
 	
 	// 3. 무통장입금아닐때 환불계좌 목록 숨김처리
 	if (payMeans !== 'G014_20') {
-		$('#wrapRefundAccount').addClass("off");
+		$('#refundAccount').addClass("off");
+	} else {
 		fnBindOrderRfAccountInfo();
 	}
 	
@@ -1326,10 +1353,10 @@ $(document).ready(function() {
 	
 	// debug mode 해제
 	if (temp3) {
-		$("#h4OrderCancelRequestToBeList").css("display", "none");
-		$("#gridOrderCancelRequestToBeList").css("display", "none");
-		$("#h4DelvCdList").css("display", "none");
-		$("#gridDelvCdList").css("display", "none");
+		$("#h4OrderCancelRequestToBeList").css("display"	, "none");
+		$("#gridOrderCancelRequestToBeList").css("display"	, "none");
+		$("#h4DelvCdList").css("display"					, "none");
+		$("#gridDelvCdList").css("display"					, "none");
 	}
 	
 	// 7. 환불예상금액계산

+ 69 - 79
src/main/webapp/WEB-INF/views/withdraw/RefundDetailForm.html

@@ -28,13 +28,10 @@
 				<input type="hidden" name="orgEncloseFee" readonly/>
 				<table class="frmStyle">
 					<colgroup>
-						<col style="width:10%;" />
-						<col style="width:15%;" />
-						<col style="width:10%;" />
-						<col style="width:15%;" />
-						<col style="width:10%;" />
-						<col style="width:15%;" />
-						<col style="width:10%;" />
+						<col style="width:20%;" />
+						<col style="width:30%;" />
+						<col style="width:20%;" />
+						<col style="width:30%;" />
 						<col />
 					</colgroup>
 					<tr>
@@ -87,7 +84,23 @@
 						</td>
 					</tr>
 				</table>
-				
+					<div id="divRefundInfo2">
+					<h4>환불금액</h4>
+					<table class="frmStyle">
+						<colgroup>
+							<col style="width:20%;"/>
+							<col style="width:30%;"/>
+							<col style="width:20%;"/>
+							<col style="width:30%;"/>
+						</colgroup>
+						<tbody>
+							<tr>
+								<th>환불 금액</th>
+								<td colspan="3"><span id="refundAmt"></span>원 </td>
+							</tr>
+						</tbody>
+					</table>
+					</div>
 					<div id="divRefundInfo">
 					<h4>환불예정금액</h4>
 					<table class="frmStyle">
@@ -163,11 +176,8 @@
 
 	var ordChgSq = [[${ordChgSq}]];	// 주문변경번호
 	var ordNo    = [[${ordNo}]];	// 주문번호 
-	var remainGoodsInfo = [[${remainGoodsInfo}]]; // 주문 남은 상품 정보
-	var remainGoodsList = [[${remainGoodsList}]]; // 주문 남은 상품 목록
-	var couponInfo = [[${couponInfo}]]; // 쿠폰 정보
-	var orderDetailSumAmt = [[${orderDetailSumAmt}]];
-	var sumQty = [[${sumQty}]];
+	var userNo   = [[${userNo}]]; 
+
 	var ordChgCnt = 0;	//회수신청건수
 	var chgGb = "반품";
 	
@@ -179,6 +189,7 @@
 	var mallGb      = "";
 	var reFundInfo  = [[${refundConfirmPreInfo}]]; // 환불컨펌 정보 
 	
+	
 	var columnDefsDetail = [
 		{headerName: "주문변경번호", 	field: "ordChgSq",	width: 100, minWidth: 100, cellClass: 'text-center'},
 		{headerName: "주문번호", 		field: "ordNo", 	width: 100, minWidth: 100, cellClass: 'text-center',
@@ -221,38 +232,18 @@
 	withdrawDetailGridOptions.rowSelection = 'multiple';
 	
 	var isCustomer = true;
-	
-	
-	// ??  
-	withdrawDetailGridOptions.getRowStyle = function(params) {
-		if (params.data.wdStatYn == 'N') {
-			if (params.data.wdQty < 1) {
-				return { 'background-color': '#FF0000'};
-			}
-		} 
-	}
-	
-	
-	/*************************************************************************
-	*  init
-	**************************************************************************/
-	$(document).ready(function() {
-		// Create a agGrid
-		gagaAgGrid.createGrid('refundGridList', withdrawDetailGridOptions);
-		
-		setTimeout(fnRefundDetailSearch, 200);
-		
-	}); 
-	
-	
+
 	/*************************************************************************
 	*  회수 상세내역 조회
 	**************************************************************************/
 	var initFlag = '';
 	var fnRefundDetailSearch = function() {
 		//initFlag = Init;
-		var data = { 'ordChgSq' : ordChgSq };
-		var jsonData = JSON.stringify(data);
+		var params = {};
+		params.ordChgSq = ordChgSq;
+		params.userNo = userNo;
+		
+		var jsonData = JSON.stringify(params);
 		
 		gagajf.ajaxJsonSubmit('/withdraw/detail/list', jsonData, fnWithdrawDetailCallback);
 	}
@@ -261,53 +252,40 @@
 	*  상세 정보 콜백 함수
 	**************************************************************************/	
 	var fnWithdrawDetailCallback = function(result) {
-		if (result.length < 1) {
+		reFundInfo = result.refundConfirmPreInfo;
+		
+		if (result.dataList.length < 1) {
 			mcxDialog.alert('회수데이터 오류입니다. 운영팀에 문의 해주세요! ');
 			return;
 		}
 		
 		var confirmCnt = 0;
-		$(result).each(function(idx) {
-			if (result[idx].wdStatYn == 'Y') {
+		$(result.dataList).each(function(idx) {
+			if (result.dataList[idx].wdStatYn == 'Y') {
 				confirmCnt++;
 			}
-			ordInQty  = ordInQty + result[idx].wdQty;
-			ordChgQty = ordChgQty + result[idx].chgQty;
+			ordInQty  = ordInQty + result.dataList[idx].wdQty;
+			ordChgQty = ordChgQty + result.dataList[idx].chgQty;
 			
 		});
 		
 		// 전체 회수 완료 일 때. 제휴몰일때 
-		if (result.length == confirmCnt || result[0].mallGb == 'G011_20') {
-			//fnSearch();
+		if (result.dataList.length == confirmCnt || result.dataList[0].mallGb == 'G011_20') {
 			setReadOnly(true);
 			$('#pgBtn').hide();
-			//$('#divRefundInfo').hide();
+			$('#divRefundInfo').hide();
+			$('#divRefundInfo2').show();
 		}
 		
 		// 회수리스트 설정
-		withdrawDetailGridOptions.api.setRowData(result); 
-		
-		//if (!initFlag) return;
-		
-		fnSetWithdrawInfo(result[0]);	// 회수정보 설정
+		withdrawDetailGridOptions.api.setRowData(result.dataList); 
 		
-		//fnSetCnclInfo(result);			// 취소 관련 설정
+		fnSetWithdrawInfo(result.dataList[0]);	// 회수정보 설정
 	}
 	
 	/*************************************************************************
 	*  회수정보 설정
-	**************************************************************************/		
-	var _orgDelvFee = 0;	// 최초 배송비
-	var _delvFee = 0;		// 배송비
-	var _totRealOrdAmt = 0;	// 상품 실결제금액
-	var _payAmt = 0;		// 총결제금액
-	var _encloseFee = 0;	// 동봉비
-	
-	var _totCnclGoodsAmt = 0;		// 총 취소 상품 금액
-	var _totCnclPointAmt = 0;		// 총 취소 사용 포입트
-	var _totCnclCouponAmt = 0;		// 총 취소 사용 쿠폰
-	var _totCnclGoodsRefundAmt = 0;	// 총 취소 상품 환불금액
-	
+	**************************************************************************/			
 	var fnSetWithdrawInfo = function(data) {
 		
 		toTalOrdQty = data.totalOrdQty;
@@ -348,6 +326,8 @@
 			isCustomer = false;
 		}
 		
+		// 환불금액 
+		$("#refundAmt").text(data.refundAmt.addComma());
 
 		// 환불예정금액 
 		$("#spanPayAmt").text(reFundInfo.spanPayAmt.addComma());					//총 결제 금액
@@ -427,11 +407,11 @@
 					addDeliveryFee = reFundInfo.spanSumDeliveryFee - reFundInfo.spanDelvCpnDcAmt;
 					addDeliveryFeeYn = "Y";
 				}
-				alert("총수량 출고예외 ");
+				//alert("총수량 출고예외 ");
 				// 환불금액  = 취소 상품 실결제 금액 + 배송비 
 				reFundInfo.spanRefundAmt = (reFundInfo.spanRealCnclRtnAmt + reFundInfo.spanSumDeliveryFee - reFundInfo.spanDelvCpnDcAmt);
 			} else { // 총 주문수량  <>  반품수량   
-				alert("출고예외");
+				//alert("출고예외");
 				reFundInfo.spanRefundAmt = reFundInfo.spanRealCnclRtnAmt;
 			}
 			
@@ -439,14 +419,14 @@
 			if(toTalOrdQty == ordChgQty){// 총 주문수량  =  반품수량   
 				if(isCustomer){ //고객귀책 
 					if(wdGb == "W"){ // 회수요청
-						alert("총수량 고객귀책 - 회수요청");
+						//alert("총수량 고객귀책 - 회수요청");
 						// 환불금액  = 취소 상품 실결제 금액 + 배송비 - 추가배송비 - 반품배송비 
 						if(Number(enCloseFee) > 0){
 							enCloseFeeYn = "Y";
 						}
 						reFundInfo.spanRefundAmt = (reFundInfo.spanRealCnclRtnAmt + Number(enCloseFee) + Number(addPaycost)) - (reFundInfo.spanTotDeliveryFee - reFundInfo.spanDelvCpnDcAmt)  - reFundInfo.spanTotRtnDelvFee;
 					} else {         // 직접배송
-						alert("총수량 고객귀책 - 직접배송");
+						//alert("총수량 고객귀책 - 직접배송");
 					
 						if(Number(codFee) > 0){
 							codFeeAmt = Number(codFee);
@@ -458,7 +438,7 @@
 						reFundInfo.spanRefundAmt = (reFundInfo.spanRealCnclRtnAmt + Number(enCloseFee) + Number(addPaycost)) - (reFundInfo.spanTotDeliveryFee - reFundInfo.spanDelvCpnDcAmt) - Number(codFee);
 					}
 				} else { // 회사귀책
-					alert("총수량 회사귀책 ");
+					//alert("총수량 회사귀책 ");
 					if(reFundInfo.spanSumDeliveryFee > 0){
 						addDeliveryFee = reFundInfo.spanSumDeliveryFee - reFundInfo.spanDelvCpnDcAmt;
 						addDeliveryFeeYn = "Y";
@@ -468,14 +448,14 @@
 			} else { // 총 주문수량  <>  반품수량   
 				if(isCustomer){ //고객귀책 
 					if(wdGb == "W"){ // 회수요청
-						alert(" 고객귀책- 회수요청 ");
+						//alert(" 고객귀책- 회수요청 ");
 						if(Number(enCloseFee) > 0){
 							enCloseFeeYn = "Y";
 						}
 						// 환불금액  = 취소 상품 실결제 금액   - 반품배송비 
 						reFundInfo.spanRefundAmt = (reFundInfo.spanRealCnclRtnAmt + Number(enCloseFee) + Number(addPaycost))  - reFundInfo.spanTotRtnDelvFee;
 					} else {         // 직접배송
-						alert(" 고객귀책- 직접배송 ");
+						//alert(" 고객귀책- 직접배송 ");
 						if(Number(codFee) > 0){
 							codFeeAmt = Number(codFee);
 							codFeeYn  = "Y";
@@ -486,7 +466,7 @@
 						reFundInfo.spanRefundAmt = (reFundInfo.spanRealCnclRtnAmt + Number(enCloseFee) - Number(codFee));
 					}
 				} else { // 회사귀책
-					alert(" 회사귀책 ");
+					//alert(" 회사귀책 ");
 					reFundInfo.spanRefundAmt = reFundInfo.spanRealCnclRtnAmt ;
 				}
 			}
@@ -560,13 +540,15 @@
 			return;
 		}
 
-		mcxDialog.confirm('회수컨펌 하시겠습니까?', {
+		mcxDialog.confirm('환불컨펌 하시겠습니까?', {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function(){
 				gagajf.ajaxJsonSubmit('/withdraw/detail/confirm', jsonData, function(result) {
 					//confirmFlag = true;
-					//fnDetailSearch(false);
+					fnSearch();
+					$('#divRefundInfo').hide();
+					$('#divRefundInfo2').show();
 					fnRefundDetailSearch();
 				});
 			}
@@ -583,18 +565,26 @@
 			$('#withdrawDetailForm input[name=encloseFee]').attr('readonly', 'readonly');
 			$('#withdrawDetailForm input[name=encloseFee]').addClass('formControl');
 			
-			//$('#withdrawDetailForm select[name=chgReason]').attr('disabled', 'disabled');
-			//$('#withdrawDetailForm select[name=chgReason]').addClass('formControl');	
 		} else {
 			$('#withdrawDetailForm input[name=encloseFee]').remove('readonly');
 			$('#withdrawDetailForm input[name=encloseFee]').removeClass('formControl');
 			
-			//$('#withdrawDetailForm select[name=chgReason]').remove('disabled');
-			//$('#withdrawDetailForm select[name=chgReason]').removeClass('formControl');
 		}
 		
 	}
+	/*************************************************************************
+	*  init
+	**************************************************************************/
+	$(document).ready(function() {
+		// Create a agGrid
 
+		gagaAgGrid.createGrid('refundGridList', withdrawDetailGridOptions);
+		$('#divRefundInfo2').hide();
+		fnRefundDetailSearch();
+		
+	}); 
+	
+	 
 /*]]>*/
 </script>
 </html>

+ 2 - 1
src/main/webapp/WEB-INF/views/withdraw/RefundRegisterListForm.html

@@ -186,7 +186,8 @@
 		gagaAgGrid.createGrid('gridList', withDrawGridOptions);
 		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '조회');
 
-		gagajf.setDate('#terms', 'stDate', 'edDate', '3m');
+		gagajf.setDate('#terms', 'stDate', 'edDate', '7d');
+		
 
 	});
 

+ 29 - 11
src/main/webapp/WEB-INF/views/withdraw/WithdrawDirectiveListForm.html

@@ -49,21 +49,21 @@
 						<tr>
 							<th>주문자명</th>
 							<td>
-								<input type="text" class="" name="ordNm" placeholder="" maxlength="20"/>
+								<input type="text" class="w40p" name="ordNm" placeholder="" maxlength="20"/>
 							</td>
 							<th>주문번호</th>
 							<td>
-								<input type="text" class="" name="ordNo" data-valid-type="integer" placeholder="" maxlength="20"/>
+								<input type="text" class="w40p" name="ordNo" data-valid-type="integer" placeholder="" maxlength="20"/>
 							</td>
 							<th>주문변경번호</th>
 							<td>
-								<input type="text" class="" name="ordChgSq" data-valid-type="integer" placeholder="" maxlength="20"/>
+								<input type="text" class="w40p" name="ordChgSq" data-valid-type="integer" placeholder="" maxlength="20"/>
 							</td>
 						</tr>
 						<tr>	
 							<th>회수구분</th>
 							<td>
-								<select name="chgGb">
+								<select name="chgGb"class="w100">
 									<option value="">&nbsp;전체&nbsp;</option>
 									<option value="G680_30"> 반품 </option>
 									<option value="G680_40"> 교환 </option>
@@ -71,14 +71,14 @@
 							</td>
 							<th>진행상태</th>
 							<td>
-								<select name="chgStat">
+								<select name="chgStat" class="w100">
 									<option value="">전체</option>
 									<option th:if="${chgStatList}" th:each="oneData, status : ${chgStatList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>									
 								</select>
 							</td>
 							<th>반품방식</th>
 							<td>
-								<select name="wdGb">
+								<select name="wdGb" class="w100">
 									<option value="">&nbsp;전체&nbsp;</option>
 									<option value="W">방문회수</option>
 									<option value="D">직접배송</option>
@@ -89,7 +89,7 @@
 						<tr>
 							<th>택배사전송여부</th>
 							<td>
-								<select name="sendYn">
+								<select name="sendYn" class="w100">
 									<option value="">전체</option>
 									<option value="Y">전송</option>
 									<option value="N">미전송</option>
@@ -98,7 +98,7 @@
 							</td>
 							<th>회수상태</th>
 							<td colspan="3">
-								<select name="wdShipState">
+								<select name="wdShipState" class="w100">
 									<option value="">전체</option>
 									<option th:if="${wdShipStateList}" th:each="oneData, status : ${wdShipStateList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
 								</select>
@@ -155,11 +155,13 @@
 <script th:inline="javascript">
 /*<![CDATA[*/
 	// 사이트목록
-
+	var currOrdNo =0;
 	var columnDefs = [
 		{headerName: "주문변경번호", 	field: "ordChgSq", 		width: 100, cellClass: "text-center"},
 		{headerName: "주문번호", 		field: "ordNo", 		width: 100, cellClass: "text-center",
-			cellRenderer: function(params) { return gagajf.isNull(params.value) ? '' : '<a href="javascript:void(0);">' + params.value + '</a>'; }
+			cellRenderer: function(params) { 
+				return gagajf.isNull(params.value) ? '' : "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailPopup('" + params.data.ordNo + "');\">" + params.data.ordNo + "</a>";
+			}
 		},
 		{headerName: "주문상세번호", 	field: "ordDtlNo", 		width: 100, cellClass: "text-center"},		
 		{headerName: "회수구분", 		field: "chgGb", 		width: 80, cellClass: "text-center",
@@ -215,6 +217,22 @@
 		}
 	};
 
+	/*************************************************************************
+	*  주문상세 팝업  
+	**************************************************************************/		
+	var fnOrderDetailPopup = function(ordNo){
+		currOrdNo = ordNo;
+		cfnOpenOrderDetailPopup(currOrdNo);
+	}
+	
+	/*************************************************************************
+	*  팝업 콜백 
+	**************************************************************************/		
+	var fnReOpenOrderDetailPopup = function () {
+		cfnOpenOrderDetailPopup(currOrdNo);
+		fnSearchList();
+	};
+	
 	// 조회
 	$('#btnSearch').on('click', function() {
 		// Fetch data
@@ -331,7 +349,7 @@
 		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '','',  hideList);
 		// grid 높이 조절
 		//uifnFitGrid('auto');
-		gagajf.setDate('#terms', 'stDate', 'edDate', 't');
+		gagajf.setDate('#terms', 'stDate', 'edDate', '7d');
 
 		//fnDatepickerDisabled();
 	});

+ 15 - 6
src/main/webapp/WEB-INF/views/withdraw/WithdrawExceptionListForm.html

@@ -147,7 +147,7 @@
 
 	var columnDefs = [
 		{headerName: "반품예외처리번호",		field: "recallExceptionNo", width: 50,	cellClass: 'text-center', hide: true},
-		{headerName: "No.",				field: "rnum",				width: 50,	cellClass: 'text-center'},
+		//{headerName: "No.",				field: "rnum",				width: 50,	cellClass: 'text-center'},
 		{headerName: "처리상태",			field: "recallStat",		width: 100,	cellClass: 'text-center',rowSpan: params => params.data.rowspanRank === 1 ? params.data.rowspanCnt : 1,
 		    cellClassRules: {
 		        'cell-span': "data.rowspanRank == 1"
@@ -182,7 +182,7 @@
 		{headerName: "주문자명",			field: "customerName",		width: 100,	cellClass: 'text-center'},
 		{headerName: "예외사유",			field: "reasonCd",			width: 150,	cellClass: 'text-center'},
 		{headerName: "WMS메시지",			field: "adminMemo",			width: 300,	cellClass: 'text-left'},
-		{headerName: "회수요청구분",		field: "chgGbNm",			width: 80,	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,
 			    cellClassRules: {
@@ -208,11 +208,20 @@
 				}
 			}
 		},
-		{headerName: "추가비용",			field: "csAddFee",		width: 100,	cellClass: 'text-right',editable: true,
+		{headerName: "착불비",			field: "codFee",		width: 100,	cellClass: 'text-right'
+			,valueFormatter: function(params) {
+				if (params.value > 0) {
+					return params.value.addComma();
+				}else{
+					return '0';
+				}
+			}
+		},		
+		{headerName: "*추가비용",			field: "csAddFee",		width: 100,	cellClass: 'text-right',editable: true,
 			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 20, validType: "numeric" }
 		},		
-		{headerName: "CS메모",			field: "csMemo",		width: 200,	cellClass: 'text-left',editable: true,
+		{headerName: "*CS메모",			field: "csMemo",		width: 200,	cellClass: 'text-left',editable: true,
 			cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 1000, required: true }
 		},			
@@ -311,7 +320,7 @@
 		if(refreshFlag == "ordDtl"){
 			cfnOpenOrderDetailPopup(currOrdNo);
 		} else if(refreshFlag == "ban"){
-			alert("11");
+
 		} else if(refreshFlag == "change"){
 			
 		}
@@ -323,7 +332,7 @@
 	*  달력 초기화 
 	**************************************************************************/		
 	var fnInitCalendar = function() {
-		cfnChangeCalendar('7d', $('#stDate'), $('#edDate')); //달력 초기화
+		gagajf.setDate('#terms', 'stDate', 'edDate', '7d');
 	}
 	
 	/*************************************************************************

+ 31 - 24
src/main/webapp/WEB-INF/views/withdraw/WmsWithdrawListForm.html

@@ -59,7 +59,7 @@
 							</td>
 							<th class="dashR">입고상태</th>
 							<td class="dashR">
-								<select name="statuscd" id="statuscd">
+								<select name="statuscd" id="statuscd" class="w100">
 									<option value="" selected>전체</option>
 									<option value="입고대기">입고대기</option>
 									<option value="입고완료">입고완료</option>
@@ -67,9 +67,9 @@
 							</td>
 						</tr>
 						<tr>
-							<th class="dashR">반품타입</th>
+							<th class="dashR">반품구분</th>
 							<td class="dashR">
-								<select name="recalltypecd" id="recalltypecd">
+								<select name="recalltypecd" id="recalltypecd" class="w100">
 									<option value="" selected>전체</option>
 									<option value="10">일반</option>
 									<option value="20">교환</option>
@@ -77,7 +77,7 @@
 							</td>
 							<th class="dashR">삭제여부</th>
 							<td colspan="4" class="dashR">
-								<select name="isdeleted" id="isdeleted">
+								<select name="isdeleted" id="isdeleted" class="w100">
 									<option value="">전체</option>
 									<option value="1">Y</option>
 									<option value="0" selected>N</option>
@@ -138,17 +138,18 @@
 	/*************************************************************************
 	* AG-GRID 영역 
 	**************************************************************************/
+	var currOrdNo =0;
 	var uploadGoodsUrl = [[${@environment.getProperty('upload.goods.view')}]]; 
 	var roleCd = [[${sessionInfo.roleCd}]]; 
 
 	var columnDefs = [
-		{headerName: "No.",				field: "rnum",				width: 50,	cellClass: 'text-center'},
+		//{headerName: "No.",				field: "rnum",				width: 50,	cellClass: 'text-center'},
 		{headerName: "반품번호",			field: "recallno", 			width: 50,	cellClass: 'text-center', hide: true},
 		{headerName: "주문변경번호",		field: "orderexceptionno",	width: 100,	cellClass: 'text-center'},
 		{headerName: "주문번호",			field: "orderno",			width: 100,	cellClass: 'text-center',
 			cellRenderer: function (params) {
 				if (roleCd.indexOf("C") < 0) {
-					return "<a href=\"javascript:void(0);\" onclick=\"cfnOpenOrderDetailPopup('" + params.data.orderno + "');\">" + params.data.orderno + "</a>";
+					return "<a href=\"javascript:void(0);\" onclick=\"fnOrderDetailPopup('" + params.data.orderno + "');\">" + params.data.orderno + "</a>";
 				} else {
 					return params.value;
 				}
@@ -156,7 +157,7 @@
 		},
 		{headerName: "주문상세번호",		field: "orderdtlno",		width: 100,	cellClass: 'text-center'},
 		{headerName: "상태",				field: "statuscd",			width: 100,	cellClass: 'text-center'},
-		{headerName: "반품타입",			field: "recalltypecd",		width: 80,	cellClass: 'text-center',
+		{headerName: "반품구분",			field: "recalltypecd",		width: 80,	cellClass: 'text-center',
 			cellRenderer: function (params) { return params.value == '10' ? '일반' : '교환'; }	
 		},
 		{headerName: "수취인",			field: "receiver",			width: 100,	cellClass: 'text-center'},
@@ -203,6 +204,25 @@
 	//gridOptions.rowSelection = 'multiple';
 	
 	//gridOptions.rowHeight = 35;
+	
+	/*************************************************************************
+	*  주문상세 팝업  
+	**************************************************************************/		
+	var fnOrderDetailPopup = function(ordNo){
+		currOrdNo = ordNo;
+		cfnOpenOrderDetailPopup(currOrdNo);
+	}
+	
+	/*************************************************************************
+	*  팝업 콜백 
+	**************************************************************************/		
+	var fnReOpenOrderDetailPopup = function () {
+		cfnOpenOrderDetailPopup(currOrdNo);
+		fnSearchList();
+	};
+	
+	
+	
 	/*************************************************************************
 	*  조회 버튼 클릭 시
 	**************************************************************************/
@@ -252,24 +272,10 @@
 	*  달력 초기화 
 	**************************************************************************/		
 	var fnInitCalendar = function() {
-		cfnChangeCalendar('7d', $('#stDate'), $('#edDate')); //달력 초기화
+		gagajf.setDate('#terms', 'stDate', 'edDate', '7d');
+		
 	}
 
-	
-	function fnRowSpan(params) {
-		alert("alert");  
-		var orderNo = params.data.orderNo;
-		  alert("orderNo: "+orderNo);
-		  if (orderNo == 18691602) {
-		    // have all Russia age columns width 2
-		    return 2;
-		  } else {
-		    // all other rows should be just normal
-		    return 1;
-		  }
-		}
-	// rowSpan: params => params.data.orderNo === '18692992' ? 2 : 1	
-	
 	/*************************************************************************
 	*  회수예외 처리완료 버튼 - 대기->완료  업데이트
 	**************************************************************************/	
@@ -330,7 +336,8 @@
 	**************************************************************************/		
 	$(document).ready(function() {
 		gagaAgGrid.createGrid('gridList', gridOptions);
-		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '');
+		var hideList = ["btnThisWeek", "btnYesterWeek", "btnThisMonth", "btnYesterMonth", "btnRecent3Month"];
+		cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '','',  hideList);
 		fnInitCalendar();
 	});