Bläddra i källkod

Merge branch 'develop' into jsshin

jsshin 5 år sedan
förälder
incheckning
c8ae6ebd53
46 ändrade filer med 3185 tillägg och 9339 borttagningar
  1. 0 365
      src/main/java/com/style24/admin/biz/dao/TsaCouponDao.java
  2. 24 0
      src/main/java/com/style24/admin/biz/dao/TsaFreegiftPromotionDao.java
  3. 45 0
      src/main/java/com/style24/admin/biz/dao/TsaMorebetterDao.java
  4. 106 0
      src/main/java/com/style24/admin/biz/dao/TsaPlanDao.java
  5. 8 0
      src/main/java/com/style24/admin/biz/dao/TsaRendererDao.java
  6. 0 514
      src/main/java/com/style24/admin/biz/service/TsaCouponService.java
  7. 22 1
      src/main/java/com/style24/admin/biz/service/TsaFreegiftPromotionService.java
  8. 22 5
      src/main/java/com/style24/admin/biz/service/TsaMorebetterService.java
  9. 403 0
      src/main/java/com/style24/admin/biz/service/TsaPlanService.java
  10. 10 0
      src/main/java/com/style24/admin/biz/service/TsaRendererService.java
  11. 1 0
      src/main/java/com/style24/admin/biz/web/TsaDisplayController.java
  12. 4 0
      src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  13. 187 34
      src/main/java/com/style24/admin/biz/web/TsaMarketingController.java
  14. 2 2
      src/main/java/com/style24/persistence/domain/Goods.java
  15. 2 0
      src/main/java/com/style24/persistence/domain/GoodsImg.java
  16. 1 0
      src/main/java/com/style24/persistence/domain/MoreBetter.java
  17. 2 5
      src/main/java/com/style24/persistence/domain/MoreBetterGoods.java
  18. 149 0
      src/main/java/com/style24/persistence/domain/Plan.java
  19. 0 964
      src/main/java/com/style24/persistence/mybatis/shop/TsaCoupon.xml
  20. 122 6
      src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml
  21. 52 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaFreegiftPromotion.xml
  22. 5 10
      src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  23. 89 31
      src/main/java/com/style24/persistence/mybatis/shop/TsaMorebetter.xml
  24. 403 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml
  25. 12 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaRenderer.xml
  26. 9 7
      src/main/webapp/WEB-INF/views/goods/GoodsImageForm.html
  27. 0 2
      src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionRegiForm.html
  28. 186 179
      src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html
  29. 385 0
      src/main/webapp/WEB-INF/views/marketing/PlanListForm.html
  30. 929 0
      src/main/webapp/WEB-INF/views/marketing/PlanWebDetailPopupForm.html
  31. 0 1092
      src/main/webapp/WEB-INF/views/order/CancelRequestFormBack01.html
  32. 0 1054
      src/main/webapp/WEB-INF/views/order/CancelRequestFormBack02.html
  33. 0 1114
      src/main/webapp/WEB-INF/views/order/CnclReqForm.html
  34. 0 145
      src/main/webapp/WEB-INF/views/order/CnclReqViewForm.html
  35. 0 110
      src/main/webapp/WEB-INF/views/order/OrderDetailChangeHst.html
  36. 0 133
      src/main/webapp/WEB-INF/views/order/OrderDetailCouponHst.html
  37. 0 1397
      src/main/webapp/WEB-INF/views/order/OrderDetailFormBack20210122.html
  38. 0 106
      src/main/webapp/WEB-INF/views/order/OrderDetailGiftcardHst.html
  39. 0 97
      src/main/webapp/WEB-INF/views/order/OrderDetailPointHst.html
  40. 0 78
      src/main/webapp/WEB-INF/views/order/OrderDetailTmtbHst.html
  41. 0 766
      src/main/webapp/WEB-INF/views/order/OrderListFormBack.html
  42. 0 183
      src/main/webapp/WEB-INF/views/order/OrderMemoRegistForm.html
  43. 0 437
      src/main/webapp/WEB-INF/views/order/OrderSamplePopupForm.html
  44. 0 370
      src/main/webapp/WEB-INF/views/order/OrderSellerListForm.html
  45. 0 127
      src/main/webapp/WEB-INF/views/order/RefundAccountRegistForm.html
  46. 5 5
      src/main/webapp/dx5/dextuploadx5-configuration.js

+ 0 - 365
src/main/java/com/style24/admin/biz/dao/TsaCouponDao.java

@@ -1,365 +0,0 @@
-package com.style24.admin.biz.dao;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import com.style24.persistence.domain.*;
-import org.springframework.stereotype.Component;
-
-import com.style24.core.support.annotation.ShopDs;
-import org.springframework.stereotype.Component;
-
-/**
- * 쿠폰 DAO
- * @author xyzp1539
- * @since  2021-01-11
- */
-@ShopDs
-@Component
-public interface TsaCouponDao {
-
-	/**
-	 * 쿠폰 리스트 조회
-	 * @param  param
-	 * @return ArrayList<Coupon>
-	 * @author xyzp1539
-	 * @since 2020-12-22
-	 */
-	ArrayList<Coupon> getCouponList(Coupon param);
-
-	/**
-	 * 쿠폰 리스트 카운트 조회
-	 * @param  param
-	 * @return int
-	 * @author xyzp1539
-	 * @since 2020-12-22
-	 */
-	int getCouponListCnt(Coupon param);
-
-	/**
-	 * 쿠폰 등록
-	 * @param params
-	 * @author xyzp1539
-	 * @since  2021-01-12
-	 */
-	void couponInsert(Coupon params);
-
-	/**
-	 * 쿠폰조회 목록
-	 * @param coupon - 쿠폰 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2021. 1. 8
-	 */
-	Collection<Coupon> getCouponRetrieveList(Coupon coupon);
-
-	/**
-	 * 쿠폰 적용대상 등록
-	 * @param supplyComp
-	 * @author xyzp1539
-	 * @since  2021-01-14
-	 */
-	void saveCouponRefVal(CouponRefval supplyComp);
-
-	/**
-	 * 쿠폰 입점업체 분담 등록
-	 * @param burden
-	 * @author xyzp1539
-	 * @since  2021-01-14
-	 */
-	void saveCouponBurden(CouponBurden burden);
-
-	/**
-	 * 자사브랜드 조회
-	 * @param
-	 * @author xyzp1539
-	 * @since  2021-01-14
-	 */
-    Collection<CommonCode> getSelfBrandList();
-
-	/**
-	 * 쿠폰 상세 조회
-	 * @param  cpnId
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-15
-	 */
-    Coupon getCouponDetail(int cpnId);
-
-	/**
-	 * 쿠폰 발급개수 조회
-	 * @param  cpnId
-	 * @return int
-	 * @author xyzp1539
-	 * @since 2021-01-15
-	 */
-	int getCouponIssueCnt(int cpnId);
-
-	/**
-	 * 쿠폰 적용 대상 - 제외상품
-	 * @param  cpnRefval
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	ArrayList<CouponRefval> getCouponRefvalExceptGoodsList(CouponRefval cpnRefval);
-
-	/**
-	 * 쿠폰 적용 대상 - 브랜드
-	 * @param cpnRefval
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	ArrayList<CouponRefval> getCouponRefvalBrandList(CouponRefval cpnRefval);
-
-	/**
-	 * 쿠폰 적용 대상 - 카테고리
-	 * @param cpnRefval
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	ArrayList<CouponRefval> getCouponRefvalCategoryList(CouponRefval cpnRefval);
-
-	/**
-	 * 쿠폰 적용 대상 - 적용/제외상품
-	 * @param  cpnRefval
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	ArrayList<CouponRefval> getCouponRefvalGoodsList(CouponRefval cpnRefval);
-
-	/**
-	 * 쿠폰 적용 대상 - 공급처
-	 * @param cpnRefval
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	ArrayList<CouponRefval> getCouponRefvalSupplyCompList(CouponRefval cpnRefval);
-
-	/**
-	 * 쿠폰 입점업쳅 분담율 조회
-	 * @param cpnId
-	 * @return  Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	ArrayList<Coupon> getCouponBurdenList(int cpnId);
-
-	/**
-	 * 쿠폰 적용대상 삭제
-	 * @param  couponRefval
-	 * @return
-	 * @author xyzp1539
-	 * @since 2021-01-19
-	 */
-    void updateCouponRefval(CouponRefval couponRefval);
-
-    /**
-     * 고객 쿠폰 발행
-     * @param  custPub
-     * @return
-     * @author xyzp1539
-     * @since 2021-01-21
-     */
-	void saveCouponCustPub(CustCoupon custPub);
-
-	/**
-	 * 특정 쿠폰 발급받은 고객 조회
-	 * @param  custCoupon
-	 * @return
-	 * @author xyzp1539
-	 * @since 2021-01-21
-	 */
-	ArrayList<CustCoupon> getCouponIssueCustList(CustCoupon custCoupon);
-
-	/**
-	 * 발급받은 쿠폰 유효기간 변경
-	 * @param
-	 * @return
-	 * @author xyzp1539
-	 * @since 2021-01-21
-	 */
-	void updateCustCouponAvailEddt(CustCoupon issueCust);
-
-	/**
-	 * 난수, 시리얼 쿠폰 등록
-	 * @param param
-	 * @author xodud1202
-	 * @since 2021. 01. 26
-	 */
-	void createRandomCouponInfo(Coupon param);
-
-	/**
-	 * 동일 쿠폰명이 같은 기간에 존재하는지 확인
-	 * @param param
-	 * @author xodud1202
-	 * @since 2021. 01. 26
-	 */
-	int getSerialOverlapCheck(Coupon param);
-
-	/**
-	 * 동일 쿠폰명이 존재하는지 확인
-	 * @param param
-	 * @author xodud1202
-	 * @since 2021. 01. 27
-	 */
-	int getRandomCouponNmCnt(String param);
-
-	/**
-	 * 동일 쿠폰명이 존재하는지 확인
-	 * @param cpnId
-	 * @author xodud1202
-	 * @since 2021. 01. 26
-	 */
-	ArrayList<CustCoupon> getRandomCouponInfo(int cpnId);
-
-	/**
-	 * 쿠폰사용가능고객등급
-	 * @param params
-	 * @author bin2107
-	 * @since 2021. 02. 02
-	 */
-	void createCouponCustGubun(Coupon params);
-
-	/**
-	 * 쿠폰사용가능고객등급
-	 * @param params
-	 * @author bin2107
-	 * @since 2021. 02. 02
-	 */
-	void createCouponCustGrade(Coupon params);
-
-	/**
-	 * 쿠폰사용가능결제수단
-	 * @param params
-	 * @author bin2107
-	 * @since 2021. 02. 02
-	 */
-	void createCouponPayType(Coupon params);
-
-	/**
-	 * 쿠폰사용가능고객구분 조회
-	 * @param cpnId
-	 * @author bin2107
-	 * @since 2021. 02. 02
-	 */
-	ArrayList<Coupon> getCouponCustGbList(int cpnId);
-
-	/**
-	 * 쿠폰사용가능고객등급 조회
-	 * @param cpnId
-	 * @author bin2107
-	 * @since 2021. 02. 02
-	 */
-	ArrayList<Coupon> getCouponCustGradeList(int cpnId);
-
-	/**
-	 * 쿠폰사용가능결제수단 조회
-	 * @param cpnId
-	 * @author bin2107
-	 * @since 2021. 02. 02
-	 */
-	ArrayList<Coupon> getCouponPayTypeList(int cpnId);
-
-	/**
-	 * 쿠폰발급받은 회원리스트 팝업
-	 * @param
-	 * @return
-	 * @author bin2107
-	 * @since 2021-02-03
-	 */
-	Collection<Coupon> getCpnPubCustList(int cpnId);
-
-	/**
-	 * 선착순 쿠폰 저장
-	 * @param couponLimitedTime
-	 * @author bin2107
-	 * @since 2021. 02. 04
-	 */
-	void createLimitedTimeCoupon(CouponLimitedTime couponLimitedTime);
-
-	/**
-	 * 선착순쿠폰 조회
-	 * @param cpnId
-	 * @author bin2107
-	 * @since 2021. 02. 05
-	 */
-	ArrayList<Coupon> getLimitedTimeCouponList(int cpnId);
-
-	/**
-	 * 선착순 쿠폰 삭제
-	 * @param couponLimitedTime
-	 * @author bin2107
-	 * @since 2021. 02. 05
-	 */
-	void updateLimitedTimeCouponList(CouponLimitedTime couponLimitedTime);
-
-	/**
-	 * 쿠폰 상태 변경
-	 * @param
-	 * @author bin2107
-	 * @since 2021. 2. 5
-	 */
-	void updateCouponStat(Coupon coupon);
-
-	/**
-	 * 쿠폰 마스터 수정
-	 * @param
-	 * @author bin2107
-	 * @since 2021. 2. 5
-	 */
-	void updateCouponMstInfo(Coupon coupon);
-
-	/**
-	 * 쿠폰 회원 구분 수정
-	 * @param
-	 * @author bin2107
-	 * @since 2021. 2. 5
-	 */
-	void deleteCouponCustGubun(Coupon coupon);
-
-	/**
-	 * 쿠폰 회원 등급 수정
-	 * @param
-	 * @author bin2107
-	 * @since 2021. 2. 5
-	 */
-	void deleteCouponCustGrade(Coupon coupon);
-
-	/**
-	 * 쿠폰 회원 결제 수정
-	 * @param
-	 * @author bin2107
-	 * @since 2021. 2. 5
-	 */
-	void deleteCouponPayType(Coupon coupon);
-
-	/**
-	 * 쿠폰 공급업체,브랜드,상품값 수정
-	 * @param
-	 * @author bin2107
-	 * @since 2021. 2. 5
-	 */
-	void deleteCouponRefVal(Coupon coupon);
-
-	/**
-	 * 쿠폰  입점업체 분담율 수정
-	 * @param
-	 * @author bin2107
-	 * @since 2021. 2. 5
-	 */
-	void deleteCouponBurden(Coupon coupon);
-
-	/**
-	 * 선착순 쿠폰 삭제
-	 * @param
-	 * @author bin2107
-	 * @since 2021. 2. 5
-	 */
-	void deleteLimitedTimeCoupon(Coupon coupon);
-
-}

+ 24 - 0
src/main/java/com/style24/admin/biz/dao/TsaFreegiftPromotionDao.java

@@ -185,4 +185,28 @@ public interface TsaFreegiftPromotionDao {
 	 * @since 2021. 01. 20
 	 */
 	void updateFreegoodsPromotionStat(FreeGoodsPromotion param);
+
+	/**
+	 * 적용 업체 및 브랜드 목록 제거
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 02. 04
+	 */
+	void deleteFreegiftGoodsApply(FreeGoodsPromotion param);
+
+	/**
+	 * 실사용 업체/브랜드 리스트 등록 (업체/브랜드 모두 등록된 경우)
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 02. 04
+	 */
+	void insertFreegiftGoodsApplyList(FreeGoodsPromotion param);
+
+	/**
+	 * 실사용 업체/브랜드 리스트 등록 (한곳만 있을 경우)
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 02. 04
+	 */
+	void insertFreegiftGoodsApplyCompanyOrBrandList(FreeGoodsPromotion param);
 }

+ 45 - 0
src/main/java/com/style24/admin/biz/dao/TsaMorebetterDao.java

@@ -269,5 +269,50 @@ public interface TsaMorebetterDao {
     List<MoreBetterGoods> getMorebetterRealApplyGoodsList(MoreBetter moreBetter);
 
     List<MoreBetterGoods> getMorebetterCompBrandGoodsList(MoreBetterGoods moreBetterGoods);
+
+    /**
+     * 다다익선 업체,브랜드,상품 (TB_TMTB_GOODS) 삭제
+     * @param moreBetter
+     * @return
+     * @author bin2107
+     * @since 2021. 2. 8
+     */
+    void deleteTmtbGoods(MoreBetter moreBetter);
+
+    /**
+     * 다다익선 분담율 (TB_TMTB_BURDEN) 삭제
+     * @param moreBetter
+     * @return
+     * @author bin2107
+     * @since 2021. 2. 8
+     */
+    void deleteTmtbBurden(MoreBetter moreBetter);
+
+    /**
+     * 다다익선 할인 구간 (TB_TMTB_SECTION) 삭제
+     * @param moreBetter
+     * @return
+     * @author bin2107
+     * @since 2021. 2. 8
+     */
+    void deleteTmtbSection(MoreBetter moreBetter);
+
+    /**
+     * 다다익선 할인값 (TB_TMTB_VAL) 삭제
+     * @param moreBetter
+     * @return
+     * @author bin2107
+     * @since 2021. 2. 8
+     */
+    void deleteTmtbVal(MoreBetter moreBetter);
+
+    /**
+     * 다다익선 임시 적용상품 (TB_TMTB_APPLY_GOODS_TEMP) 삭제
+     * @param moreBetter
+     * @return
+     * @author bin2107
+     * @since 2021. 2. 8
+     */
+    void deleteTmtbApplyGoods(MoreBetter moreBetter);
     /* // CSB 진행 */
 }

+ 106 - 0
src/main/java/com/style24/admin/biz/dao/TsaPlanDao.java

@@ -0,0 +1,106 @@
+package com.style24.admin.biz.dao;
+
+import java.util.Collection;
+
+import org.springframework.stereotype.Repository;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.Plan;
+
+/**
+ * 기획전 Dao
+ *
+ * @author sowon
+ * @since 2021. 2. 4
+ */
+
+@ShopDs
+@Repository
+public interface TsaPlanDao {
+	/**
+	 * 기획전 코너 전체 조회
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 4
+	 */
+	Collection<Plan> getPlanAllList(Plan param);
+	
+	/**
+	 * 기획전 웹 등록
+	 *
+	 * @param 기획전 등록 정보
+	 * @author rladbwnd5
+	 * @since 2019. 12. 31
+	 */
+	void createPlanWebInfo(Plan param);
+	
+	/**
+	 * 기획전 목록
+	 *
+	 * @param 검색조건
+	 * @return
+	 * @author sowon
+	 * @since 2019. 12. 27
+	 */
+	Collection<Plan> getPlanList(Plan param);
+	
+	/**
+	 * 기획전 리스트 카운트 조회
+	 * @param  param
+	 * @return int
+	 * @author sowon
+	 * @since 2021. 2. 5
+	 */
+	int getPlanListCnt(Plan param);
+	
+	/**
+	 * 기획전 삭제
+	 *
+	 * @param 기획전 번호
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	void deletePlan(Plan param);
+	
+	/**
+	 * 기획전 소스 삭제
+	 *
+	 * @param 기획전 일련번호
+	 * @author sowon
+	 * @since 2021. 2.8
+	 */
+	void deletePlanFsrcInfo(Plan param);
+	
+	/**
+	 * 기획전 소스 등록
+	 *
+	 * @param 기획전 소스
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	void savePlanFsrcInfo(Plan param);
+	
+	/**
+	 * 기획전 소스 조회
+	 *
+	 * @param 기획전 일련번호
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	Collection<Plan> getPlanFsrcList(Plan param);
+	
+	/**
+	 * 기획전 웹 수정
+	 *
+	 * @param 기획전 등록 정보
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	void updatePlanWebInfo(Plan param);
+
+
+}

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

@@ -241,4 +241,12 @@ public interface TsaRendererDao {
 	 */
 	Collection<CommonCode> getAflinkList(String afChannel);
 
+	/**
+	 * 자사브랜드 조회
+	 * @param
+	 * @author xyzp1539
+	 * @since  2021-01-14
+	 */
+	Collection<CommonCode> getSelfBrandList();
+
 }

+ 0 - 514
src/main/java/com/style24/admin/biz/service/TsaCouponService.java

@@ -1,514 +0,0 @@
-package com.style24.admin.biz.service;
-
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-import com.style24.admin.biz.dao.TsaCouponDao;
-import com.style24.admin.support.env.TsaConstants;
-import com.style24.admin.support.security.session.TsaSession;
-import com.style24.core.support.env.TscConstants;
-import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.domain.*;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Random;
-
-/**
- * 쿠폰 Service
- *
- * @author xyzp1539
- * @since 2021. 01. 11
- */
-@Service
-@Slf4j
-public class TsaCouponService {
-
-	@Autowired
-	private TsaCouponDao couponDao;
-
-	@Autowired
-	private TsaCommonService commonService;
-
-	@Autowired
-	private TscMessageByLocale message;
-
-	/**
-	 * 쿠폰 저장
-	 * @param params
-	 * @author xyzp1539
-	 * @since  2021-01-11
-	 */
-	@Transactional("shopTxnManager")
-	public String saveCoupon(Coupon params){
-		int cpnId = params.getCpnId();		// 쿠폰ID (신규생성인지 수정인지 구분하기 위해 params의 cpnId를 먼저 가져옴 > 쿠폰 생성시 cpnId를 저장하기때문임)
-		params.setRegNo(TsaSession.getInfo().getUserNo());
-		params.setUpdNo(TsaSession.getInfo().getUserNo());
-
-		if(cpnId != 0) {    //수정모드일때
-			couponDao.updateCouponMstInfo(params);	// 쿠폰 마스터 수정
-			couponDao.deleteCouponCustGubun(params);	// 쿠폰 회원 구분 수정
-			couponDao.deleteCouponCustGrade(params);	// 쿠폰 회원 등급 수정
-			couponDao.deleteCouponPayType(params);	// 쿠폰 결제 수단 수정
-			couponDao.deleteCouponRefVal(params);	// 공급업체,브랜드,카테고리,상품 삭제
-			couponDao.deleteCouponBurden(params);	// 입점업체 분담율 삭제
-			couponDao.deleteLimitedTimeCoupon(params);	// 선착순 쿠폰 삭제
-		}else{	//등록모드일때
-			params.setCpnStat("G232_10");
-			couponDao.couponInsert(params);
-		}
-
-		for(int i=0; i<params.getUsableCustGbArr().length; i++){
-			params.setUsableCustGb(params.getUsableCustGbArr()[i]);
-			couponDao.createCouponCustGubun(params);
-		}
-
-		for(int i=0; i<params.getUsableCustGradeArr().length; i++){
-			params.setUsableCustGrade(params.getUsableCustGradeArr()[i]);
-			couponDao.createCouponCustGrade(params);
-		}
-
-		for(int i=0; i<params.getPayTypeArr().length; i++){
-			params.setPayType(params.getPayTypeArr()[i]);
-			couponDao.createCouponPayType(params);
-		}
-
-		// 공급업체 등록
-		for(CouponRefval compRefval : params.getSupplyCompList()){
-			compRefval.setCpnId(params.getCpnId());
-			compRefval.setCpnTarget("G260_13");
-			compRefval.setRefVal(compRefval.getSupplyCompCd());
-			compRefval.setCpnType(params.getCpnType());
-			compRefval.setRegNo(params.getRegNo());
-			compRefval.setUpdNo(params.getUpdNo());
-			couponDao.saveCouponRefVal(compRefval);
-		}
-
-		// 브랜드 등록
-		for(CouponRefval brandRefval : params.getBrandList()){
-			brandRefval.setCpnId(params.getCpnId());
-			brandRefval.setCpnTarget("G260_12");
-			brandRefval.setRefVal(brandRefval.getBrandCd());
-			brandRefval.setCpnType(params.getCpnType());
-			brandRefval.setRegNo(params.getRegNo());
-			brandRefval.setUpdNo(params.getUpdNo());
-			couponDao.saveCouponRefVal(brandRefval);
-		}
-
-		// 적용상품
-		for(CouponRefval applyGoodsRefval : params.getApplyGoodsList()){
-			applyGoodsRefval.setCpnId(params.getCpnId());
-			applyGoodsRefval.setCpnTarget("G260_10");
-			applyGoodsRefval.setRefVal(applyGoodsRefval.getGoodsCd());
-			applyGoodsRefval.setCpnType(params.getCpnType());
-			applyGoodsRefval.setRegNo(params.getRegNo());
-			applyGoodsRefval.setUpdNo(params.getUpdNo());
-			couponDao.saveCouponRefVal(applyGoodsRefval);
-		}
-
-		// 카테고리
-		for(CouponRefval cateRefval : params.getCateList()){
-			cateRefval.setCpnId(params.getCpnId());
-			cateRefval.setCpnTarget("G260_11");
-			cateRefval.setRefVal(cateRefval.getCateNo());
-			cateRefval.setFormalGb(cateRefval.getFormalGb());
-			cateRefval.setBrandCd(cateRefval.getBrandCd());
-			cateRefval.setCpnType(params.getCpnType());
-			cateRefval.setRegNo(params.getRegNo());
-			cateRefval.setUpdNo(params.getUpdNo());
-			couponDao.saveCouponRefVal(cateRefval);
-		}
-
-		// 제외상품
-		for(CouponRefval exceptGoodsRefval : params.getExceptGoodsList()){
-			exceptGoodsRefval.setCpnId(params.getCpnId());
-			exceptGoodsRefval.setCpnTarget("G260_14");
-			exceptGoodsRefval.setRefVal(exceptGoodsRefval.getGoodsCd());
-			exceptGoodsRefval.setCpnType(params.getCpnType());
-			exceptGoodsRefval.setRegNo(params.getRegNo());
-			exceptGoodsRefval.setUpdNo(params.getUpdNo());
-			couponDao.saveCouponRefVal(exceptGoodsRefval);
-		}
-
-		// 입점업체분담율
-		for(CouponBurden couponBurden : params.getBurdenList()){
-			couponBurden.setCpnId(params.getCpnId());
-			couponBurden.setRegNo(params.getRegNo());
-			couponBurden.setUpdNo(params.getUpdNo());
-			couponDao.saveCouponBurden(couponBurden);
-		}
-
-		// 선착순쿠폰
-		for(CouponLimitedTime couponLimitedTime : params.getLimitedTimeCpnList()){
-			couponLimitedTime.setCpnId(params.getCpnId());
-			couponLimitedTime.setRegNo(params.getRegNo());
-			couponLimitedTime.setUpdNo(params.getUpdNo());
-			couponDao.createLimitedTimeCoupon(couponLimitedTime);
-		}
-
-		// 수정모드이고 변경된 쿠폰상태가 대기 , 중지 인경우 고객이 발급받은 내용도 변경
-		if(cpnId != 0 &&
-				(params.getCpnStat().equals("G232_10") || params.getCpnStat().equals("G232_12")) ) {
-
-			CustCoupon custCoupon = new CustCoupon();
-			custCoupon.setCpnId(params.getCpnId());
-			custCoupon.setUseYn("Y");
-			ArrayList<CustCoupon> custList = couponDao.getCouponIssueCustList(custCoupon);
-
-			if(custList != null && custList.size() > 0 ) {
-				for(CustCoupon issueCust : custList) {
-					issueCust.setAvailEddt(params.getAvailEddt());
-					issueCust.setUpdNo(TsaSession.getInfo().getUserNo());
-
-					couponDao.updateCustCouponAvailEddt(issueCust);
-				}
-			}
-		}
-
-		// 시리얼 쿠폰 생성(최초 쿠폰 생성일 경우에만)
-		if(cpnId == 0 && params.getCpnType().equals(TscConstants.CpnType.PAY_CPN.value()) && params.getDcCdGb().equals(TscConstants.DcCdGb.SERIAL.value())) {
-			// 시리얼 쿠폰명이 동일한 쿠폰이 일정 겹치는 부분이 있는지 확인
-			int overlapCheck = couponDao.getSerialOverlapCheck(params);
-			if(overlapCheck < 1) {
-				for(int i = 0 ; i < params.getTotPubLimitQty() ; i++) {
-					couponDao.createRandomCouponInfo(params);
-				}
-			} else {
-				throw new IllegalStateException("같은 시리얼명이 사용되는 쿠폰이 중복됩니다. 기간을 확인해주세요.");
-			}
-		} else if(cpnId == 0 && params.getCpnType().equals(TscConstants.CpnType.PAY_CPN.value()) && params.getDcCdGb().equals(TscConstants.DcCdGb.RANDOM.value())) {
-			Random random = new Random();
-			String prefixRandomCpn = "" + params.getCpnId();		// 랜덤 번호는 쿠폰번호 + 랜덤문자 = 12로 처리함
-			// 랜덤 문자 발급 수 만큼 진행
-			for(int j = 0 ; j < params.getTotPubLimitQty() ; j++) {
-				boolean chk = true;
-				while (chk) {
-					// 대문자+소문자+숫자 조합 10자리 인증번호 생성
-					StringBuilder sb = new StringBuilder();
-					// 쿠폰번호 + 랜덤글자 = 12 글자만큼 생성
-					for (int i = 0; i < 12 - prefixRandomCpn.length(); i++) {
-						int index = random.nextInt(2);
-						switch (index) {
-							case 0:
-								sb.append((char) (random.nextInt(26) + 65));
-								break;
-							case 1:
-								sb.append(random.nextInt(10));
-								break;
-						}
-					}
-
-					// 인증번호 중복 체크
-					int cnt = couponDao.getRandomCouponNmCnt(sb.toString());
-
-					if (cnt == 0) {
-						// 인증번호 설정
-						params.setRdCpnNm(sb.substring(0, 4) + params.getCpnId() + sb.substring(4));
-						couponDao.createRandomCouponInfo(params);
-						chk = false;
-					}
-				}
-			}
-		}
-
-		return "SUCCESS";
-	}
-
-	/**
-	 * 쿠폰 리스트 조회
-	 * @param  param
-	 * @return ArrayList<Coupon>
-	 * @author xyzp1539
-	 * @since 2020-12-22
-	 */
-	public ArrayList<Coupon> getCouponList(Coupon param) {
-		return couponDao.getCouponList(param);
-	}
-
-	/**
-	 * 쿠폰리스트 카운트 조회
-	 * @param  param
-	 * @return int
-	 * @author xyzp1539
-	 * @since 2020-12-22
-	 */
-	public int getCouponListCnt(Coupon param) {
-		return couponDao.getCouponListCnt(param);
-	}
-
-	/**
-	 * 쿠폰조회 목록
-	 * @param coupon - 쿠폰 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2021. 1. 8
-	 */
-	public Collection<Coupon> getCouponRetrieveList(Coupon coupon) {
-		return couponDao.getCouponRetrieveList(coupon);
-	}
-
-	/**
-	 * 쿠폰조회 목록
-	 * @param
-	 * @return
-	 * @author gagamel
-	 * @since 2021. 1. 8
-	 */
-	public Collection<CommonCode> getSelfBrandList() {
-		return couponDao.getSelfBrandList();
-	}
-
-	/**
-	 * 쿠폰 상세 조회
-	 * @param  cpnId
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-15
-	 */
-    public Coupon getCouponDetail(int cpnId) { return couponDao.getCouponDetail(cpnId);}
-
-	/**
-	 * 쿠폰 발급 개수 조회
-	 * @param  cpnId
-	 * @return  cnt
-	 * @author xyzp1539
-	 * @since 2021-01-15
-	 */
-	public int getCouponIssueCnt(int cpnId) {
-		return couponDao.getCouponIssueCnt(cpnId);
-	}
-
-	/**
-	 * 쿠폰 적용 대상 - 제외상품
-	 * @param  cpnId
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	public ArrayList<CouponRefval> getCouponRefvalExceptGoodsList(int cpnId ) {
-		CouponRefval cpnRefval = new CouponRefval();
-		cpnRefval.setCpnId(cpnId);
-		cpnRefval.setCpnTarget("G260_14");
-		return couponDao.getCouponRefvalExceptGoodsList(cpnRefval);
-	}
-
-	/**
-	 * 쿠폰 적용 대상 - 브랜드
-	 * @param cpnId
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	public ArrayList<CouponRefval> getCouponRefvalBrandList(int cpnId ) {
-		CouponRefval cpnRefval = new CouponRefval();
-		cpnRefval.setCpnId(cpnId);
-		cpnRefval.setCpnTarget("G260_12");
-		return couponDao.getCouponRefvalBrandList(cpnRefval);
-	}
-
-	/**
-	 * 쿠폰 적용 대상 - 카테고리
-	 * @param cpnId
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	public ArrayList<CouponRefval> getCouponRefvalCategoryList(int cpnId) {
-		CouponRefval cpnRefval = new CouponRefval();
-		cpnRefval.setCpnId(cpnId);
-		cpnRefval.setCpnTarget("G260_11");
-		return couponDao.getCouponRefvalCategoryList(cpnRefval);
-	}
-
-	/**
-	 * 쿠폰 적용 대상 - 적용상품
-	 * @param  cpnId
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	public ArrayList<CouponRefval> getCouponRefvalGoodsList(int cpnId , String cpnTarget) {
-		CouponRefval cpnRefval = new CouponRefval();
-		cpnRefval.setCpnId(cpnId);
-		cpnRefval.setCpnTarget(cpnTarget);
-		return couponDao.getCouponRefvalGoodsList(cpnRefval);
-	}
-
-	/**
-	 * 쿠폰 적용 대상 - 공급처
-	 * @param cpnId
-	 * @return Coupon
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	public ArrayList<CouponRefval> getCouponRefvalSupplyCompList(int cpnId) {
-		CouponRefval cpnRefval = new CouponRefval();
-		cpnRefval.setCpnId(cpnId);
-		cpnRefval.setCpnTarget("G260_13");
-		return couponDao.getCouponRefvalSupplyCompList(cpnRefval);
-	}
-
-	/**
-	 * 쿠폰 입점업체 분담율 조회
-	 * @param  
-	 * @return 
-	 * @author xyzp1539
-	 * @since 2021-01-18
-	 */
-	public ArrayList<Coupon> getCouponBurdenList(int cpnId) {
-		return couponDao.getCouponBurdenList(cpnId);
-	}
-
-	/**
-	 * 쿠폰 적용대상 삭제
-	 * @param   couponRefval
-	 * @return
-	 * @author xyzp1539
-	 * @since 2021-01-19
-	 */
-	@Transactional("shopTxnManager")
-	public void updateCouponRefval(CouponRefval couponRefval) {
-		couponRefval.setUpdNo(TsaSession.getInfo().getUserNo());
-		couponDao.updateCouponRefval(couponRefval);
-	}
-
-	/**
-	 * 고객 쿠폰
-	 * @param
-	 * @return
-	 * @author xyzp1539
-	 * @since 2021-01-21
-	 */
-	@Transactional("shopTxnManager")
-	public void saveCouponCustPub(CustCoupon custCoupon) {
-		Gson gson = new Gson();
-
-		Collection<CustCoupon> custPubList = gson.fromJson(custCoupon.getCustList() , new TypeToken<Collection<CustCoupon>>(){}.getType());
-		for(CustCoupon custPub : custPubList ) {
-			custPub.setCpnId(custCoupon.getCpnId());
-			custPub.setAvailStdt(custCoupon.getAvailStdt());
-			custPub.setAvailEddt(custCoupon.getAvailEddt());
-			custPub.setPubReason(custCoupon.getPubReason());
-			custPub.setPubReasonDtl(custCoupon.getPubReasonDtl());
-			custPub.setEndAlimSendYn(custCoupon.getEndAlimSendYn());
-			custPub.setRegNo(TsaSession.getInfo().getUserNo());
-			custPub.setUpdNo(TsaSession.getInfo().getUserNo());
-
-			couponDao.saveCouponCustPub(custPub);
-		}
-	}
-
-	/**
-	 * 랜덤쿠폰 생성 리스트 조회
-	 * @param
-	 * @return
-	 * @author xodud1202
-	 * @since 2021-01-26
-	 */
-	public ArrayList<CustCoupon> getRandomCouponInfo(int cpnId) {
-		return couponDao.getRandomCouponInfo(cpnId);
-	}
-
-	/**
-	 * 회원상세 - 쿠폰발급
-	 * @param coupon - 쿠폰정보
-	 * @author jsshin
-	 * @since 2021. 1. 29
-	 */
-	@Transactional("shopTxnManager")
-	public void saveCouponIssue(CustCoupon coupon) {
-		couponDao.saveCouponCustPub(coupon);
-	}
-
-	/**
-	 * 쿠폰사용가능고객구분 조회
-	 * @param
-	 * @return
-	 * @author bin2107
-	 * @since 2021-02-02
-	 */
-	public ArrayList<Coupon> getCouponCustGbList(int cpnId) {
-		return couponDao.getCouponCustGbList(cpnId);
-	}
-
-	/**
-	 * 쿠폰사용가능고객등급 조회
-	 * @param
-	 * @return
-	 * @author bin2107
-	 * @since 2021-02-02
-	 */
-	public ArrayList<Coupon> getCouponCustGradeList(int cpnId) {
-		return couponDao.getCouponCustGradeList(cpnId);
-	}
-
-	/**
-	 * 쿠폰사용가능결제수단 조회
-	 * @param
-	 * @return
-	 * @author bin2107
-	 * @since 2021-02-02
-	 */
-	public ArrayList<Coupon> getCouponPayTypeList(int cpnId) {
-		return couponDao.getCouponPayTypeList(cpnId);
-	}
-
-	/**
-	 * 쿠폰발급받은 회원리스트 팝업
-	 * @param
-	 * @return
-	 * @author bin2107
-	 * @since 2021-02-03
-	 */
-	public Collection<Coupon> getCpnPubCustList(int cpnId) {
-		return couponDao.getCpnPubCustList(cpnId);
-	}
-
-	/**
-	 * 선착순쿠폰 조회
-	 * @param
-	 * @return
-	 * @author bin2107
-	 * @since 2021-02-05
-	 */
-	public ArrayList<Coupon> getLimitedTimeCouponList(int cpnId) {
-		return couponDao.getLimitedTimeCouponList(cpnId);
-	}
-
-	/**
-	 * 선착순쿠폰 삭제
-	 *
-	 * @param
-	 * @return
-	 * @author bin2107
-	 * @since 2021. 2. 5
-	 */
-	@Transactional("shopTxnManager")
-	public void updateLimitedTimeCouponList(CouponLimitedTime couponLimitedTime) {
-		if (couponLimitedTime == null || (couponLimitedTime.getArrLimitCpnId() == null && couponLimitedTime.getArrLimitCpnId().length <= 0)) {
-			throw new IllegalStateException(message.getMessage("FAIL_1001"));
-		}
-
-		couponLimitedTime.setRegNo(TsaSession.getInfo().getUserNo());
-		couponLimitedTime.setUpdNo(TsaSession.getInfo().getUserNo());
-
-		if (couponLimitedTime.getArrLimitCpnId().length > 0) {
-			couponDao.updateLimitedTimeCouponList(couponLimitedTime);
-		}
-	}
-
-	/**
-	 * 쿠폰 상태 변경
-	 * @param
-	 * @author bin2107
-	 * @since 2021. 2. 5
-	 */
-	@Transactional("shopTxnManager")
-	public void updateCouponStat(Coupon coupon) {
-		coupon.setUpdNo(TsaSession.getInfo().getUserNo());
-		couponDao.updateCouponStat(coupon);
-	}
-}

+ 22 - 1
src/main/java/com/style24/admin/biz/service/TsaFreegiftPromotionService.java

