瀏覽代碼

이태영 - 20210119 사은품프로모션 I/F 수량 조회 제외 완료

xodud1202 5 年之前
父節點
當前提交
2685c429a0

+ 1 - 6
src/main/java/com/style24/admin/biz/dao/TsaMarketingDao.java → src/main/java/com/style24/admin/biz/dao/TsaFreegiftPromotionDao.java

@@ -16,9 +16,7 @@ import com.style24.core.support.annotation.ShopDs;
  */
 @ShopDs
 @Component
-public interface TsaMarketingDao {
-	/* xodud1202 진행 */
-
+public interface TsaFreegiftPromotionDao {
 	/**
 	 * 사은품 프로모션 리스트
 	 * @param param
@@ -169,7 +167,4 @@ public interface TsaMarketingDao {
 	 * @since 2021. 01. 20
 	 */
 	void updateFreegoodsPromotionStat(FreeGoodsPromotion param);
-
-	/* // xodud1202 진행 */
-
 }

+ 50 - 86
src/main/java/com/style24/admin/biz/service/TsaMarketingService.java → src/main/java/com/style24/admin/biz/service/TsaFreegiftPromotionService.java

@@ -1,28 +1,19 @@
 package com.style24.admin.biz.service;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
 import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.util.GagaStringUtil;
+import com.style24.admin.biz.dao.TsaFreegiftPromotionDao;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.persistence.domain.Extmall;
-import com.style24.persistence.domain.Itemkind;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Service;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.style24.admin.biz.dao.TsaMarketingDao;
-import com.style24.core.biz.thirdparty.NaverLowestPriceApi;
-import com.style24.core.biz.thirdparty.SafetyKoreaApi;
-import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.FreeGoodsPromotion;
-
 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.List;
+
 /**
  *상품관리 Service
  *
@@ -31,62 +22,26 @@ import org.springframework.transaction.annotation.Transactional;
  */
 @Service
 @Slf4j
-public class TsaMarketingService {
-
-	@Autowired
-	private TscMessageByLocale message;
-
-	@Autowired
-	private Environment env;
-
-	@Autowired
-	private TsaMarketingDao marketingDao;
-
-	@Autowired
-	private TsaOcmService ocmService;
-
-	@Autowired
-	private TsaBusinessService businessService;
+public class TsaFreegiftPromotionService {
 
 	@Autowired
-	private TsaCommonService commonService;
-
-	@Autowired
-	private TsaRendererService rendererService;
-
-	@Autowired
-	private TsaNoticeService noticeService;
-
-	@Autowired
-	private SafetyKoreaApi safetyKoreaApi;
-
-	@Autowired
-	private NaverLowestPriceApi naverLowestPriceApi;
-
-	@Autowired
-	private ObjectMapper mapper;
-
-	private static final String NUMBER_PATTERN = "^[0-9]+$";
-
-	private static final String SELF_GOOODS_AFTER = "STY";
-
-	/* xodud1202 진행 */
+	private TsaFreegiftPromotionDao freegiftPromotionDao;
 
 	/**
 	 * 사은품 프로모션 리스트
 	 * @param param
-	 * @return
+	 * @return Collection<FreeGoodsPromotion>
 	 * @author xodud1202
 	 * @since 2020. 12. 17
 	 */
 	public Collection<FreeGoodsPromotion> getFreeGoodsPromotionList(FreeGoodsPromotion param) {
-		return marketingDao.getFreeGoodsPromotionList(param);
+		return freegiftPromotionDao.getFreeGoodsPromotionList(param);
 	}
 
 	/**
 	 * 사은품 프로모션 디테일 조회
 	 * @param param
-	 * @return
+	 * @return GagaMap
 	 * @author xodud1202
 	 * @since 2020. 12. 17
 	 */
@@ -101,22 +56,22 @@ public class TsaMarketingService {
 		}
 		FreeGoodsPromotion freegift = freeGoodsList.get(0);							// 사은품 프로모션 마스터 정보
 		freegift.setExtmallList(getFreegiftExtmallList(param));						// 사은품 프로모션 제휴몰 정보
-		freegift.setBrandList(marketingDao.getFreegiftBrandList(param));			// 사은품 프로모션 브랜드 정보
-		freegift.setSupplyCompList(marketingDao.getFreegiftSupplyCompList(param));	// 사은품 프로모션 공급업체 정보
+		freegift.setBrandList(freegiftPromotionDao.getFreegiftBrandList(param));			// 사은품 프로모션 브랜드 정보
+		freegift.setSupplyCompList(freegiftPromotionDao.getFreegiftSupplyCompList(param));	// 사은품 프로모션 공급업체 정보
 		param.setGoodsGb("G800_20");
-		freegift.setApplyGoodsList(marketingDao.getFreegiftGoodsList(param));			// 사은품 프로모션 적용상품 정보
+		freegift.setApplyGoodsList(freegiftPromotionDao.getFreegiftGoodsList(param));			// 사은품 프로모션 적용상품 정보
 		param.setGoodsGb("G800_30");
-		freegift.setExceptGoodsList(marketingDao.getFreegiftGoodsList(param));			// 사은품 프로모션 제외상품 정보
+		freegift.setExceptGoodsList(freegiftPromotionDao.getFreegiftGoodsList(param));			// 사은품 프로모션 제외상품 정보
 
-		List<FreeGoodsPromotion> freegoodsSectionList = marketingDao.getFreegiftSectionList(param);
+		List<FreeGoodsPromotion> freegoodsSectionList = freegiftPromotionDao.getFreegiftSectionList(param);
 		for(int i = 0 ; i < freegoodsSectionList.size() ; i++) {
 			param.setFreegiftSectionSq(freegoodsSectionList.get(i).getFreegiftSectionSq());
 			if(i == 0) {		// 첫번째 조건
 				freegift.setSectionVal(freegoodsSectionList.get(i).getSectionVal());
-				freegift.setFreeGoods1(marketingDao.getFreegiftFreegoodsList(param));
+				freegift.setFreeGoods1(freegiftPromotionDao.getFreegiftFreegoodsList(param));
 			} else {			// 두번째 사은품 조건
 				freegift.setSectionVal2(freegoodsSectionList.get(i).getSectionVal());
-				freegift.setFreeGoods2(marketingDao.getFreegiftFreegoodsList(param));
+				freegift.setFreeGoods2(freegiftPromotionDao.getFreegiftFreegoodsList(param));
 			}
 		}
 
@@ -128,28 +83,34 @@ public class TsaMarketingService {
 	/**
 	 * 사은품 프로모션 제휴몰 리스트
 	 * @param param
-	 * @return
+	 * @return List<Extmall>
 	 * @author xodud1202
 	 * @since 2020. 12. 17
 	 */
 	public List<Extmall> getFreegiftExtmallList(FreeGoodsPromotion param) {
-		return marketingDao.getFreegiftExtmallList(param);
+		return freegiftPromotionDao.getFreegiftExtmallList(param);
 	}
 
+	/**
+	 * 사은품 프로모션 정보 저장
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 12. 19
+	 */
 	@Transactional("shopTxnManager")
 	public void saveFreegoodsPromotionInfo(FreeGoodsPromotion param) {
 		param.setRegNo(TsaSession.getInfo().getUserNo());
 		param.setUpdNo(TsaSession.getInfo().getUserNo());
-		log.info("CHECK FREEGIFT_SQ >> " + param.getFreegiftSq() + " / " + param.getGbn());
+
 		if("U".equals(param.getGbn()) && param.getFreegiftSq() != 0) {
-			marketingDao.updateFreegoodsPromotionInfo(param);	// 사은품 프로모션 정보 수정
-			marketingDao.deleteFreegiftExtmallInfo(param);		// 사은품 프로모션 제휴몰 데이터 삭제
-			marketingDao.deleteFreegiftGoodsInfo(param);		// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
-			marketingDao.deleteFreegiftSectionInfo(param);		// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
-			marketingDao.deleteFreegiftValInfo(param);			// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
+			freegiftPromotionDao.updateFreegoodsPromotionInfo(param);	// 사은품 프로모션 정보 수정
+			freegiftPromotionDao.deleteFreegiftExtmallInfo(param);		// 사은품 프로모션 제휴몰 데이터 삭제
+			freegiftPromotionDao.deleteFreegiftGoodsInfo(param);		// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
+			freegiftPromotionDao.deleteFreegiftSectionInfo(param);		// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
+			freegiftPromotionDao.deleteFreegiftValInfo(param);			// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
 		} else {
 			param.setFreegiftStat("G232_10");					// 프로모션 등록이면 대기 상태로 저장
-			marketingDao.createFreegoodsPromotionInfo(param);   // 사은품 프로모션 마스터 정보 저장
+			freegiftPromotionDao.createFreegoodsPromotionInfo(param);   // 사은품 프로모션 마스터 정보 저장
 		}
 
 		// 제휴몰 등록
@@ -164,7 +125,7 @@ public class TsaMarketingService {
 				for(int i = 0 ; i < param.getExtmallList().size() ; i++) {
 					extmallInfo.setExtmallId(param.getExtmallList().get(i).getExtmallId());
 					extmallInfo.setVendorId(param.getExtmallList().get(i).getVendorId());
-					marketingDao.createFreegiftExtmallInfo(extmallInfo);		// 제휴몰 리스트 정보 저장
+					freegiftPromotionDao.createFreegiftExtmallInfo(extmallInfo);		// 제휴몰 리스트 정보 저장
 				}
 			}
 		}
@@ -181,7 +142,7 @@ public class TsaMarketingService {
 			// 공급업체 리스트만큼 반복
 			for(int i = 0 ; i < param.getSupplyCompList().size() ; i++) {
 				supplyComp.setTargetVal(param.getSupplyCompList().get(i).getSupplyCompCd());
-				marketingDao.createFreegiftGoodsInfo(supplyComp);				// 적용 공급업체 리스트 저장
+				freegiftPromotionDao.createFreegiftGoodsInfo(supplyComp);				// 적용 공급업체 리스트 저장
 			}
 		}
 
@@ -197,7 +158,7 @@ public class TsaMarketingService {
 			// 브랜드 리스트만큼 반복
 			for(int i = 0 ; i < param.getBrandList().size() ; i++) {
 				brand.setTargetVal(param.getBrandList().get(i).getBrandCd());
-				marketingDao.createFreegiftGoodsInfo(brand);				// 적용 브랜드 리스트 저장
+				freegiftPromotionDao.createFreegiftGoodsInfo(brand);				// 적용 브랜드 리스트 저장
 			}
 		}
 
@@ -213,7 +174,7 @@ public class TsaMarketingService {
 			// 브랜드 리스트만큼 반복
 			for(int i = 0 ; i < param.getApplyGoodsList().size() ; i++) {
 				applyGoods.setTargetVal(param.getApplyGoodsList().get(i).getGoodsCd());
-				marketingDao.createFreegiftGoodsInfo(applyGoods);			// 적용 상품 리스트 저장
+				freegiftPromotionDao.createFreegiftGoodsInfo(applyGoods);			// 적용 상품 리스트 저장
 			}
 		}
 
@@ -229,7 +190,7 @@ public class TsaMarketingService {
 			// 적용 상품 리스트만큼 반복
 			for(int i = 0 ; i < param.getExceptGoodsList().size() ; i++) {
 				exceptGoods.setTargetVal(param.getExceptGoodsList().get(i).getGoodsCd());
-				marketingDao.createFreegiftGoodsInfo(exceptGoods);			// 적용 상품 리스트 저장
+				freegiftPromotionDao.createFreegiftGoodsInfo(exceptGoods);			// 적용 상품 리스트 저장
 			}
 		}
 
@@ -242,7 +203,7 @@ public class TsaMarketingService {
 			freegoodsGiveInfo.setSectionVal(param.getSectionVal());	// 사은품조건 section1 구매금액 조건
 			freegoodsGiveInfo.setRegNo(param.getRegNo());
 			freegoodsGiveInfo.setUpdNo(param.getUpdNo());
-			marketingDao.createFreegiftSectionInfo(freegoodsGiveInfo);	// 사은품 지급 조건 영역 저장
+			freegiftPromotionDao.createFreegiftSectionInfo(freegoodsGiveInfo);	// 사은품 지급 조건 영역 저장
 
 			// 지급 사은품 리스트1 반복
 			for (int i = 0 ; i < param.getFreeGoods1().size() ; i++) {
@@ -252,7 +213,7 @@ public class TsaMarketingService {
 				freegoodsGiveInfo.setLimitQty(param.getFreeGoods1().get(i).getLimitQty());			// 한정 수량
 				freegoodsGiveInfo.setLeftQty(param.getFreeGoods1().get(i).getLimitQty());			// 잔여 수량
 
-				marketingDao.createPromotionFreeGoodsInfo(freegoodsGiveInfo);	// 사은품 지급 상품 영역 저장
+				freegiftPromotionDao.createPromotionFreeGoodsInfo(freegoodsGiveInfo);	// 사은품 지급 상품 영역 저장
 			}
 		}
 
@@ -265,7 +226,7 @@ public class TsaMarketingService {
 			freegoodsGiveInfo.setSectionVal(param.getSectionVal2());	// 사은품조건 section2 구매금액 조건
 			freegoodsGiveInfo.setRegNo(param.getRegNo());
 			freegoodsGiveInfo.setUpdNo(param.getUpdNo());
-			marketingDao.createFreegiftSectionInfo(freegoodsGiveInfo);	// 사은품 지급 조건 영역 저장
+			freegiftPromotionDao.createFreegiftSectionInfo(freegoodsGiveInfo);	// 사은품 지급 조건 영역 저장
 
 			// 지급 사은품 리스트2 반복
 			for (int i = 0 ; i < param.getFreeGoods2().size() ; i++) {
@@ -275,17 +236,20 @@ public class TsaMarketingService {
 				freegoodsGiveInfo.setLimitQty(param.getFreeGoods2().get(i).getLimitQty());			// 한정 수량
 				freegoodsGiveInfo.setLeftQty(param.getFreeGoods2().get(i).getLimitQty());			// 잔여 수량
 
-				marketingDao.createPromotionFreeGoodsInfo(freegoodsGiveInfo);	// 사은품 지급 상품 영역 저장
+				freegiftPromotionDao.createPromotionFreeGoodsInfo(freegoodsGiveInfo);	// 사은품 지급 상품 영역 저장
 			}
 		}
 	}
 
+	/**
+	 * 사은품 프로모션 상태 수정
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 12. 20
+	 */
 	@Transactional("shopTxnManager")
 	public void updateFreegoodsPromotionStat(FreeGoodsPromotion param) {
 		param.setUpdNo(TsaSession.getInfo().getUserNo());
-		marketingDao.updateFreegoodsPromotionStat(param);
+		freegiftPromotionDao.updateFreegoodsPromotionStat(param);
 	}
-
-	/* // xodud1202 진행 */
-
 }

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

@@ -20,7 +20,7 @@ import org.springframework.web.servlet.ModelAndView;
 import com.style24.admin.biz.service.TsaBusinessService;
 import com.style24.admin.biz.service.TsaCommonService;
 import com.style24.admin.biz.service.TsaCouponService;
-import com.style24.admin.biz.service.TsaMarketingService;
+import com.style24.admin.biz.service.TsaFreegiftPromotionService;
 import com.style24.admin.biz.service.TsaMorebetterService;
 import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.biz.service.TsaSystemService;
@@ -57,7 +57,7 @@ public class TsaMarketingController extends TsaBaseController {
 	private Environment env;
 
 	@Autowired
-	private TsaMarketingService marketingService;
+	private TsaFreegiftPromotionService freegiftService;
 
 	@Autowired
 	private TsaBusinessService businessService;
@@ -100,7 +100,7 @@ public class TsaMarketingController extends TsaBaseController {
 	public GagaMap getFreeGoodsPromotionList(@RequestBody FreeGoodsPromotion param) {
 		GagaMap result = new GagaMap();
 
-		List<FreeGoodsPromotion> freeGoodsList = (ArrayList<FreeGoodsPromotion>)marketingService.getFreeGoodsPromotionList(param);
+		List<FreeGoodsPromotion> freeGoodsList = (ArrayList<FreeGoodsPromotion>)freegiftService.getFreeGoodsPromotionList(param);
 
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		param.setPageable(new TscPageRequest(param.getPageNo() - 1, param.getPageSize()));
@@ -142,7 +142,7 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/freeGoodsPromotion/detail")
 	@ResponseBody
 	public GagaMap getFreeGoodsPromotionDetail(FreeGoodsPromotion param) {
-		return marketingService.getFreegiftDetailInfo(param);
+		return freegiftService.getFreegiftDetailInfo(param);
 	}
 
 	/**
@@ -156,7 +156,7 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/freeGoodsPromotion/save")
 	public GagaResponse freeGoodsPromotionSave(@RequestBody FreeGoodsPromotion param) {
 		try {
-			marketingService.saveFreegoodsPromotionInfo(param);
+			freegiftService.saveFreegoodsPromotionInfo(param);
 		} catch(Exception e) {
 			e.printStackTrace();
 			return super.error(message.getMessage("FAIL_0001"));
@@ -176,7 +176,7 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/freeGoodsPromotion/changeStat")
 	public GagaResponse freeGoodsPromotionChangeStat(@RequestBody FreeGoodsPromotion param) {
 		try {
-			marketingService.updateFreegoodsPromotionStat(param);
+			freegiftService.updateFreegoodsPromotionStat(param);
 		} catch(Exception e) {
 			e.printStackTrace();
 			return super.error(message.getMessage("FAIL_0001"));

+ 9 - 10
src/main/java/com/style24/persistence/domain/FreeGoodsPromotion.java

@@ -68,21 +68,20 @@ public class FreeGoodsPromotion extends TscBaseDomain {
 	private int itemQty;				// 지급수량
 	private int leftQty;				// 남은 수량
 
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)	private String[] supplyCompCds;				// 제휴몰 번호 리스트
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)	private String[] brandCds;					// 제휴몰 번호 리스트
-
-	List<SupplyCompany> supplyCompList;
-	List<Brand> brandList;
-	List<Extmall> extmallList;
-	List<Goods> applyGoodsList;
-	List<Goods> exceptGoodsList;
-	List<FreeGoodsSectionVal> freeGoods1;
-	List<FreeGoodsSectionVal> freeGoods2;
+	List<SupplyCompany> supplyCompList;	// 공급업체 리스트
+	List<Brand> brandList;				// 브랜드 리스트
+	List<Extmall> extmallList;			// 제휴몰 리스트
+	List<Goods> applyGoodsList;			// 적용 상품 리스트
+	List<Goods> exceptGoodsList;		// 제외 상품 리스트
+	List<FreeGoodsSectionVal> freeGoods1;	// 지급 사은품 리스트1
+	List<FreeGoodsSectionVal> freeGoods2;	// 지급 사은품 리스트2
 
 	// 기타 조건
 	private String promotionGubun;		// 프로모션 조회 검색 구분
 	private String searchTxt;			// 프로모션 검색 조건
 	private String gbn;					// 팝업 구분 : C=등록, U=수정
+	private String stDate;				// 검색 기간 조건 시작일
+	private String edDate;				// 검색 기간 조건 종료일
 
 	// Pagination
 	private TscPageRequest pageable;

+ 12 - 7
src/main/java/com/style24/persistence/mybatis/shop/TsaMarketing.xml → src/main/java/com/style24/persistence/mybatis/shop/TsaFreegiftPromotion.xml

@@ -1,11 +1,9 @@
 <?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.TsaMarketingDao">
-	<!-- xodud1202 진행 -->
-
+<mapper namespace="com.style24.admin.biz.dao.TsaFreegiftPromotionDao">
 	<!-- 사은품 프로모션 리스트 조회 -->
 	<select id="getFreeGoodsPromotionList" parameterType="FreeGoodsPromotion" resultType="FreeGoodsPromotion">
-		/* TsaMarketing.getFreeGoodsPromotionList : 사은품 프로모션 리스트 조회 */
+		/* TsaMarketing.getFreeGoodsPromotionList :  사은품 프로모션 리스트 조회 */
 		SELECT FG.FREEGIFT_SQ
 			 , FG.FREEGIFT_NM
 			 , FG.FREEGIFT_STAT
@@ -19,6 +17,7 @@
 			 , DATE_FORMAT(FG.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
 		  FROM TB_FREEGIFT FG
 		 WHERE 1=1
+		   AND DEL_YN = 'N'
 		<if test="searchTxt != null and searchTxt != ''">
 			<if test="promotionGubun != null and promotionGubun == 'freegiftSq'">
 		   AND FG.FREEGIFT_SQ = #{searchTxt}
@@ -27,6 +26,15 @@
 		   AND FG.FREEGIFT_NM = #{searchTxt}
 			</if>
 		</if>
+		/* 프로모션ID로 검색하면 기간보다 우선하여 검색한다 */
+		<if test="searchTxt == '' or promotionGubun != 'freegiftSq'">
+			<if test="stDate != null and stDate != ''">
+				<if test="edDate != null and edDate != ''">
+			   AND FREEGIFT_STDT BETWEEN STR_TO_DATE(#{stDate},'%Y-%m-%d%H%i%S') AND STR_TO_DATE(CONCAT(#{edDate}, '235959'),'%Y-%m-%d%H%i%S')
+			   AND FREEGIFT_EDDT BETWEEN STR_TO_DATE(#{stDate},'%Y-%m-%d%H%i%S') AND STR_TO_DATE(CONCAT(#{edDate}, '235959'),'%Y-%m-%d%H%i%S')
+				</if>
+			</if>
+		</if>
 		<if test="freegiftSq != null and freegiftSq != ''">
 		   AND FG.FREEGIFT_SQ = #{freegiftSq}
 		</if>
@@ -368,7 +376,4 @@
 			, UPD_DT = CURRENT_TIMESTAMP
 		WHERE FREEGIFT_SQ = #{freegiftSq}
 	</update>
-	
-	<!-- // xodud1202 진행 -->
-
 </mapper>

+ 30 - 14
src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionForm.html

@@ -55,7 +55,7 @@
 							<td>
 								<label class="rdoBtn"><input type="radio" name="promotionGubun" id="promotionId" value="freegiftSq"  checked/>프로모션ID</label>
 								<label class="rdoBtn"><input type="radio" name="promotionGubun" id="promotionName" value="freegiftNm"/>프로모션명</label>
-								<input type="text" class="w900" name="searchTxt" id="searchTxt" />
+								<input type="text" class="w900" name="searchTxt" id="searchTxt" maxlength="30" />
 							</td>
 						</tr>
 					</table>
@@ -83,13 +83,10 @@
 							<option value="1000">1000개씩 보기</option>
 						</select>
 						<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+
+						<button type="button" class="btn btn-info btn-lg" id="btnFreeGoodsRegi" >프로모션등록</button>
 					</li>
 				</ul>
-				<div class="panelBar">
-					<div class="right">
-						<button type="button" class="btn btn-info btn-lg" id="btnFreeGoodsRegi" >프로모션등록</button>
-					</div>
-				</div>
 				<!-- 검색결과 영역 -->
 				<div id="gridList" style="width: 100%; height: 700px;" class="ag-theme-balham"></div>
 			</div>
@@ -139,7 +136,7 @@
 	} */
 
 	// 초기화 클릭시
-	$('#btnInit').on('click', function() {
+	$('#searchForm #btnInit').on('click', function() {
 		$('#searchForm')[0].reset();
 		//$("#searchForm input[type=radio]").removeClass("checked");
 		$("#searchForm input[type=checkbox]").removeClass("checked");
@@ -149,7 +146,7 @@
 	});
 
 	// 조회클릭시
-	$('#btnSearch').on('click', function() {
+	$('#searchForm #btnSearch').on('click', function() {
 		$("#searchForm input[name=pageNo]").val('1');
 		fnFreeGoodsPromotionListSearch();
 	});
@@ -168,7 +165,6 @@
 		var toDate = $('#searchForm input[name=edDate]').val();
 
 		if (!gagajf.isNull(fromDate) || !gagajf.isNull(toDate)) {
-
 			if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
 				mcxDialog.alertC("기간 조회시 시작일자와 종료일자를 입력하세요.", {
 					sureBtnText: "확인",
@@ -188,6 +184,22 @@
 				});
 				return false;
 			}
+
+			// 검색 기간 1년 이내로 지정
+			let stDateArray = fromDate.split("-");
+			let stDate = new Date(stDateArray[0], stDateArray[1] - 1, stDateArray[2]);
+			let edDateArray = toDate.split("-");
+			let edDate = new Date(edDateArray[0], edDateArray[1] - 1, edDateArray[2]);
+			let betweenDate = (edDate.getTime() - stDate.getTime()) / 1000 / 60 / 60 / 24;
+			if(betweenDate > 365) {
+				mcxDialog.alertC("최대 1년까지 선택하실 수 있습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#searchForm input[name=stDate]').focus();
+					}
+				});
+				return false;
+			}
 		}
 
 		return true;
@@ -204,12 +216,11 @@
 		
 	}
 
-	// 조회클릭시
-	$('#btnFreeGoodsRegi').on('click', function() {
+	// 프로모션 등록 클릭시
+	$('#searchForm #btnFreeGoodsRegi').on('click', function() {
 		cfnOpenFreeGoodsPromotionSetPopup('C');
 	});
 
-
 	//페이징
 	$('#searchForm select[name=pageSize]').on('change', function() {
 		$("#searchForm input[name=pageNo]").val('1');
@@ -217,12 +228,17 @@
 	});
 
 	$(document).ready(function() {
-
+		// 기간 검색 조건
 		cfnCreateCalendar('#sellTerms', 'stDate', 'edDate', true, '기간', 'X');
 
+		// 기간 검색 default 조건 (최근1주일)
+		let date = new Date();
+		$("#searchForm #edDate").val(date.format("YYYY-MM-DD"));	// 오늘 날짜
+		date.setDate(date.getDate() - 6);							//월~일, 금~목으로 6을 뺌
+		$("#searchForm #stDate").val(date.format("YYYY-MM-DD"));	// 1주일 전 날짜
+
 		// Create a agGrid
 		gagaAgGrid.createGrid('gridList', gridOptions);
-
 	});
 
 /*]]>*/

+ 145 - 68
src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionRegiForm.html

@@ -24,8 +24,6 @@
 			<form id="freeGoodsPromotionForm" name="freeGoodsPromotionForm" th:method="post">
 				<input type="hidden" name="gbn" th:value="${param.gbn}" />				<!-- 신규/수정 구분 -->
 				<input type="hidden" id="freegiftSq" name="freegiftSq" th:value="${param.freegiftSq}"/>	<!-- 사은품 프로모션 번호 -->
-				<input type="hidden" id="supplyCompCds" name="supplyCompCds"/>			<!-- 공급업체 리스트 -->
-				<input type="hidden" id="brandCds" name="brandCds"/>					<!-- 브랜드 리스트 -->
 
 				<div class="panelContent">
 					<table class="frmStyle">
@@ -98,7 +96,7 @@
 										<div class="padding10" style="display:inline-block;width:49%;">
 											<span>공급업체 설정</span>
 											<div class="padding10 inner-tb-solid">
-												<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddCompany">업체 추가</button>
+												<button type="button" class="btn btnRight btn-success btn-lg " id="btnAddCompany">업체 추가</button>
 												<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteCompany">선택삭제</button>
 												<br/>
 												<div id="gridFGPromotionCompanyList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
@@ -184,8 +182,8 @@
 									<th>지급 방법<em class="required" title="필수"></em></th>
 									<td>
 										<div>
-											<span><label class="rdoBtn"><input type="radio" name="allYn" value="Y" checked/>모두 지급 (설정한 사은품을 모두 지급합니다)</label></span>
-											<span><label class="rdoBtn"><input type="radio" name="allYn" value="N"/>선택 사은품 (목록 중 1개를 선택하게 합니다)</label></span>
+											<span><label class="rdoBtn"><input type="radio" id="allY" class="disabledPoint" name="allYn" value="Y" checked/>모두 지급 (설정한 사은품을 모두 지급합니다)</label></span>
+											<span><label class="rdoBtn"><input type="radio" id="allN" class="disabledPoint" name="allYn" value="N"/>선택 사은품 (목록 중 1개를 선택하게 합니다)</label></span>
 										</div>
 									</td>
 								</tr>
@@ -196,10 +194,10 @@
 											<div><i class="fa fa-info-circle"></i> 사은품은 최대 <font color="red">5</font>개까지 설정하실 수 있습니다.</div>
 											<div><i class="fa fa-info-circle"></i> 구매 금액 조건을 추가하시면 구매 금액 충족 조건에 맞는 것으로 지급됩니다. 구매금액 조건은 최대 2개까지만등록 하실 수 있습니다.</div>
 											<div><i class="fa fa-info-circle"></i> 장바구니에 담았을 때의 가격 기준으로 적용됩니다.(주문상품쿠폰(다운로드쿠폰)/장바구니 쿠폰 할인 적용 전 판매가)</div>
-											<label for="saleAmt">구매금액</label><input type="text" class="w300" id="saleAmt" name="sectionVal" data-valid-type="numeric"/> <br/>
+											<label for="saleAmt">구매금액</label><input type="text" class="w300 disabledPoint" id="saleAmt" name="sectionVal" data-valid-type="numeric"/> <br/>
 											<span>사은품 목록</span>
-											<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddFreeGoods1">+ 사은품 선택</button>
-											<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteFreeGoods1">선택삭제</button>
+											<button type="button" class="btn btnRight btn-success btn-lg hideButten" id="btnAddFreeGoods1">+ 사은품 선택</button>
+											<button type="button" class="btn btnRight btn-success btn-lg hideButten" id="btnDeleteFreeGoods1">선택삭제</button>
 											<br/>
 											<div id="gridFreeGoods1List" style="width:100%; height:200px;" class="ag-theme-balham"></div>
 										</div>
@@ -209,10 +207,10 @@
 									<th>사은품 조건2<br/>(최대 2개)</th>
 									<td>
 										<div>
-											<label for="saleAmt2">구매금액</label><input type="text" class="w300" id="saleAmt2"  name="sectionVal2" data-valid-type="numeric"/> <br/>
+											<label for="saleAmt2">구매금액</label><input type="text" class="w300 disabledPoint" id="saleAmt2"  name="sectionVal2" data-valid-type="numeric"/> <br/>
 											<span>사은품 목록</span>
-											<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddFreeGoods2">+ 사은품 선택</button>
-											<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteFreeGoods2">선택삭제</button>
+											<button type="button" class="btn btnRight btn-success btn-lg hideButten" id="btnAddFreeGoods2">+ 사은품 선택</button>
+											<button type="button" class="btn btnRight btn-success btn-lg hideButten" id="btnDeleteFreeGoods2">선택삭제</button>
 											<br/>
 											<div id="gridFreeGoods2List" style="width:100%; height:200px;" class="ag-theme-balham"></div>
 										</div>
@@ -352,42 +350,42 @@
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{headerName: "사은품 코드", field: "productNo", width: 120, cellClass: 'text-center'},
 		{headerName: "사은품명", field: "goodsNm", width: 150, cellClass: 'text-center'},
-		{headerName: "포인트액", field: "usePoint" , width: 100, cellClass: 'text-center'
+		{headerName: "포인트액", field: "usePoint" , width: 100, cellClass: 'text-center', required: true
 			,editable: true
 			,valueFormatter: function(params) {
-				if(params.value && params.value > 0) {
+				if(params.value) {
 					return params.value.addComma();
 				} else {
 					return 0;
 				}
 			},
-			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+			cellEditorParams: { maxlength: 9, validType: 'numeric'}
 		},
-		{headerName: "지급수량", field: "itemQty" , width: 100, cellClass: 'text-center'
+		{headerName: "지급수량", field: "itemQty" , width: 100, cellClass: 'text-center', required: true
 			,editable: true
 			,valueFormatter: function(params) {
-				if(params.value && params.value > 0) {
-					return params.value.addComma();
+				if(params.value) {
+					return params.value;
 				} else {
-					return 0;
+					return 1;
 				}
 			}
-			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
+			,cellEditorParams: { maxlength: 3, validType: 'numeric'}
 		},
-		{headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center'
+		{headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center', required: true
 			,editable: true
 			,valueFormatter: function(params) {
-				if(params.value && params.value > 0) {
+				if(params.value) {
 					return params.value.addComma();
 				} else {
-					return 0;
+					return 1;
 				}
 			}
-			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
+			,cellEditorParams: { maxlength: 9, validType: 'numeric'}
 		},
 		{headerName: "잔여수량", field: "leftQty", width: 120, cellClass: 'text-center'
 			,valueFormatter: function(params) {
-				if(params.value && params.value > 0) {
+				if(params.value) {
 					return params.value.addComma();
 				} else {
 					return 0;
@@ -400,42 +398,42 @@
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{headerName: "사은품 코드", field: "productNo", width: 120, cellClass: 'text-center'},
 		{headerName: "사은품명", field: "goodsNm", width: 150, cellClass: 'text-center'},
-		{headerName: "포인트액", field: "usePoint" , width: 100, cellClass: 'text-center'
+		{headerName: "포인트액", field: "usePoint" , width: 100, cellClass: 'text-center', required: true
 			,editable: true
 			,valueFormatter: function(params) {
-				if(params.value && params.value > 0) {
+				if(params.value) {
 					return params.value.addComma();
 				} else {
 					return 0;
 				}
 			},
-			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+			cellEditorParams: { maxlength: 9, validType: 'numeric'}
 		},
-		{headerName: "지급수량", field: "itemQty" , width: 100, cellClass: 'text-center'
+		{headerName: "지급수량", field: "itemQty" , width: 100, cellClass: 'text-center', required: true
 			,editable: true
 			,valueFormatter: function(params) {
-				if(params.value && params.value > 0) {
-					return params.value.addComma();
+				if(params.value) {
+					return params.value;
 				} else {
-					return 0;
+					return 1;
 				}
 			}
-			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
+			,cellEditorParams: { maxlength: 3, validType: 'numeric'}
 		},
-		{headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center'
+		{headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center', required: true
 			,editable: true
 			,valueFormatter: function(params) {
-				if(params.value && params.value > 0) {
+				if(params.value) {
 					return params.value.addComma();
 				} else {
-					return 0;
+					return 1;
 				}
 			}
-			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
+			,cellEditorParams: { maxlength: 9, validType: 'numeric'}
 		},
 		{headerName: "잔여수량", field: "leftQty", width: 120, cellClass: 'text-center'
 			,valueFormatter: function(params) {
-				if(params.value && params.value > 0) {
+				if(params.value) {
 					return params.value.addComma();
 				} else {
 					return 0;
@@ -490,18 +488,24 @@
 			$('#freeGoodsPromotionForm input[name=sectionVal2]').val(freegift.sectionVal2);
 			$("#freeGoodsPromotionForm #regInfo").text(freegift.regNm + "(" + freegift.regDt + ")");
 			$("#freeGoodsPromotionForm #updInfo").text(freegift.updNm + "(" + freegift.updDt + ")");
+			// 자사 적용일 경우
 			if(freegift.selfYn == "Y") {
 				$("#freeGoodsPromotionForm input[name=selfYn]").addClass("checked");
 				$("#freeGoodsPromotionForm input[name=selfYn]").parent("label").addClass("checked");
 			}
+
+			// 외부몰 적용일 경우
 			if(freegift.extmallList != null && freegift.extmallList.length > 0) {
 				$("#freeGoodsPromotionForm input[name=extmallYn]").parent("label").addClass("checked");
 				$("#freeGoodsPromotionForm #extmallCnt").text(freegift.extmallList.length);
+				$("#freeGoodsPromotionForm #allY").prop("checked", true);						// 제휴몰 선택시 지급 방법은 모두 지급으로 한정
+				$("#freeGoodsPromotionForm input[name=allYn]").prop("disabled", true);			// 제휴몰 선택시 지급 방법은 모두 지급에서 수정 불가
 			} else {
 				$("#freeGoodsPromotionForm #btnExtmallPopup").hide();
 				$("#freeGoodsPromotionForm #extmallCntArea").hide();
 				$("#freeGoodsPromotionForm #extmallCnt").text(0);
 				$("#freeGoodsPromotionForm #extmallIds").val("");
+				$("#freeGoodsPromotionForm input[name=allYn]").prop("disabled", false);			// 제휴몰 선택 안하면 지급 방법 수정 가능
 			}
 
 			// 목록 제외 버튼 숨김
@@ -511,21 +515,16 @@
 				$("#freeGoodsPromotionForm #btnChangeStatIng").show();				// 진행
 				$("#freeGoodsPromotionForm #btnPromotionDelete").show();			// 삭제
 			} else {
-				// 대기 상태가 아니면 전체 비활성화해야함.
-				$("#freeGoodsPromotionForm .disabledPoint").prop("disabled", true);
-				$("#freeGoodsPromotionForm .disabledPoint").prop("disabled", true);
-				//$("#freeGoodsPromotionForm label.disabledPoint::before").css("background", "#dbdbdb !important");
-				$("#freeGoodsPromotionForm .hideButten").hide();
-
-				// 반품 > 교환 오면 , 환불금액이나 배송비 업체별로.
-
 				// 진행 상태일 경우
 				if(freegift.freegiftStat == "G232_11") {
 					$("#freeGoodsPromotionForm #btnFreegoodsPromotionSave").show();	// 저장
 					$("#freeGoodsPromotionForm #btnPromotionStop").show();			// 중지
-				}
-
 
+					// 진행 상태일 경우 기간, 적용대상상품, 추가제외상품 외 나머지 항목 수정 불가.
+					$("#freeGoodsPromotionForm input[name=extmallYn]").addClass("formControl");
+					$("#freeGoodsPromotionForm .disabledPoint").prop("disabled", true);
+					$("#freeGoodsPromotionForm .hideButten").hide();
+				}
 			}
 
 			gridOptionsFGExtmallList.api.setRowData(freegift.extmallList);
@@ -556,13 +555,17 @@
 		gagaAgGrid.createGrid("gridFreeGoods1List", gridOptionsFreeGoods1List);
 		gagaAgGrid.createGrid("gridFreeGoods2List", gridOptionsFreeGoods2List);
 
-		cfnCreateCalendar('#promotionTerms', 'freegoodsStdt', 'freegoodsEddt', true, '행사기간', 'X');
-
 		if("C" == [[${param.gbn}]]) {
 			$("#freeGoodsPromotionForm #btnExtmallPopup").hide();
 			$("#freeGoodsPromotionForm #extmallCntArea").hide();
 			$("#freeGoodsPromotionForm .fgButton").hide();
 			$("#freeGoodsPromotionForm #btnFreegoodsPromotionSave").show();
+
+			// 기간 검색 default 조건 (오늘부터 1주일)
+			let date = new Date();
+			$("#freeGoodsPromotionForm #freegiftStdt").val(date.format("YYYY-MM-DD"));	// 오늘 날짜
+			date.setDate(date.getDate() + 7);											// 등록일 + 7일
+			$("#freeGoodsPromotionForm #freegiftEddt").val(date.format("YYYY-MM-DD"));	// 1주일 후 날짜
 		} else {
 			fnFreegiftSearch();
 		}
@@ -570,15 +573,20 @@
 
 	// 제휴몰 체크 상태 확인
 	$("#freeGoodsPromotionForm #G011_20").on("click", function() {
-		// 체크여부 확인 (선택되면 자동 checked 추가되는데, 추가되기 전 동작해서 반대로 지정)
-		if($("#freeGoodsPromotionForm #G011_20").hasClass("checked")) {
-			$("#freeGoodsPromotionForm #btnExtmallPopup").hide();
-			$("#freeGoodsPromotionForm #extmallCntArea").hide();
-			gridOptionsFGExtmallList.api.setRowData(null);
-			$("#extmallCnt").text(gagaAgGrid.getAllRowData(gridOptionsFGExtmallList).length);
-		} else {
-			$("#freeGoodsPromotionForm #btnExtmallPopup").show();
-			$("#freeGoodsPromotionForm #extmallCntArea").show();
+		if(!$("#freeGoodsPromotionForm input[name=extmallYn]").hasClass("formControl")) {		// 수정금지 상태가 아니라면
+			// 체크여부 확인 (선택되면 자동 checked 추가되는데, 추가되기 전 동작해서 반대로 지정)
+			if($("#freeGoodsPromotionForm #G011_20").hasClass("checked")) {
+				$("#freeGoodsPromotionForm #btnExtmallPopup").hide();
+				$("#freeGoodsPromotionForm #extmallCntArea").hide();
+				$("#freeGoodsPromotionForm input[name=allYn]").prop("disabled", false);			// 제휴몰 선택 안하면 지급 방법 수정 가능
+				gridOptionsFGExtmallList.api.setRowData(null);
+				$("#extmallCnt").text(gagaAgGrid.getAllRowData(gridOptionsFGExtmallList).length);
+			} else {
+				$("#freeGoodsPromotionForm #btnExtmallPopup").show();
+				$("#freeGoodsPromotionForm #extmallCntArea").show();
+				$("#freeGoodsPromotionForm #allY").prop("checked", true);						// 제휴몰 선택시 지급 방법은 모두 지급으로 한정
+				$("#freeGoodsPromotionForm input[name=allYn]").prop("disabled", true);			// 제휴몰 선택시 지급 방법은 모두 지급에서 수정 불가
+			}
 		}
 	});
 
@@ -593,7 +601,8 @@
 	function fnSetListInfo(result, gridListOption, key) {
 		let resultList = [];											// 최종 상품 리스트
 		let gridListValue = gagaAgGrid.getAllRowData(gridListOption);	// 기존 리스트
-
+		let addCnt = 0;													// 적용 성공 수량
+		let failCnt = 0;												// 실패 수량
 		// 기존 리스트 데이터 for
 		for(let i = 0 ; i < result.length ; i++) {
 			let addChk = true;					// 받아온 모든 데이터
@@ -605,7 +614,7 @@
 			}
 
 			// 추가된 데이터 중 중복되지 않은 데이터 리스트에 추가
-			if(addChk) {	resultList.push(result[i]);	}
+			if(addChk) {	resultList.push(result[i]); addCnt++;	}
 		}
 
 		// 사은품 추가는 5개까지만
@@ -615,6 +624,13 @@
 				mcxDialog.alert("사은품은 최대 5개까지만 등록하실 수 있습니다.");
 				return false;
 			}
+
+			failCnt = result.length - addCnt;
+			mcxDialog.alert("데이터가 적용되었습니다.<br/>" + addCnt + "건 성공, " + failCnt + "건 실패");
+		} else if (key == "goodsCd") {
+			uifnPopupClose('popupGoods');
+			failCnt = result.length - addCnt;
+			mcxDialog.alert("데이터가 적용되었습니다.<br/>" + addCnt + "건 성공, " + failCnt + "건 실패");
 		}
 
 		// 추가된 정보 그리드에 추가
@@ -625,7 +641,11 @@
 
 	// 저장 후 콜백 함수
 	var fnFreeGoodsPromotionSaveFin = function(result) {
-		fnFreegiftSearch();
+		if("C" != [[${param.gbn}]]) {
+			fnFreegiftSearch();
+		} else {
+			uifnPopupClose('popupFreeGoodsPromotionRegi');
+		}
 	}
 
 	// 저장 버튼 클릭시
@@ -680,25 +700,69 @@
 
 		// 지급수량, 한정수량 체크
 		for(let i = 0 ; i < freeGoods1.length ; i++) {
+			if(!freeGoods1[i].usePoint || freeGoods1[i].usePoint == "undefined") {		// 포인트액을 변경하지 않았을 경우 디폴트 값으로 설정
+				freeGoods1[i].usePoint = 0;
+			}
+			if(!freeGoods1[i].itemQty || freeGoods1[i].itemQty == "undefined") {		// 지급수량을 변경하지 않았을 경우 디폴트 값으로 설정
+				freeGoods1[i].itemQty = 1;
+			}
+			if(!freeGoods1[i].limitQty || freeGoods1[i].limitQty == "undefined") {		// 한정수량을 변경하지 않았을 경우 디폴트 값으로 설정
+				freeGoods1[i].limitQty = 1;
+			}
 			if(freeGoods1[i].itemQty < 1) {
-				mcxDialog.alert("사은품조건1의 지급 수량을 0개 이상 입력해주세요.");
+				mcxDialog.alert("사은품조건1의 지급 수량을 1개 이상 입력해주세요.");
 				return false;
 			}
-			if(!freeGoods1[i].limitQty || freeGoods1[i].limitQty < 1) {
+			if(freeGoods1[i].limitQty < 0) {
 				mcxDialog.alert("사은품조건1의 한정 수량을 0개 이상 입력해주세요.");
 				return false;
 			}
+
+			if(freeGoods1[i].usePoint > 999999999) {
+				mcxDialog.alert("사은품조건1의 포인트액 최대 값은 999999999 입니다.");
+				return false;
+			}
+			if(freeGoods1[i].itemQty > 999) {
+				mcxDialog.alert("사은품조건1의 지급수량 최대 값은 999 입니다.");
+				return false;
+			}
+			if(freeGoods1[i].limitQty > 999999999) {
+				mcxDialog.alert("사은품조건1의 한정수량 최대 값은 999999999 입니다.");
+				return false;
+			}
 		}
 
 		for(let i = 0 ; i < freeGoods2.length ; i++) {
+			if(!freeGoods2[i].usePoint || freeGoods2[i].usePoint == "undefined") {		// 포인트액을 변경하지 않았을 경우 디폴트 값으로 설정
+				freeGoods2[i].usePoint = 0;
+			}
+			if(!freeGoods2[i].itemQty || freeGoods2[i].itemQty == "undefined") {		// 지긊수량을 변경하지 않았을 경우 디폴트 값으로 설정
+				freeGoods2[i].itemQty = 1;
+			}
+			if(!freeGoods2[i].limitQty || freeGoods2[i].limitQty == "undefined") {		// 한정수량을 변경하지 않았을 경우 디폴트 값으로 설정
+				freeGoods2[i].limitQty = 1;
+			}
+
 			if(freeGoods2[i].itemQty < 1) {
-				mcxDialog.alert("사은품조건2의 지급 수량을 0개 이상 입력해주세요.");
+				mcxDialog.alert("사은품조건2의 지급 수량을 1개 이상 입력해주세요.");
 				return false;
 			}
-			if(!freeGoods2[i].limitQty || freeGoods2[i].limitQty < 1) {
+			if(freeGoods2[i].limitQty < 0) {
 				mcxDialog.alert("사은품조건2의 한정 수량을 0개 이상 입력해주세요.");
 				return false;
 			}
+			if(freeGoods2[i].usePoint > 999999999) {
+				mcxDialog.alert("사은품조건2의 포인트액 최대 값은 999999999 입니다.");
+				return false;
+			}
+			if(freeGoods2[i].itemQty > 999) {
+				mcxDialog.alert("사은품조건2의 지급수량 최대 값은 999 입니다.");
+				return false;
+			}
+			if(freeGoods2[i].limitQty > 999999999) {
+				mcxDialog.alert("사은품조건2의 한정수량 최대 값은 999999999 입니다.");
+				return false;
+			}
 		}
 
 		// 사은품조건1 의 수량 체크
@@ -711,10 +775,17 @@
 		if(freeGoods2Cnt > 5) {
 			mcxDialog.alert("사은품 조건2의 사은품은 최대 5개까지 등록가능합니다.");
 			return false;
-		} /*else if (freeGoods2Cnt > 0 && (!$("#freeGoodsPromotionForm #saleAmt2").val() || $("#freeGoodsPromotionForm #saleAmt2").val() != "") && $("#freeGoodsPromotionForm #saleAmt2").val() < 0) {
-			mcxDialog.alert("사은품 조건2의 사은품 조건을 입력해주세요.");
+		}
+		if($("#freeGoodsPromotionForm #saleAmt2").val() != "" && $("#freeGoodsPromotionForm #saleAmt2").val() < 1) {
+			if(freeGoods2Cnt > 0) {
+				mcxDialog.alert("사은품 조건2의 구매금액 조건을 설정해주세요.");
+				return false;
+			}
+		} else if (freeGoods2Cnt < 1) {
+			mcxDialog.alert("사은품 조건2의 사은품을 선택해주세요.");
 			return false;
-		}*/
+		}
+
 
 		let selfYn = $("#freeGoodsPromotionForm input[name=selfYn]:checked").val();
 		if(!selfYn || selfYn == "") { selfYn = "N"; }
@@ -926,4 +997,10 @@
 	}
 
 </script>
+
+<!-- 내부 영역 slide 버튼 모양 생성 -->
+<style>
+	.inner-fa-chevron-up:before {content: "\f077";}
+	.inner-fa-chevron-down:before {content: "\f078";}
+</style>
 </html>