@@ -130,8 +130,9 @@ public class TsaFreegiftPromotionService {
 			freegiftPromotionDao.deleteFreegiftGoodsInfo(param);		// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
 			freegiftPromotionDao.deleteFreegiftSectionInfo(param);		// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
 			freegiftPromotionDao.deleteFreegiftValInfo(param);			// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
+			freegiftPromotionDao.deleteFreegiftGoodsApply(param);		// 사은품 프로모션 적용 업체/브랜드 실적용 데이터 제거
 		} else {
-			param.setFreegiftStat("G232_10");					// 프로모션 등록이면 대기 상태로 저장
+			param.setFreegiftStat("G232_10");							// 프로모션 등록이면 대기 상태로 저장
 			freegiftPromotionDao.createFreegoodsPromotionInfo(param);   // 사은품 프로모션 마스터 정보 저장
 		}
 
@@ -261,6 +262,26 @@ public class TsaFreegiftPromotionService {
 				freegiftPromotionDao.createPromotionFreeGoodsInfo(freegoodsGiveInfo);	// 사은품 지급 상품 영역 저장
 			}
 		}
+
+		// 공급업체 / 브랜드 실 사용 테이블 저장
+		if(param.getSupplyCompList() != null && param.getSupplyCompList().size() > 0 && param.getBrandList() != null && param.getBrandList().size() > 0) {
+			freegiftPromotionDao.insertFreegiftGoodsApplyList(param);
+		} else if (param.getSupplyCompList() != null && param.getSupplyCompList().size() > 0) {
+			FreeGoodsPromotion company = new FreeGoodsPromotion();
+			company.setFreegiftSq(param.getFreegiftSq());
+			company.setTargetGb("G260_13");		// 적용 대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
+			company.setRegNo(param.getRegNo());
+			freegiftPromotionDao.insertFreegiftGoodsApplyList(company);	// 등록된 업체 코드 등록
+			freegiftPromotionDao.insertFreegiftGoodsApplyCompanyOrBrandList(company);
+		} else if (param.getBrandList() != null && param.getBrandList().size() > 0) {
+			FreeGoodsPromotion brand = new FreeGoodsPromotion();
+			brand.setFreegiftSq(param.getFreegiftSq());
+			brand.setTargetGb("G260_12");		// 적용 대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
+			brand.setRegNo(param.getRegNo());
+			freegiftPromotionDao.insertFreegiftGoodsApplyList(brand);	// 등록된 업체 코드 등록
+			freegiftPromotionDao.insertFreegiftGoodsApplyCompanyOrBrandList(brand);
+		}
+
 	}
 
 	/**

+ 22 - 5
src/main/java/com/style24/admin/biz/service/TsaMorebetterService.java

@@ -145,6 +145,14 @@ public class TsaMorebetterService {
         Gson gson = new Gson();
         String jsonData = gson.toJson(moreBetter);
 
+        if("U".equals(moreBetter.getMode())){
+            morebetterDao.deleteTmtbGoods(moreBetter);      // TB_TMTB_GOODS DEL_YN 'Y' UPDATE
+            morebetterDao.deleteTmtbBurden(moreBetter);     // TB_TMTB_BURDEN DEL_YN 'Y' UPDATE
+            morebetterDao.deleteTmtbSection(moreBetter);    // TB_TMTB_SECTION DEL_YN 'Y' UPDATE
+            morebetterDao.deleteTmtbVal(moreBetter);        // TB_TMTB_VAL DEL_YN 'Y' UPDATE
+            morebetterDao.deleteTmtbApplyGoods(moreBetter); // TB_TMTB_APPLY_GOODS DELETE
+        }
+
         // TMTB 마스터(TB_TMTB) 저장
         morebetterDao.saveMorebetterMst(moreBetter);
 
@@ -166,12 +174,22 @@ public class TsaMorebetterService {
             regBrand.setTargetVal(regBrand.getBrandCd());
             regBrand.setRegNo(moreBetter.getRegNo());
             regBrand.setUpdNo(moreBetter.getUpdNo());
-
             morebetterDao.saveMorebetterGoods(regBrand);
         }
 
-        List<MoreBetterGoods> realApplyGoodsList = morebetterDao.getMorebetterRealApplyGoodsList(moreBetter);
         // 적용상품
+        for(MoreBetterGoods regApplyGoods : moreBetter.getGridApplyGoodsList()){
+            // 다다익선 적용대상 설정(TB_TMTB_GOODS) 저장
+            regApplyGoods.setTmtbSq(moreBetter.getTmtbSq());
+            regApplyGoods.setTargetVal(regApplyGoods.getGoodsCd());
+            regApplyGoods.setRegNo(moreBetter.getRegNo());
+            regApplyGoods.setUpdNo(moreBetter.getUpdNo());
+            regApplyGoods.setMultiDuplicateGoods(moreBetter.getMultiDuplicateGoods());
+            morebetterDao.saveMorebetterGoods(regApplyGoods);
+        }
+
+        // apply_goods
+        List<MoreBetterGoods> realApplyGoodsList = morebetterDao.getMorebetterRealApplyGoodsList(moreBetter);
         for(MoreBetterGoods realApplyGoods : realApplyGoodsList){
             for(MoreBetterGoods regApplyGoods : moreBetter.getApplyGoodsList()){
                 if(regApplyGoods.getGoodsCd().equals(realApplyGoods.getGoodsCd())){
@@ -180,8 +198,6 @@ public class TsaMorebetterService {
                     regApplyGoods.setTargetVal(realApplyGoods.getGoodsCd());
                     regApplyGoods.setRegNo(moreBetter.getRegNo());
                     regApplyGoods.setUpdNo(moreBetter.getUpdNo());
-
-                    morebetterDao.saveMorebetterGoods(regApplyGoods);
                     morebetterDao.saveMorebetterApplyGoods(regApplyGoods);
                 }
             }
@@ -190,6 +206,7 @@ public class TsaMorebetterService {
         // 제외상품
         for(MoreBetterGoods regExceptGoods : moreBetter.getExceptGoodsList()){
             // 다다익선 적용대상 설정(TB_TMTB_GOODS) 저장
+            log.info("exception::{}",moreBetter.getExceptGoodsList());
             regExceptGoods.setTmtbSq(moreBetter.getTmtbSq());
             regExceptGoods.setTargetVal(regExceptGoods.getGoodsCd());
             regExceptGoods.setRegNo(moreBetter.getRegNo());
@@ -345,7 +362,7 @@ public class TsaMorebetterService {
         morebetterDao.deleteTmtbApplyGoodsTemp(moreBetterGoods);
 
         // 적용상품 그리드 데이터
-        List<MoreBetterGoods> applyGoodsList = moreBetterGoods.getApplyGoodsList();
+        List<MoreBetterGoods> applyGoodsList = moreBetterGoods.getGridApplyGoodsList();
 
         if(moreBetterGoods.getMultiSupplyCompCd().length > 0 || moreBetterGoods.getMultiBrand().length > 0){
             // 공급업체, 브랜드에 해당하는 상품

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

@@ -0,0 +1,403 @@
+package com.style24.admin.biz.service;
+
+import java.io.IOException;
+import java.util.Collection;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.gagaframework.web.util.GagaFileUtil;
+import com.gagaframework.web.util.GagaStringUtil;
+import com.style24.admin.biz.dao.TsaPlanDao;
+import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.support.session.TscSession;
+import com.style24.persistence.domain.Coupon;
+import com.style24.persistence.domain.Plan;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 기획전 Service
+ * 
+ * @author sowon
+ * @since 2021. 02. 04
+ */
+@Service
+@Slf4j
+public class TsaPlanService {
+
+	@Autowired
+	private TsaPlanDao planDao;
+	
+	@Autowired
+	private Environment env;
+	
+	/**
+	 * 기획전 코너 전체 조회
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 4
+	 */
+	public Collection<Plan> getPlanAllList(Plan param) {
+		return planDao.getPlanAllList(param);
+	}
+	
+	/**
+	 * 기획전 웹 등록
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	@Transactional("shopTxnManager")
+	public void createPlanWebInfo(Plan param) {
+		param.setRegNo(TsaSession.getInfo().getUserNo());
+		param.setUpdNo(TsaSession.getInfo().getUserNo());
+		planDao.createPlanWebInfo(param);
+
+		log.debug("planSq : {}", param.getPlanSq());
+
+		// 웹용 소스
+		if (StringUtils.isNotBlank(param.getFsrcPc())) {
+			createPlanFsrcPc(param);
+		}
+
+		// 모바일용 소스
+		if (StringUtils.isNotBlank(param.getFsrcMobile())) {
+			createPlanFsrcMobile(param);
+		}
+
+		//기획전 응모이벤트
+//		if (StringUtils.isNotBlank(param.getPrivacyPolicy())) {
+//			int i = 0;
+//			for (String planQtitle : param.getPlanQtitle()) {
+//				PlanQuestAnswer planQuestAnswer = new PlanQuestAnswer();
+//				planQuestAnswer.setPlanSq(param.getPlanSq());
+//				planQuestAnswer.setPlanQtitle(planQtitle);
+//				planQuestAnswer.setAttachYn(param.getAttachYn()[i]);
+//				planQuestAnswer.setQuestNo(i);
+//				planQuestAnswer.setRegNo(param.getRegNo());
+//				planQuestAnswer.setUpdNo(param.getUpdNo());
+//				planDao.savePlanQuestion(planQuestAnswer);
+//				i++;
+//			}
+//		}
+
+	}
+	/*
+	 * 기획전 웹용 소스 등록
+	 */
+	@Transactional("shopTxnManager")
+	public Plan createPlanFsrcPc(Plan param) {
+		int fsrcPcTotalCnt = param.getFsrcPc().toCharArray().length;
+		int byteCnt = 1500;
+
+		// 기존 소스 삭제
+		param.setFrontGb("P");
+		//planDao.deletePlanFsrcInfo(param);
+		if (fsrcPcTotalCnt > byteCnt) { // 4000 바이트 이상 일 때 파싱.
+			StringBuilder sbStr = new StringBuilder(4000);
+
+			int cnt = 0;
+			int getCnt = 0;
+			int tempCnt = 1500;
+
+			for (char ch : param.getFsrcPc().toCharArray()) {
+				getCnt++;
+				sbStr.append(ch);
+
+				if (getCnt == tempCnt || getCnt == fsrcPcTotalCnt) {
+					Plan planPc = new Plan();
+					planPc.setPlanSq(param.getPlanSq());
+					planPc.setFrontGb("P");
+					planPc.setSeq(cnt + 1);
+					planPc.setRegNo(param.getRegNo());
+					planPc.setFsrc(sbStr.toString());
+
+					// 초기화
+					sbStr.delete(0, tempCnt);
+					cnt++;
+					tempCnt += byteCnt;
+
+					planDao.savePlanFsrcInfo(planPc);
+				}
+
+			}
+		} else {
+			Plan planPc = new Plan();
+			planPc.setPlanSq(param.getPlanSq());
+			planPc.setFrontGb("P");
+			planPc.setSeq(1);
+			planPc.setRegNo(param.getRegNo());
+			planPc.setFsrc(param.getFsrcPc());
+
+			planDao.savePlanFsrcInfo(planPc);
+		}
+		return param;
+	}
+
+	/*
+	 * 기획전 모바일 소스 등록
+	 */
+	@Transactional("shopTxnManager")
+	public Plan createPlanFsrcMobile(Plan param) {
+		int fsrcMobileTotalCnt = param.getFsrcMobile().toCharArray().length;
+		int byteCnt = 1500;
+
+		// 기존 소스 삭제
+		param.setFrontGb("M");
+		//planDao.deletePlanFsrcInfo(param);
+		if (fsrcMobileTotalCnt > byteCnt) { // 4000 바이트 이상 일 때 파싱.
+			StringBuilder sbStr = new StringBuilder(4000);
+
+			int cnt = 0;
+			int getCnt = 0;
+			int tempCnt = 1500;
+
+			for (char ch : param.getFsrcMobile().toCharArray()) {
+				getCnt++;
+				sbStr.append(ch);
+
+				if (getCnt == tempCnt || getCnt == fsrcMobileTotalCnt) {
+					Plan planMobile = new Plan();
+					planMobile.setPlanSq(param.getPlanSq());
+					planMobile.setFrontGb("M");
+					planMobile.setSeq(++cnt);
+					planMobile.setRegNo(param.getRegNo());
+					planMobile.setFsrc(sbStr.toString());
+
+					// 초기화
+					sbStr.delete(0, tempCnt);
+					//					cnt++;
+					tempCnt += byteCnt;
+
+					planDao.savePlanFsrcInfo(planMobile);
+				}
+			}
+		} else {
+			Plan planMobile = new Plan();
+			planMobile.setPlanSq(param.getPlanSq());
+			planMobile.setFrontGb("M");
+			planMobile.setSeq(1);
+			planMobile.setRegNo(param.getRegNo());
+			planMobile.setFsrc(param.getFsrcMobile());
+
+			planDao.savePlanFsrcInfo(planMobile);
+		}
+		return param;
+	}
+	
+	/**
+	 * 기획전 목록
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 5
+	 */
+	public Collection<Plan> getPlanList(Plan param) {
+		return planDao.getPlanList(param);
+	}
+	
+	/**
+	 * 기획전 목록 카운트 조회
+	 * @param  param
+	 * @return int
+	 * @author sowon
+	 * @since 2021. 2. 5
+	 */
+	public int getPlanListCnt(Plan param) {
+		return planDao.getPlanListCnt(param);
+	}
+	
+	/**
+	 * 기획전 삭제 처리
+	 *
+	 * @param
+	 * @return
+	 * @author rladbwnd5
+	 * @since 2021. 2. 5
+	 */
+	@Transactional("shopTxnManager")
+	public void deletePlan(Collection<Plan> paramList) {
+		for (Plan plan : paramList) {
+			plan.setUpdNo(TsaSession.getInfo().getUserNo());
+			planDao.deletePlan(plan);
+		}
+	}
+	
+	/**
+	 * 기획전 상세 정보
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	public Plan getPlanWebDetailInfo(Plan param) {
+		Collection<Plan> planList = planDao.getPlanList(param);
+		Plan planInfo = new Plan();
+
+		if (!planList.isEmpty()) {
+			for (Plan plan : planList) {
+				planInfo = plan;
+			}
+		}
+
+		// 날짜 설정
+		String[] stDate = planInfo.getDispStdt().split(" ");
+		planInfo.setStartSearchDate(stDate[0]);
+		planInfo.setStartSearchTime(GagaStringUtil.replace(stDate[1], ":", "").substring(0, 6));
+
+		String[] edDate = planInfo.getDispEddt().split(" ");
+		planInfo.setEndSearchDate(edDate[0]);
+		planInfo.setEndSearchTime(GagaStringUtil.replace(edDate[1], ":", "").substring(0, 6));
+
+		return planInfo;
+	}
+	
+	/**
+	 * 기획전 웹용 소스 조회
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	public Plan getPlanFsrcPcList(Plan param) {
+		param.setFrontGb("P");
+		Collection<Plan> planFsrcList = planDao.getPlanFsrcList(param);
+		Plan planPc = new Plan();
+
+		for (Plan pcTemp : planFsrcList) {
+			if (StringUtils.isNotBlank(planPc.getFsrc())) {
+				planPc.setFsrc(planPc.getFsrc() + pcTemp.getFsrc());
+			} else {
+				planPc.setFsrc(pcTemp.getFsrc());
+			}
+
+		}
+		log.debug("fsrcPc = {}", planPc.getFsrcPc());
+		return planPc;
+	}
+
+	/**
+	 * 기획전 모바일용 소스 조회
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	public Plan getPlanFsrcMobileList(Plan param) {
+		param.setFrontGb("M");
+		Collection<Plan> planFsrcList = planDao.getPlanFsrcList(param);
+		Plan planMobile = new Plan();
+
+		for (Plan mobileTemp : planFsrcList) {
+			if (StringUtils.isNotBlank(planMobile.getFsrc())) {
+				planMobile.setFsrc(planMobile.getFsrc() + mobileTemp.getFsrc());
+			} else {
+				planMobile.setFsrc(mobileTemp.getFsrc());
+			}
+		}
+
+		return planMobile;
+	}
+	
+	/**
+	 * 기획전 웹 수정
+	 *
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	@Transactional("shopTxnManager")
+	public void updatePlanWebInfo(Plan param) {
+		log.debug("param {}", param);
+		String targetPath = env.getProperty("upload.default.target.path") + "/planning";
+		param.setRegNo(TsaSession.getInfo().getUserNo());
+		param.setUpdNo(TsaSession.getInfo().getUserNo());
+
+		// 이미지 삭제 여부에 따른 이미지 삭제 처리
+		if (("Y").equals(param.getOrgMainPimgDelYn())) {
+			deleteFile(targetPath, param.getOrgMainPimg());
+		}
+
+		if (("Y").equals(param.getOrgMainMimgDelYn())) {
+			deleteFile(targetPath, param.getOrgMainMimg());
+		}
+
+		if (("Y").equals(param.getOrgDtlPimgDelYn())) {
+			deleteFile(targetPath, param.getOrgDtlPimg());
+		}
+
+		if (("Y").equals(param.getOrgDtlMimgDelYn())) {
+			deleteFile(targetPath, param.getOrgDtlMimg());
+		}
+
+		if (("Y").equals(param.getOrgReplyImgDelYn())) {
+			param.setReplyImg(null);
+			deleteFile(targetPath, param.getOrgReplyImg());
+		}
+
+		planDao.updatePlanWebInfo(param);
+
+		// 웹용 소스
+		if (StringUtils.isNotBlank(param.getFsrcPc())) {
+			createPlanFsrcPc(param);
+		} else {
+			param.setFrontGb("P");
+			planDao.deletePlanFsrcInfo(param);
+		}
+
+		// 모바일용 소스
+		if (StringUtils.isNotBlank(param.getFsrcMobile())) {
+			createPlanFsrcMobile(param);
+		} else {
+			param.setFrontGb("M");
+			planDao.deletePlanFsrcInfo(param);
+		}
+
+		//기획전 응모이벤트
+//		if (StringUtils.isNotBlank(param.getPrivacyPolicy())) {
+//			int i = 0;
+//			for (String planQtitle : param.getPlanQtitle()) {
+//				PlanQuestAnswer planQuestAnswer = new TsaPlanQuestAnswer();
+//				planQuestAnswer.setPlanSq(param.getPlanSq());
+//				planQuestAnswer.setPlanQtitle(planQtitle);
+//				planQuestAnswer.setAttachYn(param.getAttachYn()[i]);
+//				planQuestAnswer.setQuestNo(i);
+//				planQuestAnswer.setRegNo(param.getRegNo());
+//				planQuestAnswer.setUpdNo(param.getUpdNo());
+//				planDao.savePlanQuestion(planQuestAnswer);
+//				i++;
+//			}
+//		}
+	}
+	
+	/**
+	 * 파일 삭제
+	 *
+	 * @param targetPath
+	 * @param excelFilename
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	private void deleteFile(String targetPath, String excelFilename) {
+		// 파일 삭제
+		try {
+			GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(targetPath, excelFilename));
+		} catch (IOException e) {
+			// Nothing Do
+		}
+	}
+
+}

+ 10 - 0
src/main/java/com/style24/admin/biz/service/TsaRendererService.java

@@ -555,4 +555,14 @@ public class TsaRendererService {
 		return rendererDao.getAflinkList(afChannel);
 	}
 
+	/**
+	 * 자사브랜드 조회
+	 * @param
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 8
+	 */
+	public Collection<CommonCode> getSelfBrandList() {
+		return rendererDao.getSelfBrandList();
+	}
 }

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

@@ -333,6 +333,7 @@ public class TsaDisplayController extends TsaBaseController {
 	public GagaMap getCategoryGoodsList(@RequestBody CategoryGoods categoryGoods) {
 		GagaMap result = new GagaMap();
 
+		log.info("getCategoryGoodsList categoryGoods::{}",categoryGoods);
 		categoryGoods.setRegNo(TsaSession.getInfo().getUserNo());	//엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		categoryGoods.setPageable(new TscPageRequest(categoryGoods.getPageNo() - 1, categoryGoods.getPageSize()));
 		categoryGoods.getPageable().setTotalCount(displayService.getCategoryGoodsListCount(categoryGoods));

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

@@ -985,10 +985,14 @@ public class TsaGoodsController extends TsaBaseController {
 				if (goodsImgInfo.getDefaultImgYn().equals("Y")) {
 					mav.addObject("defaultImgOrd", goodsImgInfo.getDispOrd());
 				}
+				if (goodsImgInfo.getMouseoverImgYn() .equals("Y")) {
+					mav.addObject("mouseoverImgOrd", goodsImgInfo.getDispOrd());
+				}
 			}
 		} else { // 대표이미지와 마우스오버이미지가 없으면
 			mav.addObject("goodsImgList", new ArrayList<GoodsImg>());
 			mav.addObject("defaultImgOrd", "1");
+			mav.addObject("mouseoverImgOrd", "1");
 		}
 
 		mav.addObject("goodsImg", goodsImg);

+ 187 - 34
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -6,6 +6,7 @@ import java.util.Calendar;
 import java.util.Collection;
 import java.util.Date;
 
+import com.style24.core.biz.service.TscCouponService;
 import com.style24.persistence.domain.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,9 +23,9 @@ import org.springframework.web.servlet.ModelAndView;
 
 import com.style24.admin.biz.service.TsaCardPromotionService;
 import com.style24.admin.biz.service.TsaCommonService;
-import com.style24.admin.biz.service.TsaCouponService;
 import com.style24.admin.biz.service.TsaFreegiftPromotionService;
 import com.style24.admin.biz.service.TsaMorebetterService;
+import com.style24.admin.biz.service.TsaPlanService;
 import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.biz.service.TsaReviewService;
 import com.style24.admin.biz.service.TsaSystemService;
@@ -33,8 +34,8 @@ import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.biz.service.TscPointService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.core.support.session.TscSession;
 import com.style24.persistence.TscPageRequest;
-
 import lombok.extern.slf4j.Slf4j;
 
 import com.gagaframework.web.parameter.GagaMap;
@@ -69,9 +70,6 @@ public class TsaMarketingController extends TsaBaseController {
 	@Autowired
 	private TsaMorebetterService morebetterService;
 
-	@Autowired
-	private TsaCouponService couponService;
-
 	@Autowired
 	private TsaReviewService reviewService;
 
@@ -83,6 +81,12 @@ public class TsaMarketingController extends TsaBaseController {
 
 	@Autowired
 	private TsaCardPromotionService cardPromotionService;
+	
+	@Autowired
+	private TsaPlanService planService;
+
+	@Autowired
+	private TscCouponService coreCouponService;
 
 	/**
 	 * 상품평관리 화면
@@ -333,8 +337,8 @@ public class TsaMarketingController extends TsaBaseController {
 	public GagaMap getCouponList(@RequestBody Coupon param) {
 		GagaMap result = new GagaMap();
 
-		ArrayList<Coupon> cpnList = couponService.getCouponList(param);
-		int cpnTotCnt = couponService.getCouponListCnt(param);
+		ArrayList<Coupon> cpnList = coreCouponService.getCouponList(param);
+		int cpnTotCnt = coreCouponService.getCouponListCnt(param);
 
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		param.setPageable(new TscPageRequest(param.getPageNo() - 1, param.getPageSize()));
@@ -408,7 +412,7 @@ public class TsaMarketingController extends TsaBaseController {
 		// 카테고리 구분 조회
 		mav.addObject("cateGbList", rendererService.getCommonCodeList("G032"));
 		// 자사 브랜드 조회
-		mav.addObject("selfBrandList", couponService.getSelfBrandList());
+		mav.addObject("selfBrandList", rendererService.getSelfBrandList());
 		// 사이트코드 조회
 		mav.addObject("siteCdList", rendererService.getCommonCodeList("G000"));
 		// 쿠폰상태 조회
@@ -435,31 +439,31 @@ public class TsaMarketingController extends TsaBaseController {
 		// 이미 쿠폰 아이디가 있으면 적용대상 조회
 		if (cpnId != 0) {
 			mode = "U";
-			issueCnt = couponService.getCouponIssueCnt(cpnId);
+			issueCnt = coreCouponService.getCouponIssueCnt(cpnId);
 			// 쿠폰상세조회
-			mav.addObject("cpnDetail", couponService.getCouponDetail(cpnId));
+			mav.addObject("cpnDetail", coreCouponService.getCouponDetail(cpnId));
 			// 쿠폰적용대상 - 공급업체 조회
-			mav.addObject("cpnDtlRefvalSupplyCompList", couponService.getCouponRefvalSupplyCompList(cpnId));
+			mav.addObject("cpnDtlRefvalSupplyCompList", coreCouponService.getCouponRefvalSupplyCompList(cpnId));
 			// 쿠폰적용대상 - 적용상품 조회
-			mav.addObject("cpnDtlRefvalApplyGoodsList", couponService.getCouponRefvalGoodsList(cpnId, "G260_10"));
+			mav.addObject("cpnDtlRefvalApplyGoodsList", coreCouponService.getCouponRefvalGoodsList(cpnId, "G260_10"));
 			// 쿠폰적용대상 - 카테고리 조회
-			mav.addObject("cpnDtlRefvalCateList", couponService.getCouponRefvalCategoryList(cpnId));
+			mav.addObject("cpnDtlRefvalCateList", coreCouponService.getCouponRefvalCategoryList(cpnId));
 			// 쿠폰적용대상 - 브랜드 조회
-			mav.addObject("cpnDtlRefvalBrandList", couponService.getCouponRefvalBrandList(cpnId));
+			mav.addObject("cpnDtlRefvalBrandList", coreCouponService.getCouponRefvalBrandList(cpnId));
 			// 쿠폰적용대상 - 제외상품 조회
-			mav.addObject("cpnDtlRefvalExceptGoodsList", couponService.getCouponRefvalGoodsList(cpnId, "G260_14"));
+			mav.addObject("cpnDtlRefvalExceptGoodsList", coreCouponService.getCouponRefvalGoodsList(cpnId, "G260_14"));
 			// 쿠폰 입점업체분담율 조회
-			mav.addObject("cpnDtlBurdenList", couponService.getCouponBurdenList(cpnId));
+			mav.addObject("cpnDtlBurdenList", coreCouponService.getCouponBurdenList(cpnId));
 			// 시리얼 및 난수 쿠폰 조회
-			mav.addObject("randomCpnList", couponService.getRandomCouponInfo(cpnId));
+			mav.addObject("randomCpnList", coreCouponService.getRandomCouponInfo(cpnId));
 			// 쿠폰사용가능고객구분 조회
-			mav.addObject("cpnCustGbList", couponService.getCouponCustGbList(cpnId));
+			mav.addObject("cpnCustGbList", coreCouponService.getCouponCustGbList(cpnId));
 			// 쿠폰사용가능고객등급 조회
-			mav.addObject("cpnCustGradeList", couponService.getCouponCustGradeList(cpnId));
+			mav.addObject("cpnCustGradeList", coreCouponService.getCouponCustGradeList(cpnId));
 			// 쿠폰사용가능결제수단 조회
-			mav.addObject("cpnPayTypeList", couponService.getCouponPayTypeList(cpnId));
+			mav.addObject("cpnPayTypeList", coreCouponService.getCouponPayTypeList(cpnId));
 			// 선착순쿠폰 조회
-			mav.addObject("limitedTimeCpnList", couponService.getLimitedTimeCouponList(cpnId));
+			mav.addObject("limitedTimeCpnList", coreCouponService.getLimitedTimeCouponList(cpnId));
 		}
 
 		//issueCnt = 3;
@@ -482,8 +486,9 @@ public class TsaMarketingController extends TsaBaseController {
 	@ResponseBody
 	public GagaResponse saveCoupon(@RequestBody Coupon coupon) {
 		log.info("couponSave : {}", coupon);
-
-		String result = couponService.saveCoupon(coupon);
+		coupon.setRegNo(TsaSession.getInfo().getUserNo());
+		coupon.setUpdNo(TsaSession.getInfo().getUserNo());
+		String result = coreCouponService.saveCoupon(coupon);
 		if(!"SUCCESS".equals(result)) {
 			return super.error(message.getMessage(result));
 		}
@@ -502,8 +507,8 @@ public class TsaMarketingController extends TsaBaseController {
 	@ResponseBody
 	public GagaResponse updateCouponRefval(@RequestBody CouponRefval CouponRefval) {
 		log.info("couponSave : {}", CouponRefval);
-
-		couponService.updateCouponRefval(CouponRefval);
+		CouponRefval.setUpdNo(TsaSession.getInfo().getUserNo());
+		coreCouponService.updateCouponRefval(CouponRefval);
 
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
@@ -584,8 +589,9 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/coupon/insertCustPub")
 	@ResponseBody
 	public GagaResponse saveCouponCustPub(@RequestBody CustCoupon custCoupon) {
-		couponService.saveCouponCustPub(custCoupon);
-
+		custCoupon.setRegNo(TsaSession.getInfo().getUserNo());
+		custCoupon.setUpdNo(TsaSession.getInfo().getUserNo());
+		coreCouponService.saveCouponCustPub(custCoupon);
 		return super.ok(message.getMessage("SUCC_0006"));
 
 	}
@@ -718,9 +724,10 @@ public class TsaMarketingController extends TsaBaseController {
 
 			// TMTB_GOODS_TEMP TABLE TRUNCATE -> 다른 다다에서 사용중인 상품 조회 -> INSERT
 			moreBetterGoods.setApplyGoodsList(moreBetter.getApplyGoodsList());
+			moreBetterGoods.setGridApplyGoodsList(moreBetter.getApplyGoodsList());
 			moreBetterGoods.setSectionGb(moreBetter.getSectionGb());
-			morebetterService.createMorebetterGoodsTemp(moreBetterGoods);
 
+			morebetterService.createMorebetterGoodsTemp(moreBetterGoods);
 			morebetterService.saveMoreBetterDetail(moreBetter);
 
 			// 다른 다다에서 사용중인 상품 조회
@@ -858,6 +865,7 @@ public class TsaMarketingController extends TsaBaseController {
 
 				// TMTB_GOODS_TEMP TABLE TRUNCATE -> 다른 다다에서 사용중인 상품 조회 -> INSERT
 				moreBetterGoods.setApplyGoodsList(moreBetter.getApplyGoodsList());
+				moreBetterGoods.setGridApplyGoodsList(moreBetter.getApplyGoodsList());
 				moreBetterGoods.setSectionGb(moreBetter.getSectionGb());
 				morebetterService.createMorebetterGoodsTemp(moreBetterGoods);
 
@@ -901,7 +909,7 @@ public class TsaMarketingController extends TsaBaseController {
 	public ModelAndView couponPubCustListPopup(@RequestParam(value = "cpnId", required = true)int cpnId) {
 		ModelAndView mav = new ModelAndView();
 
-		mav.addObject("cpnPubCustList", couponService.getCpnPubCustList(cpnId));
+		mav.addObject("cpnPubCustList", coreCouponService.getCpnPubCustList(cpnId));
 
 		mav.setViewName("marketing/CouponPubCustListPopupForm");
 		return mav;
@@ -918,13 +926,15 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/coupon/limitedtime/coupon/update")
 	@ResponseBody
 	public GagaResponse updateLimitedTimeCouponList(@RequestBody CouponLimitedTime couponLimitedTime) {
-		couponService.updateLimitedTimeCouponList(couponLimitedTime);
+		couponLimitedTime.setRegNo(TsaSession.getInfo().getUserNo());
+		couponLimitedTime.setUpdNo(TsaSession.getInfo().getUserNo());
+		coreCouponService.updateLimitedTimeCouponList(couponLimitedTime);
 		return super.ok(message.getMessage("SUCC_0003"));
 	}
 
 	/**
 	 * 쿠폰 상태 변경
-	 * @param param
+	 * @param coupon
 	 * @return
 	 * @author bin2107
 	 * @since 2021. 02. 05
@@ -933,7 +943,8 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/marketing/coupon/changeStat")
 	public GagaResponse updateCouponStat(@RequestBody Coupon coupon) {
 		try {
-			couponService.updateCouponStat(coupon);
+			coupon.setUpdNo(TsaSession.getInfo().getUserNo());
+			coreCouponService.updateCouponStat(coupon);
 		} catch (Exception e) {
 			e.printStackTrace();
 			return super.error(message.getMessage("FAIL_0001"));
@@ -989,7 +1000,7 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/coupon/retrieve/list")
 	@ResponseBody
 	public Collection<Coupon> getCouponRetrieveList(@RequestBody Coupon coupon) {
-		return couponService.getCouponRetrieveList(coupon);
+		return coreCouponService.getCouponRetrieveList(coupon);
 	}
 
 	/**
@@ -1090,7 +1101,7 @@ public class TsaMarketingController extends TsaBaseController {
 		Integer userNo = TsaSession.getInfo().getUserNo();
 		custCoupon.setRegNo(userNo);
 		custCoupon.setUpdNo(userNo);
-		couponService.saveCouponIssue(custCoupon);
+		coreCouponService.saveCouponIssue(custCoupon);
 		return super.ok(message.getMessage("SUCC_0006"));
 	}
 
@@ -1282,4 +1293,146 @@ public class TsaMarketingController extends TsaBaseController {
 	 *   카드관련 작업 종료 - eskim
 	 */
 
+	/**
+	 *   기획전 작업 시작 - sowon
+	 */
+
+	/**
+	 * 기획전 관리
+	 * @param
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 3
+	 */
+	@GetMapping("/planning/form")
+	public ModelAndView planListForm() {
+		ModelAndView mav = new ModelAndView();		
+		// 사이트 목록
+		mav.addObject("siteCdList", rendererService.getCommonCodeList("G000"));
+		// 사용여부
+		mav.addObject("useYnList", rendererService.getAvailCommonCodeList("G002"));
+		mav.setViewName("marketing/PlanListForm");
+		return mav;
+	}
+	
+	/**
+	 * 기획전 웹 등록/수정 화면
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 04
+	 */
+	@GetMapping("/planning/webdetail/form")
+	public ModelAndView planWebDetailForm(Plan param) {
+		ModelAndView mav = new ModelAndView();
+
+		if (param.getMode().equals("N")) { // 신규 일 때
+			// 기획전 전체 목록
+			mav.addObject("planList", planService.getPlanAllList(param));
+
+		} else if(param.getMode().equals("U")){ // 상세 일 때
+			mav.addObject("planInfo", planService.getPlanWebDetailInfo(param));
+
+			mav.addObject("fsrcPc", planService.getPlanFsrcPcList(param));
+
+			mav.addObject("fsrcMobile", planService.getPlanFsrcMobileList(param));
+
+			//mav.addObject("planQuestionList", planService.getPlanQuestionList(param));
+
+			//mav.addObject("brandList", rendererService.getSupplyCompanyBrandList("W"));
+		}
+
+		// 사이트 목록
+		mav.addObject("siteList", rendererService.getCommonCodeList("G000"));
+
+		// 공급업체 목록
+//		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList());
+//
+//		// 사용여부
+		mav.addObject("useYnList", rendererService.getAvailCommonCodeList("G002"));
+//
+//		// 회원구분 목록
+//		mav.addObject("custGbList", rendererService.getCommonCodeList("G100", "Y"));
+		
+		// 사용가능 고객등급 조회
+		mav.addObject("usableCustGradeList", rendererService.getCommonCodeList("G110"));
+		
+		mav.addObject("mode", param.getMode());
+		mav.setViewName("marketing/PlanWebDetailPopupForm");
+		return mav;
+	}
+	
+	/**
+	 * 기획전 웹 등록
+	 *
+	 * @return
+	 * @author sowon
+	 * @since 2021. 2. 4
+	 */
+	@PostMapping("/planning/webdetail/create")
+	@ResponseBody
+	public GagaResponse createPlanWebInfo(@RequestBody Plan param) {
+		planService.createPlanWebInfo(param);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+	
+	/**
+	 * 기획전관리 목록
+	 *
+	 * @param
+	 * @return 기획전 목록
+	 * @author sowon
+	 * @since 2021. 2. 5
+	 */
+	@PostMapping("/planning/list")
+	@ResponseBody
+	public GagaMap getPlanList(@RequestBody Plan param) {
+		GagaMap result = new GagaMap();
+		
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(param.getCondition())) {
+			param.setConditionList(param.getCondition().replaceAll("\r", "").split("\n"));
+		}
+		Collection<Plan> planList = planService.getPlanList(param);
+
+		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		param.setPageable(new TscPageRequest(param.getPageNo() - 1, param.getPageSize()));
+		param.getPageable().setTotalCount(planService.getPlanListCnt(param));
+		result.set("pageing", param);
+		result.set("planList", planList);
+
+		//log.debug("dataList: {}", planList);
+
+		return result;
+	}
+	
+	/**
+	 * 기획전관리 목록
+	 *
+	 * @param
+	 * @return 기획전 삭제
+	 * @author sowon
+	 * @since 2021. 2. 8
+	 */
+	@PostMapping("/planning/delete")
+	@ResponseBody
+	public GagaResponse deletePlan(@RequestBody Collection<Plan> paramList) {
+		planService.deletePlan(paramList);
+		return super.ok(message.getMessage("SUCC_0003"));
+	}
+	
+	/**
+	 * 기획전 웹 수정
+	 *
+	 * @return
+	 * @author sowon		
+	 * @since 2021. 2. 8
+	 */
+	@PostMapping("/plan/webdetail/update")
+	@ResponseBody
+	public GagaResponse updatePlanWebInfo(@RequestBody Plan param) {
+		planService.updatePlanWebInfo(param);
+		return super.ok(message.getMessage("SUCC_0002"));
+	}
+
 }

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

@@ -19,8 +19,8 @@ import lombok.Data;
 public class Goods extends TscBaseDomain {
 
 	private String goodsCd;		//상품코드
-	private int productNo;		//ProductNo(WMS)
-	private String productCode;		//ProductCode(WMS)
+	//private int productNo;		//ProductNo(WMS)
+	//private String productCode;		//ProductCode(WMS)
 	private String brandCd;		//브랜드코드
 	private String itemkindCd;		//품목코드
 	private String goodsNm;		//상품명

+ 2 - 0
src/main/java/com/style24/persistence/domain/GoodsImg.java

@@ -19,9 +19,11 @@ public class GoodsImg extends TscBaseDomain {
 	private String orgImgNm;
 	private String sysImgNm;
 	private String defaultImgYn;
+	private String mouseoverImgYn;
 	private String colorNm;
 	private String mode;
 	private int defaultImgOrd;
+	private int mouseoverImgOrd;
 	private String sysImgUrl;
 	private int brandNo;
 

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

@@ -61,6 +61,7 @@ public class MoreBetter extends TscBaseDomain {
 	List<MoreBetterGoods> supplyCompList;
 	List<MoreBetterGoods> brandList;
 	List<MoreBetterGoods> applyGoodsList;
+	List<MoreBetterGoods> gridApplyGoodsList;
 	List<MoreBetterGoods> exceptGoodsList;
 	List<MoreBetterBurden> burdenList;
 	List<MoreBetterSection> sectionGbList;

+ 2 - 5
src/main/java/com/style24/persistence/domain/MoreBetterGoods.java

@@ -63,9 +63,6 @@ public class MoreBetterGoods extends TscBaseDomain {
 	private String[] multiDuplicateGoods;
 
 	List<MoreBetterGoods> applyGoodsList;
-/*
-	List<MoreBetterGoods> multiSupplyCompCd;
-	List<MoreBetterGoods> multiBrand;
-	List<MoreBetterGoods> multiGoods;
-	List<MoreBetterGoods> multiExceptGoods;*/
+	List<MoreBetterGoods> gridApplyGoodsList;
+
 }

+ 149 - 0
src/main/java/com/style24/persistence/domain/Plan.java

@@ -0,0 +1,149 @@
+package com.style24.persistence.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.style24.persistence.TscBaseDomain;
+import com.style24.persistence.TscPageRequest;
+
+import lombok.Data;
+
+/**
+ * 기획전 Domain
+ *
+ * @author sowon
+ * @since 2021. 02. 04
+ */
+
+@SuppressWarnings("serial")
+@Data
+public class Plan extends TscBaseDomain{
+	// 기획전
+		private Integer planSq;				//기획전일련번호(SeqPlan sequence)
+		private String planNm;				//기획전명
+		private String planGb;				//기획전구분(P:기획전private String  E:이벤트)
+		private String custGb;				//고객구분
+		private String custGrade;			//회원등급
+		private String planSnm;				//검색어
+		private String templateType;		//템플릿유형(H:Htmlprivate String  T:텍스트)
+		private String siteCd;				//사이트코드(공통코드g000)
+		private String frontGb;				//프론트구분(A:All, P:웹, M:모바일)
+		private String dispStdt;			//기획전 시작일시
+		private String dispEddt;			//기획전 종료일시
+		private String mainPimg;			//메인이미지(Pc)
+		private String mainMimg;			//메인이미지(모바일)
+		private String dtlPimg;				//상세이미지(Pc)
+		private String dtlMimg;				//상세이미지(모바일)
+		private String orgMainPimg;			//원본메인이미지(Pc)
+		private String orgMainMimg;			//원본메인이미지(모바일)
+		private String orgDtlPimg;			//원본상세이미지(Pc)
+		private String orgDtlMimg;			//원본상세이미지(모바일)
+		private String orgMainPimgDelYn;	//원본메인이미지(Pc) 삭제여부
+		private String orgMainMimgDelYn;	//원본메인이미지(모바일) 삭제여부
+		private String orgDtlPimgDelYn;		//원본상세이미지(Pc) 삭제여부
+		private String orgDtlMimgDelYn;		//원본상세이미지(모바일) 삭제여부
+		private String dtlTitle1;			//상세제목1
+		private String dtlTitle2;			//상세제목2
+		private String cateCd;				//카테고리코드(대/중/소/세카테고리)
+		private String cateDispYn;			//카테고리전시여부(Y:전시)
+		private String replyYn;				//댓글여부(Y:댓글)
+		private String replyLoc;			//댓글위치(U:상품리스트상단 D:상품리스트하단)
+		private String replyImg;			//댓글이미지
+		private String orgReplyImg;			//원본댓글이미지
+		private String replyTitle1;			//댓글제목1
+		private String replyTitle2;			//댓글제목2
+		private String devUrl;				//호출 URL
+		private String orgReplyImgDelYn;	//원본댓글이미지 삭제여부
+		private String cornerNmDispYn;		//코너명노출여부(Y:노출)
+		private String goodsLimitYn;		//상품등록제한여부(Y:상품등록제한)
+		private String goodsLimitQty;		//상품등록제한수(상품등록제한여부가 "Y"일 떄)
+		private String delYn;				//삭제여부(Y:삭제)
+		private String openYn;				//오픈여부(Y:오픈)
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private long[] dispOrdArr;			// 표시순서 배열
+		private long dispOrd;				//표시순서
+		private long readCnt;				//조회수
+		private Integer pollSq;				//투표일련번호
+		private String badgeNm;				//뱃지이름
+		private String badgeFcolor;			//뱃지글자컬러
+		private String badgeBcolor;			//뱃지배경컬러
+		private String privacyPolicy;		//개인정보수집동의정책
+
+		// 기획전 소스
+		private long seq;					//일련번호
+		private String fsrc;				//프론트소스
+		private String fsrcPc;				//프론트소스(pc)	/ 화면용
+		private String fsrcMobile;			//프론트소스(모바일)	/ 화면용
+
+		// 기획전 상세
+		private long planDtlSq;				//기획전상세일련번호(SEQ_PLAN_DTL sequence)
+		private long copyPlanDtlSq;			//복사할 상세 일련번호
+		private long copyPlanSq;			//복사할 일련번호
+		private String copyMode;			//복사 선택(CORNER:코너복사, PLAN:기획전복사)
+		private String cornerDispType;		//코너노출유형(공통코드G045) (2:2컷 , 3:3컷, 4:4컷)
+		private String cornerNm;			//코너 명
+		private String planDtlStat;			//기획전상세상태(공통코드G044)
+
+		// 기획전 응모
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] planQtitle;
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] attachYn;
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] planAnswerSq;
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] answer;
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] sysFileNm;
+
+		//private Collection<TsaPlanQuestAnswer> planQuestAnswerList; // 고시항목
+
+		// 검색
+		private String startSearchDate;		// 진행기간 시작일
+		private String startSearchTime;		// 진행기간 시작시간
+		private String endSearchDate;		// 진행기간 종료일
+		private String endSearchTime;		// 진행기간 종료시간
+		private String excelFileNm;			// 엑셀 파일 명
+		private int startRow;				// 페이징 시작
+		private int endRow;					// 피이징 종료
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] siteCds;			// 사이트
+
+		// 코너 상품
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] goodsCdArr;		// 상품 코드 배열
+		private String goodsCd;				// 상품 코드
+		private String goodsNm;				// 상품 명
+		private String imgType;				// 이미지 타입
+		private String imgPath1;			// 이미지 경로1
+		private String imgPath2;			// 이미지 경로2
+		private String imgPath4;			// 이미지 경로4
+		private String imgPath5;			// 이미지 경로5
+		private String imgPath6;			// 이미지 경로6
+		private String goodsStat;			// 상품 상태
+		private String dcRate;				// 할인율
+		private String listPrice;			// 최소 소비자가
+		private String tagPrice;			// tag 가
+		private String currPrice;			// 판매가
+		private String supplyCompCd;		// 업체코드
+		private String supplyCompNm;		// 업체명
+		private String formalGb;			// 정상/이월 여부
+		private String currStockQty;		// 재고
+		private String pageYn;				// 페이징 사용 여부
+		private String changeGb;			// 순서변경 updown 구분
+
+		// 기획전 팝업
+		private String callBackFun;			// 콜백함수명
+		private String popupDispStdt;		//기획전 시작일시
+		private String popupDispEddt;		//기획전 종료일시
+		
+		// Pagination
+		private TscPageRequest pageable;
+		private int pageNo = 1;
+		private int pageSize = 50;
+		private int pageUnit = 10;
+		
+		private String condition; // 키워드 종류
+		private String search; // 검색어
+		@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+		private String[] conditionList;
+}

+ 0 - 964
src/main/java/com/style24/persistence/mybatis/shop/TsaCoupon.xml

@@ -1,964 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.style24.admin.biz.dao.TsaCouponDao">
-	<!-- 쿠폰리스트 조회 -->
-	<select id="getCouponList" parameterType="Coupon" resultType="Coupon">
-		/* TsaCoupon.getCouponList */
-		SELECT T.*
-			 , COUNT(CUST_CPN_SQ) AS ISSUE_CNT
-			 , COUNT(USED_DT) AS USE_CNT
-		 FROM (
-				SELECT SITE_CD
-					 , CPN_ID
-					 , CPN_NM
-					 , CPN_TYPE
-					 , DC_WAY
-					 , DC_PVAL
-					 , DC_MVAL
-					 , MAX_DC_AMT
-					 , PD_GB
-					 , AVAIL_STDT
-					 , AVAIL_EDDT
-				     , AVAIL_DAYS
-					 , FN_GET_USER_NM(REG_NO) AS REG_NM
-					 , REG_DT
-				  FROM TB_COUPON
-				 WHERE 1=1
-				<if test="siteCd != null and siteCd != ''">
-				   AND SITE_CD = #{siteCd}
-				</if>
-				<if test="cpnId != null and cpnId != ''">
-				   AND CPN_ID = #{cpnId}
-				</if>
-				<if test="cpnType != null and cpnType != ''">
-				   AND CPN_TYPE = #{cpnType}
-				</if>
-				<if test="regNo != null and regNo != ''">
-				   AND REG_NO = #{regNo}
-				</if>
-				<if test="dcWay != null and dcWay != ''">
-				   AND DC_WAY = #{dcWay}
-				</if>
-				<if test="cpnNm != null and cpnNm != ''">
-				   AND CPN_NM LIKE LOWER('%' || #{cpnNm} || '%')
-				</if>
-				<if test="pdGb != null and pdGb != ''">
-				   AND PD_GB = #{pdGb}
-				</if>
-				<if test="availStdt != null and availStdt != '' and availEddt != null and availEddt != ''">
-				   AND AVAIL_STDT >= DATE_FORMAT(#{availStdt} , '%Y-%m-%d')
-				   AND AVAIL_EDDT <![CDATA[ <= ]]> DATE_FORMAT(#{availEddt} , '%Y-%m-%d')
-				</if>
-			) T
-		LEFT OUTER JOIN TB_CUST_COUPON CC
-		             ON T.CPN_ID = CC.CPN_ID
-		GROUP BY  T.SITE_CD
-				, T.CPN_ID
-				, T.CPN_NM
-				, T.CPN_TYPE
-				, T.DC_WAY
-				, T.DC_PVAL
-				, T.DC_MVAL
-				, T.MAX_DC_AMT
-				, T.PD_GB
-				, T.AVAIL_STDT
-				, T.AVAIL_EDDT
-				, T.REG_NM
-				, T.REG_DT
-		ORDER BY  T.REG_DT DESC
-	</select>
-
-	<!-- 쿠폰 리스트 카운트 조회-->
-	<select id="getCouponListCnt" parameterType="Coupon" resultType="int">
-		/* TsaCoupon.getCouponListCnt */
-		SELECT COUNT(1)
-		  FROM TB_COUPON
-		 WHERE 1=1
-		<if test="siteCd != null and siteCd != ''">
-		   AND SITE_CD = #{siteCd}
-		</if>
-		<if test="cpnId != null and cpnId != ''">
-		   AND CPN_ID = #{cpnId}
-		</if>
-		<if test="cpnType != null and cpnType != ''">
-		   AND CPN_TYPE = #{cpnType}
-		</if>
-		<if test="regNo != null and regNo != ''">
-		   AND REG_NO = #{regNo}
-		</if>
-		<if test="dcWay != null and dcWay != ''">
-		   AND DC_WAY = #{dcWay}
-		</if>
-		<if test="cpnNm != null and cpnNm != ''">
-		   AND CPN_NM LIKE LOWER('%' || #{cpnNm} || '%')
-		</if>
-		<if test="pdGb != null and pdGb != ''">
-		   AND PD_GB = #{pdGb}
-		</if>
-		<if test="availStdt != null and availStdt != '' and availEddt != null and availEddt != ''">
-		   AND AVAIL_STDT >= DATE_FORMAT(#{availStdt} , '%Y-%m-%d')
-		   AND AVAIL_EDDT <![CDATA[ <= ]]> DATE_FORMAT(#{availEddt} , '%Y-%m-%d')
-		</if>
-	</select>
-
-	<!-- 쿠폰 등록 -->
-	<insert id="couponInsert" parameterType="Coupon" keyProperty="cpnId">
-		/* TsaCoupon.couponInsert*/
-		INSERT INTO TB_COUPON (
-		    CPN_ID
-		  , CPN_NM
-		  , SITE_CD
-		  , AF_LINK_CD
-		  , CPN_TYPE
-		  , APPLY_SCOPE
-		  , DC_WAY
-		  , DC_PVAL
-		  , DC_MVAL
-		  , DC_AVAL
-		  , MAX_DC_AMT
-		  , PD_GB
-		  , AVAIL_STDT
-		  , AVAIL_EDDT
-		  , AVAIL_DAYS
-		  , CUST_PUB_LIMIT_QTY
-		  , TOT_PUB_LIMIT_QTY
-		  , ONE_PUB_QTY
-		  , DN_GB
-		  , DC_CD_GB
-		  , DOWN_STDT
-		  , DOWN_EDDT
-		  , BUY_LIMIT_AMT
-		  , PLAN_SQ
-		  , REISSUANCE
-		  , CPN_STAT
-		  , END_ALIM_YN
-		  , REG_NO
-		  , REG_DT
-		  , UPD_NO
-		  , UPD_DT
-		  , FIRST_ORD_YN
-		  , DOWN_ABL_YN
-		  , CUST_JOIN_STDT
-		  , CUST_JOIN_EDDT
-		  , BUY_STDT
-		  , BUY_EDDT
-		  , NEW_CUST_YN
-		) VALUES (
-		   #{cpnId}
-		  , #{cpnNm}
-		  , #{siteCd}
-		  , #{afLinkCd}
-		  , #{cpnType}
-		  , #{applyScope}
-		  , #{dcWay}
-		  , #{dcPval}
-		  , #{dcMval}
-		  , #{dcAval}
-		  , #{maxDcAmt}
-		  , #{pdGb}
-		  <choose>
-			  <when test='pdGb != null and pdGb == "P"'>
-		  , DATE_FORMAT(#{availStdt} , '%Y-%m-%d %H:%i:%s')
-		  , DATE_FORMAT(#{availEddt} , '%Y-%m-%d %H:%i:%s')
-		  , null
-			  </when>
-			  <when test='pdGb != null and pdGb == "D"' >
-		  , null
-		  , null
-		  , #{availDays}
-			  </when>
-		  </choose>
-		  , #{custPubLimitQty}
-		  , #{totPubLimitQty}
-		  , #{onePubQty}
-		  , #{dnGb}
-		  , #{dcCdGb}
-		  , DATE_FORMAT(#{downStdt} , '%Y-%m-%d %H:%i:%s')
-		  , DATE_FORMAT(#{downEddt} , '%Y-%m-%d %H:%i:%s')
-		  , #{buyLimitAmt}
-		  , #{planSq}
-		  , #{reissuance}
-		  , #{cpnStat}
-		  , #{endAlimYn}
-		  , #{regNo}
-		  , CURRENT_TIMESTAMP()
-		  , #{updNo}
-		  , CURRENT_TIMESTAMP()
-		  , #{firstOrdYn}
-		  , #{downAblYn}
-		  <choose>
-			  <when test='newCustYn != null and newCustYn == "Y"'>
-		  , DATE_FORMAT(#{custJoinStdt} , '%Y-%m-%d %H:%i:%s')
-		  , DATE_FORMAT(#{custJoinEddt} , '%Y-%m-%d %H:%i:%s')
-			  </when>
-			  <when test='newCustYn != null and newCustYn == "N"'>
-		  , null
-		  , null
-			  </when>
-		  </choose>
-		  <choose>
-			  <when test='firstOrdYn != null and firstOrdYn == "Y"'>
-		  , DATE_FORMAT(#{buyStdt} , '%Y-%m-%d %H:%i:%s')
-		  , DATE_FORMAT(#{buyEddt} , '%Y-%m-%d %H:%i:%s')
-			  </when>
-			  <when test='firstOrdYn != null and firstOrdYn == "N"'>
-		  , DATE_FORMAT(#{buyStdt} , '%Y-%m-%d %H:%i:%s')
-		  , DATE_FORMAT(#{buyEddt} , '%Y-%m-%d %H:%i:%s')
-			  </when>
-		  </choose>
-		  , #{newCustYn}
-		) ON DUPLICATE KEY UPDATE
-		CPN_NM = #{cpnNm}
-		, SITE_CD = #{siteCd}
-		, AF_LINK_CD = #{afLinkCd}
-		, CPN_TYPE = #{cpnType}
-		, APPLY_SCOPE = #{applyScope}
-		, DC_WAY = #{dcWay}
-		, DC_PVAL = #{dcPval}
-		, DC_MVAL = #{dcMval}
-		, DC_AVAL = #{dcAval}
-		, MAX_DC_AMT = #{maxDcAmt}
-		, PD_GB = #{pdGb}
-		<choose>
-			<when test='pdGb != null and pdGb == "P"'>
-				, AVAIL_STDT = DATE_FORMAT(#{availStdt} , '%Y-%m-%d %H:%i:%s')
-				, AVAIL_EDDT = DATE_FORMAT(#{availEddt} , '%Y-%m-%d %H:%i:%s')
-				, AVAIL_DAYS = null
-			</when>
-			<when test='pdGb != null and pdGb == "D"' >
-				, AVAIL_STDT = null
-				, AVAIL_EDDT = null
-				, AVAIL_DAYS = #{availDays}
-			</when>
-		</choose>
-		, CUST_PUB_LIMIT_QTY = #{custPubLimitQty}
-		, TOT_PUB_LIMIT_QTY = #{totPubLimitQty}
-		, ONE_PUB_QTY = #{onePubQty}
-		, DOWN_STDT = DATE_FORMAT(#{downStdt} , '%Y-%m-%d %H:%i:%s')
-		, DOWN_EDDT = DATE_FORMAT(#{downEddt} , '%Y-%m-%d %H:%i:%s')
-		, BUY_LIMIT_AMT = #{buyLimitAmt}
-		, PLAN_SQ = #{planSq}
-		, REISSUANCE = #{reissuance}
-		, CPN_STAT = #{cpnStat}
-		, END_ALIM_YN = #{endAlimYn}
-		, UPD_NO = #{updNo}
-		, UPD_DT = now()
-		, FIRST_ORD_YN = #{firstOrdYn}
-		, DOWN_ABL_YN = #{downAblYn}
-		<choose>
-			<when test='newCustYn != null and newCustYn == "Y"'>
-				, CUST_JOIN_STDT = DATE_FORMAT(#{custJoinStdt} , '%Y-%m-%d %H:%i:%s')
-				, CUST_JOIN_EDDT = DATE_FORMAT(#{custJoinEddt} , '%Y-%m-%d %H:%i:%s')
-			</when>
-			<when test='newCustYn != null and newCustYn == "N"'>
-				, CUST_JOIN_STDT = null
-				, CUST_JOIN_EDDT = null
-			</when>
-		</choose>
-		<choose>
-			<when test='firstOrdYn != null and firstOrdYn == "Y"'>
-				, BUY_STDT = DATE_FORMAT(#{buyStdt} , '%Y-%m-%d %H:%i:%s')
-				, BUY_EDDT = DATE_FORMAT(#{buyEddt} , '%Y-%m-%d %H:%i:%s')
-			</when>
-			<when test='firstOrdYn != null and firstOrdYn == "N"'>
-				, BUY_STDT = null
-				, BUY_EDDT = null
-			</when>
-		</choose>
-		, NEW_CUST_YN = #{newCustYn}
-	</insert>
-
-	<!-- 쿠폰조회 목록 -->
-	<select id="getCouponRetrieveList" parameterType="Coupon" resultType="Coupon">
-		/* TsaCoupon.getCouponRetrieveList */
-		SELECT A.CPN_ID                                               /*쿠폰ID*/
-		     , A.CPN_NM                                               /*쿠폰명*/
-		     , A.SITE_CD                                              /*사이트코드(공통코드G000)*/
-		     , A.CPN_TYPE                                             /*쿠폰유형(공통코드G230)*/
-		     , A.DC_WAY                                               /*할인방식(공통코드G240)*/
-		     , A.DC_PVAL                                              /*할인값(PC). 할인방식이 금액이면 할인금액, 율이면 할인율*/
-		     , A.DC_MVAL                                              /*할인값(모바일). 할인방식이 금액이면 할인금액, 율이면 할인율*/
-		     , A.MAX_DC_AMT                                           /*최고할인값. 할인방식이 금액이면 최고할인금액, 율이면 최고할인율*/
-		     , A.PD_GB                                                /*기간/일수구분(P 기간, D 일수)*/
-		     , DATE_FORMAT(A.AVAIL_STDT,'%Y%m%d%H%i%S') AS AVAIL_STDT /*유효시작일시(기간/일수구분 "P 기간"일 때 사용됨)*/
-		     , DATE_FORMAT(A.AVAIL_EDDT,'%Y%m%d%H%i%S') AS AVAIL_EDDT /*유효종료일시(기간/일수구분 "P 기간"일 때 사용됨)*/
-		     , A.AVAIL_DAYS                                           /*유효일수(기간/일수구분 "D 일수"일 때 사용됨)*/
-		     , A.CUST_PUB_LIMIT_QTY                                   /*고객당발행제한수량(0은 무제한)*/
-		     , A.TOT_PUB_LIMIT_QTY                                    /*총발행제한수량(0은 무제한)*/
-		     , A.ONE_PUB_QTY                                          /*1회발행수량*/
-		     , A.DN_GB                                                /*다운로드구분(A:자동다운로드, D:직접다운로드). 다운로드가능여부가 "Y 다운로드가능"일 때만 사용됨*/
-		     , A.BUY_LIMIT_AMT                                        /*구매제한금액(0은 제한없음)*/
-		FROM   TB_COUPON A
-		WHERE  A.SITE_CD = #{siteCd}
-		<if test="cpnId !=null and cpnId !=''">
-			AND	   A.CPN_ID = #{cpnId}
-		</if>
-		<if test="cpnNm !=null and cpnNm !=''">
-			AND	   A.CPN_NM LIKE CONCAT('%',#{cpnNm},'%')
-		</if>
-		<if test="cpnType !=null and cpnType !=''">
-			AND	   A.CPN_TYPE = #{cpnType}
-		</if>
-	</select>
-
-	<!-- 쿠폰 적용대상 등록 -->
-	<insert id="saveCouponRefVal" parameterType="CouponRefval" keyProperty="cpnRefvalSq">
-		/* TsaCoupon.saveCouponRefVal */
-		INSERT INTO TB_COUPON_REFVAL (
-		    CPN_ID
-		  , CPN_REFVAL_SQ
-		  , CPN_TYPE
-		  , CPN_TARGET
-		  , REF_VAL
-		  <if test='refFormalGb != null and refFormalGb != ""'>
-		  , REF_FORMAL_GB
-		  </if>
-		  <if test='refBrandCd != null and refBrandCd != ""'>
-		  , REF_BRAND_CD
-		  </if>
-		, REG_NO
-		, REG_DT
-		, UPD_NO
-		, UPD_DT
-		) VALUES (
-			#{cpnId}
-			, #{cpnRefvalSq}
-			, #{cpnType}
-			, #{cpnTarget}
-			, #{refVal}
-			<if test='refFormalGb != null and refFormalGb != ""'>
-			, #{refFormalGb}
-			</if>
-			 <if test='refBrandCd != null and refBrandCd != ""'>
-			 , #{refBrandCd}
-			 </if>
-			 , #{regNo}
-			 , CURRENT_TIMESTAMP()
-			 , #{updNo}
-			 , CURRENT_TIMESTAMP()
-		) ON DUPLICATE KEY UPDATE
-		REF_VAL = #{refVal}
-		, CPN_TYPE = #{cpnType}
-		, CPN_TARGET = #{cpnTarget}
-		, REF_FORMAL_GB = #{refFormalGb}
-		, REF_BRAND_CD = #{refBrandCd}
-		, DEL_YN = #{delYn}
-		, UPD_NO = #{updNo}
-		, UPD_DT = now()
-	</insert>
-
-	<!-- 쿠폰 입점업체 분담율 등록 -->
-	<insert id="saveCouponBurden" parameterType="CouponBurden">
-		/* TsaCoupon.saveCouponBurden */
-		INSERT INTO TB_COUPON_BURDEN( CPN_ID
-									, SUPPLY_COMP_CD
-									, BURDEN_RATE
-									, REG_NO
-									, REG_DT
-									, UPD_NO
-									, UPD_DT)
-		VALUES ( #{cpnId}
-			   , #{supplyCompCd}
-			   , #{burdenRate}
-			   , #{regNo}
-			   , CURRENT_TIMESTAMP()
-			   , #{updNo}
-			   , CURRENT_TIMESTAMP()
-		) ON DUPLICATE KEY UPDATE
-			BURDEN_RATE = #{burdenRate}
-			, UPD_NO = #{updNo}
-			, UPD_DT = now()
-	</insert>
-
-	<!-- 자사브랜드 조회-->
-	<select id="getSelfBrandList" resultType="CommonCode">
-		/* TsaCoupon.getSelfBrandList */
-		SELECT BRAND_CD  AS CD
-		     , BRAND_ENM AS CD_NM
-		  FROM TB_BRAND
-		 WHERE 1 = 1
-		   AND USE_YN = 'Y'
-		   AND SELF_YN = 'Y'
-		ORDER  BY SUPPLY_COMP_CD, DISP_ORD
-	</select>
-
-	<!-- 쿠폰 상세 조회-->
-	<select id="getCouponDetail" parameterType="int" resultType="Coupon">
-		/* TsaCoupon.getCouponDetail */
-		SELECT B.CPN_ID
-			 , B.CPN_NM
-			 , B.SITE_CD
-			 , B.AF_LINK_CD
-			 , B.CPN_TYPE
-			 , B.APPLY_SCOPE
-			 , B.DC_WAY
-			 , B.DC_PVAL
-			 , B.DC_MVAL
-			 , B.DC_AVAL
-			 , B.MAX_DC_AMT
-			 , B.PD_GB
-			 , B.AVAIL_STDT
-			 , B.AVAIL_EDDT
-			 , B.AVAIL_DAYS
-			 , B.CUST_PUB_LIMIT_QTY
-			 , B.TOT_PUB_LIMIT_QTY
-			 , B.ONE_PUB_QTY
-			 , B.DN_GB
-			 , B.DOWN_STDT
-			 , B.DOWN_EDDT
-			 , B.BUY_LIMIT_AMT
-			 , B.PLAN_SQ
-			 , B.REISSUANCE
-			 , B.CPN_STAT
-			 , B.END_ALIM_YN
-			 , B.FIRST_ORD_YN
-			 , B.DOWN_ABL_YN
-		     , B.DC_CD_GB
-			 , B.CUST_JOIN_STDT
-			 , B.CUST_JOIN_EDDT
-			 , B.BUY_STDT
-			 , B.BUY_EDDT
-			 , B.NEW_CUST_YN
-			 , (SELECT AF_CHANNEL
-			      FROM TB_AF_LINK A
-			     WHERE A.AF_LINK_CD = B.AF_LINK_CD) AS AF_CHANNEL
-			 , RC.RD_CPN_NM AS RD_CPN_NM
-  		  FROM TB_COUPON B
-		  LEFT OUTER JOIN (SELECT CPN_ID
-		  						, RD_CPN_NM
-							 FROM TB_RANDOM_COUPON
-		    				GROUP BY CPN_ID, RD_CPN_NM) RC
-		    ON B.CPN_ID = RC.CPN_ID
-		   AND B.DC_CD_GB = 'G233_10'		<!-- 시리얼 유형일 경우에만 랜덤쿠폰 검색 검색 -->
-    	 WHERE B.CPN_ID = #{value}
-	</select>
-
-	<!-- 쿠폰 발급 개수 조회 -->
-	<select id="getCouponIssueCnt" parameterType="int" resultType="int">
-		/* TsaCoupon.getCouponIssueCnt*/
-		SELECT COUNT(1)
-		  FROM TB_CUST_COUPON
-		 WHERE CPN_ID = #{cpnId}
-	</select>
-
-	<!-- 쿠폰 적용대상 조회 - 제외/적용 상품 -->
-	<select id="getCouponRefvalGoodsList" parameterType="CouponRefval" resultType="CouponRefval">
-		/* TsaCoupon.getCouponRefvalGoodsList */
-		SELECT FN_GET_CODE_NM('G073',B.GOODS_GB) AS GOODS_GB
-			 , B.GOODS_CD
-			 , B.GOODS_NM
-			 , C.BRAND_ENM
-			 , A.CPN_REFVAL_SQ
-		     , A.DEL_YN
-		  FROM TB_COUPON_REFVAL A
-		 INNER JOIN TB_GOODS B ON A.REF_VAL = B.GOODS_CD
-		 INNER JOIN TB_BRAND C ON B.BRAND_CD = C.BRAND_CD
-		 WHERE A.CPN_ID = #{cpnId}
-		   AND A.CPN_TARGET = #{cpnTarget}
-		   AND A.DEL_YN = 'N'
-		 ORDER BY A.CPN_REFVAL_SQ DESC
-	</select>
-
-	<!-- 쿠폰 적용대상 조회 - 브랜드 -->
-	<select id="getCouponRefvalBrandList" parameterType="CouponRefval" resultType="CouponRefval">
-		/* TsaCoupon.getCouponRefvalExceptGoodsList */
-		SELECT B.BRAND_CD
-			 , B.BRAND_ENM
-			 , A.CPN_REFVAL_SQ
-		     , A.DEL_YN
-		  FROM TB_COUPON_REFVAL A
-		 INNER JOIN TB_BRAND B ON A.REF_VAL = B.BRAND_CD
-		 WHERE A.CPN_ID = #{cpnId}
-		   AND A.CPN_TARGET = #{cpnTarget}
-		   AND A.DEL_YN = 'N'
-		 ORDER BY A.CPN_REFVAL_SQ DESC
-	</select>
-
-	<!-- 쿠폰적용대상 - 카테고리 조회 -->
-	<select id="getCouponRefvalCategoryList" parameterType="CouponRefval" resultType="CouponRefval">
-		/* TsaCoupon.getCouponRefvalCategoryList */
-		SELECT B.CATE_GB
-			 , A.REF_VAL AS CATE_NO
-			 , B.FULL_CATE_NM 					AS CATE_NM
-			 , B.SITE_CD
-			 , A.REF_FORMAL_GB					AS FORMAL_GB
-		     , A.REF_BRAND_CD					AS BRAND_CD
-			 , A.CPN_REFVAL_SQ
-		     , A.DEL_YN
-		  FROM TB_COUPON_REFVAL A
-		 INNER JOIN TB_CATE_4SRCH B ON A.REF_VAL = B.LEAF_CATE_NO
-		 WHERE A.CPN_ID = #{cpnId}
-		   AND A.CPN_TARGET = #{cpnTarget}
-		   AND A.DEL_YN = 'N'
-		 ORDER BY A.CPN_REFVAL_SQ DESC
-	</select>
-
-	<!-- 쿠폰 적용대상 - 공급처 조회 -->
-	<select id="getCouponRefvalSupplyCompList" parameterType="CouponRefval" resultType="CouponRefval">
-		/* TsaCoupon.getCouponRefvalSupplyCompList */
-		SELECT B.SUPPLY_COMP_CD
-			 , B.SUPPLY_COMP_NM
-			 , A.CPN_REFVAL_SQ
-		     , A.DEL_YN
-		  FROM TB_COUPON_REFVAL A
-		 INNER JOIN TB_SUPPLY_COMPANY B ON A.REF_VAL = B.SUPPLY_COMP_CD
-		 WHERE A.CPN_ID = #{cpnId}
-		   AND A.CPN_TARGET = #{cpnTarget}
-		   AND A.DEL_YN = 'N'
-		 ORDER BY A.CPN_REFVAL_SQ DESC
-	</select>
-
-	<!-- 쿠폰 입점업체 분담율 조회-->
-	<select id="getCouponBurdenList" parameterType="int" resultType="CouponBurden">
-		/* TsaCoupon.getCouponBurdenList */
-		SELECT SUPPLY_COMP_CD
-			 , BURDEN_RATE
-			 , DEL_YN
-			 , CPN_ID
-		  FROM TB_COUPON_BURDEN
-		 WHERE CPN_ID = #{value}
-		   AND DEL_YN = 'N'
-	</select>
-
-	<!-- 쿠폰 적용대상 수정-->
-	<update id="updateCouponRefval" parameterType="CouponRefval" >
-		/* TsaCoupon.updateCouponRefval */
-		UPDATE TB_COUPON_REFVAL
-		   SET DEL_YN = 'Y'
-			 , UPD_NO = #{updNo}
-			 , UPD_DT = CURRENT_TIMESTAMP()
-		 WHERE CPN_ID = #{cpnId}
-		   AND CPN_REFVAL_SQ IN
-		  <foreach collection="cpnRefvalSqArr" item="item" open="(" separator="," close=")">
-			#{item}
-		  </foreach>
-	</update>
-
-	<!-- 고객 쿠폰 발행 -->
-	<insert id="saveCouponCustPub" parameterType="CustCoupon">
-		/* TsaCoupon.saveCouponCustPub */
-		INSERT INTO TB_CUST_COUPON (
-		       CUST_NO
-		     , CPN_ID
-		     , AVAIL_STDT
-		     , AVAIL_EDDT
-		     , PUB_REASON
-		     , PUB_REASON_DTL
-		     , END_ALIM_SEND_YN
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		) VALUES (
-		       #{custNo}
-		     , #{cpnId}
-		     , DATE_FORMAT(#{availStdt} , '%Y%m%d%H%i%S')
-		     , DATE_FORMAT(#{availEddt} , '%Y%m%d%H%i%S')
-		     , #{pubReason}
-		     , #{pubReasonDtl}
-		     , #{endAlimSendYn}
-		     , #{regNo}
-		     , CURRENT_TIMESTAMP()
-		     , #{updNo}
-		     , CURRENT_TIMESTAMP()
-		)
-	</insert>
-
-	<!-- 특정 쿠폰 발급받은 회원 조회-->
-	<select id="getCouponIssueCustList" parameterType="CustCoupon" resultType="CustCoupon">
-		/* TsaCoupon.getCouponIssueCustList */
-		SELECT CUST_CPN_SQ
-			 , CUST_NO
-			 , CPN_ID
-			 , AVAIL_STDT
-			 , AVAIL_EDDT
-		  FROM TB_CUST_COUPON
-		 WHERE CPN_ID = #{cpnId}
-		   AND USED_DT IS NOT NULL
-	</select>
-
-	<!-- 특정 쿠폰 발급받은 고객 유효기간 수정-->
-	<update id="updateCustCouponAvailEddt" parameterType="CustCoupon">
-		/* TsaCoupon.updateCustCouponAvailEddt */
-		UPDATE TB_CUST_COUPON
-		   SET AVAIL_EDDT = DATE_FORMAT(#{availEddt} , '%Y-%m-%d')
-			 , UPD_NO = #{updNo}
-			 , UPD_DT = CURRENT_TIMESTAMP()
-		 WHERE CPN_ID = #{cpnId}
-		   AND USED_DT IS NOT NULL
-		   AND CUST_NO = #{custNo}
-		   AND CUST_CPN_SQ = #{custCpnSq}
-	</update>
-
-	<!-- 특정 쿠폰 발급받은 회원 조회-->
-	<select id="getSerialOverlapCheck" parameterType="Coupon" resultType="int">
-		/* TsaCoupon.getSerialOverlapCheck : 기간 내 중복 시리얼넘버 체크 */
-		WITH CHECK_DATA AS (
-		    SELECT C.CPN_ID
-				 , C.DOWN_STDT
-		    	 , C.DOWN_EDDT
-		    	 , C.AVAIL_STDT
-		    	 , C.AVAIL_EDDT
-		    	 , C.AVAIL_DAYS
-		    FROM TB_COUPON C
-			INNER JOIN (SELECT CPN_ID
-							 , RD_CPN_NM
-						FROM TB_RANDOM_COUPON
-						WHERE RD_CPN_NM = #{rdCpnNm}
-						GROUP BY CPN_ID, RD_CPN_NM ) RC
-		    ON C.CPN_ID = RC.CPN_ID
-		)
-		SELECT SUM(A.CNT) AS CNT
-		FROM ( SELECT COUNT(1) AS CNT		<!-- 다운 시작일이 겹치는 쿠폰번호 찾기 -->
-				FROM CHECK_DATA C
-				WHERE 1=1
-				AND C.DOWN_STDT >= STR_TO_DATE(#{downStdt}, '%Y-%m-%d %H:%i:%s')
-				AND C.DOWN_STDT <![CDATA[ <= ]]> STR_TO_DATE(#{downEddt}, '%Y-%m-%d %H:%i:%s')
-				UNION
-				SELECT COUNT(1) AS CNT		<!-- 다운 종료일이 겹치는 쿠폰번호 찾기 -->
-				FROM CHECK_DATA C
-				WHERE 1=1
-				AND C.DOWN_EDDT >= STR_TO_DATE(#{downStdt}, '%Y-%m-%d %H:%i:%s')
-				AND C.DOWN_EDDT <![CDATA[ <= ]]> STR_TO_DATE(#{downEddt}, '%Y-%m-%d %H:%i:%s')
-		      ) A
-	</select>
-
-	<!-- 특정 쿠폰 발급받은 회원 조회-->
-	<select id="getRandomCouponNmCnt" parameterType="String" resultType="int">
-		/* TsaCoupon.getRandomCouponNmCnt : 중복 시리얼넘버 체크 */
-		SELECT COUNT(1) AS CNT
-		FROM TB_RANDOM_COUPON
-		WHERE RD_CPN_NM = #{value}
-	</select>
-
-	<!-- 고객 쿠폰 발행 -->
-	<insert id="createRandomCouponInfo" parameterType="Coupon">
-		/* TsaCoupon.createRandomCouponInfo */
-		INSERT INTO TB_RANDOM_COUPON (
-			  RD_CPN_NM
-			, CPN_ID
-			, REG_NO
-			, REG_DT
-			, UPD_NO
-			, UPD_DT
-		) VALUES (
-			  #{rdCpnNm}
-			, #{cpnId}
-			, #{regNo}
-			, CURRENT_TIMESTAMP()
-			, #{updNo}
-			, CURRENT_TIMESTAMP()
-		)
-	</insert>
-
-	<!-- 특정 쿠폰 발급받은 회원 조회-->
-	<select id="getRandomCouponInfo" parameterType="int" resultType="CustCoupon">
-		/* TsaCoupon.getRandomCouponInfo */
-		SELECT RC.CPN_ID
-			 , RC.RD_CPN_NM
-		     , C.CUST_NO
-			 , C.CUST_ID
-			 , C.CUST_NM
-			 , DATE_FORMAT(CC.REG_DT, '%Y-%m-%d %H:%i:%s') AS REG_DT
-			 , DATE_FORMAT(CC.USED_DT, '%Y-%m-%d %H:%i:%s') AS USED_DT
-		FROM TB_RANDOM_COUPON RC
-		LEFT OUTER JOIN TB_CUSTOMER C
-		ON RC.CUST_NO = C.CUST_NO
-		LEFT OUTER JOIN TB_CUST_COUPON CC
-		ON RC.CPN_ID = CC.CPN_ID
-		AND C.CUST_NO = CC.CUST_NO
-		WHERE RC.CPN_ID = #{cpnId}
-	</select>
-
-	<insert id="createCouponCustGubun" parameterType="Coupon">
-		/* TsaCoupon.createCouponCustGubun */
-		INSERT INTO TB_COUPON_CUST_GBN (
-				 CPN_ID
-				, USABLE_CUST_GB
-				, REG_NO
-				, REG_DT
-		) VALUES (
-				#{cpnId}
-				, #{usableCustGb}
-				, #{regNo}
-				, CURRENT_TIMESTAMP()
-		)
-	</insert>
-
-	<insert id="createCouponCustGrade" parameterType="Coupon">
-		/* TsaCoupon.createCouponCustGrade */
-		INSERT INTO TB_COUPON_CUST_GRADE (
-			CPN_ID
-			, USABLE_CUST_GRADE
-			, REG_NO
-			, REG_DT
-		) VALUES (
-			#{cpnId}
-			, #{usableCustGrade}
-			, #{regNo}
-			, CURRENT_TIMESTAMP()
-		)
-	</insert>
-
-	<insert id="createCouponPayType" parameterType="Coupon">
-		/* TsaCoupon.createCouponPayType */
-		INSERT INTO TB_COUPON_PAYTYPE (
-			CPN_ID
-			, PAY_TYPE
-			, REG_NO
-			, REG_DT
-		) VALUES (
-			 #{cpnId}
-			 , #{payType}
-			 , #{regNo}
-			 , CURRENT_TIMESTAMP()
-		)
-	</insert>
-
-	<!-- 쿠폰사용가능고객구분 조회-->
-	<select id="getCouponCustGbList" parameterType="int" resultType="Coupon">
-		/* TsaCoupon.getCouponCustGbList */
-		SELECT CPN_ID
-			 , USABLE_CUST_GB
-		FROM TB_COUPON_CUST_GBN
-		WHERE CPN_ID = #{cpnId}
-	</select>
-
-	<!-- 쿠폰사용가능고객등급 조회-->
-	<select id="getCouponCustGradeList" parameterType="int" resultType="Coupon">
-		/* TsaCoupon.getCouponCustGradeList */
-		SELECT CPN_ID
-			 , USABLE_CUST_GRADE
-		FROM TB_COUPON_CUST_GRADE
-		WHERE CPN_ID = #{cpnId}
-	</select>
-
-	<!-- 쿠폰사용가능결제수단 조회-->
-	<select id="getCouponPayTypeList" parameterType="int" resultType="Coupon">
-		/* TsaCoupon.getCouponPayTypeList */
-		SELECT CPN_ID
-			 , PAY_TYPE
-		FROM TB_COUPON_PAYTYPE
-		WHERE CPN_ID = #{cpnId}
-	</select>
-
-	<!-- 쿠폰발급받은회원 조회-->
-	<select id="getCpnPubCustList" parameterType="int" resultType="Coupon">
-		/* TsaCoupon.getCpnPubCustList */
-		SELECT	A.CUST_NO
-			 ,B.CUST_NM
-			 ,B.CUST_GB
-			 ,FN_GET_CODE_NM('G100',B.CUST_GB) AS CUST_GB_NM
-			 ,B.CUST_GRADE
-			 ,FN_GET_CODE_NM('G110',B.CUST_GRADE) AS CUST_GRADE_NM
-			 ,A.AVAIL_STDT
-			 ,A.AVAIL_EDDT
-			 ,CASE WHEN A.USED_DT IS NOT NULL THEN 'Y'
-				   ELSE 'N' END USE_YN
-			 ,A.USED_DT
-			 ,A.PUB_REASON
-			 ,FN_GET_CODE_NM('G068',A.PUB_REASON) AS PUB_REASON_NM
-			 ,A.PUB_REASON_DTL
-			 ,A.REG_NO
-			 ,A.REG_DT
-		FROM 	TB_CUST_COUPON A
-		LEFT OUTER JOIN TB_CUSTOMER B
-		ON		A.CUST_NO = B.CUST_NO
-		WHERE 1=1
-		AND A.CPN_ID = #{cpnId}
-	</select>
-
-	<insert id="createLimitedTimeCoupon" parameterType="CouponLimitedTime" keyProperty="limitCpnId">
-		/* TsaCoupon.createLimitedTimeCoupon */
-		INSERT INTO TB_LIMITED_TIME_COUPON (
-				  LIMIT_CPN_ID
-				, LIMIT_CPN_NM
-				, CPN_ID
-				, DOWN_LIMIT_QTY
-				, DOWN_STDT
-				, DOWN_EDDT
-				, DEL_YN
-				, REG_NO
-				, REG_DT
-				, UPD_NO
-				, UPD_DT
-		) VALUES (
-				#{limitCpnId}
-				 ,#{limitCpnNm}
-				 ,#{cpnId}
-				 ,#{downLimitQty}
-				 ,DATE_FORMAT(#{downStdt},'%Y-%m-%d %H:%i:%s')
-				 ,DATE_FORMAT(#{downEddt},'%Y-%m-%d %H:%i:%s')
-				 ,'N'
-				 ,#{regNo}
-				 ,CURRENT_TIMESTAMP()
-				 ,#{updNo}
-				 ,CURRENT_TIMESTAMP()
-		) ON DUPLICATE KEY UPDATE
-			LIMIT_CPN_NM = #{limitCpnNm}
-			, DOWN_LIMIT_QTY = #{downLimitQty}
-			, DOWN_STDT = DATE_FORMAT(#{downStdt},'%Y-%m-%d %H:%i:%s')
-			, DOWN_EDDT = DATE_FORMAT(#{downEddt},'%Y-%m-%d %H:%i:%s')
-			, DEL_YN = 'N'
-			, UPD_NO = #{updNo}
-			, UPD_DT = CURRENT_TIMESTAMP()
-	</insert>
-
-	<select id="getLimitedTimeCouponList" parameterType="int" resultType="CouponLimitedTime">
-		/* TsaCoupon.getLimitedTimeCouponList */
-		SELECT	LIMIT_CPN_ID
-				,LIMIT_CPN_NM
-				,CPN_ID
-				,DOWN_LIMIT_QTY
-				,DOWN_STDT
-				,DOWN_EDDT
-		     	,DEL_YN
-				,REG_NO
-				,REG_DT
-				,UPD_NO
-				,UPD_DT
-		  FROM	TB_LIMITED_TIME_COUPON
-		 WHERE	1=1
-		   AND  CPN_ID = #{cpnId}
-		   AND  DEL_YN = 'N'
-	</select>
-
-	<!-- 선착순쿠폰 삭제 -->
-	<update id="updateLimitedTimeCouponList" parameterType="CouponLimitedTime" >
-		/* TsaCoupon.updateLimitedTimeCouponList */
-		UPDATE TB_LIMITED_TIME_COUPON
-		SET DEL_YN = 'Y'
-		, UPD_NO = #{updNo}
-		, UPD_DT = CURRENT_TIMESTAMP()
-		WHERE CPN_ID = #{cpnId}
-		AND LIMIT_CPN_ID IN
-		<foreach collection="arrLimitCpnId" item="item" index="index"  open="(" close=")" separator=",">
-			#{item}
-		</foreach>
-	</update>
-
-	<update id="updateCouponStat" parameterType="Coupon">
-		/* TsaCoupon.updateCouponStat */
-		UPDATE TB_COUPON SET
-		CPN_STAT = #{cpnStat}
-		<if test="cpnStat == 'G232_14'">
-			, DEL_YN = 'Y'
-		</if>
-		, UPD_NO = #{updNo}
-		, UPD_DT = CURRENT_TIMESTAMP()
-		WHERE CPN_ID = #{cpnId}
-	</update>
-	
-	<update id="updateCouponMstInfo" parameterType="Coupon">
-		/* TsaCoupon.updateCouponMstInfo */
-		UPDATE	TB_COUPON	SET
-		CPN_NM = #{cpnNm}
-		, SITE_CD = #{siteCd}
-		, AF_LINK_CD = #{afLinkCd}
-		, CPN_TYPE = #{cpnType}
-		, APPLY_SCOPE = #{applyScope}
-		, DC_WAY = #{dcWay}
-		, DC_PVAL = #{dcPval}
-		, DC_MVAL = #{dcMval}
-		, DC_AVAL = #{dcAval}
-		, MAX_DC_AMT = #{maxDcAmt}
-		, PD_GB = #{pdGb}
-		<choose>
-			<when test='pdGb != null and pdGb == "P"'>
-				, AVAIL_STDT = DATE_FORMAT(#{availStdt} , '%Y-%m-%d %H:%i:%s')
-				, AVAIL_EDDT = DATE_FORMAT(#{availEddt} , '%Y-%m-%d %H:%i:%s')
-				, AVAIL_DAYS = null
-			</when>
-			<when test='pdGb != null and pdGb == "D"' >
-				, AVAIL_STDT = null
-				, AVAIL_EDDT = null
-				, AVAIL_DAYS = #{availDays}
-			</when>
-		</choose>
-		, CUST_PUB_LIMIT_QTY = #{custPubLimitQty}
-		, TOT_PUB_LIMIT_QTY = #{totPubLimitQty}
-		, ONE_PUB_QTY = #{onePubQty}
-		, DOWN_STDT = DATE_FORMAT(#{downStdt} , '%Y-%m-%d %H:%i:%s')
-		, DOWN_EDDT = DATE_FORMAT(#{downEddt} , '%Y-%m-%d %H:%i:%s')
-		, BUY_LIMIT_AMT = #{buyLimitAmt}
-		, PLAN_SQ = #{planSq}
-		, REISSUANCE = #{reissuance}
-		, CPN_STAT = #{cpnStat}
-		, END_ALIM_YN = #{endAlimYn}
-		, UPD_NO = #{updNo}
-		, UPD_DT = CURRENT_TIMESTAMP()
-		, FIRST_ORD_YN = #{firstOrdYn}
-		, DOWN_ABL_YN = #{downAblYn}
-		<choose>
-			<when test='newCustYn != null and newCustYn == "Y"'>
-				, CUST_JOIN_STDT = DATE_FORMAT(#{custJoinStdt} , '%Y-%m-%d %H:%i:%s')
-				, CUST_JOIN_EDDT = DATE_FORMAT(#{custJoinEddt} , '%Y-%m-%d %H:%i:%s')
-			</when>
-			<when test='newCustYn != null and newCustYn == "N"'>
-				, CUST_JOIN_STDT = null
-				, CUST_JOIN_EDDT = null
-			</when>
-		</choose>
-		<choose>
-			<when test='firstOrdYn != null and firstOrdYn == "Y"'>
-				, BUY_STDT = DATE_FORMAT(#{buyStdt} , '%Y-%m-%d %H:%i:%s')
-				, BUY_EDDT = DATE_FORMAT(#{buyEddt} , '%Y-%m-%d %H:%i:%s')
-			</when>
-			<when test='firstOrdYn != null and firstOrdYn == "N"'>
-				, BUY_STDT = null
-				, BUY_EDDT = null
-			</when>
-		</choose>
-		, NEW_CUST_YN = #{newCustYn}
-		WHERE CPN_ID = #{cpnId}
-	</update>
-	
-	<delete id="deleteCouponCustGubun" parameterType="Coupon">
-		/* TsaCoupon.deleteCouponCustGubun */
-		DELETE FROM	TB_COUPON_CUST_GBN
-		WHERE	CPN_ID = #{cpnId}
-	</delete>
-
-	<delete id="deleteCouponCustGrade" parameterType="Coupon">
-		/* TsaCoupon.deleteCouponCustGrade */
-		DELETE FROM	TB_COUPON_CUST_GRADE
-		WHERE	CPN_ID = #{cpnId}
-	</delete>
-
-	<delete id="deleteCouponPayType" parameterType="Coupon">
-		/* TsaCoupon.deleteCouponPayType */
-		DELETE FROM	TB_COUPON_PAYTYPE
-		WHERE	CPN_ID = #{cpnId}
-	</delete>
-	
-	<update id="deleteCouponRefVal" parameterType="Coupon">
-		/* TsaCoupon.deleteCouponRefVal */
-		UPDATE TB_COUPON_REFVAL SET
-			DEL_YN = 'Y'
-			, UPD_NO = #{updNo}
-			, UPD_DT = CURRENT_TIMESTAMP
-		WHERE CPN_ID = #{cpnId}
-		  AND DEL_YN = 'N'
-	</update>
-
-	<update id="deleteCouponBurden" parameterType="Coupon">
-		/* TsaCoupon.deleteCouponBurden */
-		UPDATE TB_COUPON_BURDEN SET
-			DEL_YN = 'Y'
-			, UPD_NO = #{updNo}
-			, UPD_DT = CURRENT_TIMESTAMP
-		WHERE CPN_ID = #{cpnId}
-		  AND DEL_YN = 'N'
-	</update>
-
-	<update id="deleteLimitedTimeCoupon" parameterType="Coupon">
-		/* TsaCoupon.deleteLimitedTimeCoupon */
-		UPDATE TB_LIMITED_TIME_COUPON SET
-			DEL_YN = 'Y'
-			, UPD_NO = #{updNo}
-			, UPD_DT = CURRENT_TIMESTAMP
-		WHERE CPN_ID = #{cpnId}
-		  AND DEL_YN = 'N'
-	</update>
-
-</mapper>

+ 122 - 6
src/main/java/com/style24/persistence/mybatis/shop/TsaDsiplay.xml

@@ -580,12 +580,13 @@
 
 	<!-- 상품별카테고리전시관리 목록 조회 -->
 	<select id="getGoodsCategoryList" parameterType="GoodsCategory" resultType="GoodsCategory">
+		/* TsaDisplay.getGoodsCategoryList */
 		SELECT	Z.*
 		FROM	(
 			SELECT	@rownum := @rownum + 1 AS RNUM
 					,A.*
-					, CASE WHEN A.GOODS_TYPE = 'G056_S' THEN (SELECT NVL(SUM(CURR_STOCK_QTY), 0) - NVL(SUM(BASE_STOCK_QTY), 0) AS CURR_STOCK_QTY FROM VW_STOCK_COMPOSE WHERE GOODS_CD = A.GOODS_CD)
-					ELSE (SELECT NVL(SUM(CURR_STOCK_QTY), 0) - NVL(SUM(BASE_STOCK_QTY), 0) AS CURR_STOCK_QTY FROM VW_STOCK WHERE GOODS_CD = A.GOODS_CD)
+					, 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
 			FROM	(
 				SELECT	'카테고리확인' AS FULL_CATE_NM
@@ -787,7 +788,7 @@
 				VALUES (
 				    #{cateCd}
 				    ,#{goodsCd}
-				    ,(SELECT	NVL((MAX(DISP_ORD) + 1), 1) AS DISP_ORD
+				    ,(SELECT	IFNULL((MAX(DISP_ORD) + 1), 1) AS DISP_ORD
 				        FROM	TB_CATE_GOODS ALIAS_FOR_SUBQUERY
 				        WHERE   CATE_NO = #{cateCd})
 				    ,#{regNo}
@@ -939,6 +940,121 @@
 	<select id="getCategoryGoodsListCount" parameterType="CategoryGoods" resultType="int">
 		/* TsaDisplay.getCategoryGoodsListCount */
 		SELECT COUNT(*)
+		FROM ( SELECT A.GOODS_CD
+					, A.CATE_NO
+					, A.DISP_ORD
+					, A.REG_NO
+					, A.REG_DT
+				FROM TB_CATE_GOODS A
+				WHERE 1=1
+				  AND A.CATE_NO IN (
+				      			SELECT LEAF_CATE_NO
+								  FROM TB_CATE_4SRCH
+								 WHERE 1=1
+								<if test='selLvl == "3"'>
+									AND CATE1_NO  = #{cate1No}
+								</if>
+								<if test='selLvl == "4"'>
+									AND CATE2_NO  = #{cate2No}
+								</if>
+								<if test='selLvl == "5"'>
+									AND CATE3_NO  = #{cate3No}
+								</if>
+								<if test='selLvl == "6"'>
+									AND CATE4_NO  = #{cate4No}
+								</if>
+				)
+		) A
+		<if test="searchGb == null or searchGb =='BASIC'">
+			, TB_GOODS G
+		</if>
+		<if test="searchGb != null and searchGb =='EXCEL'">
+			, (SELECT G.*
+			, TMP_DISP_ORD
+			FROM TB_GOODS G
+			, (SELECT SEARCH_CD, MIN(DISP_ORD) AS TMP_DISP_ORD
+			FROM TB_SEARCH_DATA
+			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||'%'
+			) G
+		</if>
+		WHERE A.GOODS_CD = G.GOODS_CD
+	</select>
+
+	<select id="getCategoryGoodsList" parameterType="CategoryGoods" resultType="CategoryGoods">
+		/* TsaDisplay.getCategoryGoodsList */
+		SELECT Z.*
+		FROM ( SELECT @rownum := @rownum + 1 AS RNUM
+				, A.*
+				FROM ( SELECT G.GOODS_CD
+							, G.GOODS_TNM
+							, G.GOODS_NM
+							, A.CATE_NO
+							, A.DISP_ORD
+							, G.GOODS_TYPE
+							, G.TAG_PRICE
+							, G.LIST_PRICE
+							, G.CURR_PRICE
+							, G.DC_RATE
+							, G.GOODS_STAT
+							, G.BRAND_CD
+							, A.REG_NO
+							, A.REG_DT
+							, G.SUPPLY_GOODS_CD
+							, G.STYLE_YEAR
+							, IFNULL(G.FORMAL_GB,'10') AS FORMAL_GB
+						FROM ( SELECT A.GOODS_CD
+									, A.CATE_NO
+									, A.DISP_ORD
+									, A.REG_NO
+									, A.REG_DT
+								FROM TB_CATE_GOODS A
+								WHERE 1=1
+								AND A.CATE_NO IN ( SELECT LEAF_CATE_NO
+													FROM TB_CATE_4SRCH
+													WHERE 1=1
+												<if test='selLvl == "3"'>
+													AND CATE1_NO  = #{cate1No}
+												</if>
+												<if test='selLvl == "4"'>
+													AND CATE2_NO  = #{cate2No}
+												</if>
+												<if test='selLvl == "5"'>
+													AND CATE3_NO  = #{cate3No}
+												</if>
+												<if test='selLvl == "6"'>
+													AND CATE4_NO  = #{cate4No}
+												</if>
+								)
+					) A
+				<if test="searchGb == null or searchGb =='BASIC'">
+					, TB_GOODS G
+				</if>
+				<if test="searchGb != null and searchGb =='EXCEL'">
+					, (SELECT G.*
+					, TMP_DISP_ORD
+					FROM TB_GOODS G
+					, (SELECT SEARCH_CD, MIN(DISP_ORD) AS TMP_DISP_ORD
+					FROM TB_SEARCH_DATA
+					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||'%'
+					) G
+				</if>
+				JOIN ( SELECT @rownum := 0) R
+				WHERE A.GOODS_CD = G.GOODS_CD
+				ORDER BY A.DISP_ORD ASC, G.UPD_DT DESC, G.CURR_PRICE DESC, G.GOODS_CD ASC
+		<include refid="getListPagingCondition_sql"/>
+	</select>
+
+	<select id="getCategoryGoodsListCount_old" parameterType="CategoryGoods" resultType="int">
+		/* TsaDisplay.getCategoryGoodsListCount_old */
+		SELECT COUNT(*)
 		FROM ( SELECT A.GOODS_CD
 					, A.CATE_NO
 					, A.DISP_ORD
@@ -989,8 +1105,8 @@
 		WHERE A.GOODS_CD = G.GOODS_CD
 	</select>
 
-	<select id="getCategoryGoodsList" parameterType="CategoryGoods" resultType="CategoryGoods">
-		/* TsaDisplay.getCategoryGoodsList */
+	<select id="getCategoryGoodsList_old" parameterType="CategoryGoods" resultType="CategoryGoods">
+		/* TsaDisplay.getCategoryGoodsList_old */
 		SELECT Z.*
 		FROM ( SELECT @rownum := @rownum + 1 AS RNUM
 					, A.*
@@ -1010,7 +1126,7 @@
 						   , A.REG_DT
 						   , G.SUPPLY_GOODS_CD
 						   , G.STYLE_YEAR
-						   , NVL(G.FORMAL_GB,'10') AS FORMAL_GB
+						   , IFNULL(G.FORMAL_GB,'10') AS FORMAL_GB
 					   FROM ( SELECT A.GOODS_CD
 								   , A.CATE_NO
 								   , A.DISP_ORD

+ 52 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaFreegiftPromotion.xml

@@ -430,4 +430,56 @@
 			, UPD_DT = CURRENT_TIMESTAMP
 		WHERE FREEGIFT_SQ = #{freegiftSq}
 	</update>
+
+	<!-- 사은품 프로모션 지급 사은품 정보 삭제 -->
+	<delete id="deleteFreegiftGoodsApply" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.deleteFreegiftGoodsApply : 적용 업체 및 브랜드 목록 제거 */
+		DELETE FROM TB_FREEGIFT_GOODS_APPLY
+			  WHERE FREEGIFT_SQ = #{freegiftSq}
+	</delete>
+
+	<!-- 실사용 업체/브랜드 리스트 등록 -->
+	<insert id="insertFreegiftGoodsApplyList" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.insertFreegiftGoodsApplyList : 실사용 업체/브랜드 리스트 등록 */
+		INSERT INTO TB_FREEGIFT_GOODS_APPLY
+		SELECT FREEGIFT_SQ
+			 , TARGET_GB
+			 , TARGET_VAL
+			 , #{regNo}
+			 , NOW()
+		  FROM TB_FREEGIFT_GOODS
+		 WHERE 1=1
+		   AND FREEGIFT_SQ = #{freegiftSq}
+		   AND DEL_YN = 'N'
+		   AND TARGET_GB IN ('G260_12', 'G260_13')
+	</insert>
+
+	<!-- 실사용 업체/브랜드 리스트 등록 -->
+	<insert id="insertFreegiftGoodsApplyCompanyOrBrandList" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.insertFreegiftGoodsApplyList : 실사용 업체/브랜드 리스트 등록 */
+		INSERT INTO TB_FREEGIFT_GOODS_APPLY
+		SELECT FG.FREEGIFT_SQ
+		<if test="targetGb == 'G260_13'">		<!-- 업체일 경우 업체에 등록된 브랜드 코드 입력 -->
+		     , 'G260_12'
+		     , BS.BRAND_CD
+		</if>
+		<if test="targetGb == 'G260_12'">		<!-- 브랜드일 경우 업체에 등록된 업체 코드 입력 -->
+			, 'G260_13'
+			 , BS.SUPPLY_COMP_CD
+		</if>
+			 , #{regNo}
+			 , NOW()
+		  FROM TB_FREEGIFT_GOODS FG
+		 INNER JOIN TB_BRAND_SUPPLY BS
+		<if test="targetGb == 'G260_13'">
+			ON FG.TARGET_VAL = BS.SUPPLY_COMP_CD
+		</if>
+		<if test="targetGb == 'G260_12'">
+			ON FG.TARGET_VAL = BS.BRAND_CD
+		</if>
+		 WHERE 1=1
+		   AND FG.FREEGIFT_SQ = #{freegiftSq}
+		   AND FG.TARGET_GB = #{targetGb}
+		   AND FG.DEL_YN = 'N'
+	</insert>
 </mapper>

+ 5 - 10
src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -1032,8 +1032,6 @@
 		/* TsaGoods.createGoodsHst */
 		INSERT INTO TB_GOODS_HST 
 		(       GOODS_CD
-		      , PRODUCT_NO
-		      , PRODUCT_CODE
 		      , BRAND_CD
 		      , ITEMKIND_CD
 		      , GOODS_NM
@@ -1089,8 +1087,6 @@
 		      , UPD_DT
 		)
 		SELECT GOODS_CD            
-		     , PRODUCT_NO
-		     , PRODUCT_CODE
 		     , BRAND_CD            
 		     , ITEMKIND_CD         
 		     , GOODS_NM            
@@ -1426,7 +1422,7 @@
 		     , A.DISP_ORD
 		     , A.DISP_YN
 		     , COUNT(*) OVER(PARTITION BY A.GOODS_CD ) AS RCOUNT
-		     , ROW_NUMBER() OVER(PARTITION BY A.GOODS_CD ORDER BY A.DISP_ORD) AS RNUM
+		     , ROW_NUMBER() OVER(PARTITION BY A.GOODS_CD ORDER BY A.DISP_ORD, A.OPT_CD1, A.OPT_CD2) AS RNUM
 		FROM  TMP_GOODS C 
 		INNER JOIN TB_OPTION A ON C.COMPS_GOODS_CD = A.GOODS_CD 
 		LEFT OUTER JOIN (
@@ -1443,7 +1439,7 @@
 		             AND A.OPT_CD = B.OPT_CD)
 		WHERE 1 = 1
 		AND C.GOODS_CD = #{goodsCd}
-		ORDER BY C.DISP_ORD, A.DISP_ORD
+		ORDER BY C.DISP_ORD, A.DISP_ORD, A.OPT_CD1, A.OPT_CD2
 	</select>
 	
 	<!-- 상품 색상목록 조회 -->
@@ -1509,8 +1505,6 @@
 		/* TsaGoods.createGoods */
 		INSERT INTO TB_GOODS (
 		    GOODS_CD
-		  , PRODUCT_NO
-		  , PRODUCT_CODE
 		  , BRAND_CD
 		  , ITEMKIND_CD
 		  , GOODS_NM
@@ -1554,8 +1548,6 @@
 		)
 		VALUES(
 		    #{goodsCd}
-		  , IFNULL(#{productNo},0)
-		  , IFNULL(#{productCode},0)
 		  , #{brandCd}
 		  , #{itemkindCd}
 		  , IFNULL(#{goodsNm},'상품명없음')
@@ -3575,6 +3567,7 @@
 		     , SUBSTRING_INDEX(SYS_IMG_NM , '/', -1) AS SYS_IMG_NM  /* S0001/20201221/14505664_L.jpg */
 		     , SUBSTRING_INDEX(SYS_IMG_NM , '/', 2) AS SYS_IMG_URL
 		     , DEFAULT_IMG_YN
+		     , MOUSEOVER_IMG_YN
 		FROM   TB_GOODS_IMG
 		WHERE  GOODS_CD = #{goodsCd}
 		AND    COLOR_CD = #{colorCd}
@@ -3609,6 +3602,7 @@
 		     , DISP_ORD
 		     , SYS_IMG_NM
 		     , DEFAULT_IMG_YN
+		     , MOUSEOVER_IMG_YN
 		     , REG_NO
 		     , REG_DT
 		)
@@ -3618,6 +3612,7 @@
 		     , #{dispOrd}
 		     , #{sysImgNm}
 		     , #{defaultImgYn}
+		     , #{mouseoverImgYn}
 		     , #{regNo}
 		     , NOW()
 		)

+ 89 - 31
src/main/java/com/style24/persistence/mybatis/shop/TsaMorebetter.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.style24.admin.biz.dao.TsaMorebetterDao">
 	<!-- // CSB 진행 -->
 	<select id="getMorebetterListCount" parameterType="MoreBetter" resultType="int">
-		/* TsaMarketing.getMorebetterListCount */
+		/* TsaMorebetter.getMorebetterListCount */
 		SELECT  COUNT(*) AS TOTCNT
 		FROM	TB_TMTB T
 		WHERE	1=1
@@ -21,7 +21,7 @@
 	</select>
 
 	<select id="getMorebetterList" parameterType="MoreBetter" resultType="MoreBetter">
-		/* TsaMarketing.getMorebetterList */
+		/* TsaMorebetter.getMorebetterList */
 		SELECT Z.*
 		FROM(
 			SELECT @rownum := @rownum + 1 AS RNUM
@@ -70,7 +70,7 @@
 	</sql>
 
 	<select id="getMorebetterMstInfo" parameterType="Integer" resultType="MoreBetter">
-		/* TsaMarketing.getMorebetterMstInfo */
+		/* TsaMorebetter.getMorebetterMstInfo */
 		SELECT	   	   TT.TMTB_SQ
 					 , TT.TMTB_NM
 					 , TT.TMTB_STAT
@@ -106,7 +106,7 @@
 	</select>
 
 	<select id="getMorebetterSectionValList" parameterType="Integer" resultType="MoreBetterSection">
-		/* TsaMarketing.getMorebetterSectionValList */
+		/* TsaMorebetter.getMorebetterSectionValList */
 		SELECT    TS.TMTB_SQ
 				 ,TS.TMTB_SECTION_SQ
 				 ,TV.TMTB_VAL_SQ
@@ -125,11 +125,12 @@
 		AND		TS.TMTB_SECTION_SQ = TV.TMTB_SECTION_SQ
 		WHERE 	1=1
 		  AND 	TS.TMTB_SQ = #{tmtbSq}
+		  AND   TS.DEL_YN = 'N'
 		ORDER BY TS.TMTB_SQ, TS.TMTB_SECTION_SQ, TV.TMTB_VAL_SQ
 	</select>
 
 	<select id="getMorebetterSupplyCompList" parameterType="MoreBetterGoods" resultType="MoreBetterGoods">
-		/* TsaMarketing.getMorebetterSupplyCompList */
+		/* TsaMorebetter.getMorebetterSupplyCompList */
 		SELECT 	 TMTB_GOODS_SQ
 				 , TMTB_SQ
 				 , GOODS_GB
@@ -146,10 +147,11 @@
 		WHERE 1=1
 		  AND TMTB_SQ = #{tmtbSq}
 		  AND TARGET_GB = 'G260_13'
+		  AND DEL_YN = 'N'
 	</select>
 
 	<select id="getMorebetterBrandList" parameterType="MoreBetterGoods" resultType="MoreBetterGoods">
-		/* TsaMarketing.getMorebetterBrandList */
+		/* TsaMorebetter.getMorebetterBrandList */
 		SELECT 	 TMTB_GOODS_SQ
 				 , TMTB_SQ
 				 , GOODS_GB
@@ -171,10 +173,11 @@
 		WHERE 1=1
 		  AND TMTB_SQ = #{tmtbSq}
 		  AND TARGET_GB = 'G260_12'
+		  AND DEL_YN = 'N'
 	</select>
 
 	<select id="getMorebetterApplyGoodsList" parameterType="MoreBetterGoods" resultType="MoreBetterGoods">
-		/* TsaMarketing.getMorebetterApplyGoodsList */
+		/* TsaMorebetter.getMorebetterApplyGoodsList */
 		SELECT 	 A.TMTB_GOODS_SQ
 				 , A.TMTB_SQ
 				 , B.TMTB_APPLY_GOODS_SQ
@@ -199,10 +202,11 @@
 		  AND A.TMTB_SQ = #{tmtbSq}
 		  AND A.TARGET_GB = 'G260_10'
 		  AND A.GOODS_GB IN ('G800_10','G800_20')
+ 		  AND A.DEL_YN = 'N'
 	</select>
 
 	<select id="getMorebetterExceptGoodsList" parameterType="MoreBetterGoods" resultType="MoreBetterGoods">
-		/* TsaMarketing.getMorebetterExceptGoodsList */
+		/* TsaMorebetter.getMorebetterExceptGoodsList */
 		SELECT 	 A.TMTB_GOODS_SQ
 				 , A.TMTB_SQ
 				 , B.TMTB_APPLY_GOODS_SQ
@@ -227,10 +231,11 @@
 		  AND A.TMTB_SQ = #{tmtbSq}
 		  AND A.TARGET_GB = 'G260_10'
 		  AND A.GOODS_GB IN ('G800_30')
+		  AND A.DEL_YN = 'N'
 	</select>
 
 	<select id="getMorebetterBurdenList" parameterType="Integer" resultType="MoreBetterBurden">
-		/* TsaMarketing.getMorebetterBurdenList */
+		/* TsaMorebetter.getMorebetterBurdenList */
 		SELECT 		TB_TMTB_BURDEN_SQ
 				   , TMTB_SQ
 				   , TMTB_SUPPLY_CD
@@ -243,10 +248,11 @@
 		FROM TB_TMTB_BURDEN
 		WHERE 1=1
 		  AND TMTB_SQ = #{tmtbSq}
+		  AND USE_YN = 'Y'
 	</select>
 
 	<insert id="saveMorebetterMst" parameterType="MoreBetter" keyProperty="tmtbSq">
-		/* TsaMarketing.saveMorebetterMst */
+		/* TsaMorebetter.saveMorebetterMst */
 		INSERT INTO TB_TMTB(
 		        TMTB_SQ
 		        ,TMTB_NM
@@ -285,7 +291,7 @@
 	</insert>
 
 	<insert id="saveMorebetterGoods" parameterType="MoreBetterGoods" keyProperty="tmtbGoodsSq">
-		/* TsaMarketing.saveMorebetterGoods */
+		/* TsaMorebetter.saveMorebetterGoods */
 		INSERT INTO TB_TMTB_GOODS(
 		         	 TMTB_GOODS_SQ
 		        	,TMTB_SQ
@@ -314,12 +320,13 @@
 						 GOODS_GB = #{goodsGb}
 						,TARGET_GB = #{targetGb}
 						,TARGET_VAL = #{targetVal}
+			    		,DEL_YN = #{delYn}
 						,UPD_NO = #{updNo}
 						,UPD_DT = NOW()
 	</insert>
 
 	<insert id="saveMorebetterApplyGoods" parameterType="MoreBetterGoods" keyProperty="tmtbApplyGoodsSq">
-		/* TsaMarketing.saveMorebetterApplyGoods */
+		/* TsaMorebetter.saveMorebetterApplyGoods */
 		INSERT INTO TB_TMTB_APPLY_GOODS(
 					TMTB_APPLY_GOODS_SQ
 					,TMTB_SQ
@@ -350,7 +357,7 @@
 	</insert>
 
 	<insert id="saveMorebetterSection" parameterType="MoreBetterSection" keyProperty="tmtbSectionSq">
-		/* TsaMarketing.saveMorebetterSection */
+		/* TsaMorebetter.saveMorebetterSection */
 		INSERT INTO TB_TMTB_SECTION(
 					 TMTB_SECTION_SQ
 					,TMTB_SQ
@@ -376,12 +383,13 @@
 			ON DUPLICATE KEY UPDATE
 						 SECTION_GB = #{sectionGb}
 						,SECTION_VAL = #{sectionVal}
+						,DEL_YN = #{delYn}
 						,UPD_NO = #{updNo}
 						,UPD_DT = NOW()
 	</insert>
 
 	<insert id="saveMorebetterVal" parameterType="MoreBetterSection" keyProperty="tmtbValSq">
-		/* TsaMarketing.saveMorebetterVal */
+		/* TsaMorebetter.saveMorebetterVal */
 		INSERT INTO TB_TMTB_VAL(
 					 TMTB_VAL_SQ
 					,TMTB_SQ
@@ -409,12 +417,13 @@
 			ON DUPLICATE KEY UPDATE
 						 DC_WAY = #{dcWay}
 						,DC_VAL = #{dcVal}
+						,DEL_YN = #{delYn}
 						,UPD_NO = #{updNo}
 						,UPD_DT = NOW()
 	</insert>
 
 	<insert id="saveMorebetterBurden" parameterType="MoreBetterBurden" keyProperty="tbTmtbBurdenSq">
-		/* TsaMarketing.saveMorebetterBurden */
+		/* TsaMorebetter.saveMorebetterBurden */
 		INSERT INTO TB_TMTB_BURDEN(
 								  TB_TMTB_BURDEN_SQ
 		                          ,TMTB_SQ
@@ -445,7 +454,7 @@
 	</insert>
 
 	<delete id="deleteTmtbSupplyCompanyList" parameterType="MoreBetterGoods">
-		/* TsaMarketing.deleteTmtbSupplyCompanyList */
+		/* TsaMorebetter.deleteTmtbSupplyCompanyList */
 		DELETE FROM TB_TMTB_GOODS
 		WHERE TMTB_SQ =  #{tmtbSq}
 		<if test="arrCompanySq != null and arrCompanySq.length>0">
@@ -457,7 +466,7 @@
 	</delete>
 
 	<delete id="deleteTmtbBrandList" parameterType="MoreBetterGoods">
-		/* TsaMarketing.deleteTmtbBrandList */
+		/* TsaMorebetter.deleteTmtbBrandList */
 		DELETE FROM TB_TMTB_GOODS
 		WHERE TMTB_SQ =  #{tmtbSq}
 		<if test="arrBrandSq != null and arrBrandSq.length>0">
@@ -469,7 +478,7 @@
 	</delete>
 
 	<delete id="deleteTmtbApplyGoodsList" parameterType="MoreBetterGoods">
-		/* TsaMarketing.deleteTmtbApplyGoodsList */
+		/* TsaMorebetter.deleteTmtbApplyGoodsList */
 		DELETE FROM TB_TMTB_GOODS
 		WHERE TMTB_SQ =  #{tmtbSq}
 		<if test="arrApplyGoodsSq != null and arrApplyGoodsSq.length>0">
@@ -481,7 +490,7 @@
 	</delete>
 
 	<delete id="deleteTmtbExceptGoodsList" parameterType="MoreBetterGoods">
-		/* TsaMarketing.deleteTmtbExceptGoodsList */
+		/* TsaMorebetter.deleteTmtbExceptGoodsList */
 		DELETE FROM TB_TMTB_GOODS
 		WHERE TMTB_SQ =  #{tmtbSq}
 		<if test="arrExceptGoodsSq != null and arrExceptGoodsSq.length>0">
@@ -493,7 +502,7 @@
 	</delete>
 
 	<delete id="deleteTmtbSectionList" parameterType="MoreBetterSection">
-		/* TsaMarketing.deleteTmtbSectionList */
+		/* TsaMorebetter.deleteTmtbSectionList */
 		DELETE FROM TB_TMTB_SECTION
 		WHERE TMTB_SQ =  #{tmtbSq}
 		<if test="arrSectionSq != null and arrSectionSq.length>0">
@@ -505,7 +514,7 @@
 	</delete>
 
 	<delete id="deleteTmtbValList" parameterType="MoreBetterSection">
-		/* TsaMarketing.deleteTmtbValList */
+		/* TsaMorebetter.deleteTmtbValList */
 		DELETE FROM TB_TMTB_VAL
 		WHERE TMTB_SQ =  #{tmtbSq}
 		<if test="arrSectionSq != null and arrSectionSq.length>0">
@@ -517,7 +526,7 @@
 	</delete>
 
 	<delete id="deleteTmtbBurdenList" parameterType="MoreBetterGoods">
-		/* TsaMarketing.deleteTmtbBurdenList */
+		/* TsaMorebetter.deleteTmtbBurdenList */
 		DELETE FROM TB_TMTB_BURDEN
 		WHERE TMTB_SQ =  #{tmtbSq}
 		<if test="arrBurdenSq != null and arrBurdenSq.length>0">
@@ -529,13 +538,13 @@
 	</delete>
 
 	<delete id="deleteTmtbGoodsTemp" parameterType="MoreBetterGoods">
-		/* TsaMarketing.deleteTmtbGoodsTemp */
+		/* TsaMorebetter.deleteTmtbGoodsTemp */
 		DELETE FROM TB_TMTB_USING_GOODS_TEMP
 		WHERE	REG_NO = #{regNo}
 	</delete>
 
 	<insert id="createTmtbGoodsTemp" parameterType="MoreBetterGoods">
-		/* TsaMarketing.createTmtbGoodsTemp */
+		/* TsaMorebetter.createTmtbGoodsTemp */
 		INSERT INTO TB_TMTB_USING_GOODS_TEMP
 			SELECT Z.REG_NO
 				, Z.GOODS_CD
@@ -553,6 +562,7 @@
 					WHERE 1=1
 					  AND NOW() BETWEEN DATE_FORMAT(A.TMTB_ST_DT, '%Y-%m-%d %H:%i:%S') AND DATE_FORMAT(A.TMTB_ED_DT, '%Y-%m-%d %H:%i:%S')
 					  AND A.TMTB_STAT = 'G232_11'
+					  AND A.DEL_YN = 'N'
 					  AND B.GOODS_GB IN ('G800_10','G800_20')
 					  AND B.DEL_YN = 'N'
 					  AND B.GOODS_CD NOT IN (
@@ -561,6 +571,7 @@
 											WHERE	1=1
 											  AND		B.TMTB_SQ = C.TMTB_SQ
 											  AND		C.GOODS_GB = 'G800_30'
+					      					  AND 		C.DEL_YN = 'N'
 										)
 			) Z
 			WHERE 1=1
@@ -568,7 +579,7 @@
 	</insert>
 
 	<select id="getMorebetterDuplicateList" parameterType="MoreBetterGoods" resultType="MoreBetterGoods">
-		/* TsaMarketing.getMorebetterDuplicateList */
+		/* TsaMorebetter.getMorebetterDuplicateList */
 		SELECT 	B.REG_NO
 				, B.GOODS_CD
 				, B.GOODS_NM
@@ -582,7 +593,7 @@
 	</select>
 
 	<update id="updateMorebetterStat" parameterType="MoreBetter">
-		/* TsaMarketing.updateMorebetterStat */
+		/* TsaMorebetter.updateMorebetterStat */
 		UPDATE TB_TMTB SET
 			TMTB_STAT = #{tmtbStat}
 		<if test="tmtbStat == 'G232_14'">
@@ -594,13 +605,13 @@
 	</update>
 
 	<delete id="deleteTmtbApplyGoodsTemp" parameterType="MoreBetterGoods">
-		/* TsaMarketing.deleteTmtbApplyGoodsTemp */
+		/* TsaMorebetter.deleteTmtbApplyGoodsTemp */
 		DELETE FROM TB_TMTB_APPLY_GOODS_TEMP
 		WHERE	REG_NO = #{regNo}
 	</delete>
 
 	<insert id="createTmtbApplyGoodsTemp" parameterType="MoreBetterGoods">
-		/* TsaMarketing.createTmtbApplyGoodsTemp */
+		/* TsaMorebetter.createTmtbApplyGoodsTemp */
 		INSERT INTO TB_TMTB_APPLY_GOODS_TEMP(
 											 REG_NO
 											,GOODS_CD
@@ -612,7 +623,7 @@
 	</insert>
 
 	<select id="getMorebetterRealApplyGoodsList" parameterType="MoreBetter" resultType="MoreBetterGoods">
-		/* TsaMarketing.getMorebetterRealApplyGoodsList */
+		/* TsaMorebetter.getMorebetterRealApplyGoodsList */
 		SELECT	GOODS_CD
 		  FROM	TB_TMTB_APPLY_GOODS_TEMP
 		 WHERE	1=1
@@ -626,7 +637,7 @@
 	</select>
 
 	<select id="getMorebetterCompBrandGoodsList" parameterType="MoreBetterGoods" resultType="MoreBetterGoods">
-		/* TsaMarketing.getMorebetterCompBrandGoodsList */
+		/* TsaMorebetter.getMorebetterCompBrandGoodsList */
 		SELECT  G.GOODS_CD
 				,'G800_20' AS GOODS_GB
 				,'G260_10' AS TARGET_GB
@@ -639,11 +650,58 @@
 			</foreach>
 		</if>
 		<if test="multiBrand != null and multiBrand.length>0">
-			AND G.BRAND_CD IN
+			OR G.BRAND_CD IN
 			<foreach collection="multiBrand" item="item" index="index"  open="(" close=")" separator=",">
 				#{item}
 			</foreach>
 		</if>
 	</select>
+
+	<update id="deleteTmtbGoods" parameterType="MoreBetter">
+		/* TsaMorebetter.deleteTmtbGoods */
+		UPDATE TB_TMTB_GOODS SET
+			DEL_YN = 'Y'
+			, UPD_NO = #{updNo}
+			, UPD_DT = CURRENT_TIMESTAMP
+		WHERE TMTB_SQ = #{tmtbSq}
+		  AND DEL_YN = 'N'
+	</update>
+
+	<update id="deleteTmtbBurden" parameterType="MoreBetter">
+		/* TsaMorebetter.deleteTmtbBurden */
+		UPDATE TB_TMTB_BURDEN SET
+			USE_YN = 'N'
+			, UPD_NO = #{updNo}
+			, UPD_DT = CURRENT_TIMESTAMP
+		WHERE TMTB_SQ = #{tmtbSq}
+		  AND USE_YN = 'Y'
+	</update>
+
+	<update id="deleteTmtbSection" parameterType="MoreBetter">
+		/* TsaMorebetter.deleteTmtbSection */
+		UPDATE TB_TMTB_SECTION SET
+			DEL_YN = 'Y'
+			, UPD_NO = #{updNo}
+			, UPD_DT = CURRENT_TIMESTAMP
+		WHERE TMTB_SQ = #{tmtbSq}
+		  AND DEL_YN = 'N'
+	</update>
+
+	<update id="deleteTmtbVal" parameterType="MoreBetter">
+		/* TsaMorebetter.deleteTmtbVal */
+		UPDATE TB_TMTB_VAL SET
+			DEL_YN = 'Y'
+			, UPD_NO = #{updNo}
+			, UPD_DT = CURRENT_TIMESTAMP
+		WHERE TMTB_SQ = #{tmtbSq}
+		  AND DEL_YN = 'N'
+	</update>
+
+	<delete id="deleteTmtbApplyGoods" parameterType="MoreBetter">
+		/* TsaMarketing.deleteTmtbApplyGoods */
+		DELETE FROM TB_TMTB_APPLY_GOODS
+		WHERE	TMTB_SQ = #{tmtbSq}
+	</delete>
+
 	<!--// CSB 진행 -->
 </mapper>

+ 403 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaPlan.xml

@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.admin.biz.dao.TsaPlanDao">
+
+	<!-- 기획전 등록 -->
+	<insert id="createPlanWebInfo" parameterType="Plan">
+		/* TsaMarketing.createPlanWebInfo */
+		<selectKey keyProperty="planSq" resultType="Integer" order="AFTER">
+			SELECT LAST_INSERT_ID()	/* 기획전 일련번호  */
+		</selectKey>
+		INSERT INTO TB_PLAN (
+		       PLAN_SQ               
+		     , PLAN_NM               
+		     , PLAN_GB               
+		     <!-- , CUST_GB -->
+		    <!--  , CUST_GRADE -->
+		     <!-- , PLAN_SNM -->
+		     , TEMPLATE_TYPE         
+		     , SITE_CD               
+		     , FRONT_GB              
+		     , DISP_STDT             
+		     , DISP_EDDT             
+		     , MAIN_PIMG             
+		     , MAIN_MIMG             
+		     , DTL_PIMG              
+		     , DTL_MIMG              
+		     , DTL_TITLE1            
+		     <!-- , DTL_TITLE2 -->          
+		     <!-- , CATE_CD               
+		     , CATE_DISP_YN   -->        
+		     , REPLY_YN              
+		     , REPLY_LOC           
+		     , REPLY_IMG           
+		     , REPLY_TITLE1        
+		     , REPLY_TITLE2        
+		     , POLL_SQ             
+		     <!-- , PRIVACY_POLICY -->
+		     , DEV_URL             
+		     , CORNER_NM_DISP_YN   
+		     , GOODS_LIMIT_YN      
+		     , GOODS_LIMIT_QTY     
+		     , DEL_YN              
+		     , OPEN_YN             
+		     , DISP_ORD            
+		     , READ_CNT              
+		     , BADGE_NM              
+		     , BADGE_FCOLOR          
+		     , BADGE_BCOLOR          
+		     , REG_NO               
+		     , REG_DT                
+		     , UPD_NO                
+		     , UPD_DT                
+		   ) VALUES (
+		       #{planSq}
+		     , #{planNm}
+		     , #{planGb}
+		    <!--  , #{custGb} -->
+		     <!-- , #{custGrade} -->
+		     <!-- , #{planSnm} -->
+		     , #{templateType}
+		     , #{siteCd}
+		     , #{frontGb}
+		     , DATE_FORMAT(#{dispStdt} , '%Y-%m-%d %H:%i:%s')
+		     , DATE_FORMAT(#{dispEddt} , '%Y-%m-%d %H:%i:%s')
+		     , #{mainPimg}
+		     , #{mainMimg}
+		     , #{dtlPimg}
+		     , #{dtlMimg}
+		     , #{dtlTitle1}
+		     <!-- , #{cateCd}
+		     , NVL(#{cateDispYn}, 'N') -->
+		     , #{replyYn}
+		     , #{replyLoc}
+		     , #{replyImg}
+		     , #{replyTitle1}
+		     , #{replyTitle2}
+		     , #{pollSq}
+		     <!-- , #{privacyPolicy} -->
+		     , #{devUrl}
+		     , #{cornerNmDispYn}
+		     , IFNULL(#{goodsLimitYn}, 'N')
+		     , #{goodsLimitQty}
+		     , 'N'
+		     , #{openYn}
+		     , #{dispOrd}
+		     , 1
+		     , #{badgeNm}
+		     , #{badgeFcolor}
+		     , #{badgeBcolor}
+		     , #{regNo}
+		     , now() 
+		     , #{updNo}
+		     , now()
+		)
+	</insert>
+	
+	<!-- 기획전 목록 -->
+	<select id="getPlanList" parameterType="Plan" resultType="Plan">
+		/* TsaMarketing.getPlanList */
+		SELECT PLAN_SQ                
+		     , PLAN_NM                
+		     , PLAN_GB                
+		     <!-- , CUST_GB -->
+		     <!-- , CUST_GRADE -->
+		     <!-- , PLAN_SNM -->
+		     , TEMPLATE_TYPE          
+		     , SITE_CD                
+		     , FRONT_GB               
+		     , DISP_STDT    
+		     , DISP_EDDT   
+		     , MAIN_PIMG              
+		     , MAIN_MIMG              
+		     , DTL_PIMG               
+		     , DTL_MIMG               
+		     , DTL_TITLE1             
+		     <!-- , DTL_TITLE2 -->
+		     <!-- , CATE_CD -->
+		     <!-- , CATE_DISP_YN -->           
+		     , REPLY_YN               
+		     , REPLY_TITLE1           
+		     , REPLY_TITLE2           
+		     , REPLY_LOC              
+		     , REPLY_IMG              
+		     , POLL_SQ                
+		     <!-- , PRIVACY_POLICY -->
+		     , DEV_URL                
+		     , CORNER_NM_DISP_YN      
+		     , GOODS_LIMIT_YN         
+		     , GOODS_LIMIT_QTY        
+		     , DEL_YN                 
+		     , OPEN_YN                
+		     , DISP_ORD               
+		     , READ_CNT               
+		     , BADGE_NM               
+		     , BADGE_FCOLOR           
+		     , BADGE_BCOLOR           
+		     , FN_GET_USER_NM(REG_NO) AS REG_NM               
+		     , REG_DT
+		       AS REG_DT              
+		     , UPD_NO                 
+		     , UPD_DT              
+		FROM   TB_PLAN
+		WHERE  1=1
+		AND    DEL_YN = 'N'
+		<if test ="siteCd != null and siteCd !=''">
+		AND    SITE_CD = #{siteCd}
+		</if>
+		<if test="planSq != null and planSq != ''">
+		AND    PLAN_SQ = #{planSq}
+		</if>
+		<if test="planNm != null and planNm != ''">
+		AND    PLAN_NM LIKE UPPER('%' || #{planNm} || '%')
+		</if>
+		
+		<if test="condition != null and condition != ''">
+		<choose>
+			     <when test="search != null and search == 'searchPlanNm'">
+		AND    (
+		        <foreach collection="conditionList" item="item" index="index" separator="or">
+		        UPPER(PLAN_NM) LIKE CONCAT('%',UPPER(#{item}),'%') 
+		        </foreach>
+		       )
+	         </when>
+	          <when test="search != null and search == 'searchPlanSq'">
+ 		AND 		 
+		         <foreach collection="conditionList"  item="item" index="index" separator="or">
+	    		   UPPER(PLAN_SQ) LIKE CONCAT('%',UPPER(#{item}),'%') 
+		         </foreach>
+			      </when>
+		</choose>
+		</if>
+		<if test="openYn != null and openYn != ''">
+		AND    OPEN_YN = #{openYn}
+		</if>
+		<if test="regNo != null and regNo != ''">
+		AND    REG_NO = #{regNo} 
+		</if>
+		<if test="frontGb != null and frontGb != ''">
+		AND    FRONT_GB = #{frontGb}
+		</if>
+		<if test="planGb != null and planGb != ''">
+		AND    PLAN_GB = #{planGb}
+		</if>
+		<if test="templateType != null and templateType != ''">
+		AND    TEMPLATE_TYPE = #{templateType}
+		</if>
+		<if test="dispStdt != null and dispStdt != ''">
+		AND    DISP_EDDT <![CDATA[>=]]> DATE_FORMAT(#{dispStdt}, 'YYYY-MM-DD')
+		</if>
+		<if test="dispEddt != null and dispEddt != ''">
+		AND    DISP_STDT <![CDATA[<=]]> DATE_FORMAT(#{dispEddt}, 'YYYY-MM-DD') + 0.99999
+		</if>
+		<if test="popupDispStdt != null and popupDispStdt != ''">
+		AND    DISP_EDDT <![CDATA[>=]]> DATE_FORMAT(#{popupDispStdt}, 'YYYY-MM-DD')
+		</if>
+		<if test="popupDispEddt != null and popupDispEddt != ''">
+		AND    DISP_STDT <![CDATA[<=]]> DATE_FORMAT(#{popupDispEddt}, 'YYYY-MM-DD') + 0.99999
+		</if>
+		ORDER  BY PLAN_SQ DESC
+	</select>
+	
+	<!-- 기획전 리스트 카운트 조회-->
+	<select id="getPlanListCnt" parameterType="Plan" resultType="int">
+		/* TsaMarketing.getPlanListCnt */
+		SELECT COUNT(1)
+		  FROM TB_PlAN
+		 WHERE 1=1
+		<if test ="siteCd != null and siteCd !=''">
+		AND    SITE_CD = #{siteCd}
+		</if>
+        <if test='condition != null and condition != "" '>
+		<choose>
+		     <when test='search != null and search == "searchPlanNm"'>
+ 		AND (
+		         <foreach collection="condition" item="item" index="index" separator="or">
+		           UPPER(PLAN_NM) LIKE CONCAT('%',UPPER(#{item}),'%') 
+		         </foreach>
+		     )
+		     </when>
+		     <when test='search != null and search == "searchPlanSq"'>
+ 		AND (		 
+		         <foreach collection="condition" item="item" index="index" separator="or">
+	    		   UPPER(PLAN_SQ) LIKE CONCAT('%',UPPER(#{item}),'%') 
+		         </foreach>
+		    )
+		      </when>
+		</choose>
+		</if>
+		<if test="openYn != null and openYn != ''">
+		AND    OPEN_YN = #{openYn}
+		</if>
+		<if test="regNo != null and regNo != ''">
+		AND    REG_NO = #{regNo}
+		</if>
+		<if test="frontGb != null and frontGb != ''">
+		AND    FRONT_GB = #{frontGb}
+		</if>
+		<if test="planGb != null and planGb != ''">
+		AND    PLAN_GB = #{planGb}
+		</if>
+		<if test="templateType != null and templateType != ''">
+		AND    TEMPLATE_TYPE = #{templateType}
+		</if>
+		<if test="dispStdt != null and dispStdt != ''">
+		AND    DISP_EDDT <![CDATA[>=]]> DATE_FORMAT(#{dispStdt}, 'YYYY-MM-DD')
+		</if>
+		<if test="dispEddt != null and dispEddt != ''">
+		AND    DISP_STDT <![CDATA[<=]]> DATE_FORMAT(#{dispEddt}, 'YYYY-MM-DD') + 0.99999
+		</if>
+		<if test="popupDispStdt != null and popupDispStdt != ''">
+		AND    DISP_EDDT <![CDATA[>=]]> DATE_FORMAT(#{popupDispStdt}, 'YYYY-MM-DD')
+		</if>
+		<if test="popupDispEddt != null and popupDispEddt != ''">
+		AND    DISP_STDT <![CDATA[<=]]> DATE_FORMAT(#{popupDispEddt}, 'YYYY-MM-DD') + 0.99999
+		</if>
+	</select>
+	
+	<!-- 기획전 삭제처리 -->
+	<update id="deletePlan" parameterType="Plan">
+		/* TsaMarketing.deletePlan */
+		UPDATE TB_PLAN
+		SET    UPD_NO = #{updNo}
+		     , UPD_DT = now()
+		     , DEL_YN = 'Y'
+		WHERE  PLAN_SQ = #{planSq}
+	</update>
+	
+	<!-- 기획전  소스 삭제 -->
+	<delete id="deletePlanFsrcInfo" parameterType="Plan">
+		/* TsaMarketing.deletePlanFsrcInfo */
+		DELETE TB_PLAN_FSRC
+		WHERE  PLAN_SQ = #{planSq}
+		AND    FRONT_GB = #{frontGb}
+	</delete>
+	
+	<!-- 기획전  소스 등록 -->
+	<insert id="savePlanFsrcInfo" parameterType="Plan">
+		/* TsaMarketing.savePlanFsrcInfo */
+		         INSERT INTO
+				      TB_PLAN_FSRC (
+				          PLAN_SQ
+				          , FRONT_GB
+				          , FSRC
+				          , REG_NO
+				          , REG_DT
+				          , UPD_NO
+				          , UPD_DT
+				      )
+				   VALUES (
+				    	  #{planSq}
+				          , #{frontGb}
+				          , #{fsrc}
+				          , #{regNo}
+				          , now()
+				          , #{regNo}
+				          , now() 
+				   )
+				   ON
+				      DUPLICATE KEY
+				   UPDATE
+				       FSRC = #{fsrc}
+		         	 , UPD_NO = #{regNo}
+		         	 , UPD_DT = now()
+	</insert>
+	
+	<!--  기획전 웹용 소스 조회 -->
+	<select id="getPlanFsrcList" parameterType="Plan" resultType="Plan">
+		/* TsaMarketing.getPlanFsrcList */
+		SELECT PLAN_SQ
+	          , FRONT_GB
+	          , FSRC
+	          , REG_NO
+	          , REG_DT
+	          , UPD_NO
+	          , UPD_DT
+		FROM   TB_PLAN_FSRC
+		WHERE  PLAN_SQ = #{planSq}
+		AND    FRONT_GB = #{frontGb}
+	</select>
+	
+	<!-- 기획전 수정 -->
+	<update id="updatePlanWebInfo" parameterType="Plan">
+		/* TsaMarketing.updatePlanWebInfo */
+		UPDATE TB_PLAN
+		   SET PLAN_GB = #{planGb}
+		     <!-- , CUST_GB = #{custGb} -->
+		     <!-- , CUST_GRADE = #{custGrade} -->
+		     <!-- , PLAN_SNM = #{planSnm} -->
+		     , TEMPLATE_TYPE = #{templateType}
+		     , FRONT_GB = #{frontGb}
+		     , PLAN_NM = #{planNm}
+		     , DISP_STDT = DATE_FORMAT(#{dispStdt} , '%Y-%m-%d %H:%i:%s')
+		     , DISP_EDDT = DATE_FORMAT(#{dispEddt} , '%Y-%m-%d %H:%i:%s')
+		     , CORNER_NM_DISP_YN = #{cornerNmDispYn}
+		     , OPEN_YN = #{openYn}
+		     <!-- , DEL_YN = #{delYn} -->
+		     , SITE_CD = #{siteCd}
+		     , DISP_ORD = IFNULL(#{dispOrd}, 999)
+		     , DTL_TITLE1 = #{dtlTitle1}
+		     , MAIN_PIMG = #{mainPimg}
+		     , MAIN_MIMG = #{mainMimg}
+		     , DTL_PIMG = #{dtlPimg}
+		     , DTL_MIMG = #{dtlMimg}
+		     , REPLY_IMG = #{replyImg}
+		     , REPLY_TITLE1 = #{replyTitle1}
+		     , REPLY_TITLE2 = #{replyTitle2}
+		     , POLL_SQ = #{pollSq}
+		     <!-- , PRIVACY_POLICY = #{privacyPolicy} -->
+		     , DEV_URL = #{devUrl}
+		     , REPLY_YN = #{replyYn}
+		     , REPLY_LOC = #{replyLoc}
+		     , BADGE_NM = #{badgeNm}
+		     , BADGE_FCOLOR = #{badgeFcolor}
+		     , BADGE_BCOLOR = #{badgeBcolor}
+		<if test='goodsLimitYn == "Y"'>
+		     , GOODS_LIMIT_YN = 'Y'
+		     , GOODS_LIMIT_QTY = #{goodsLimitQty}
+		</if>
+		<if test='goodsLimitYn == null or goodsLimitYn == "" or goodsLimitYn == "N"'>
+		     , GOODS_LIMIT_YN = 'N'
+		     , GOODS_LIMIT_QTY = 0
+		</if>
+	<!-- 	<if test='cateDispYn == null or cateDispYn == ""'>
+		     , CATE_DISP_YN = 'N'
+		</if>
+		<if test="cateDispYn != null and cateDispYn != ''">
+		     , CATE_DISP_YN = #{cateDispYn}
+		</if> -->
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = now()
+		WHERE  PLAN_SQ = #{planSq}
+	</update>
+	
+	<!-- 기획전 전체 조회 -->
+	<select id="getPlanAllList" parameterType="Plan" resultType="Plan">
+		/* TsaMarketing.getPlanAllList */
+		SELECT PLAN_SQ
+		     , PLAN_NM
+		FROM   TB_PLAN
+		WHERE  1=1
+		AND    DEL_YN = 'N'
+		<if test="planSq != null and planSq != ''">
+		AND    PLAN_SQ != #{planSq}
+		</if>
+		ORDER  BY PLAN_SQ DESC
+	</select>
+
+</mapper>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

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

@@ -394,4 +394,16 @@
 		AND    USE_YN = 'Y'
 	</select>
 
+	<!-- 자사브랜드 조회-->
+	<select id="getSelfBrandList" resultType="CommonCode">
+		/* TsaRenderer.getSelfBrandList */
+		SELECT BRAND_CD  AS CD
+			 , BRAND_ENM AS CD_NM
+		FROM TB_BRAND
+		WHERE 1 = 1
+		  AND USE_YN = 'Y'
+		  AND SELF_YN = 'Y'
+		ORDER  BY SUPPLY_COMP_CD, DISP_ORD
+	</select>
+
 </mapper>

+ 9 - 7
src/main/webapp/WEB-INF/views/goods/GoodsImageForm.html

@@ -14,7 +14,7 @@
  * 1.0  2020.11.27   eskim       최초 작성
  *******************************************************************************
  -->
-	<div class="modalPopup" data-width="1280">
+	<div class="modalPopup" data-width="1400" data-height="800">
 		<!-- PANELSTYLE -->
 			<div class="panelStyle">
 				<!-- TITLE -->
@@ -39,13 +39,13 @@
 					<table class="frmStyle">
 						<colgroup>
 							<col width="7%"/>
-							<col width="25%"/>
-							<col width="8%"/>
+							<col/>
+							<col width="10%"/>
+							<col width="10%"/>
+							<col width="10%"/>
+							<col width="10%"/>
 							<col width="10%"/>
-							<col width="8%"/>
 							<col width="10%"/>
-							<col width="8%"/>
-							<col/>
 						</colgroup>
 						<tr>
 							<th>상품코드</th>
@@ -54,7 +54,8 @@
 							<td th:text="${goodsImg.colorNm}">PINK</td>
 							<th>대표 이미지순번</th>
 							<td><input type="text" class="text-right" name="defaultImgOrd" maxlength="3" th:value="${defaultImgOrd}" required="required" data-valid-type="number" data-valid-name="대표이미지순번"/></td>
-							<td colspan="2"></td>
+							<th>마우스오버 이미지순번</th>
+							<td><input type="text" class="text-right" name="mouseoverImgOrd" maxlength="3" th:value="${mouseoverImgOrd}" required="required" data-valid-type="number" data-valid-name="마우스오버 이미지순번"/></td>
 						</tr>
 						<tr>
 							<th>이미지등록</th>
@@ -189,6 +190,7 @@
 				params.sysImgNm = item.name;
 				params.sysImgUrl = item.url;
 				params.defaultImgYn = ($('#goodsImgForm input[name=defaultImgOrd]').val() == (i + 1)) ? 'Y' : 'N';
+				params.mouseoverImgYn = ($('#goodsImgForm input[name=mouseoverImgOrd]').val() == (i + 1)) ? 'Y' : 'N';
 				updatedData.push(params);
 			}
 		}

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

@@ -856,8 +856,6 @@
 		let selfYn = $("#freeGoodsPromotionForm input[name=selfYn]:checked").val();
 		if(!selfYn || selfYn == "") { selfYn = "N"; }
 
-		alert($("#freeGoodsPromotionForm select[name=freegiftEdHH]").val());
-
 		let freegiftStdt = $("#freeGoodsPromotionForm input[name=freegiftStDate]").val() + " " + $("#freeGoodsPromotionForm select[name=freegiftStHH]").val() + ":" + $("#freeGoodsPromotionForm select[name=freegiftStMM]").val() + ":00";
 		let freegiftEddt = $("#freeGoodsPromotionForm input[name=freegiftEdDate]").val();
 		if($("#freeGoodsPromotionForm select[name=freegiftEdHH]").val() == "24") {

+ 186 - 179
src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html

@@ -355,7 +355,8 @@
 		{headerName: "공급처ID", field: "supplyCompCd", width: 120, cellClass: 'text-center'},
 		{headerName: "공급업체명", field: "supplyCompNm", width: 150, cellClass: 'text-center'},
 		{headerName: "적용대상", field: "targetGb", width: 150, cellClass: 'text-center', hide: true},
-		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true}
+		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "삭제여부", field: "delYn", width: 150, cellClass: 'text-center', hide: true}
 	];
 	// 브랜드 리스트 설정
 	var columnBrandList = [
@@ -364,7 +365,8 @@
 		{headerName: "브랜드명", field: "brandEnm", width: 120, cellClass: 'text-center'},
 		{headerName: "공급업체명", field: "supplyCompNm", width: 150, cellClass: 'text-center'},
 		{headerName: "적용대상", field: "targetGb", width: 150, cellClass: 'text-center', hide: true},
-		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true}
+		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "삭제여부", field: "delYn", width: 150, cellClass: 'text-center', hide: true}
 	];
 	// 적용상품 리스트 설정
 	var columnApplyGoodsList = [
@@ -379,7 +381,8 @@
 		{headerName: "상품명", field: "goodsNm", width: 120, cellClass: 'text-center'},
 		{headerName: "적용대상", field: "targetGb", width: 150, cellClass: 'text-center', hide: true},
 		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true},
-		{headerName: "실제적용대상 시퀀스", field: "tmtbApplyGoodsSq", width: 150, cellClass: 'text-center', hide: true}
+		{headerName: "실제적용대상 시퀀스", field: "tmtbApplyGoodsSq", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "삭제여부", field: "delYn", width: 150, cellClass: 'text-center', hide: true}
 	];
 	// 제외상품 리스트 설정
 	var columnExceptGoodsList = [
@@ -394,7 +397,8 @@
 		{headerName: "상품명", field: "goodsNm", width: 120, cellClass: 'text-center'},
 		{headerName: "적용대상", field: "targetGb", width: 150, cellClass: 'text-center', hide: true},
 		{headerName: "시퀀스", field: "tmtbGoodsSq", width: 150, cellClass: 'text-center', hide: true},
-		{headerName: "실제적용대상 시퀀스", field: "tmtbApplyGoodsSq", width: 150, cellClass: 'text-center', hide: true}
+		{headerName: "실제적용대상 시퀀스", field: "tmtbApplyGoodsSq", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "삭제여부", field: "delYn", width: 150, cellClass: 'text-center', hide: true}
 	];
 
 	// 업체분담율 리스트 설정
@@ -413,7 +417,7 @@
 			//cellEditor: 'textCellEditor',
 			cellEditorParams: { maxlength: 3, validType: 'numeric'}
 		},
-		{headerName: "사용여부", field: "useYn" , width: 120, cellClass: 'text-center'},
+		{headerName: "사용여부", field: "useYn" , width: 120, cellClass: 'text-center', hide: true},
 		{headerName: "시퀀스", field: "tmtbBurdenSq", width: 150, cellClass: 'text-center', hide: true}
 	];
 
@@ -462,7 +466,8 @@
 			cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
 		{headerName: "구간시퀀스", field: "tmtbSectionSq", width: 150, cellClass: 'text-center', hide: true},
-		{headerName: "할인값시퀀스", field: "tmtbValSq", width: 150, cellClass: 'text-center', hide: true}
+		{headerName: "할인값시퀀스", field: "tmtbValSq", width: 150, cellClass: 'text-center', hide: true},
+		{headerName: "삭제여부", field: "delYn", width: 150, cellClass: 'text-center', hide: true}
 	];
 	// 다른 다다익선 사용중인 중복상품 엑셀 리스트 설정
 	var columnDuplicateGoodsList = [
@@ -712,6 +717,7 @@
 			, supplyCompList : allSupplyCompData
 			, brandList : allBrandData
 			, applyGoodsList : allApplyGoodsData
+			, gridApplyGoodsList : allApplyGoodsData
 			, exceptGoodsList : allExceptGoodsData
 			, burdenList : allApplyBurdenData
 			, sectionGbList : allSectionGbData
@@ -828,7 +834,6 @@
 		gridAddGoodsList(gridOptionsFGExceptGoodsList, result , "except");
 	};
 
-
 	// ag-grid 상품관련 list 콜백함수
 	function gridAddGoodsList(OriginGridListOption, result, gubun) {
 		var goodsGbVal = "G800_10";
@@ -887,7 +892,10 @@
 		cfnOpenCompanyListPopup("fnSetPopupApplyBurdenInfo");
 	});
 
-	/*
+	// 할인구간 선택삭제 버튼 클릭시
+	$('#moreBetterForm #btnDelSectionRow').on('click', function() {
+		gridOptionsSectionGbList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsSectionGbList)});
+	});
     // 공급업체 설정 선택삭제 버튼 클릭시
     $('#moreBetterForm #btnDeleteCompany').on('click', function() {
         gridOptionsFGCompanyList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGCompanyList)});
@@ -908,7 +916,7 @@
     $('#moreBetterForm #btnDelApplyBurden').on('click', function() {
         gridOptionsApplyBurdenList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsApplyBurdenList)});
     });
-    */
+
 	//패널영역 줄이기
 	$(document).on("click",".panelControl .inner-fa-chevron-up", function() {
 		$(this).parent().parent().parent().find(".inner-panelContent").slideUp(100);
@@ -935,39 +943,6 @@
 		gagaAgGrid.addRowData(gridOptionsSectionGbList, data, "sectionVal");
 	});
 
-	// 구간할인 행삭제
-	$('#btnDelSectionRow').on('click', function() {
-		var selectedData = gridOptionsSectionGbList.api.getSelectedRows();
-		if (selectedData.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-
-		var removedData = gagaAgGrid.removeRowData(gridOptionsSectionGbList, false);
-
-		var arrSectionSq = [];
-
-		$.each(selectedData, function(idx, item) {
-			arrSectionSq.push(item.tmtbSectionSq);
-		});
-
-		if (removedData.length > 0) {
-
-			mcxDialog.confirm('삭제하시겠습니까?', {
-				cancelBtnText: "취소",
-				sureBtnText: "확인",
-				sureBtnClick: function(){
-					var data = { arrSectionSq : arrSectionSq
-						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
-					};
-
-					var jsonData = JSON.stringify(data);
-					gagajf.ajaxJsonSubmit('/marketing/morebetter/sectionVal/delete', jsonData);
-				}
-			});
-		}
-	});
-
 	// 할인구간 선택 시 기본 조건 변경
 	$("#moreBetterForm input[name=sectionGb]").bind('click change', function () {
 		var sectionGbValue = $(this).val();
@@ -1010,142 +985,6 @@
 		}
 	});
 
-	// 공급업체 행삭제
-	$('#btnDeleteCompany').on('click', function() {
-		var selectedData = gridOptionsFGCompanyList.api.getSelectedRows();
-		if (selectedData.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-		var removedData = gagaAgGrid.removeRowData(gridOptionsFGCompanyList, false);
-		var arrCompanySq = [];
-		$.each(selectedData, function(idx, item) {
-			arrCompanySq.push(item.tmtbGoodsSq);
-		});
-		if (removedData.length > 0) {
-			mcxDialog.confirm('삭제하시겠습니까?', {
-				cancelBtnText: "취소",
-				sureBtnText: "확인",
-				sureBtnClick: function(){
-					var data = { arrCompanySq : arrCompanySq
-						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
-					};
-					var jsonData = JSON.stringify(data);
-					gagajf.ajaxJsonSubmit('/marketing/morebetter/supplyCompany/delete', jsonData);
-				}
-			});
-		}
-	});
-
-	// 브랜드 행삭제
-	$('#btnDeleteBrand').on('click', function() {
-		var selectedData = gridOptionsFGBrandList.api.getSelectedRows();
-		if (selectedData.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-		var removedData = gagaAgGrid.removeRowData(gridOptionsFGBrandList, false);
-		var arrBrandSq = [];
-		$.each(selectedData, function(idx, item) {
-			arrBrandSq.push(item.tmtbGoodsSq);
-		});
-		if (removedData.length > 0) {
-			mcxDialog.confirm('삭제하시겠습니까?', {
-				cancelBtnText: "취소",
-				sureBtnText: "확인",
-				sureBtnClick: function(){
-					var data = { arrBrandSq : arrBrandSq
-						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
-					};
-					var jsonData = JSON.stringify(data);
-					gagajf.ajaxJsonSubmit('/marketing/morebetter/brand/delete', jsonData);
-				}
-			});
-		}
-	});
-
-	// 적용상품 행삭제
-	$('#btnDeleteApplyGoods').on('click', function() {
-		var selectedData = gridOptionsFGApplyGoodsList.api.getSelectedRows();
-		if (selectedData.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-		var removedData = gagaAgGrid.removeRowData(gridOptionsFGApplyGoodsList, false);
-		var arrApplyGoodsSq = [];
-		$.each(selectedData, function(idx, item) {
-			arrApplyGoodsSq.push(item.tmtbGoodsSq);
-		});
-		if (removedData.length > 0) {
-			mcxDialog.confirm('삭제하시겠습니까?', {
-				cancelBtnText: "취소",
-				sureBtnText: "확인",
-				sureBtnClick: function(){
-					var data = { arrApplyGoodsSq : arrApplyGoodsSq
-						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
-					};
-					var jsonData = JSON.stringify(data);
-					gagajf.ajaxJsonSubmit('/marketing/morebetter/applyGoods/delete', jsonData);
-				}
-			});
-		}
-	});
-
-	// 제외상품 행삭제
-	$('#btnDeleteExtGoods').on('click', function() {
-		var selectedData = gridOptionsFGExceptGoodsList.api.getSelectedRows();
-		if (selectedData.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-		var removedData = gagaAgGrid.removeRowData(gridOptionsFGExceptGoodsList, false);
-		var arrExceptGoodsSq = [];
-		$.each(selectedData, function(idx, item) {
-			arrExceptGoodsSq.push(item.tmtbGoodsSq);
-		});
-		if (removedData.length > 0) {
-			mcxDialog.confirm('삭제하시겠습니까?', {
-				cancelBtnText: "취소",
-				sureBtnText: "확인",
-				sureBtnClick: function(){
-					var data = { arrExceptGoodsSq : arrExceptGoodsSq
-						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
-					};
-					var jsonData = JSON.stringify(data);
-					gagajf.ajaxJsonSubmit('/marketing/morebetter/exceptGoods/delete', jsonData);
-				}
-			});
-		}
-	});
-
-	// 업체분담율 행삭제
-	$('#btnDelApplyBurden').on('click', function() {
-		var selectedData = gridOptionsApplyBurdenList.api.getSelectedRows();
-		if (selectedData.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-		var removedData = gagaAgGrid.removeRowData(gridOptionsApplyBurdenList, false);
-		var arrBurdenSq = [];
-		$.each(selectedData, function(idx, item) {
-			arrBurdenSq.push(item.tmtbBurdenSq);
-		});
-		if (removedData.length > 0) {
-			mcxDialog.confirm('삭제하시겠습니까?', {
-				cancelBtnText: "취소",
-				sureBtnText: "확인",
-				sureBtnClick: function(){
-					var data = { arrBurdenSq : arrBurdenSq
-						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
-					};
-					var jsonData = JSON.stringify(data);
-					gagajf.ajaxJsonSubmit('/marketing/morebetter/burden/delete', jsonData);
-				}
-			});
-		}
-	});
-
-
 	// 수정 버튼 클릭시
 	$('#btnMorebetterUpdate').on('click', function() {
 		// validation
@@ -1293,6 +1132,7 @@
 						, supplyCompList : allSupplyCompData
 						, brandList : allBrandData
 						, applyGoodsList : allApplyGoodsData
+						, gridApplyGoodsList : allApplyGoodsData
 						, exceptGoodsList : allExceptGoodsData
 						, burdenList : allApplyBurdenData
 						, sectionGbList : allSectionGbData
@@ -1309,7 +1149,6 @@
 	});
 
 	var fnMorebetterChangeStatCollback = function(result){
-		console.log('<fnMorebetterChangeStatCollback result>');
 		if(result.duplicateYn == "Y"){
 			for(let i=0; i<result.duplicateGoodsList.length; i++){
 				gagaAgGrid.addRowData(gridOptionsDuplicateGoodsList, {"goodsCd" : result.duplicateGoodsList[i].goodsCd, "goodsNm" : result.duplicateGoodsList[i].goodsNm});
@@ -1358,7 +1197,175 @@
 		});
 	});
 
+/*
+	// 공급업체 행삭제
+	$('#btnDeleteCompany').on('click', function() {
+		var selectedData = gridOptionsFGCompanyList.api.getSelectedRows();
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+		var removedData = gagaAgGrid.removeRowData(gridOptionsFGCompanyList, false);
+		var arrCompanySq = [];
+		$.each(selectedData, function(idx, item) {
+			arrCompanySq.push(item.tmtbGoodsSq);
+		});
+		if (removedData.length > 0) {
+			mcxDialog.confirm('삭제하시겠습니까?', {
+				cancelBtnText: "취소",
+				sureBtnText: "확인",
+				sureBtnClick: function(){
+					var data = { arrCompanySq : arrCompanySq
+						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
+					};
+					var jsonData = JSON.stringify(data);
+					gagajf.ajaxJsonSubmit('/marketing/morebetter/supplyCompany/delete', jsonData);
+				}
+			});
+		}
+	});
+
+	// 브랜드 행삭제
+	$('#btnDeleteBrand').on('click', function() {
+		var selectedData = gridOptionsFGBrandList.api.getSelectedRows();
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+		var removedData = gagaAgGrid.removeRowData(gridOptionsFGBrandList, false);
+		var arrBrandSq = [];
+		$.each(selectedData, function(idx, item) {
+			arrBrandSq.push(item.tmtbGoodsSq);
+		});
+		if (removedData.length > 0) {
+			mcxDialog.confirm('삭제하시겠습니까?', {
+				cancelBtnText: "취소",
+				sureBtnText: "확인",
+				sureBtnClick: function(){
+					var data = { arrBrandSq : arrBrandSq
+						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
+					};
+					var jsonData = JSON.stringify(data);
+					gagajf.ajaxJsonSubmit('/marketing/morebetter/brand/delete', jsonData);
+				}
+			});
+		}
+	});
+
+	// 적용상품 행삭제
+	$('#btnDeleteApplyGoods').on('click', function() {
+		var selectedData = gridOptionsFGApplyGoodsList.api.getSelectedRows();
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+		var removedData = gagaAgGrid.removeRowData(gridOptionsFGApplyGoodsList, false);
+		var arrApplyGoodsSq = [];
+		$.each(selectedData, function(idx, item) {
+			arrApplyGoodsSq.push(item.tmtbGoodsSq);
+		});
+		if (removedData.length > 0) {
+			mcxDialog.confirm('삭제하시겠습니까?', {
+				cancelBtnText: "취소",
+				sureBtnText: "확인",
+				sureBtnClick: function(){
+					var data = { arrApplyGoodsSq : arrApplyGoodsSq
+						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
+					};
+					var jsonData = JSON.stringify(data);
+					gagajf.ajaxJsonSubmit('/marketing/morebetter/applyGoods/delete', jsonData);
+				}
+			});
+		}
+	});
+
+	// 제외상품 행삭제
+	$('#btnDeleteExtGoods').on('click', function() {
+		var selectedData = gridOptionsFGExceptGoodsList.api.getSelectedRows();
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+		var removedData = gagaAgGrid.removeRowData(gridOptionsFGExceptGoodsList, false);
+		var arrExceptGoodsSq = [];
+		$.each(selectedData, function(idx, item) {
+			arrExceptGoodsSq.push(item.tmtbGoodsSq);
+		});
+		if (removedData.length > 0) {
+			mcxDialog.confirm('삭제하시겠습니까?', {
+				cancelBtnText: "취소",
+				sureBtnText: "확인",
+				sureBtnClick: function(){
+					var data = { arrExceptGoodsSq : arrExceptGoodsSq
+						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
+					};
+					var jsonData = JSON.stringify(data);
+					gagajf.ajaxJsonSubmit('/marketing/morebetter/exceptGoods/delete', jsonData);
+				}
+			});
+		}
+	});
+
+	// 업체분담율 행삭제
+	$('#btnDelApplyBurden').on('click', function() {
+		var selectedData = gridOptionsApplyBurdenList.api.getSelectedRows();
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+		var removedData = gagaAgGrid.removeRowData(gridOptionsApplyBurdenList, false);
+		var arrBurdenSq = [];
+		$.each(selectedData, function(idx, item) {
+			arrBurdenSq.push(item.tmtbBurdenSq);
+		});
+		if (removedData.length > 0) {
+			mcxDialog.confirm('삭제하시겠습니까?', {
+				cancelBtnText: "취소",
+				sureBtnText: "확인",
+				sureBtnClick: function(){
+					var data = { arrBurdenSq : arrBurdenSq
+						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
+					};
+					var jsonData = JSON.stringify(data);
+					gagajf.ajaxJsonSubmit('/marketing/morebetter/burden/delete', jsonData);
+				}
+			});
+		}
+	});
+*/
+
+	// 구간할인 행삭제
+	/*$('#btnDelSectionRow').on('click', function() {
+		var selectedData = gridOptionsSectionGbList.api.getSelectedRows();
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+
+		var removedData = gagaAgGrid.removeRowData(gridOptionsSectionGbList, false);
+
+		var arrSectionSq = [];
+
+		$.each(selectedData, function(idx, item) {
+			arrSectionSq.push(item.tmtbSectionSq);
+		});
 
+		if (removedData.length > 0) {
+
+			mcxDialog.confirm('삭제하시겠습니까?', {
+				cancelBtnText: "취소",
+				sureBtnText: "확인",
+				sureBtnClick: function(){
+					var data = { arrSectionSq : arrSectionSq
+						,tmtbSq : $('#moreBetterForm input[name=disTmtbSq]').val()
+					};
+
+					var jsonData = JSON.stringify(data);
+					gagajf.ajaxJsonSubmit('/marketing/morebetter/sectionVal/delete', jsonData);
+				}
+			});
+		}
+	});*/
 
 </script>
 </html>

+ 385 - 0
src/main/webapp/WEB-INF/views/marketing/PlanListForm.html

@@ -0,0 +1,385 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : PlanListForm.html
+ * @desc    : 기획전관리 Page
+ *============================================================================
+ * SISUN
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.02.03   sowon        최초 작성
+ *******************************************************************************
+ -->
+	<div id="main">
+		<div class="main-title">
+		</div>
+
+		<div class="panelStyle">
+			<form id="planListSearchForm" name="planListSearchForm" action="#" th:action="@{'/marketing/planning/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:5%;"/>
+						<col style="width:20%;"/>
+						<col style="width:5%;"/>
+						<col style="width:20%;"/>
+						<col style="width:5%;"/>
+						<col style="width:10%;"/>
+						<col style="width:5%;"/>
+						<col style="width:10%;"/>
+						<col/>
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>사이트</th>
+							<td>
+								<select name="siteCd">
+									<option value="">전체</option>
+									<th:block th:if="${siteCdList}" th:each="oneData, status : ${siteCdList}" >
+										<option th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									</th:block>
+								</select>
+							</td>
+							<!-- <th>기획전명</th>
+							<td>
+								<input type="text" name="planNm" id="planNm"/>
+							</td>
+							<th>기획전번호</th>
+							<td colspan="3">
+								<input type="text" name="planSq" id="planSq"/>
+							</td> -->
+							<th>오픈여부</th>
+							<td>
+								<select name="openYn">
+									<option value="">전체</option>
+									<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+								</select>
+							</td>
+							<th>등록자</th>
+							<td>
+								<input type="text" name="regId" id="regId"/>
+							</td>
+							<th rowspan="3">키워드</th>
+							<td rowspan="3">
+								<select name="search" id="search">
+									<option value="searchPlanNm">기획전명</option>
+									<option value="searchPlanSq">기획전번호</option>
+								</select> 
+								<textarea class="textareaR3 w70p" name="condition" id="condition"></textarea>
+							</td>
+						</tr>
+						<tr>
+							<th>PC/모바일구분</th>
+							<td>
+								<select name="frontGb">
+									<option value="">ALL</option>
+									<option value="P">웹</option>
+									<option value="M">모바일</option>
+								</select>
+							</td>
+
+							<th>기획전구분</th>
+							<td>
+								<select name="planGb">
+									<option value="">전체</option>
+									<option value="P">기획전</option>
+									<option value="E">이벤트</option>
+								</select>
+							</td>
+							<th>기획전템플릿유형</th>
+							<td colspan="1">
+								<select name="templateType">
+									<option value="">전체</option>
+									<option value="H">HTML</option>
+									<option value="T">TEXT</option>
+								</select>
+							</td>
+						</tr>
+
+						<tr>
+							<th>진행기간</th>
+							<td colspan="6" id="sellTerms"></td>
+						</tr>
+					</tbody>
+				</table>
+				
+				<ul class="panelBar">
+					<li class="center">
+					<input type="button" value="초기화" class="btn btn-gray btn-lg" id="btnInit"/>
+					<input type="button" value="조회" class="btn btn-base btn-lg" id="btnSearch"/>
+					</li>
+				</ul>
+			</form>
+		</div>
+
+
+	<div class="panelStyle">
+			<!-- 검색결과 영역 -->
+			<!-- 상단버튼 영역  -->
+			<ul class="panelBar">
+				<li>
+					<button type="button" class="btn btn-danger btn-lg" onclick="fnSelectedDelete();">삭제</button>
+				</li>
+				<li class="right">
+					<button type="button" class="btn btn-primary btn-lg" onclick="fnPlanWebRegisterPopup();">등록</button>
+					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
+					
+					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
+					<select id="pageSize" name="pageSize">
+						<option value="50" selected="selected">50개씩 보기</option>
+						<option value="100">100개씩 보기</option>
+						<option value="500">500개씩 보기</option>
+						<option value="1000">1000개씩 보기</option>
+					</select>
+					<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+				</li>
+			</ul>
+			
+			<div id="gridList" style="width: 100%; height: 500px;" class="ag-theme-balham"></div>
+			<ul class="panelBar">
+				<li class="center">
+					<div class="tablePaging" id="planListPagination"></div>
+				</li>
+			</ul>
+		</div>
+	</div>
+
+<!-- 컬러 피커 -->
+<!-- <script src='https://bgrins.github.io/spectrum/spectrum.js'></script> -->
+<!-- <link rel='stylesheet' href='https://bgrins.github.io/spectrum/spectrum.css' /> -->
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	
+	var siteCdList = gagajf.convertToArray([[${siteCdList}]]);
+	var wmGbList = {"A":"ALL", "P":"웹", "M":"모바일"};
+	var templateTypeList = {"H":"HTML", "T":"TEXT"};
+	var planGbList = {"P":"기획전", "E":"이벤트"};
+
+	var columnDefs = [
+		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: "미리보기"		, field:'plan'		, width:100, cellClass: 'text-center',
+			cellRenderer: function(params) { return '<a href="javascript:void(0);" onclick="fnPreview(\'' + params.data.planSq + '\');">' + '미리보기' + '</a>'; }
+		},
+		{headerName: "기획전구분"		, field:'planGb'	, width:100, cellClass: 'text-center',
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(planGbList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(planGbList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(planGbList, params.newValue); }
+		},
+		{headerName: "프론트구분"	, field:'frontGb'	, width:120, cellClass: 'text-center',
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(wmGbList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(wmGbList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(wmGbList, params.newValue); }
+		},
+		{headerName: "오픈여부"		, field:'openYn'	, width:80 , cellClass: 'text-center'},
+		{headerName: "기획전번호"		, field:'planSq'	, width:100, cellClass: 'text-center',
+			cellRenderer: function(params) { return '<a href="javascript:void(0);">' + params.value + '</a>'; }
+		},
+		{headerName: "기획전명"		, field:'planNm'	, width:300, cellClass: 'text-left',
+			cellRenderer: function(params) { return '<a href="javascript:void(0);">' + params.value + '</a>'; }
+		},
+		{headerName: "서브제목"		, field:'dtlTitle1'	, width:300 , cellClass: 'text-center'},
+		{headerName: "사이트"			, field:'siteCd'	, width:100, cellClass: 'text-center',
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(siteCdList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(siteCdList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(siteCdList, params.newValue); }
+		},
+		{headerName: "기획전템플릿유형"	, field:'templateType'	, width:100, cellClass: 'text-center',
+			cellEditor: 'agRichSelectCellEditor',
+			cellEditorParams: { values: gagaAgGrid.extractValues(templateTypeList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(templateTypeList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(templateTypeList, params.newValue); }
+		},
+		{headerName: "전시순서"		, field:'dispOrd'	, width:100, cellClass: 'text-right' },
+		{headerName: "진행시작일시"		, field:'dispStdt'	, width:150, cellClass: 'text-center'},
+		{headerName: "진행종료일시"		, field:'dispEddt'	, width:150, cellClass: 'text-center'},
+		{headerName: "등록자"			, field:'regNm'		, width:100, cellClass: 'text-center'},
+		{headerName: "등록일"			, field:'regDt'		, width:150, cellClass: 'text-center'}
+	];
+	
+	// Get GridOptions
+	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// 중복 선택 가능
+	gridOptions.rowSelection = 'multiple';
+	gridOptions.suppressRowClickSelection = true;
+
+	// 셀 클릭 이벤트
+	gridOptions.onCellClicked = function(event) {
+		var field = event.colDef.field;
+		if (field != 'planSq' && field != 'planNm')
+			return;
+
+		fnBindDetail(field, event.data); // 바인딩
+	}
+	
+	// 바인딩
+	var fnBindDetail = function(field, rowData) {
+		if (field == 'planSq') { // 기획전 웹수정 팝업
+			fnEventWebDetailPopup(rowData.planSq);
+		}
+
+		if (field == 'planNm') { // 기획전 관리 팝업
+			fnEventCornerPopup(rowData.planSq);
+		}
+	}
+	
+
+	// 웹 등록 팝업
+	var fnPlanWebRegisterPopup = function() {
+		var actionUrl = "/marketing/planning/webdetail/form?mode=N";
+		cfnOpenModalPopup(actionUrl,'popupPlanWebDetail');
+	}
+
+	// 웹 수정 팝업
+	var fnEventWebDetailPopup = function(planSq) {
+		var actionUrl = "/marketing/planning/webdetail/form?mode=U&planSq=" + planSq;
+		cfnOpenModalPopup(actionUrl,'popupPlanWebDetail');
+	}
+	
+	// 이벤트 코너 관리 팝업
+	var fnEventCornerPopup = function(planSq) {
+		var actionUrl = "/marketing/planning/corner/list/form?planSq=" + planSq;
+		cfnOpenModalPopup(actionUrl, 'popupCorner');
+	}
+
+	// 미리보기
+	var fnPreview = function(planSq) {
+		var _wmall = [[${@environment.getProperty('domain.pastel')}]];
+		window.open(_wmall + '/planning/detail/form?planSq=' + planSq + '&adminPreview=Y', '_blank');
+ 		//document.location.href = _PAGE_CUSTOMER_INFO;
+	}
+
+	// 초기화 클릭시
+	$('#btnInit').on('click', function() {
+		fnInit();
+	});
+	
+	var fnInit = function(){
+		$('#planListSearchForm')[0].reset();
+	}
+	
+	// 조회클릭시
+	$('#btnSearch').on('click', function() {
+		$("#planListSearchForm input[name=pageNo]").val('1');
+		fnPlanListSearch();
+	});
+
+	// 조회
+	var fnPlanListSearch = function() {
+		
+		if(!fnConditionCheck()) return;
+		
+		gagaPaging.init('planListSearchForm', fnSearchCallBack, 'planListPagination', $('#pageSize').val());
+		gagaPaging.load($("#planListSearchForm input[name=pageNo]").val());
+	}
+	
+	// 삭제클릭시
+	var fnSelectedDelete = function() {
+		var selectedData = gagaAgGrid.selectedRowData(gridOptions);
+
+		if (selectedData.length < 1) {
+			mcxDialog.alert('선택 된 기획전이 업습니다.');
+			return;
+		}
+
+		mcxDialog.confirm('선택된 기획전을 삭제하시겠습니까?',{
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				var jsonData = JSON.stringify(selectedData);
+
+				gagajf.ajaxJsonSubmit('/marketing/planning/delete', jsonData, function() {
+					fnPlanListSearch();
+				});
+			}
+		});
+	}
+
+	//검색 조건 확인
+	var fnConditionCheck = function(){
+		var formId = '#planListSearchForm';
+		var form = document.planListSearchForm;
+
+		var searchFlag = false;
+		var cnt = 0;
+		
+		for (i = 0; i < form.elements.length; i++ ) {
+			var el = form.elements[i];
+			if ($(el).prop("type") == "text" || $(el).prop("type") == "textarea" || ($(el).prop("type") == "select-one" && 
+					el.name != "search" && el.name != "pageSize" && el.name != "beforSkipFlag")) {
+				if (!(el.value == null || el.value == "")) {
+					cnt++;
+				}
+			}
+		}		
+		if(cnt > 0) searchFlag = true;
+		
+		var fromDate = $('#planListSearchForm input[name=stDate]').val();
+		var toDate = $('#planListSearchForm input[name=edDate]').val();
+		
+		if (!gagajf.isNull(fromDate) || !gagajf.isNull(toDate)) {
+			
+			if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
+				mcxDialog.alertC("등록일 조회시 시작일자와 종료일자를 입력하세요.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#planListSearchForm input[name=stDate]').focus();
+					}
+				});
+				return false;
+			}
+
+			if (fromDate > toDate) {
+				mcxDialog.alert("노출기간 시작일자는 종료일자 보다 클 수 없습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#planListSearchForm input[name=stDate]').focus();
+					}
+				});
+				return false;
+			} 
+		}
+
+		return true;
+	}
+	
+	var fnSearchCallBack = function(result){
+
+		$('#planListSearchForm').find('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
+		$('#planListSearchForm').find('#pageNo').val(result.pageing.pageable.pageNo.addComma());
+		$('#planListSearchForm').find('#pgNo').html(result.pageing.pageable.pageNo.addComma());
+		$('#planListSearchForm').find('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
+		gridOptions.api.setRowData(result.planList);
+		
+		gagaPaging.createPagination(result.pageing.pageable);
+	}
+	
+	//페이징 
+	$('#planListSearchForm select[name=pageSize]').on('change', function() {
+		$("#planListSearchForm input[name=pageNo]").val('1');
+		fnPlanListSearch($("#planListSearchForm input[name=searchGb]").val());
+	});
+	
+	
+	$(document).ready(function() {
+
+		cfnCreateCalendar('#sellTerms', 'stDate', 'edDate', true, '기간', 'X');
+		var chkBeforSkipFlag = '&nbsp;&nbsp;<label class="chkBox"><input type="checkbox" name="beforSkipFlag" value="Y" >이전데이터 제외</label>';
+		$("#planListSearchForm").find('#sellTerms').append(chkBeforSkipFlag);
+		
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+
+	});
+
+/*]]>*/
+</script>
+
+</html>

+ 929 - 0
src/main/webapp/WEB-INF/views/marketing/PlanWebDetailPopupForm.html

@@ -0,0 +1,929 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : PlanWebDetailForm.html
+ * @desc    : 웹 수정 / 웹 등록 팝업 화면 Page
+ *============================================================================
+ * SISUN
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.02.04   sowon   최초 작성
+ *******************************************************************************
+ -->
+<div class="modalPopup" data-width="1100" id="planWebRegisterFormDiv">
+	<div class="panelStyle">
+		<div class="panelTitle">
+			<h2 th:text="${'기획전 웹 ' + (mode == 'N' ? '등록' : '수정')}">기획전 웹 수정</h2>
+			<button type="button" class="close" onclick="uifnPopupClose('popupPlanWebDetail')"><i class="fa fa-times"></i></button>
+		</div>
+		
+	<!-- 기획전 웹 수정 -->
+		<div class="panelContent" th:if="${mode == 'U'}">
+		<form th:object="${planInfo}" id="planWebUpdateForm" name="planWebUpdateForm" action="#" th:action="@{'/system/user/save'}" th:method="post">
+			<input type="hidden" name="mode" th:value="${mode}"/>
+			<input type="hidden" name="planSq" th:value="*{planSq}"/>
+
+			<div class="cardArea" style="height: 700px;margin: -5px;">
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:10%"/>
+						<col style="width:40%;"/>
+						<col style="width:10%;"/>
+						<col style="width:35%;"/>
+						<col/>
+					</colgroup>
+					<tr>
+						<th class="dashR">기획전구분<i class="star"></i></th>
+						<td class="dashR">
+							<select name="planGb" id="planGb" th:field="*{planGb}" onchange="fnChangePlanGb(this);">
+								<option value="P">기획전</option>
+								<option value="E">이벤트</option>
+							</select>
+						</td>
+						<th class="dashR">기획전탬플릿유형<i class="star"></i></th>
+						<td class="dashR" colspan="3">
+							<select name="templateType" th:field="*{templateType}">
+								<option value="">선택</option>
+								<option value="H">HTML</option>
+								<option value="T">TEXT</option>
+							</select>
+						</td>
+					</tr>
+					<!-- <tr>
+						<th class="dashR">회원구분<i class="star"></i></th>
+						<td class="dashR">
+							<select name="custGb" required="required" data-valid-name="회원구분" th:field="*{custGb}">
+								<option th:if="${custGbList}" th:each="oneData, status : ${custGbList}" th:value="${oneData.cd}" th:selected="${oneData.cd} == 'Y'" th:text="|${oneData.cdNm}|"></option>
+							</select>
+						</td>
+						<th class="dashR">회원등급<i class="star"></i></th>
+						<td class="dashR" colspan="3">
+							<select name="custGrade" required="required" data-valid-name="회원등급" th:field="*{custGrade}">
+								<option value="0">전체</option>
+								<option th:if="${custGradeList}" th:each="oneData, status : ${custGradeList}" th:value="${oneData.cd}" th:selected="${oneData.cd} == 'Y'" th:text="|${oneData.cdNm}|"></option>
+							</select>
+						</td>
+					</tr> -->
+					<tr>
+						<th class="dashR">프론트 구분<i class="star"></i></th>
+						<td class="dashR">
+							<select name="frontGb" id="frontGb" th:field="*{frontGb}">
+								<option value="">선택</option>
+								<option value="A">전체</option>
+								<option value="P">웹</option>
+								<option value="M">모바일</option>
+							</select>
+						</td>
+						<th class="dashR">기획전명<i class="star"></i></th>
+						<td class="dashR" colspan="3">
+							<input type="text" name="planNm" id="planNm" th:field="*{planNm}"/>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">진행기간<i class="star"></i></th>
+						<td class="dashR">
+							<input type="text" class="schDate w100" name="startSearchDate" maxlength="10" required="required" data-valid-name="노출기간" th:field="*{startSearchDate}"/>
+							<select name="startSearchHour" required="required" data-valid-name="진행기간 시작시간">
+								<th:block th:each="num, index  : ${#numbers.sequence(0,23)}">
+								<option th:value="${#numbers.formatInteger(num,2)}"  th:text="|${#numbers.formatInteger(num,2)}시|" th:selected="*{#strings.substring(dispStdt, 11, 13)} == ${#strings.toString(num)} ? 'true'">시간</option>
+								</th:block>
+							</select>
+							<select name="startSearchMin" required="required" data-valid-name="진행기간 시작시간">
+								<th:block th:each="num: ${#numbers.sequence(0,59)}">
+								<option th:value="${#numbers.formatInteger(num,2)}"  th:text="|${#numbers.formatInteger(num,2)}분|" th:selected="*{#strings.substring(dispStdt, 14, 16)} == ${#strings.toString(num)} ? 'true'">분</option>
+								</th:block>
+							</select>
+							~
+							<input type="text" class="schDate w100" name="endSearchDate" maxlength="10" required="required" data-valid-name="노출기간" th:field="*{endSearchDate}"/>
+							<select name="endSearchHour" required="required" data-valid-name="진행기간 종료시간">
+								<th:block th:each="num, index  : ${#numbers.sequence(0,23)}">
+								<option th:value="${#numbers.formatInteger(num,2)}"  th:text="|${#numbers.formatInteger(num,2)}시|" th:selected="*{#strings.substring(dispEddt, 11, 13)} == ${#strings.toString(num)} ? 'true'">시간</option>
+								</th:block>
+							</select>
+							<select name="endSearchMin" required="required" data-valid-name="진행기간 종료시간">
+								<th:block th:each="num: ${#numbers.sequence(0,59)}">
+								<option th:value="${#numbers.formatInteger(num,2)}"  th:text="|${#numbers.formatInteger(num,2)}분|" th:selected="*{#strings.substring(dispEddt, 14, 16)} == ${#strings.toString(num)} ? 'true'">분</option>
+								</th:block>
+							</select>
+							<input type="hidden" name="dispStdt" id="dispStdt"/>
+							<input type="hidden" name="dispEddt" id="dispEddt"/>
+						</td>
+						<th class="dashR">서브제목</th>
+						<td class="dashR" colspan="3">
+							<input type="text" name="dtlTitle1" id="dtlTitle1" th:value="*{dtlTitle1}"/>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">코너명노출 여부<i class="star"></i></th>
+						<td class="dashR">
+							<select name="cornerNmDispYn" th:field="*{cornerNmDispYn}">
+								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:selected="${oneData.cd} == 'Y'" th:text="|${oneData.cdNm}|"></option>
+							</select>
+						</td>
+						<th class="dashR">오픈여부<i class="star"></i></th>
+						<td class="dashR">
+							<select name="openYn" th:field="*{openYn}">
+								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:selected="${oneData.cd} == 'Y'" th:text="|${oneData.cdNm}|"></option>
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">사이트<i class="star"></i></th>
+						<td class="dashR">
+							<select name="siteCd" th:field="*{siteCd}">
+								<option value="">선택</option>
+								<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|${oneData.cdNm}|"></option>
+							</select>
+						</td>
+						<th class="dashR">전시순서</th>
+						<td class="dashR">
+							<input type="text" name="dispOrd" class="w100 aR" th:value="*{dispOrd}"/>
+						</td>
+						<!-- <th class="dashR">삭제여부<i class="star"></i></th>
+						<td class="dashR">
+							<select name="delYn" th:field="*{delYn}" required="required" data-valid-name="삭제여부">
+								<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>
+					<tr>
+						<th class="dashR">사용고객등급구분<em class="required" title="필수"></em></th>
+						<td class="dashR">
+							<label class="chkBox" th:if="${usableCustGradeList}" th:each="oneData, status : ${usableCustGradeList}">
+								<input type="checkbox" name="usableCustGradeArr" th:value="${oneData.cd}" th:text="${oneData.cdNm}"/>
+							</label>
+						</td>
+						<th class="dashR">댓글여부</th>
+						<td class="dashR">
+							<select name="replyYn" th:field="*{replyYn}">
+								<option value="">선택</option>
+								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="|${oneData.cdNm}|"></option>
+							</select>
+						</td>
+					</tr>
+					<!-- <tr>
+						<th class="dashR">뱃지 타이틀</th>
+						<td class="dashR" colspan="3">
+							<input type="text" name="badgeNm" th:value="*{badgeNm}"/>
+						</td>
+						<th class="dashR">뱃지 배경색상</th>
+						<td class="dashR">
+							<input type="text" name="badgeBcolor" th:value="*{badgeBcolor}"/>
+						</td>
+						<th class="dashR">뱃지 글자색상</th>
+						<td class="dashR" colspan="3">
+							<input type="text" name="badgeFcolor" th:value="*{badgeFcolor}"/>
+						</td>
+					</tr> -->
+					<tr>
+						<th class="dashR">PC 메인 이미지<i id="pMimgStar"></i><br/>[삭제여부<label class="chkBox"><input type="checkbox" name="orgMainPimgDelYn" value="Y"/></label>]</th>
+						<td class="dashR">
+							<div th:if=*{mainPimg} id="mainPimgView" style="float:left;">
+								<img id="PreMainPimgUrl" th:src="${@environment.getProperty('upload.image.view') + '/planning/'} + *{mainPimg}" style="max-width:720px;"/>
+							</div>
+						</td>
+						<td class="dashR" colspan="4">
+							<div class="uFile w400">
+								<input id="registerMainPimg" name="registerMainPimg" type="file" accept="image/*" class="uFileInput w400"/>
+								<label for="registerMainPimg" class="uFileLabel w400">파일선택</label>
+								<input type="hidden" name="orgMainPimg" id="orgMainPimg" th:value="*{mainPimg}"/>
+								<input type="hidden" name="mainPimg" id="mainPimg"/>
+							</div>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">모바일 메인 이미지<i id="mMimgStar"></i><br/>[삭제여부<label class="chkBox"><input type="checkbox" name="orgMainMimgDelYn" value="Y"/></label>]</th>
+						<td class="dashR">
+							<div th:if=*{mainMimg} id="imgFileView" style="float:left;">
+								<img id="PreMainMimgUrl" th:src="${@environment.getProperty('upload.image.view') + '/planning/'} + *{mainMimg}" style="max-width:720px;"/>
+							</div>
+						</td>
+						<td class="dashR" colspan="4">
+							<div class="uFile w400">
+								<input id="registerMainMimg" name="registerMainMimg" type="file" accept="image/*" class="uFileInput w400"/>
+								<label for="registerMainMimg" class="uFileLabel w400">파일선택</label>
+								<input type="hidden" name="orgMainMimg" id="orgMainMimg" th:value="*{mainMimg}"/>
+								<input type="hidden" name="mainMimg" id="mainMimg"/>
+							</div>
+						</td>
+					</tr>
+					<!-- <tr>
+						<th class="dashR">웹 상세 이미지<br/>[삭제여부<label><input type="checkbox" name="orgDtlPimgDelYn" value="Y"/></label>]</th>
+						<td class="dashR">
+							<div th:if=*{dtlPimg} id="DtlPimgView" style="float:left;">
+								<img id="PreDtlPimgUrl" th:src="${@environment.getProperty('upload.image.view') + '/plan/'} + *{dtlPimg}" style="width:100%;"/>
+							</div>
+						</td>
+						<td class="dashR" colspan="4">
+							<div class="uFile w400">
+								<input id="registerDtlPimg" name="registerDtlPimg" type="file" accept="image/*" class="uFileInput w400"/>
+								<label for="registerDtlPimg" class="uFileLabel w400">파일선택</label>
+								<input type="hidden" name="orgDtlPimg" id="orgDtlPimg" th:value="*{dtlPimg}"/>
+								<input type="hidden" name="dtlPimg" id="dtlPimg"/>
+							</div>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">모바일 상세 이미지<br/>[삭제여부<label><input type="checkbox" name="orgDtlMimgDelYn" value="Y"/></label>]</th>
+						<td class="dashR">
+							<div th:if=*{dtlMimg} id="DtlMimgView" style="float:left;">
+								<img id="PredtlMimgUrl" th:src="${@environment.getProperty('upload.image.view') + '/plan/'} + *{dtlMimg}" style="width:100%;"/>
+							</div>
+						</td>
+						<td class="dashR" colspan="4">
+							<div class="uFile w400">
+								<input id="registerDtlMimg" name="registerDtlMimg" type="file" accept="image/*" class="uFileInput w400"/>
+								<label for="registerDtlMimg" class="uFileLabel w400">파일선택</label>
+								<input type="hidden" name="orgDtlMimg" id="orgDtlMimg" th:value="*{dtlMimg}"/>
+								<input type="hidden" name="dtlMimg" id="dtlMimg"/>
+							</div>
+						</td>
+					</tr> -->
+				</tbody>
+				<!-- <tbody id="questionEventUpdate">
+					<tr>
+						<th class="dashR">개인정보 수집동의</th>
+						<td class="dashR">
+							<div style="margin-top:5px;">
+								<textarea name="privacyPolicy" id="privacyPolicyDetail" style="width:720px;">[[*{privacyPolicy}]]</textarea>
+							</div>
+						</td>
+						<th class="dashR">입력항목<div><button type="button" class="btn btn-primary btn-lg" th:onclick="'cfnOpenPlanAnswerPopup('+*{planSq}+');'">참여자</button></div></th>
+						<td class="dashR">
+							<th:bock th:if="${planQuestionList != null and !planQuestionList.empty}" th:each="oneData, status : ${planQuestionList}">
+								<div>
+									<input type="text" class="w200" name="planQtitle" th:value="${oneData.planQtitle}"/>
+									<label class="chkBox"><input type="checkbox" th:checked="${oneData.attachYn}=='Y'" onclick="fnAttachYnClick(this);" />첨부파일</label>
+									<th:block th:if="${status.first}">
+										<button type="button" class="btn btn-base btn-lg" onclick="fnAddRow(this);">추가</button>
+									</th:block>
+									<th:block th:unless="${status.first}">
+										<button type="button" class="btn icn" onclick="fnDeleteRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button>
+									</th:block>
+									<input type="hidden" name="attachYn" th:value="${oneData.attachYn}"/>
+								</div>
+							</th:bock>
+							<th:block th:unless="${planQuestionList != null and !planQuestionList.empty}">
+								<div>
+									<input type="text" class="w200" name="planQtitle" />
+									<label><input type="checkbox" onclick="fnAttachYnClick(this);" />첨부파일</label>
+									<button type="button" class="btn btn-base btn-lg" onclick="fnAddRow(this);">추가</button>
+									<input type="hidden" name="attachYn" th:value="N"/>
+								</div>
+							</th:block>
+						</td>
+					</tr>
+				</tbody> -->
+				<tbody>
+					<!-- <tr>
+						<th class="dashR">댓글여부</th>
+						<td class="dashR" colspan="5">
+							<select name="replyYn" th:field="*{replyYn}">
+								<option value="">선택</option>
+								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="|${oneData.cdNm}|"></option>
+							</select>
+						</td>
+						<th class="dashR">DEV URL</th>
+						<td class="dashR" colspan="4">
+							<input type="text" name="devUrl" id="devUrl" th:value="*{devUrl}"/>
+						</td>
+					</tr> -->
+					<tr>
+						<th class="dashR">웹용소스</th>
+						<td class="dashR" colspan="5">
+							<div style="margin-top:5px;">
+								<textarea name="fsrcPc" id="fsrcPcDetail" rows="15" cols="95" style="width:1280px;"></textarea>
+							</div>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">모바일용소스</th>
+						<td class="dashR" colspan="5">
+							<div style="margin-top:5px;">
+								<textarea name="fsrcMobile" id="fsrcMobileDetail" rows="15" cols="95" style="width:1280px;"></textarea>
+							</div>
+						</td>
+					</tr>
+				</table>
+			</div>
+			<div style='margin: 13px;'>
+			<ul class="panelBar">
+				<li class="right" th:if="${mode == 'U'}">
+					<button type="button" class="btn btn-success btn-lg" onclick="fnPlanSave('#planWebUpdateForm');">저장</button>
+				</li>
+			</ul>
+			</div>
+		</form>
+	</div>
+		
+	
+		<!-- 기획전 웹 등록 -->
+		<div class="panelContent" th:if="${mode == 'N'}">
+			<form id="planWebRegisterForm" name="planWebRegisterForm" action="#" th:action="@{'/system/user/save'}" th:method="post">
+			<input type="hidden" name="mode" th:value="${mode}"/>
+			<div>
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width: 150px;"/>
+						<col/>
+					</colgroup>
+					<tr>
+						<th>기존 기획전</th>
+						<td>
+							<select name="planSq" id="planSq">
+								<option value="">선택</option>
+								<option th:if="${planList}" th:each="oneData, status : ${planList}" th:value="${oneData.planSq}" th:text="|[${oneData.planSq}]  ${oneData.planNm}|"></option>
+							</select>
+							<button type="button" class="btn btn-default btn-lg" onclick="fnPlanCopyPopup();">기획전복사</button>
+						</td>
+					</tr>
+				</table>
+			</div>
+			<div class="cardArea">
+				<table class="frmStyle">
+					<colgroup>
+						<col style="width:10%"/>
+						<col style="width:40%;"/>
+						<col style="width:10%;"/>
+						<col style="width:35%;"/>
+						<col/>
+					</colgroup>
+					<tr>
+						<th class="dashR">기획전구분<i class="star"></i></th>
+						<td class="dashR">
+							<select name="planGb" required="required" data-valid-name="기획전구분" onchange="fnChangePlanGb(this);">
+								<option value="">선택</option>
+								<option value="P">기획전</option>
+								<option value="E">이벤트</option>
+							</select>
+						</td>
+						<th class="dashR">기획전탬플릿유형<i class="star"></i></th>
+						<td class="dashR" colspan="3">
+							<select name="templateType" required="required" data-valid-name="기획전탬플릿유형">
+								<option value="">선택</option>
+								<option value="H">HTML</option>
+								<option value="T">TEXT</option>
+							</select>
+						</td>
+					</tr>
+				<!-- 	<tr>
+						<th class="dashR">회원구분<i class="star"></i></th>
+						<td class="dashR">
+							<select name="custGb" required="required" data-valid-name="회원구분">
+								<option th:if="${custGbList}" th:each="oneData, status : ${custGbList}" th:value="${oneData.cd}" th:selected="${oneData.cd} == 'Y'" th:text="|${oneData.cdNm}|"></option>
+							</select>
+						</td>
+						<th class="dashR">회원등급<i class="star"></i></th>
+						<td class="dashR" colspan="3">
+							<select name="custGrade" required="required" data-valid-name="회원등급">
+								<option value="0">전체</option>
+								<option th:if="${custGradeList}" th:each="oneData, status : ${custGradeList}" th:value="${oneData.cd}" th:selected="${oneData.cd} == 'Y'" th:text="|${oneData.cdNm}|"></option>
+							</select>
+						</td>
+					</tr> -->
+					<tr>
+						<th class="dashR">프론트 구분<i class="star"></i></th>
+						<td class="dashR">
+							<select name="frontGb" id="frontGb" required="required" data-valid-name="프론트 구분">
+								<option value="">선택</option>
+								<option value="A">전체</option>
+								<option value="P">웹</option>
+								<option value="M">모바일</option>
+							</select>
+						</td>
+						<th class="dashR">기획전명<i class="star"></i></th>
+						<td class="dashR" colspan="3">
+							<input type="text" name="planNm" id="planNm" maxlength="50" required="required" data-valid-name="기획전명"/>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">진행기간<i class="star"></i></th>
+						<td class="dashR">
+							<input type="text" class="schDate w100" id="viewStartDtNew" name="startSearchDate" maxlength="10" required="required" data-valid-name="노출기간" />
+							<select name="startSearchHour" required="required" data-valid-name="진행기간 시작시간">
+								<th:block th:each="num, index  : ${#numbers.sequence(0,23)}">
+								<option  th:value="${#numbers.formatInteger(num,2)}" th:text="|${#numbers.formatInteger(num,2)}시|" >시간</option>
+								</th:block>
+							</select>
+							<select name="startSearchMin" required="required" data-valid-name="진행기간 시작시간">
+								<th:block th:each="num: ${#numbers.sequence(0,59)}">
+								<option  th:value="${#numbers.formatInteger(num,2)}"  th:text="|${#numbers.formatInteger(num,2)}분|" >분</option>
+								</th:block>
+							</select>
+							~
+							<input type="text" class="schDate w100" id="viewEndDtNew" name="endSearchDate" maxlength="10" required="required" data-valid-name="노출기간"/>
+							<select name="endSearchHour" required="required" data-valid-name="진행기간 종료시간">
+								<th:block th:each="num, index  : ${#numbers.sequence(0,23)}">
+								<option th:value="${#numbers.formatInteger(num,2)}"  th:text="|${#numbers.formatInteger(num,2)}시|" th:selected="${#numbers.formatInteger(num,2)}==23 ? 'true'">시간</option>
+								</th:block>
+							</select>
+							<select name="endSearchMin" required="required" data-valid-name="진행기간 종료시간">
+								<th:block th:each="num: ${#numbers.sequence(0,59)}">
+								<option th:value="${#numbers.formatInteger(num,2)}"  th:text="|${#numbers.formatInteger(num,2)}분|" th:selected="${#numbers.formatInteger(num,2)}==59 ? 'true'">분</option>
+								</th:block>
+							</select>
+							<input type="hidden" name="dispStdt" id="dispStdt"/>
+							<input type="hidden" name="dispEddt" id="dispEddt"/>
+						</td>
+						<th class="dashR">서브제목</th>
+						<td class="dashR" colspan="3">
+							<input type="text" name="dtlTitle1" id="dtlTitle1"/>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">코너명노출 여부<i class="star"></i></th>
+						<td class="dashR">
+							<select name="cornerNmDispYn" 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>
+							</select>
+						</td>
+						<th class="dashR">오픈여부<i class="star"></i></th>
+						<td class="dashR" 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>
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">사이트<i class="star"></i></th>
+						<td class="dashR">
+							<select name="siteCd" required="required" data-valid-name="사이트">
+								<option value="">선택</option>
+								<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|${oneData.cdNm}|"></option>
+							</select>
+						</td>
+						<th class="dashR">전시순서</th>
+						<td class="dashR" colspan="3">
+							<input type="text" class="w100 aR" name="dispOrd"/>
+						</td>
+					</tr>
+					<!-- <tr>
+						<th class="dashR">뱃지 타이틀</th>
+						<td class="dashR">
+							<input type="text" class="w500" name="badgeNm"/>
+						</td>
+
+						<th class="dashR">뱃지 배경색상</th>
+						<td class="dashR">
+							<input type="text" class="w100" name="badgeBcolor"/>
+						</td>
+
+						<th class="dashR">뱃지 글자색상</th>
+						<td class="dashR">
+							<input type="text" class="w100" name="badgeFcolor"/>
+						</td>
+					</tr> -->
+					<tr>
+						<th class="dashR">사용고객등급구분<em class="required" title="필수"></em></th>
+						<td class="dashR">
+							<label class="chkBox" th:if="${usableCustGradeList}" th:each="oneData, status : ${usableCustGradeList}">
+								<input type="checkbox" name="usableCustGradeArr" th:value="${oneData.cd}" th:text="${oneData.cdNm}"/>
+							</label>
+						</td>
+						<th class="dashR">댓글여부</th>
+						<td class="dashR" colspan="5">
+							<select name="replyYn">
+								<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>
+					<!--<tr>
+					
+						 <th class="dashR">DEV URL</th>
+						<td class="dashR" colspan="3">
+							<input type="text" name="devUrl" id="devUrl"/>
+						</td> 
+					</tr>-->
+					<tr>
+						<th class="dashR">PC 메인 이미지<i id="pMimgStar"></i></th>
+						<td class="dashR" colspan="5">
+							<div class="uFile w400">
+								<input id="registerMainPimg" name="registerMainPimg" type="file" accept="image/*" class="uFileInput w400"/>
+								<label for="registerMainPimg" class="uFileLabel w400">파일선택</label>
+								<input type="hidden" name="mainPimg" id="mainPimg" value=""/>
+							</div>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">모바일 메인 이미지<i id="mMimgStar"></i></th>
+						<td class="dashR" colspan="5">
+							<div class="uFile w400">
+								<input id="registerMainMimg" name="registerMainMimg" type="file" accept="image/*" class="uFileInput w400"/>
+								<label for="registerMainMimg" class="uFileLabel w400">파일선택</label>
+								<input type="hidden" name="mainMimg" id="mainMimg" value=""/>
+							</div>
+						</td>
+					</tr>
+					<!-- <tr>
+						<th class="dashR">PC 상세 이미지</th>
+						<td class="dashR" colspan="5">
+							<div class="uFile w400">
+								<input id="registerDtlPimg" name="registerDtlPimg" type="file" accept="image/*" class="uFileInput w400"/>
+								<label for="registerDtlPimg" class="uFileLabel w400">파일선택</label>
+								<input type="hidden" name="dtlPimg" value=""/>
+							</div>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">모바일 상세 이미지</th>
+						<td class="dashR" colspan="5">
+							<div class="uFile w400">
+								<input id="registerDtlMimg" name="registerDtlMimg" type="file" accept="image/*" class="uFileInput w400"/>
+								<label for="registerDtlMimg" class="uFileLabel w400">파일선택</label>
+								<input type="hidden" name="dtlMimg" value=""/>
+							</div>
+						</td>
+					</tr> -->
+				</tbody>
+				<!-- <tbody id="questionEventInsert">
+					<tr>
+						<th class="dashR">개인정보 수집동의</th>
+						<td class="dashR" >
+							<div style="margin-top:5px;">
+								<textarea name="textareaR4" id="privacyPolicyRegister" style="width:720px;"></textarea>
+							</div>
+						</td>
+						<th class="dashR">입력항목</th>
+						<td class="dashR" colspan="5">
+							<div>
+								<input type="text" class="w200" name="planQtitle"/>
+								<label><input type="checkbox" onclick="fnAttachYnClick(this);" />첨부파일</label>
+								<button type="button" class="btn btn-base btn-lg" onclick="fnAddRow(this);">추가</button>
+								<input type="hidden" name="attachYn" value="N"/>
+							</div>
+						</td>
+					</tr>
+				</tbody> -->
+				<tbody>
+					<tr>
+						<th class="dashR">웹용소스</th>
+						<td class="dashR" colspan="5">
+							<div style="margin-top:5px;">
+								<!-- <textarea name="fsrcPc" id="fsrcPcRegister" rows="15" cols="95" style="width:1280px;"></textarea> -->
+								<textarea class="textareaR4" id="fsrcPcDetail" name="fsrcPc"></textarea>
+							</div>
+						</td>
+					</tr>
+					<tr>
+						<th class="dashR">모바일용소스</th>
+						<td class="dashR" colspan="5">
+							<div style="margin-top:5px;">
+								<!-- <textarea name="fsrcMobile" id="fsrcMobileRegister" rows="15" cols="95" style="width:1280px;"></textarea> -->
+								<textarea class="textareaR4" id="fsrcMobileDetail" name="fsrcMobile"></textarea>
+							</div>
+						</td>
+					</tr>
+				</table>
+			</div>
+				<div style='margin: 13px;'>
+					<ul class="panelBar">
+						<li class="right" th:if="${mode == 'N'}">
+							<button type="button" class="btn btn-info btn-lg" onclick="fnPlanSave('#planWebRegisterForm');">저장</button>
+						</li>
+					</ul>
+				</div>
+			</form>
+		</div>
+	</div>
+</div>
+
+<script type="text/javascript" src="/ux/plugins/summernote/summernote.js?v=2020103001"></script>
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.summernote.js?v=2020103001"></script>
+<script th:inline="javascript">
+/*<![CDATA[*/
+
+	// 스마트에디터
+	//var seOptions = gagaSe.getEditorOptions();
+	var mode = [[${mode}]];
+	var planInfo = [[${planInfo}]];
+	var fsrcPc = [[${fsrcPc}]];
+	var fsrcMobile = [[${fsrcMobile}]];
+	var snOptions;
+
+	$(document).ready(function() {
+		snOptions = gagaSn.getToolbarOptions('media');
+		gagaSn.createSummernote(snOptions, '#fsrcPcDetail');
+		gagaSn.createSummernote(snOptions, '#fsrcMobileDetail');
+		
+		 if (mode =='U') {
+			/* $('#planWebDetailForm input[name=badgeFcolor]').spectrum({
+				preferredFormat: "hex",
+				showInput: true,
+				allowEmpty: true
+			});
+
+			$('#planWebDetailForm input[name=badgeBcolor]').spectrum({
+				preferredFormat: "hex",
+				showInput: true,
+				allowEmpty: true
+			}); */
+
+			if (planInfo.goodsLimitYn == 'N') {
+				$('#planWebDetailForm input[name=goodsLimitQty]').hide();
+			} else {
+				$('#planWebDetailForm input[name=goodsLimitQty]').show();
+			}
+
+			// 스마트에디터
+			//gagaSe.createSmartEditor(seOptions, 'fsrcPcDetail');
+			//gagaSe.createSmartEditor(seOptions, 'fsrcMobileDetail');
+
+			// 썸머노트 값 설정
+			$('#fsrcPcDetail').summernote('code', fsrcPc.fsrc);
+			$('#fsrcMobileDetail').summernote('code', fsrcMobile.fsrc);
+			//gagaSn.setContents('#fsrcPcDetail', fsrcPc.fsrc);
+			//gagaSn.setContents('#fsrcMobileDetail', fsrcMobile.fsrc);
+
+			if($("#planGb").val()!='E'){
+				$("#questionEventInsert").hide();
+				$("#questionEventUpdate").hide();
+			}else{
+				gagaSn.createSummernote(snOptions, '#privacyPolicyRegister');
+			}
+
+		} else {
+			/* $('#planWebRegisterForm input[name=badgeFcolor]').spectrum({
+				preferredFormat: "hex",
+				showInput: true,
+				allowEmpty: true
+			});
+
+			$('#planWebRegisterForm input[name=badgeBcolor]').spectrum({
+				preferredFormat: "hex",
+				showInput: true,
+				allowEmpty: true
+			}); */
+
+			$("#viewStartDtNew").val(_today);
+			$("#viewEndDtNew").val(_today);
+
+			// 스마트에디터
+			//gagaSe.createSmartEditor(seOptions, 'fsrcPcRegister');
+			//gagaSe.createSmartEditor(seOptions, 'fsrcMobileRegister');
+
+			$("#questionEventInsert").hide();
+			$("#questionEventUpdate").hide();
+		} 
+		$('#frontGb').trigger('change');
+	});
+
+	// 카테고리 전시 여부
+	var fnCataCheck = function(is, formId) {
+		if (is.checked) {
+			$(formId + ' input[name=cateDispYn]').val('Y');
+			// 추후 카테고리 표시
+		} else {
+			$(formId + ' input[name=cateDispYn]').val('N');
+		}
+	}
+
+	// 상품제한여부
+	var fnGoodsCheck = function(is, formId) {
+		if (is.checked) {
+			$(formId + ' input[name=goodsLimitYn]').val('Y');
+			$(formId + ' input[name=goodsLimitQty]').show();
+			$(formId + ' input[name=goodsLimitQty]').focus();
+			// 추후 카테고리 표시
+		} else {
+			$(formId + ' input[name=goodsLimitYn]').val('N');
+			$(formId + ' input[name=goodsLimitQty]').hide();
+		}
+	}
+
+	var fnPlanCopyPopup = function() {
+		var planSq = $('#planWebRegisterForm select[name=planSq]').val();
+
+		if (gagajf.isNull(planSq)) {
+			mcxDialog.alert('복사할 기획전을 선택하세요.');
+			return;
+		}
+
+		mcxDialog.confirm('선택 된 기획전을 복사 하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				var actionUrl = '/marketing/plan/copy';
+				var data = {copyPlanSq : planSq};
+				var jsonData = JSON.stringify(data);
+
+				gagajf.ajaxJsonSubmit(actionUrl, jsonData, fnCopyCallback);
+			}
+		});
+	}
+
+	var fnCopyCallback = function(result) {
+		fnPlanWebDetailClose();
+		//fnSearch();
+
+		var actionUrl = "/marketing/planning/webdetail/form?mode=U&planSq=" + result.planSq;
+		cfnOpenModalPopup(actionUrl,'popupPlanWebDetail');
+	}
+
+	var fnPlanSave = function(formId) {
+		if (!gagajf.validation(formId))
+			return;
+
+		// 날짜 유효성 체크
+		var stDate = $(formId + ' input[name=startSearchDate]').val().replaceAll("-", "");
+		var edDate = $(formId + ' input[name=endSearchDate]').val().replaceAll("-", "");
+		var toDate = _today.replaceAll("-", "");
+
+		if (Number(stDate) > Number(edDate)) {
+			mcxDialog.alert('종료일자는 시작일자 보다 클 수 없습니다.');
+			return;
+		}
+
+		if (Number(stDate) < Number(toDate) && mode == 'N') {
+			mcxDialog.alert('시작일자는 오늘포함 이후로 등록해주세요.');
+			return;
+		}
+
+		if (Number(edDate) < Number(toDate) && mode == 'N') {
+			mcxDialog.alert('종료일자는 오늘포함 이후로 등록해주세요.');
+			return;
+		}
+		
+		stDate = $(formId + ' input[name=startSearchDate]').val();
+		edDate = $(formId + ' input[name=endSearchDate]').val();
+		$(formId + ' input[name=dispStdt]').val(stDate + ' ' + $(formId + ' select[name=startSearchHour]').val() + ':' + $(formId + ' select[name=startSearchMin]').val() + ':00');
+		$(formId + ' input[name=dispEddt]').val(edDate + ' ' + $(formId + ' select[name=endSearchHour]').val() + ':' + $(formId + ' select[name=endSearchMin]').val() + ':59');
+
+		/* // 댓글여부에 따른 위치 체크
+		if ($('#replyYn').val() == 'Y') {
+			var replyLoc = $(':radio[name="replyLoc"]:checked').val();
+
+			if (typeof replyLoc == 'undefined') {
+				mcxDialog.alert('댓글 사용 시 댓글위치를 선택해야합니다.');
+				return;
+			}
+		} */
+
+		// poll 관리일련번호 유효성 체크
+		/* if (!gagajf.isNull($(formId + ' input[name=pollSq]').val())) {
+			gagajf.ajaxFormSubmit('/marketing/poll/list', formId, function(result) {
+				console.log(result);
+				if (result.length < 1) {
+					mcxDialog.alert('입력하신 투표 일련번호가 존재 하지않습니다.');
+					return;
+				}
+			});
+		} */
+
+		var privacyPolicy = '';
+		var frontGb = $('#frontGb').val();
+		if (mode =='U') {
+			//gagaSn.getContents('fsrcPcDetail');
+			//gagaSn.getContents('fsrcMobileDetail');
+			//if($("#planGb").val()=='E'){
+			//	privacyPolicy = gagaSn.getContents('privacyPolicyDetail');
+			//}
+
+			// 이미지 처리
+			if ((!$('input[name=orgMainPimgDelYn]').is(':checked') ? true : false) &&
+				(gagajf.isNull($(formId + ' input[name=mainPimg]').val()) == true)   ) {
+				$(formId + ' input[name=mainPimg]').val($(formId + ' input[name=orgMainPimg]').val());
+			}
+
+			if ((!$('input[name=orgMainMimgDelYn]').is(':checked') ? true : false) &&
+				(gagajf.isNull($(formId + ' input[name=mainMimg]').val()) == true)  ) {
+				$(formId + ' input[name=mainMimg]').val($(formId + ' input[name=orgMainMimg]').val());
+			}
+
+			if ((!$('input[name=orgDtlPimgDelYn]').is(':checked') ? true : false) &&
+				(gagajf.isNull($(formId + ' input[name=dtlPimg]').val()) == true)  ) {
+				$(formId + ' input[name=dtlPimg]').val($(formId + ' input[name=orgDtlPimg]').val());
+			}
+
+			if ((!$('input[name=orgDtlMimgDelYn]').is(':checked') ? true : false) &&
+				(gagajf.isNull($(formId + ' input[name=dtlMimg]').val()) == true)  ) {
+				$(formId + ' input[name=dtlMimg]').val($(formId + ' input[name=orgDtlMimg]').val());
+			}
+
+			if ((!$('input[name=orgReplyImgYn]').is(':checked') ? true : false) &&
+				(gagajf.isNull($(formId + ' input[name=replyImg]').val()) == true) ) {
+				$(formId + ' input[name=replyImg]').val($(formId + ' input[name=orgReplyImg]').val());
+			}
+		} else {
+			//gagaSn.getContents('fsrcPcRegister');
+			//gagaSn.getContents('fsrcMobileRegister');
+			//if($("#planGb").val()=='E'){
+			//	privacyPolicy = gagaSn.getContents('privacyPolicyRegister');
+			//}
+		}
+
+		if(!gagajf.isNull($(formId + ' input[name=planQtitle]').val()) && gagajf.isNull(privacyPolicy.replace(/<br>/gi, '').replace(/<p>/gi, '').replace(/<\/\p>/gi, ''))){
+			mcxDialog.alert('입력항목 등록 시 개인정보 수집동의를 입력해 주세요.');
+			return;
+		}
+
+		if (formId == '#planWebRegisterForm') {
+			mcxDialog.confirm('등록 하시겠습니까?', {
+				cancelBtnText: "취소",
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					gagajf.ajaxFormSubmit("/marketing/planning/webdetail/create", "#planWebRegisterForm", fnPlanWebDetailCallBack); 
+					uifnPopupClose('planWebRegisterFormDiv');
+					fnPlanListSearch();
+					//fnPlanWebDetailClose();
+				}
+			});
+		} else {
+			mcxDialog.confirm('저장 하시겠습니까?', {
+				cancelBtnText: "취소",
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					var actionUrl = '/marketing/plan/webdetail/update';
+
+					gagajf.ajaxFormSubmit(actionUrl, formId, function() {
+						uifnPopupClose('planWebRegisterFormDiv');
+						fnPlanListSearch();
+						//fnPlanWebDetailClose();
+					});
+				}
+			});
+		}
+	}
+
+	// 이미지 첨부
+	$('input[name=registerMainPimg],input[name=registerMainMimg],input[name=registerDtlPimg],input[name=registerDtlMimg],input[name=registerReplyImg]').on('change', function() {
+		var name = $(this)[0].name;
+
+		var file = this.files[0];
+
+		gagajf.ajaxFileUpload('/common/file/upload?subDir=/planning'
+				, file
+				, function(result) {
+					if (name == 'registerMainPimg')
+						$('input[name=mainPimg]').val(result.newFileName);
+
+					if (name == 'registerMainMimg')
+						$('input[name=mainMimg]').val(result.newFileName);
+
+					if (name == 'registerDtlPimg')
+						$('input[name=dtlPimg]').val(result.newFileName);
+
+					if (name == 'registerDtlMimg')
+						$('input[name=dtlMimg]').val(result.newFileName);
+
+					if (name == 'registerReplyImg')
+						$('input[name=replyImg]').val(result.newFileName);
+				}
+				, 'image'
+		);
+	});
+
+
+	var fnChangePlanGb = function(obj) {
+		if($(obj).val()=='E'){
+			$("#questionEventInsert").show();
+			$("#questionEventUpdate").show();
+			if (mode =='U') {
+				if($("#privacyPolicyDetail").closest('div').children('#the_iframe').length==0){
+					gagaSn.createSummernote(snOptions, '#privacyPolicyDetail');
+				}
+			}else{
+				if($("#privacyPolicyRegister").closest('div').children('#the_iframe').length==0){
+					gagaSn.createSummernote(snOptions, '#privacyPolicyRegister');
+				}
+			}
+		}else{
+			$("#questionEventInsert").hide();
+			$("#questionEventUpdate").hide();
+		}
+	}
+
+	var fnAddRow = function(obj){
+		var html = '<div>';
+		html += '<input type="text" class="w200" name="planQtitle"/>';
+		html += '<label class="chkBox"><input type="checkbox" onclick="fnAttachYnClick(this);" />첨부파일</label>';
+		html += '<button type="button" class="btn icn" onclick="fnDeleteRow(this);"><i class="fa fa-times" aria-hidden="true"></i></button>';
+		html += '<input type="hidden" name="attachYn" value="N"/>';
+		html += '</div>';
+		$(obj).closest('td').append(html);
+	}
+
+	var fnDeleteRow = function(obj){
+		$(obj).closest('div').remove();
+	}
+
+	var fnAttachYnClick = function(obj){
+		var val = 'N';
+		if($(obj).prop('checked')){
+			val = 'Y';
+		}
+		$(obj).closest('div').find('input[name="attachYn"]').val(val);
+	}
+
+	var fnPlanWebDetailCallBack = function() {
+		uifnPopupClose('planWebRegisterForm');
+		fnPlanListSearch();
+		
+	}
+/*]]>*/
+</script>
+
+</html>

+ 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>
-
-
-
-
-

+ 0 - 1114
src/main/webapp/WEB-INF/views/order/CnclReqForm.html

@@ -1,1114 +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="ordChgSq" th:value="${ordChgSq}"/>
-				<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 id="h4OrderCancelRequestToBeList">취소정보</h4>
-				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
-				
-				<h4 id="h4DelvCdList">배송비정보</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" id="cnclReqBtn" onclick="fnCnclReq('cnclReq');">취소신청</button>
-					<button type="button" class="btn btn-success" id="cnclCompleteBtn" onclick="fnCnclReq('cnclComplete');">취소완료</button>
-					<button type="button" class="btn btn-success" id="cnclReqCancelBtn" onclick="fnCnclReq('cnclReqCancel');">취소철회</button>
-					<button type="button" class="btn btn-success" id="cnclReqCompleteBtn" onclick="fnCnclReq('cnclReqComplete');">취소승인</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}|" th:text="|${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 ordChgSq 				= [[${ordChgSq}]];								// 주문변경번호
-var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
-var orderChangeDetailList 	= [[${orderChangeDetailList}]];					// 취소/반품/교환요청 정보
-var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
-var chgReason				= "";											// 변경사유코드
-var chgMemo					= "";											// 변경사유메모
-
-// 변경요청정보 승인, 철회
-if (ordChgSq > 0) {
-	chgReason				= orderChangeDetailList[0].chgReason;			// 변경사유코드
-	chgMemo					= orderChangeDetailList[0].chgMemo;				// 변경사유메모
-}
-
-var temp1 = true;
-var temp2 = true;
-
-// 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 	= parseInt(params.value);
-					var rtnStr 			= "";
-					
-					// 취소신청가능수량있으면 수량만 표시 (취소,반품,교환 신청정보 처리)
-					if (ordChgSq > 0) {
-						rtnStr = ordCanChgQty;
-					} else {
-						ordCanChgQty 	= ordQty - (cnclRtnQty +  ordReqChgQty);
-						
-						rtnStr += "<select class='ordCanChgQty' name='ordCanChgQty' ordDtlNo='"+params.data.ordDtlNo+"' onChange='fnCalculateRefundAmt(this);'>";
-						
-						for (i=0 ; i<=ordCanChgQty ; i++) {
-							if (i == params.data.ordCanChgQty) {
-								rtnStr += "	<option value='"+i+"' selected>"+i+"</option>";
-							} else {
-								rtnStr += "	<option value='"+i+"'>"+i+"</option>";
-							}
-						}
-					
-						rtnStr += "</select>";
-					}
-					
-					return rtnStr;
-				}
-			}
-		]
-	},
-	{
-		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 customerReasonArr = ['G686_10'];
-
-	isCustomer = false;
-	
-	// 귀책사유체크(취소,반품,교환)
-	for (i=0 ; i<customerReasonArr.length ; i++) {
-		if (customerReasonArr[i] == reasonCd) {
-			isCustomer = true;
-		}
-	}
-	
-	// 귀책사유체크(회사,고객)
-	if (isCustomer) {
-		$("#imputeReason").text("고객");
-	} else {
-		$("#imputeReason").text("회사");
-	}
-
-	$('#cancelRequestFrm input[name=chgReason]').val(reasonCd);
-	
-	//환불예정금액 계산
-	fnCalculateRefundAmt();
-}
-
-// 취소신청/완료
-var fnCnclReq = function (reqGbn) {
-	var temp 		= false;
-	var ordDtlStat	= cancelRequestTargetList[0].ordDtlStat;
-	var allCanYn 	= "N";
-	
-	var accountNo 	= "";
-	var accountNm 	= "";
-	var bankCd 		= "";
-	
-	if (reqGbn == "cnclReq" || reqGbn == "cnclComplete") {
-		// 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. 환불계좌 체크
-		// 결제타입 무통장입금시 환불계좌 등록
-		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;
-		}
-	} else {
-		
-	}
-	
-	// 5. 추가정보설정
-	var chgerNm 	= orderInfoList[0].ordNm;
-	var chgerEmail 	= orderInfoList[0].ordEmail;
-	var chgerPhnno 	= orderInfoList[0].ordPhnno;
-	var chgerTelno 	= orderInfoList[0].ordTelno;
-
-	// 2021.01.26 화면통합
-	// 6. 취소신청, 취소완료 여부 체크
-	// 취소신청
-	if (reqGbn == "cnclReq") {
-		confirmStr 		= "취소신청하시겠습니까?";
-		cnclUrl 		= '/orderChange/cnclComplete/';
-	}
-	// 취소완료
-	else if (reqGbn == "cnclComplete") {
-		confirmStr 		= "취소완료하시겠습니까?";
-		cnclUrl 		= '/orderChange/cnclComplete/';
-	}
-	// 취소신청승인
-	else if (reqGbn == "cnclReqComplete") {
-		confirmStr 		= "요청번호 [" + ordChgSq + "] 에 대한 취소승인 처리를 하시겠습니까?";
-		cnclUrl 		= '/orderChange/cnclComplete/';
-	}
-	// 취소신청철회
-	else if (reqGbn == "cnclReqCancel") {
-		confirmStr 		= "요청번호 [" + ordChgSq + "] 에 대한 요청철회 처리를 하시겠습니까?";
-		cnclUrl 		= '/orderChange/cnclReqCancel/';
-	}
-
-	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
-		,"reqGbn"			: reqGbn
-		,"ordChgSq"			: ordChgSq
-	}
-
-	// 주문번호, 취소사유, 취소메모, (취소, 반품, 교환 신청 정보 목록), 환불계좌
-	var jsonData = JSON.stringify(jsonObj);
-	
-	mcxDialog.confirm(confirmStr, {
-		cancelBtnText		: "취소",
-		sureBtnText			: "확인",
-		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();
-	}
-	
-	// 5. 취소신청, 취소완료, 취소승인, 취소철회 버튼 제어
-	if (ordChgSq > 0) {
-		$("#cnclReqBtn").css("display", "none");
-		$("#cnclCompleteBtn").css("display", "none");
-	} else {
-		$("#cnclReqCompleteBtn").css("display", "none");
-		$("#cnclReqCancelBtn").css("display", "none");
-	}
-	
-	// 6. 취소사유 선택
-	if (ordChgSq > 0) {
-		$("select[name='selectChgReason']").val(chgReason);										// 변경사유코드
-		$("select[name='selectChgReason']").attr("disabled", "true");							// 변경사유 비활성화
-		$("#chgMemo").text(chgMemo);															// 변경사유메모
-		$("#chgMemo").attr("disabled", "true");													// 변경사유메모 비활성화
-		fnChangeChgReason(chgReason);															// 귀책사유
-	}
-	
-	// debug mode 해제
-	if (temp2) {
-		$("#h4OrderCancelRequestToBeList").css("display", "none");
-		$("#gridOrderCancelRequestToBeList").css("display", "none");
-		$("#h4DelvCdList").css("display", "none");
-		$("#gridDelvCdList").css("display", "none");
-	}
-});
-</script>
-</html>
-
-
-
-
-

+ 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 - 110
src/main/webapp/WEB-INF/views/order/OrderDetailChangeHst.html

@@ -1,110 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderDetailChangeHst.html
- * @desc    : 주문상품상세이력 화면
- *============================================================================
- * STYLE24
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.12.18   jsh77b       최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="780" data-height="400">
-	<div class="panelStyle">
-		<div class="panelTitle">
-			<h2>주문상품상세이력</h2>
-			<button type="button" class="close" onclick="uifnPopupClose('popupOrderDetailChangeHstForm');"><i class="fa fa-times"></i></button>
-		</div>
-			
-		<div class="panelContent" style="overflow-y:auto;">
-			<form id="cancelRequestFrm">
-				<div id="gridOrderDetailChangeHstList" style="width:100%; height:300px;" class="ag-theme-balham"></div>
-			</form>
-		</div>
-	</div>
-</div>
-
-<!-- data -->
-<script th:inline="javascript">
-/*<![CDATA[*/
-var orderDetailHstList = [[${orderDetailHstList}]];
-
-// specify the columns
-var columnDefs4OrderDetailChangeHstList = [
-	{
-		headerName			: "변경일시"	
-		, field				: "updDt"
-		, 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: "updId"		, width: 120	, cellClass: 'text-center'},
-	{headerName: "변경내용"		, field: "ordDtlStatNm"	, width: 130	, cellClass: 'text-center'},
-	{headerName: "주문수량"		, field: "ordQty"		, width: 80		, cellClass: 'text-center'},
-	{headerName: "취소수량"		, field: "cnclRtnQty"	, width: 80		, cellClass: 'text-center'},
-	{headerName: "출고처"			, field: "delvLocNm"	, width: 150	, cellClass: 'text-center'},
-	{headerName: "송장번호"		, field: "invoiceNo"	, width: 130	, cellClass: 'text-center'},
-	{headerName: "택배사"			, field: "shipCompNm"	, width: 130	, cellClass: 'text-center'}
-];
-
-var gridOptions4OrderDetailChangeHstList = gagaAgGrid.getGridOptions(columnDefs4OrderDetailChangeHstList);
-
-$(document).ready(function() {	
-	// Create a agGrid
-	gagaAgGrid.createGrid('gridOrderDetailChangeHstList', gridOptions4OrderDetailChangeHstList);
-	gridOptions4OrderDetailChangeHstList.api.setRowData(orderDetailHstList);
-	gagaAgGrid.hideStatusBar('gridOrderDetailChangeHstList');
-});
-/*]]>*/
-
-</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>
-</html>
-
-
-
-
-

+ 0 - 133
src/main/webapp/WEB-INF/views/order/OrderDetailCouponHst.html

@@ -1,133 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderDetailCouponHst.html
- * @desc    : 주문상품 상세 쿠폰 이력 화면
- *============================================================================
- * STYLE24
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.12.16   jsh77b       최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="1000">
-	<div class="panelStyle">
-		<div class="panelTitle">
-			<h2>쿠폰 내역</h2>
-			<button type="button" class="close" onclick="uifnPopupClose('popupOrderDetailCouponHstForm');"><i class="fa fa-times"></i></button>
-		</div>
-			
-		<div class="panelContent" style="overflow-y:auto;">
-			<form id="cancelRequestFrm">
-				<div id="gridOrderCouponInfo" style="width:100%; height:260px;" class="ag-theme-balham"></div>
-			</form>
-		</div>
-	</div>
-</div>
-
-<!-- data -->
-<script th:inline="javascript">
-/*<![CDATA[*/
-var orderCouponHstList = [[${orderCouponHstList}]];
-
-//specify the columns
-var columnDefsOrderCouponInfo = [
-	{headerName: "쿠폰구분", 			field: "cpnType", 	width: 100, cellClass: 'text-center'},
-	{headerName: "상품코드/공급처코드", 	field: "targetCd1", width: 160, cellClass: 'text-center'},
-	{headerName: "주문상세/배송정책", 	field: "targetCd2", width: 160, cellClass: 'text-center'},
-	{headerName: "쿠폰ID", 			field: "cpnSq", 	width: 100, cellClass: 'text-center'},
-	{headerName: "쿠폰명", 			field: "cpnNm", 	width: 140, cellClass: 'text-center'},
-	{
-		headerName			: "웹 할인금액/율"
-		, field				: "dcPval"
-		, width				: 120
-		, cellClass			: 'text-center'
-		, valueFormatter	: function(params) {
-			return (params.data.dcWay == '10') ? params.value.addComma() + '원' : params.value.addComma() + '%';}	
-	},
-	{
-		headerName			: "모바일 할인금액/율"
-		, field				: "dcMval"
-		, width				: 120
-		, cellClass			: 'text-center'
-		, valueFormatter	: function(params) {
-			return (params.data.dcWay == '10') ? params.value.addComma() + '원' : params.value.addComma() + '%';
-		}	
-	},
-	{
-		headerName			: "판매상품가격"
-		, field				: "ordAmt"
-		, width				: 100
-		, cellClass			: 'text-center'
-		, valueFormatter	: function(params) {
-			return params.value.addComma();
-		}	
-	},
-	{
-		headerName			: "실할인금액"
-		, field				: "cpnDcAmt"
-		, width				: 100
-		, cellClass			: 'text-center'
-		, valueFormatter	: function(params) {
-			return params.value.addComma();
-		}	
-	}
-];
-
-var gridOptionsOrderCouponInfo = orderAgGrid.getGridOptions(columnDefsOrderCouponInfo);
-
-$(document).ready(function() {	
-	// Create a agGrid
-	gagaAgGrid.createGrid('gridOrderCouponInfo', gridOptionsOrderCouponInfo);
-	gridOptionsOrderCouponInfo.api.setRowData(orderCouponHstList);
-});
-/*]]>*/
-
-</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>
-</html>
-
-
-
-
-

+ 0 - 1397
src/main/webapp/WEB-INF/views/order/OrderDetailFormBack20210122.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>
-
-
-
-
-

+ 0 - 106
src/main/webapp/WEB-INF/views/order/OrderDetailGiftcardHst.html

@@ -1,106 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderDetailPointHst.html
- * @desc    : 주문상품 상세 상품권 이력 화면
- *============================================================================
- * STYLE24
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.12.16   jsh77b       최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="900">
-	<div class="panelStyle">
-		<div class="giftcardTitle">
-			<h2>상품권 사용 내역</h2>
-			<button type="button" class="close" onclick="uifnPopupClose('popupOrderDetailGiftcardHstForm');"><i class="fa fa-times"></i></button>
-		</div>
-			
-		<div class="panelContent" style="overflow-y:auto;">
-			<form id="pointHstFrm">
-				<div id="gridOrderGiftcardInfo" style="width:100%; height:260px;" class="ag-theme-balham"></div>
-			</form>
-		</div>
-	</div>
-</div>
-
-<!-- data -->
-<script th:inline="javascript">
-/*<![CDATA[*/
-var orderGiftcardHstList = [[${orderGiftcardHstList}]];
-
-// specify the columns
-var columnDefsOrderGiftcardInfo = [
-		{headerName: "상품권명", 		field: "gfcdNm", 		width: 180, cellClass: 'text-center'},
-		{headerName: "상품권코드", 		field: "gfcdNo", 		width: 180, cellClass: 'text-center'},
-		{
-			headerName			: "상품권승인금액"
-			, field				: "chgGfcdAmt"
-			, width				: 130
-			, cellClass			: 'text-center'
-			, valueFormatter	: function(params) {
-				return params.value.addComma();
-			}	
-		},
-		{
-			headerName			: "상품권사용금액"
-			, field				: "usGfcdAmt"
-			, width				: 130
-			, cellClass			: 'text-center'
-			, valueFormatter	: function(params) {
-				return params.value.addComma();
-			}	
-		},
-		{
-			headerName			: "상품권남은금액"
-			, field				: "rmGfcdAmt"
-			, width				: 130
-			, cellClass			: 'text-center'
-			, valueFormatter	: function(params) {
-				return params.value.addComma();
-			}	
-		},
-		{headerName: "주문상세", 		field: "ordDtlNo", 		width: 100, cellClass: 'text-center'},
-		{headerName: "상품코드", 		field: "goodsCd", 		width: 100, cellClass: 'text-center'},
-		{
-			headerName			: "상품권사용금액"
-			, field				: "gfcdAmt"
-			, width				: 130
-			, cellClass			: 'text-center'
-			, valueFormatter	: function(params) {
-				return params.value.addComma();
-			}	
-		},
-		{headerName: "사유", 			field: "occurDtlDesc", 	width: 180, cellClass: 'text-center'},
-		{
-			headerName			: "등록일시"	
-			, field				: "regDt"
-			, width				: 130
-			, cellClass			: 'text-center' 
-			, cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-			}
-		}
-];
-
-var gridOptionsOrderGiftcardInfo = gagaAgGrid.getGridOptions(columnDefsOrderGiftcardInfo);
-
-$(document).ready(function() {	
-	// Create a agGrid
-	gagaAgGrid.createGrid('gridOrderGiftcardInfo', gridOptionsOrderGiftcardInfo);
-	gridOptionsOrderGiftcardInfo.api.setRowData(orderGiftcardHstList);
-	gagaAgGrid.hideStatusBar('gridOrderGiftcardInfo');
-});
-/*]]>*/
-
-</script>
-</html>
-
-
-
-
-

+ 0 - 97
src/main/webapp/WEB-INF/views/order/OrderDetailPointHst.html

@@ -1,97 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderDetailPointHst.html
- * @desc    : 주문상품 상세 마일리지 이력 화면
- *============================================================================
- * STYLE24
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.12.16   jsh77b       최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="900">
-	<div class="panelStyle">
-		<div class="panelTitle">
-			<h2>포인트 사용 내역</h2>
-			<button type="button" class="close" onclick="uifnPopupClose('popupOrderDetailPointHstForm');"><i class="fa fa-times"></i></button>
-		</div>
-			
-		<div class="panelContent" style="overflow-y:auto;">
-			<form id="pointHstFrm">
-				<div id="gridOrderPointInfo" style="width:100%; height:260px;" class="ag-theme-balham"></div>
-			</form>
-		</div>
-	</div>
-</div>
-
-<!-- data -->
-<script th:inline="javascript">
-/*<![CDATA[*/
-var orderPointHstList = [[${orderPointHstList}]];
-
-// specify the columns
-var columnDefsOrderPointInfo = [
-		{headerName: "상품코드", 		field: "goodsCd", 		width: 100, cellClass: 'text-center'},
-		{headerName: "적립율(PC)", 	field: "pntPrate", 		width: 100, cellClass: 'text-center'},
-		{headerName: "적립율(모바일)", 	field: "pntMrate", 		width: 100, cellClass: 'text-center'},
-		{
-			headerName			: "판매상품가격"
-			, field				: "currPrice"
-			, width				: 120
-			, cellClass			: 'text-center'
-			, valueFormatter	: function(params) {
-				return params.value.addComma();
-			}	
-		},
-		{
-			headerName			: "실결제상품가격"
-			, field				: "realOrdAmt"
-			, width				: 140
-			, cellClass			: 'text-center'
-			, valueFormatter	: function(params) {
-				return params.value.addComma();
-			}	
-		},
-		{
-			headerName			: "사용포인트"
-			, field				: "pntAmt"
-			, width				: 100
-			, cellClass			: 'text-center'
-			, valueFormatter	: function(params) {
-				return params.value.addComma();
-			}	
-		},
-		{headerName: "사유", 			field: "occurDtlDesc", 	width: 180, cellClass: 'text-center'},
-		{
-			headerName			: "등록일시"	
-			, field				: "regDt"
-			, width				: 130
-			, cellClass			: 'text-center' 
-			, cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-			}
-		}
-];
-
-var gridOptionsOrderPointInfo = gagaAgGrid.getGridOptions(columnDefsOrderPointInfo);
-
-$(document).ready(function() {	
-	// Create a agGrid
-	gagaAgGrid.createGrid('gridOrderPointInfo', gridOptionsOrderPointInfo);
-	gridOptionsOrderPointInfo.api.setRowData(orderPointHstList);
-	gagaAgGrid.hideStatusBar('gridOrderPointInfo');
-});
-/*]]>*/
-
-</script>
-
-</html>
-
-
-
-
-

+ 0 - 78
src/main/webapp/WEB-INF/views/order/OrderDetailTmtbHst.html

@@ -1,78 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderDetailPointHst.html
- * @desc    : 주문상품 상세 상품권 이력 화면
- *============================================================================
- * STYLE24
- * Copyright(C) 2019 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.12.16   jsh77b       최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="800">
-	<div class="panelStyle">
-		<div class="giftcardTitle">
-			<h2>다다익선 적용 내역</h2>
-			<button type="button" class="close" onclick="uifnPopupClose('popupOrderDetailTmtbHstForm');"><i class="fa fa-times"></i></button>
-		</div>
-			
-		<div class="panelContent" style="overflow-y:auto;">
-			<form id="pointHstFrm">
-				<div id="gridOrderTmtbInfo" style="width:100%; height:260px;" class="ag-theme-balham"></div>
-			</form>
-		</div>
-	</div>
-</div>
-
-<!-- data -->
-<script th:inline="javascript">
-/*<![CDATA[*/
-var orderTmtbHstList = [[${orderTmtbHstList}]];
-
-// specify the columns
-var columnDefsOrderGiftcardInfo = [
-		{headerName: "다다익선번호"	, field: "tmtbSq", 		width: 100, cellClass: 'text-center'},
-		{headerName: "다다익선명"	, field: "tmtbNm", 		width: 180, cellClass: 'text-center'},
-		{
-			headerName			: "할인금액"
-			, field				: "tmtbDcAmt"
-			, width				: 120
-			, cellClass			: 'text-center'
-			, valueFormatter	: function(params) {
-				return params.value.addComma();
-			}	
-		},
-		{headerName: "주문상세", 		field: "ordDtlNo",	width: 120, cellClass: 'text-center'},
-		{headerName: "상품코드", 		field: "goodsCd",	width: 120, cellClass: 'text-center'},
-		{
-			headerName			: "등록일시"	
-			, field				: "regDt"
-			, width				: 130
-			, cellClass			: 'text-center' 
-			, cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmm").format("YYYY-MM-DD HH:mm") : '';
-			}
-		}
-];
-
-var gridOptionsOrderTmtbInfo = gagaAgGrid.getGridOptions(columnDefsOrderGiftcardInfo);
-
-$(document).ready(function() {	
-	// Create a agGrid
-	gagaAgGrid.createGrid('gridOrderTmtbInfo', gridOptionsOrderTmtbInfo);
-	gridOptionsOrderTmtbInfo.api.setRowData(orderTmtbHstList);
-	gagaAgGrid.hideStatusBar('gridOrderTmtbInfo');
-});
-/*]]>*/
-
-</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 - 183
src/main/webapp/WEB-INF/views/order/OrderMemoRegistForm.html

@@ -1,183 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderMemoRegistForm.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="900">
-	<div class="panelStyle">
-		<div class="panelTitle">
-			<h2>주문메모등록</h2>
-			<button type="button" class="close" onclick="uifnPopupClose('popupCreateOrderMemo');"><i class="fa fa-times"></i></button>
-		</div>
-	
-		<div class="panelContent" style="height:100%; overflow-y:auto;">
-			<form id="orderMemoRequestFrm">
-				<input type="hidden" name="ordNo" th:value="${ordNo}" />
-				<input type="hidden" name="seq" th:value="${seq}" />
-				<input type="hidden" name="mode" th:value="${mode}" />
-				
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:30%" />
-						<col />
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>등록자ID</th>
-							<td id="userNm"></td>
-						</tr>
-						<tr>
-							<th>관리자 메모</th>
-							<td>
-								<textarea th:if="${orderMemo != null and orderMemo != ''}" name="memo" style="height:100px;" th:text="${orderMemo.memo}"></textarea>
-								<textarea th:unless="${orderMemo != null and orderMemo != ''}" name="memo" style="height:100px;" text=""></textarea>
-							</td>
-						</tr>
-						<tr id="imageFileTr">
-							<th>파일</th>
-							<td><div class="uFile">
-								<input id="imageFile" name="imageFile" type="file" class="uFileInput"/>
-								<label for="imageFile" class="uFileLabel">파일선택</label>
-								<input type="hidden" name="orgFileNm"/>
-								<input type="hidden" name="sysFileNm"/>
-							</div>
-							</td>
-						</tr>
-						<th:block th:if="${mode == 'U' and orderMemo.sysFileNm != null and orderMemo.sysFileNm != ''}" th:with="uploadImageUrl=${@environment.getProperty('upload.image.view')}">
-							<tr>
-								<th>이미지</th>
-								<td>
-									<a href="javascript:void(0);" onclick="fnPreImgView()">
-										<img id="memoImg" th:src="|${uploadImageUrl}/memo/${orderMemo.sysFileNm}|" th:onerror="'this.src=\''+@{${@environment.getProperty('domain.uximage')}+ '/image/no.gif'}+'\';'" width="300px"/>
-									</a>
-								</td>
-							</tr>
-						</th:block>
-					</tbody>
-				</table>
-				<div>
-					<button type="button" class="btn btn-success btnRight marT10" id="btnOrderMemoRegistOk">저장</button>
-				</div>	
-				<br>
-			</form>
-		</div>
-	</div>
-</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-// 이벤트 바인딩 관련
-var orderMemo 	= [[${orderMemo}]];
-var userNo 		= [[${userNo}]];
-var userNm 		= [[${userNm}]];
-var mode 		= [[${mode}]];
-
-// 첨부파일 등록
-$('#orderMemoRequestFrm input[name=imageFile]').on('change', function() {
-	var file = this.files[0];
-	
-	if (typeof(file) == 'undefined'){
-		return;
-	}
-	
-	gagajf.ajaxFileUpload('/common/file/upload?subDir=/memo'
-		, file
-		, function(result) {
-			$('#orderMemoRequestFrm input[name=orgFileNm]').val(result.oldFileName);
-			$('#orderMemoRequestFrm input[name=sysFileNm]').val(result.newFileName);
-		}
-		, 'image'
-	);
-});
-
-// 주문메모저장
-$('#btnOrderMemoRegistOk').on('click', function() {
-	var memo = $('#orderMemoRequestFrm textarea[name=memo]').val();
-
-	if (gagajf.isNull(memo)) {
-		mcxDialog.alert('메모 입력해 주세요.');
-		$('#orderMemoRequestFrm textarea[name=memo]').focus();
-		return;
-	}
-
-	mcxDialog.confirm('저장하시겠습니까?', {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function(){
-			var jsonData = JSON.stringify($('#orderMemoRequestFrm').serializeObject());
-			gagajf.ajaxJsonSubmit(
-				'/order/memo/save'
-				, jsonData
-				, function(){
-					fnBindOrderMemo();
-					uifnPopupClose('popupCreateOrderMemo');
-				}
-			);
-		}
-	});
-});
-	
-// 이미지 클릭 시 미리보기 팝업 이벤트
-var fnPreImgView = function(){
-	cfnOpenImagePreViewPopup('preImgView', $('#memoImg').attr('src'));
-}
-
-// 이미지 로드 시 사이즈 변경
-$('#imagePreView').bind('load', function(){
-	var windowWidth = $(window).width() * 0.95;
-	var windowHeight = $(window).height() * 0.95;
-	
-	var width = $('#imagePreView').width();
-	var height = $('#imagePreView').height();
-	
-	if (width > windowWidth) {
-		$('#preImgView >.videoPopup').css('width', windowWidth);
-		$('#imagePreView').css('width', windowWidth);
-		
-	}
-	if (height > windowHeight) {
-		$('#preImgView >.videoPopup').css('height', windowHeight);
-		$('#imagePreView').css('height', windowHeight);
-	}
-});
-	
-$(document).ready(function() {
-	var userText = '';
-	
-	if (mode == 'U') {
-		userText = orderMemo.userNm + ' ('+orderMemo.updNo+')';
-		$('#orderMemoRequestFrm input[name=orgFileNm]').val(orderMemo.orgFileNm);
-		$('#orderMemoRequestFrm input[name=sysFileNm]').val(orderMemo.sysFileNm);
-	} else {
-		if (!gagajf.isNull(userNm) && !gagajf.isNull(userNo)) {
-			userText = userNm + ' (' + userNo + ')';
-		} else {
-			if (gagajf.isNull(userNm)) userText = userNm;
-			if (gagajf.isNull(userNo)) userText = userNo;
-		}
-	}
-	
-	$('#userNm').text(userText);
-
-	// 등록자만 수정 가능하게 처리
-	if (mode == 'U' && userNo != orderMemo.updNo) {
-		$('#btnOrderMemoRegistOk').css('display', 'none');
-		$('#imageFileTr').css('display', 'none');
-		$('#orderMemoRequestFrm textarea[name=memo]').attr('readonly', true);
-	}
-});
-
-/*]]>*/
-</script>
-
-</html>

+ 0 - 437
src/main/webapp/WEB-INF/views/order/OrderSamplePopupForm.html

@@ -1,437 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderSamplePopupForm.html
- * @desc    : 주문 샘플 데이터 생성 팝업 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2021.01.30   card007     최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="1200" id="popupOrderSample">
-	<div class="panelStyle">
-		<!-- TITLE -->
-		<div class="panelTitle">
-			<strong th:text="${'주문 샘플 데이터 생성'}"></strong>
-			<button type="button" class="close" onclick="uifnPopupClose('popupOrderSample');"><em class="fa fa-times"></em></button>
-		</div>
-		<!-- //TITLE -->
-		
-		<!-- CONTENT -->
-		<div class="panelContent">
-			<form id="orderSamplePopupForm" name="orderSamplePopupForm" action="#" th:action="@{'/order/sample/create'}" th:method="post">
-				<table class="frmStyle" aria-describedby="등록폼">
-					<colgroup>
-						<col style="width:7%;"/>
-						<col style="width:26%;"/>
-						<col style="width:7%;"/>
-						<col style="width:26%;"/>
-						<col style="width:7%;"/>
-						<col/>
-					</colgroup>
-					<tbody>
-						<tr>
-							<th>회원번호</th>
-							<td>
-								<input class="w200" type="text" name="custNo" id="custNo"/>
-								<button type="button" class="btn btn-info btn-lg" id="btnOrderSearch" onclick="fnApplyCustomerInfo()">적용</button>
-							</td>
-							<th>주문자명</th>
-							<td>
-								<input type="text" name="ordNm" id="ordNm"/>
-							</td>
-							<th>핸드폰번호</th>
-							<td>
-								<input type="text" name="ordPhnno" id="ordPhnno"/>
-							</td>
-						</tr>
-						<tr>
-							<th>전화번호</th>
-							<td>
-								<input type="text" name="ordTelno" id="ordTelno"/>
-							</td>
-							<th>이메일</th>
-							<td colspan="3">
-								<input type="text" name="ordEmail" id="ordEmail"/>
-							</td>
-						</tr>
-						<tr>
-							<th>배송지</th>
-							<td colspan="5">
-								<input type="text" name ="recipZipcode" id="recipZipcode" class="w100" readonly="readonly"/>
-								<button type="button" class="btn btn-info" onclick="fnOpenDaumAddr('delivery');">우편번호찾기</button>
-								<input type="text" name ="recipBaseAddr" id="recipBaseAddr" class="w300"/>
-								<input type="text" name ="recipDtlAddr" id="recipDtlAddr" class="w300"/>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-			</form>
-		</div>
-		<!-- //CONTENT -->
-
-		<!-- Grid -->
-		<ul class="panelBar">
-			<li class="left">
-				<button type="button" class="btn btn-danger btn-lg" onclick="fnGoodsDeleteRow();">행삭제</button>
-			</li>
-			<li class="right">
-				<button type="button" class="btn btnRight btn-base btn-lg" onclick="fnOpenGoodsPopup();">주문상품추가</button>
-			</li>
-		</ul>
-		<div id="gridGoodsList" style="height: 390px;" class="ag-theme-balham lh60"></div>
-		<!-- //Grid -->
-
-		<!-- 버튼 배치 영역 -->
-		<ul class="panelBar">
-			<li class="right">
-				<button type="button" class="btn btn-info btn-lg" id="btnCreateOrderSample">저장</button>
-			</li>
-		</ul>
-		<!-- //버튼 배치 영역 -->
-	</div>
-</div>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-	var sessRoleCd = [[${sessionInfo.roleCd}]];
-	var goodsStatList = gagajf.convertToArray([[${goodsStatList}]]);
-	var formalGbList = gagajf.convertToArray([[${formalGbList}]]);
-	var seasonList = gagajf.convertToArray([[${seasonList}]]);
-	var columnDefs = [];
-	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 cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
-		},
-		{headerName: "이미지", field: "sysImgNm", width: 100, height: 60, cellClass: 'text-center'
-			,cellRenderer: function(params) {
-				return '<img width="60" src="'+ _goodsUrl+ "/" + params.value + '" alt="" onclick="cfnOpenImagePreViewPopup(\'goodsImgView\', \''+ _goodsUrl+ "/" + params.value +'\')" onerror="this.src=\'/image/no.gif\';"/>';
-			}
-		},
-		{headerName: "상품코드", field: "goodsCd", width: 140, cellClass: 'text-center'},
-		{headerName: "상품명", field: "goodsNm", width: 200, cellClass: 'text-left'
-			,cellRenderer: function(params) {
-				return '<a href="javascript:void(0);">' + params.value + '</a>';
-			}
-		},
-		{headerName: "구성상품코드", field: "compsGoodsCd", width: 140, cellClass: 'text-center'},
-		{headerName: "판매가능재고", field: "stockQtySum", width: 120, cellClass: 'text-right',
-			valueFormatter: function(params) {	return params.value.addComma();},
-			cellStyle : function(params){
-				if ("00" == params.data.goodsStat  || "10" == params.data.goodsStat || "20" == params.data.goodsStat || "30" == params.data.goodsStat) {
-					return;
-				}
-				var color = "";
-				if (params.value <= 0){
-					color = '#ff96689c';
-				}
-				return { 'background-color': color};
-			}
-		},
-		{
-			headerName		: "주문옵션"
-			, field			: "optCd"
-			, width			: 100
-			, cellClass		: "text-center"
-			, cellRenderer	: function (params) {
-				var strVal			= '';
-				if (!gagajf.isNull(params.data.optCd2)) {
-					var optArr = params.data.optCd2.split(',');
-					strVal += '<select class="optCd2" name="optCd2" goodsCd="' + params.data.goodsCd + '" onchange="fnChangeOption(this)">';
-					if (gagajf.isNull(params.data.optCd)) {
-						strVal += '<option value="" selected>선택</option>';	
-					} else {
-						strVal += '<option value="">선택</option>'
-					}
-					
-					
-					$.each(optArr, function (idx, item) {
-						if (params.data.optCd == item) {
-							strVal += '<option value="' + item + '" selected>' + item + '</option>';
-						} else {
-							strVal += '<option value="' + item + '">' + item + '</option>';
-						}
-					});
-				}
-				
-				return strVal;
-			}
-		},
-		{headerName: "주문수량", field: "ordQty", width: 100, cellClass: 'text-center', editable : true},
-		{headerName: "상품상태", field: "goodsStat" , width: 100, cellClass: 'text-center',
-			cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },
-			valueParser: function (params) { return gagaAgGrid.lookupKey(goodsStatList, params.newValue); }
-		},
-		{headerName: "년도", field: "styleYear" , width: 80, cellClass: 'text-center'},
-		{headerName: "시즌", field: "seasonCd" , width: 80, cellClass: 'text-center',
-			cellEditorParams: { values: gagaAgGrid.extractValues(seasonList) },
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(seasonList, params.value); },
-			valueParser: function (params) { return gagaAgGrid.lookupKey(seasonList, params.newValue); }
-		},
-		{headerName: "정상가", field: "listPrice" , width: 100, cellClass: 'text-right'
-			,valueFormatter: function(params) {return params.value.addComma();},
-			cellEditor: 'textCellEditor',
-			cellEditorParams: { maxlength: 14, validType: 'numeric'}
-		},
-		{headerName: "판매가", field: "currPrice" , width: 100, cellClass: 'text-right'
-			,valueFormatter: function(params) {return params.value.addComma();},
-			cellEditor: 'textCellEditor',
-			cellEditorParams: { maxlength: 14, validType: 'numeric'}
-		},
-		/*{headerName: "할인율", field: "dcRate" , width: 90, cellClass: 'text-right'},*/
-		{headerName: "가격변경일", field: "priceUpdDt", width: 150, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}
-		},
-		{headerName: "ERP재고연동여부", field: "erpStockLinkYn", width: 120, cellClass: 'text-center'},
-		{headerName: "이월구분", field: "formalGb", width: 100, cellClass: 'text-center',
-			cellEditorParams: { values: gagaAgGrid.extractValues(formalGbList) },
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(formalGbList, params.value); },
-			valueParser: function (params) { return gagaAgGrid.lookupKey(formalGbList, params.newValue); }
-		},
-		{headerName: "반품가능", field: "returnableYn" , width: 90, cellClass: 'text-center'},
-		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}
-		},
-		{headerName: "등록자", field: "regNm" , width: 100, cellClass: 'text-center'},
-		{headerName: "수정일시", field: "updDt", width: 150, cellClass: 'text-center',
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}
-		},
-		{headerName: "수정자", field: "updNm" , width: 100, cellClass: 'text-center'}
-	];
-	
-	// Get GridOptions
-	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-	
-	// 중복 선택 가능
-	gridOptions.rowSelection = 'multiple';
-	gridOptions.suppressRowClickSelection = true;
-	gridOptions.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
-	
-	gridOptions.getRowStyle = function(params) {
-		if ("G008_00" == params.data.goodsStat  || "G008_10" == params.data.goodsStat || "G008_20" == params.data.goodsStat || "G008_30" == params.data.goodsStat) {
-			return { background: '#23c6c8' };
-		}
-	}
-
-	// 주문수량 변경 이벤트
-	gridOptions.onCellValueChanged = function(event) {
-		let ordQty = event.data.ordQty;
-		if (event.colDef.field == "ordQty" && event.data.ordQty > event.data.stockQtySum) {
-			ordQty = event.data.stockQtySum;
-			mcxDialog.alert('주문수량이 판매가능재고보다 클 수 없습니다.');
-		}
-		
-		gridOptions.api.forEachNode(function(rowNode, index) {
-			if (event.data.goodsCd == rowNode.data.goodsCd){
-				rowNode.data.ordQty = ordQty;
-				
-				gridOptions.api.updateRowData({update: [rowNode.data]});
-			}
-		});
-	}
-
-	//상품조회 팝업
-	var fnOpenGoodsPopup = function() {
-		cfnOpenGoodsPopup('fnFetchGoods');
-	}
-	
-	// 상품추가
-	var fnFetchGoods = function(goodsData) {
-		if (goodsData.length < 1) return;
-		
-		// 기존상품
-		var oldGoodsSetList = gagaAgGrid.getAllRowData(gridOptions);
-		var index = oldGoodsSetList.length+1;
-		
-		var arrGoodsCd = [];
-		$.each(goodsData, function(idx, item) {
-			arrGoodsCd.push(item.goodsCd);
-		})
-		
-		var isExist = false;
-		var jsonData = JSON.stringify(arrGoodsCd);
-		gagajf.ajaxJsonSubmit('/order/sample/goods/info', jsonData, function(result) {
-			$.each(result, function(idx, item) {
-				isExist = false;
-				gridOptions.api.forEachNode(function(rowNode, index) {
-					//중복상품 여부 확인
-					if (item.goodsCd == rowNode.data.goodsCd){
-						isExist = true;
-					}
-				});
-				
-				if(!isExist){
-					var data = {
-						no: index
-						, sysImgNm : item.sysImgNm
-						, goodsCd : item.goodsCd
-						, compsGoodsCd : item.repGoodsCd
-						, goodsNm : item.goodsNm
-						, ordQty : 1
-						, optCd2 : item.siteCd
-						, stockQtySum : item.stockQtySum
-						, goodsStat : item.goodsStat
-						, styleYear : item.styleYear
-						, seasonCd : item.seasonCd
-						, listPrice : item.listPrice
-						, currPrice : item.currPrice
-						, priceUpdDt : item.priceUpdDt
-						, erpStockLinkYn : item.erpStockLinkYn
-						, formalGb : item.formalGb
-						, returnableYn : item.returnableYn
-						, regDt : item.regDt
-						, regNm : item.regNm
-						, updDt : item.updDt
-						, updNm : item.updNm
-					};
-					
-					//그리드 마지막에 추가해야함
-					gridOptions.api.updateRowData({add: [data], addIndex: idx});
-					gridOptions.api.refreshCells();
-					index++;
-				}
-			});
-		});
-	}
-
-	//상품삭제
-	var fnGoodsDeleteRow = function() {
-		var selectedData = gagaAgGrid.selectedRowData(gridOptions);
-		
-		if (selectedData.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-		
-		//화면에서 삭제
-		gagaAgGrid.removeRowData(gridOptions, false);
-	}
-
-	// 저장
-	$('#btnCreateOrderSample').on('click', function() {
-		// 입력 값 체크
-		let selectedData = gagaAgGrid.selectedRowData(gridOptions);
-		
-		if (selectedData.length == 0) {
-			mcxDialog.alert('선택된 행이 없습니다.');
-			return;
-		}
-		
-		let optChk = true;
-		let qtyChk = true;
-		$.each(selectedData, function(idx, item) {
-			if (gagajf.isNull(item.optCd)) {
-				optChk = false;
-			} else if (item.ordQty <= 0) {
-				qtyChk = false;
-			}
-		});
-		
-		if (!optChk) {
-			mcxDialog.alert('주문옵션이 없습니다.');
-			return false;
-		}
-		
-		if (!qtyChk) {
-			mcxDialog.alert('주문수량은 0보다 커야 됩니다.');
-			return false;
-		}
-		
-		mcxDialog.confirm("저장하시겠습니까?", {
-			cancelBtnText: "취소",
-			sureBtnText: "확인",
-			sureBtnClick: function() {
-				let params = {};
-				params.custNo = $('#custNo').val();
-				params.ordNm = $('#ordNm').val();
-				params.ordPhnno = $('#ordPhnno').val();
-				params.ordEmail = $('#ordEmail').val();
-				params.recipZipcode = $('#recipZipcode').val();
-				params.recipBaseAddr = $('#recipBaseAddr').val();
-				params.recipDtlAddr = $('#recipDtlAddr').val();
-				params.goods = selectedData;
-				
-				let jsonData = JSON.stringify(params);
-				
-				gagajf.ajaxJsonSubmit($('#orderSamplePopupForm').prop('action'), jsonData, function(result) {
-					uifnPopupClose('popupOrderSample');
-				});
-			}
-		});
-	});
-
-	// 회원정보 적용
-	var fnApplyCustomerInfo = function() {
-		var params = {};
-		params.searchGb = 'custNo';
-		params.searchTxt = $('#orderSamplePopupForm input[name=custNo]').val();
-		
-		var jsonData = JSON.stringify(params);
-		
-		gagajf.ajaxJsonSubmit('/customer/active/list', jsonData, function(result) {
-			let param = result[0];
-			
-			$('#ordNm').val(param.custNm);
-			$('#ordPhnno').val(param.cellPhnno);
-			$('#ordEmail').val(param.email);
-			$('#recipZipcode').val(param.homeZipcode);
-			$('#recipBaseAddr').val(param.homeBaseAddr);
-			$('#recipDtlAddr').val(param.homeDtlAddr);
-		});
-	}
-
-	var fnOpenDaumAddr = function() {
-		let daumZip = new daum.Postcode({
-			oncomplete: function(data) {
-				// 우편번호와 주소 정보를 해당 필드에 넣는다.
-				$('#orderSamplePopupForm input[name=recipZipcode]').val(data.zonecode);
-				$('#orderSamplePopupForm input[name=recipBaseAddr]').val(cfnGetDaumRoadAddr(data));
-				$('#orderSamplePopupForm input[name=recipDtlAddr]').focus();
-				
-				cfnCloseDaumAddr();
-			},
-			width: '100%'
-		});
-		
-		cfnOpenDaumAddr(daumZip);
-	}
-	
-	var fnChangeOption = function(param) {
-		var params = {};
-		params.goodsCd = $(param).attr('goodsCd');
-		params.siteCd = $(param).val();
-		
-		var jsonData = JSON.stringify(params);
-		gagajf.ajaxJsonSubmit('/order/sample/goods/stock', jsonData, function(result) {
-			gridOptions.api.forEachNode(function(rowNode, index) {
-				if (result.goodsCd == rowNode.data.compsGoodsCd){
-					rowNode.data.stockQtySum = result.minOrdQty;
-					console.log(result);
-					rowNode.data.optCd = result.siteCd;
-					gridOptions.api.updateRowData({update: [rowNode.data]});
-				}
-			});
-		});
-	}
-
-	$(document).ready(function() {
-		gagaAgGrid.createGrid('gridGoodsList', gridOptions);
-	});
-/*]]>*/
-</script>
-
-</html>

+ 0 - 370
src/main/webapp/WEB-INF/views/order/OrderSellerListForm.html

@@ -1,370 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" xmlns:th="http://www.thymeleaf.org">
-<!--
- *******************************************************************************
- * @source  : OrderSellerListForm.html
- * @desc    : 입점업체미발주목록조회 Page
- *============================================================================
- * STYLE24
- * Copyright(C) 2020 TSIT, All rights reserved.
- *============================================================================
- * VER  DATE         AUTHOR      DESCRIPTION
- * ===  ===========  ==========  =============================================
- * 1.0  2020.11.16   jsh77b       최초 작성
- *******************************************************************************
- -->
- 
-<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" id="searchGb" name="searchGb" />
-		<input type="hidden" id="imageViewYn" name="imageViewYn" />
-		
-		<!-- 패널 영역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>업체/브랜드<em class="required" title="필수"></em></th>
-						<td colspan="7">
-							<!-- <label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="N" />자사</label> -->
-							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="Y" checked/>입점</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>
-							<input type="text" name="ordNo" placeholder="" maxlength="20"/>
-						</td>
-						<th>주문자명</th>
-						<td>
-							<input type="text" name="ordNm" placeholder="" maxlength="20"/>
-						</td>
-						<th>상품코드</th>
-						<td>
-							<input type="text" name="goodsCd" placeholder="" maxlength="20"/>
-						</td>
-						<th>주문상세상태</th>
-						<td>
-							<select name="ordDtlStat" id="ordDtlStat">
-								<option value="G013_20" selected>결제완료</option>
-								<option value="G013_30">상품준비중</option>
-								<!-- <option value="G013_26">교환출고처지정</option>
-								<option value="G013_35">입고확정</option> -->
-								<option value="G013_55">출고완료</option>
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<th>조회일자</th>
-						<td colspan="7">
-							<select name="searchDateGb">
-								<option value="ordDt">주문일자</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="cfnDownloadSampleFile('SF018');">입점송장번호등록다운로드</button>
-				</li>
-				<li class="aR">
-					<button type="button" id="btnExcelDown" class="btn btn-info btn-lg">엑셀다운로드</button>
-					<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>
-			
-			<div class="panelContent" style="overflow: hidden;">
-				<div id="gridList" style="width: 100%; height: 600px;" class="ag-theme-balham lh30"></div>
-			</div>
-		</div>
-		
-		<!-- //리스트 영역 -->
-		<label class="off">
-			<a href="javascript:void(0);" id="excelList" style="display: none;">엑셀다운로드</a>
-		</label>
-
-	</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=2019072202"></script>
-
-<script th:inline="javascript">
-/*<![CDATA[*/
-var sessRoleCd 		= [[${sessionInfo.roleCd}]];
-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:100, cellClass: 'text-center'},
-	{headerName: "입점업체코드",		field:"supplyCompCd",		width:100, cellClass: 'text-center', hide: true},
-	{headerName: "브랜드",			field:"brandKnm",			width:100, cellClass: 'text-center'},
-	{headerName: "상품타입",			field:"goodsTypeNm",		width:100, cellClass: 'text-center'},
-	{headerName: "상품코드",			field:"goodsCd",			width:100, cellClass: 'text-center'},
-	{headerName: "상품명",			field:"goodsNm",			width:100, cellClass: 'text-center'},
-	{headerName: "주문번호",			field:"ordNo",				width:100, cellClass: 'text-center'},
-	{headerName: "주문상세번호",		field:"ordDtlNo",			width:100, cellClass: 'text-center'},
-	{headerName: "주문상세상태",		field:"ordDtlStatNm", 		width:100, cellClass: 'text-center'},
-	{headerName: "주문자명",			field:"ordNm",				width:100, cellClass: 'text-center'},
-	{headerName: "주문일시",			field:"ordDt",				width:100, cellClass: 'text-center',
-		cellRenderer		: function (params) {
-			return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
-		}
-	},
-	{headerName: "결제수단",			field:"payMeansNm",			width:100, cellClass: 'text-center'},
-	{headerName: "주문자휴대전화",		field:"ordPhnno",			width:100, cellClass: 'text-center'},
-	{headerName: "수령자명",			field:"recipNm",			width:100, cellClass: 'text-center'},
-	{headerName: "수령자휴대전화",		field:"recipPhnno",			width:120, cellClass: 'text-center'},
-	{headerName: "수령자우편번호",		field:"recipZipNo",			width:120, cellClass: 'text-center'},
-	{headerName: "수령자기본주소",		field:"recipBaseAddr",		width:120, cellClass: 'text-center'},
-	{headerName: "수령자상세주소",		field:"recipDtlAddr",		width:120, cellClass: 'text-center'},
-	{headerName: "업체상품코드",		field:"supplyGoodsCd",		width:100, cellClass: 'text-center'},
-	{headerName: "단품코드",			field:"itemCd",				width:100, cellClass: 'text-center'},
-	{headerName: "단품상품명",			field:"itemNm",				width:100, cellClass: 'text-center'},
-	{headerName: "칼라",				field:"optCd1",				width:100, cellClass: 'text-center'},
-	{headerName: "사이즈",			field:"optCd2",				width:100, cellClass: 'text-center'},
-	{headerName: "주문수량",			field:"itemOrdQty",			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:"shipCompCd",			width:150, cellClass: 'text-left'
-		, editable 			: true
-		, cellEditor		: 'agRichSelectCellEditor'
-		, cellEditorParams	: { 
-			values: gagaAgGrid.extractValues(shipCompanyList) 
-		}
-		, valueFormatter: function (params) { 
-			return gagaAgGrid.lookupValue(shipCompanyList, params.value); 
-		}
-		, valueParser: function (params) { 
-			return gagaAgGrid.lookupKey(shipCompanyList, params.newValue); 
-		}
-	},
-	{headerName: "송장",				field:"invoiceNo",			width:150, cellClass: 'text-left', editable : true}
-];
-
-var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
-gridOptions.suppressRowClickSelection = true;
-gridOptions.rowSelection = 'multiple';
-gridOptions.stopEditingWhenGridLosesFocus = true;
-
-// 조회버튼
-$('#btnOrderSearch').on('click', function() {
-	fnSearch();
-});
-
-// 검색
-var fnSearch = function() {
-	var formId = '#searchForm';
-	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;
-		}
-	}
-	
-	gagaAgGrid.fetch($(formId).prop('action'), gridOptions, formId);
-}
-
-// 엑셀다운로드 시 주문상태 변경
-$('#btnExcelDown').on('click', function () {
-	var selectedData = gridOptions.api.getSelectedRows();
-
-	if (selectedData.length == 0) {
-		mcxDialog.alert('선택된 행이 없습니다.');
-		return;
-	}
-	
-	mcxDialog.confirm('엑셀 다운로드 하시겠습니까?', {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function(){
-			var jsonData = JSON.stringify(selectedData);
-			gagajf.ajaxJsonSubmit('/order/seller/unorder/status/save', jsonData, fnExcelDownCollback);
-		}
-	});
-});
-
-// 엑셀다운로드
-var fnExcelDownCollback = function(flag){
-	$('#excelList').attr({ href : '/order/seller/unorder/excel/list' }).get(0).click();
-}
-
-// 송장 엑셀 업로드
-$('#btnInvoiceExcelUpLoad').on('click', function() {
-	cfnExcelUploadPopup('invoiceExcelUpload', 'invoiceExcelUpload');
-});
-
-var invoiceExcelUpload = function(result){
-	mcxDialog.confirm('송장 변경을 진행하시겠습니까?', {
-		cancelBtnText	: "취소"
-		, sureBtnText	: "확인"
-		, sureBtnClick	: function(){
-			var data = {
-				procJob 		: result.procJob
-				, excelFileNm 	: result.excelFileNm
-			};
-			
-			var jsonData = JSON.stringify(data);
-			gagajf.ajaxJsonSubmit('/order/seller/unorder/invoice/excelupload/save', jsonData, fnInvoiceSaveCollback);
-		}
-	});	
-}
-
-// 송장번호 저장후 
-var fnInvoiceSaveCollback = function(result){
-	mcxDialog.alert(result.msg);
-	return;
-}
-
-// 송장번호 저장시
-$('#btnSave').on('click', function () {
-	var selectedData = gridOptions.api.getSelectedRows();
-
-	if (selectedData.length == 0) {
-		mcxDialog.alert('선택된 행이 없습니다.');
-		return;
-	}
-	
-	var checkFlag = false;
-	$.each(selectedData, function(idx, item) {
-		if (gagajf.isNull(item.shipCompCd)){
-			checkFlag = true;
-			mcxDialog.alert('배송업체를 선택하세요.');
-			return;
-		}
-		
-		if (gagajf.isNull(item.invoiceNo)){
-			checkFlag = true;
-			mcxDialog.alert('송장번호를 입력하세요.');
-			return;
-		}
-	});
-	
-	if (checkFlag){
-		return false;
-	}
-	
-	mcxDialog.confirm('저장 하시겠습니까?', {
-		cancelBtnText	: "취소",
-		sureBtnText		: "확인",
-		sureBtnClick	: function(){
-			var jsonData = JSON.stringify(selectedData);
-			gagajf.ajaxJsonSubmit('/order/seller/unorder/invoice/save', jsonData, fnInvoiceSaveCollback);
-
-		}
-	});
-	
-});
-
-// 초기화 클릭시
-$('#btnInit').on('click', function() {
-	$('#searchForm')[0].reset();
-	$("#multiBrand").empty();
-});
-
-// 자사/입점 변경여부
-$("#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');
-});
-
-//초기설정
-$(document).ready(function() {
-	// 달력기능 활성화
-	cfnCreateCalendar('#terms', 'stDate', 'edDate', true, '주문');
-	gagaAgGrid.createGrid('gridList', gridOptions);
-	gridOptions.api.hideOverlay();
-});
-
-</script>
-
-</html>
-
-
-
-
-

+ 0 - 127
src/main/webapp/WEB-INF/views/order/RefundAccountRegistForm.html

@@ -1,127 +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  2021.01.04   jsh77b       최초 작성
- *******************************************************************************
- -->
-<div class="modalPopup" data-width="900">
-	<div class="panelStyle">
-		<div class="panelTitle">
-			<h2>환불계좌정보</h2>
-			<button type="button" class="close" onclick="uifnPopupClose('popupCreateRefundAccount');"><i class="fa fa-times"></i></button>
-		</div>
-
-		<div class="panelContent" style="height:90%; overflow-y:auto; padding:0px 20px !important; ">
-			<form id="orderRefundAccontForm">
-				<table class="frmStyle">
-					<colgroup>
-						<col style="width:160px;" />
-						<col />
-						<col />
-						<col />
-						<col />
-						<col />
-						<col />
-					</colgroup>
-					<tbody>
-					<tr>
-						<th>은행</th>
-						<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>
-							</select>
-						</td>
-						<th>계좌번호</th>
-						<td><input type="text" name="accountNo" data-valid-type="numeric"></td>
-						<th>예금주</th>
-						<td><input type="text" name="accountNm"></td>
-						</th:block>
-						<td>
-							<button type="button" class="btn btn-success" id="saveAccountBtn" onclick="fnSaveAccount();">저장</button>
-						</td>
-					</tr>
-					</tbody>
-				</table>
-			</form>
-		</div>
-	</div>
-</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');
-					fnBindOrderRfAccountInfo();
-				});
-			}
-		});
-	};
-
-	$(document).ready(function() {
-
-
-	});
-
-	/*]]>*/
-</script>
-
-</html>
-
-
-
-
-

+ 5 - 5
src/main/webapp/dx5/dextuploadx5-configuration.js

@@ -8,15 +8,15 @@
 
     var gAuthkey = '';
     if (location.host.indexOf("ld") > -1) {
-    	gAuthkey = "wv0tVbqwjB3lq1Z7QxSK/RiA31WcFNDd45asJ8rF3Gnl28E5ZkW+9D+/zcDVVXq8yy1fkRjUK9EG41tLceWrPsCbmCOZqVGdr4/JOj11b2g4/DdhnPp7uaDtdL6lH/OLZmRi4aAhdBXhCRmCIsyAZ9qs6P0dpV3EoGFwTaFQqGA=";
+    	gAuthkey = "gx9EHEhXzTpbdxWjty/oHh9cfVi5WA5X4BV71AHaC/ORN/1fcs8nTTd4oUUvC5WhHqEa6Wt8cfmCBJ9w/pJpRhDd+tVu6kPDt9bxZL9n0bvaUn2rrbmJMA+HC9gzahwdEOcjr6ZOmNSEd6N0xN2BDBk55hvfPw02R77XjVuZrQU=";
     } else if (location.host.indexOf("lp") > -1) {
-    	gAuthkey = "wv0tVbqwjB3lq1Z7QxSK/RiA31WcFNDd45asJ8rF3Gnl28E5ZkW+9D+/zcDVVXq8yy1fkRjUK9EG41tLceWrPsCbmCOZqVGdr4/JOj11b2g4/DdhnPp7uaDtdL6lH/OLZmRi4aAhdBXhCRmCIsyAZ9qs6P0dpV3EoGFwTaFQqGA=";
+    	gAuthkey = "gx9EHEhXzTpbdxWjty/oHh9cfVi5WA5X4BV71AHaC/ORN/1fcs8nTTd4oUUvC5WhHqEa6Wt8cfmCBJ9w/pJpRhDd+tVu6kPDt9bxZL9n0bvaUn2rrbmJMA+HC9gzahwdEOcjr6ZOmNSEd6N0xN2BDBk55hvfPw02R77XjVuZrQU=";
     } else if (location.host.indexOf("dev") > -1) {
-    	gAuthkey = "wv0tVbqwjB3lq1Z7QxSK/RiA31WcFNDd45asJ8rF3Gnl28E5ZkW+9D+/zcDVVXq8yy1fkRjUK9EG41tLceWrPsCbmCOZqVGdr4/JOj11b2g4/DdhnPp7uaDtdL6lH/OLZmRi4aAhdBXhCRmCIsyAZ9qs6P0dpV3EoGFwTaFQqGA=";
+    	gAuthkey = "gx9EHEhXzTpbdxWjty/oHh9cfVi5WA5X4BV71AHaC/ORN/1fcs8nTTd4oUUvC5WhHqEa6Wt8cfmCBJ9w/pJpRhDd+tVu6kPDt9bxZL9n0bvaUn2rrbmJMA+HC9gzahwdEOcjr6ZOmNSEd6N0xN2BDBk55hvfPw02R77XjVuZrQU=";
     } else if (location.host.indexOf("qas") > -1) {
-    	gAuthkey = "wv0tVbqwjB3lq1Z7QxSK/RiA31WcFNDd45asJ8rF3Gnl28E5ZkW+9D+/zcDVVXq8yy1fkRjUK9EG41tLceWrPsCbmCOZqVGdr4/JOj11b2g4/DdhnPp7uaDtdL6lH/OLZmRi4aAhdBXhCRmCIsyAZ9qs6P0dpV3EoGFwTaFQqGA=";
+    	gAuthkey = "gx9EHEhXzTpbdxWjty/oHh9cfVi5WA5X4BV71AHaC/ORN/1fcs8nTTd4oUUvC5WhHqEa6Wt8cfmCBJ9w/pJpRhDd+tVu6kPDt9bxZL9n0bvaUn2rrbmJMA+HC9gzahwdEOcjr6ZOmNSEd6N0xN2BDBk55hvfPw02R77XjVuZrQU=";
     } else {
-    	gAuthkey = "wv0tVbqwjB3lq1Z7QxSK/RiA31WcFNDd45asJ8rF3Gnl28E5ZkW+9D+/zcDVVXq8yy1fkRjUK9EG41tLceWrPsCbmCOZqVGdr4/JOj11b2g4/DdhnPp7uaDtdL6lH/OLZmRi4aAhdBXhCRmCIsyAZ9qs6P0dpV3EoGFwTaFQqGA=";
+    	gAuthkey = "gx9EHEhXzTpbdxWjty/oHh9cfVi5WA5X4BV71AHaC/ORN/1fcs8nTTd4oUUvC5WhHqEa6Wt8cfmCBJ9w/pJpRhDd+tVu6kPDt9bxZL9n0bvaUn2rrbmJMA+HC9gzahwdEOcjr6ZOmNSEd6N0xN2BDBk55hvfPw02R77XjVuZrQU=";
     }
 
     win.dextuploadx5Configuration = {