JUSEUNG 5 år sedan
förälder
incheckning
4bd386baae

+ 0 - 1
.gitignore

@@ -3,7 +3,6 @@ target/
 .classpath
 /bin/
 /target/
-.project
 
 ### IntelliJ IDEA ###
 .idea

+ 42 - 0
.project

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>style24.admin</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.springframework.ide.eclipse.boot.validation.springbootbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+	</natures>
+</projectDescription>

+ 60 - 17
src/main/java/com/style24/admin/biz/service/TsaCouponService.java

@@ -1,25 +1,23 @@
 package com.style24.admin.biz.service;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.style24.admin.biz.dao.TsaCouponDao;
-import com.style24.admin.biz.dao.TsaMarketingDao;
-import com.style24.admin.support.security.session.TsaSession;
-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.*;
-import lombok.extern.slf4j.Slf4j;
-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 java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.style24.admin.biz.dao.TsaCouponDao;
+import com.style24.admin.support.security.session.TsaSession;
+import com.style24.persistence.domain.Coupon;
+
+import lombok.extern.slf4j.Slf4j;
+
 /**
  * 쿠폰 Service
  *
@@ -49,6 +47,8 @@ public class TsaCouponService {
 	public void couponSave(Coupon params) {
 		String cpnId = "";		// 쿠폰ID
 
+		params = applyTargetSetting(params);
+
 		params.setRegNo(TsaSession.getInfo().getUserNo());
 		params.setUpdNo(TsaSession.getInfo().getUserNo());
 
@@ -70,9 +70,52 @@ public class TsaCouponService {
 
 	}
 
+	// 쿠폰 적용대상 세팅
+	public Coupon applyTargetSetting(Coupon params) {
+		Collection<Coupon> cpnSupplyCompList = null;
+		Collection<Coupon> cpnBrandList = null;
+		Collection<Coupon> cpnApplyGoodsList = null;
+		Collection<Coupon> cpnCateList = null;
+		Collection<Coupon> cpnBurdenList = null;
+		Collection<Coupon> cpnExcepGoodsList = null;
+		ObjectMapper mapper = new ObjectMapper();
+
+		try {
+			if(params.getSupplyCompList() != null) {
+				cpnSupplyCompList = mapper.readValue(params.getSupplyCompList(), new TypeReference<Collection<Coupon>>() {
+				});
+			}
+			if(params.getBrandList() != null) {
+				cpnBrandList = mapper.readValue(params.getBrandList(), new TypeReference<Collection<Coupon>>() {
+				});
+			}
+			if(params.getApplyGoodsList() != null) {
+				cpnApplyGoodsList = mapper.readValue(params.getApplyGoodsList(), new TypeReference<Collection<Coupon>>() {
+				});
+			}
+			if(params.getCateList() != null) {
+				cpnCateList = mapper.readValue(params.getCateList(), new TypeReference<Collection<Coupon>>() {
+				});
+			}
+			if(params.getBurdenList() != null) {
+				cpnBurdenList = mapper.readValue(params.getBurdenList(), new TypeReference<Collection<Coupon>>() {
+				});
+			}
+			if(params.getCateList() != null) {
+				cpnExcepGoodsList = mapper.readValue(params.getExceptGoodsList(), new TypeReference<Collection<Coupon>>() {
+				});
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+
+		return params;
+	}
+
 	/**
 	 * 쿠폰 리스트 조회
-	 * @param  Coupon
+	 * @param  param
 	 * @return ArrayList<Coupon>
 	 * @author xyzp1539
 	 * @since 2020-12-22
@@ -83,7 +126,7 @@ public class TsaCouponService {
 
 	/**
 	 * 쿠폰리스트 카운트 조회
-	 * @param  Coupon
+	 * @param  param
 	 * @return int
 	 * @author xyzp1539
 	 * @since 2020-12-22
@@ -94,7 +137,7 @@ public class TsaCouponService {
 
 	/**
 	 * 쿠폰 벨리데이션 체크
-	 * @param Coupon
+	 * @param params
 	 * @author xyzp1539
 	 * @since  2021-01-12
 	 */

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

@@ -208,4 +208,22 @@ public class TsaDisplayController extends TsaBaseController {
 		return mav;
 	}
 
+	/**
+	 * 상품별카테고리전시관리 화면
+	 * @return
+	 * @author bin2107
+	 * @since 2021. 1. 13
+	 */
+	@GetMapping("/goods/category/form")
+	public ModelAndView goodsCategoryForm() {
+		ModelAndView mav = new ModelAndView();
+
+		// 상품상태
+		mav.addObject("goodsStatList", rendererService.getAvailCommonCodeList("G032"));
+
+		mav.setViewName("display/GoodsCategoryForm");
+
+		return mav;
+	}
+
 }

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

@@ -2433,6 +2433,21 @@ public class TsaGoodsController extends TsaBaseController {
 		return mav;
 	}
 
+	/**
+	 * 사은품조회 팝업
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 01. 10
+	 */
+	@GetMapping("/freeGoods/popup/list/form")
+	@ResponseBody
+	public ModelAndView freeGoodsPopupListForm(FreeGoods freeGoodsSearch) {
+		ModelAndView mav = new ModelAndView();
+		mav.addObject("param", freeGoodsSearch);
+		mav.setViewName("goods/FreeGoodsSearchForm");
+		return mav;
+	}
+
 	/**
 	 * 사은품 목록
 	 * @param adKeywordSq

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

@@ -109,9 +109,7 @@ public class TsaMarketingController extends TsaBaseController {
 		// 상품상태
 		String[] exceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
-
 		mav.addObject("param", param);
-		log.info("CHECK PARAM.GBN >> " + param.getGbn());
 		mav.setViewName("marketing/FreeGoodsPromotionRegiForm");
 		return mav;
 	}
@@ -135,6 +133,8 @@ public class TsaMarketingController extends TsaBaseController {
 		mav.addObject("dcWayList" , rendererService.getCommonCodeList("G240"));
 		// 사이트 조회
 		mav.addObject("siteCdList" , rendererService.getCommonCodeList("G000"));
+		// 사용가능 고객구분 조회
+		mav.addObject("usableCustGbList", rendererService.getCommonCodeList("G100"));
 
 		mav.setViewName("marketing/CouponListForm");
 
@@ -143,7 +143,7 @@ public class TsaMarketingController extends TsaBaseController {
 
 	/**
 	 * 쿠폰 리스트 조회
-	 * @param  Coupon
+	 * @param  param
 	 * @return GagaMap
 	 * @author xyzp1539
 	 * @since 2020-12-22
@@ -231,7 +231,7 @@ public class TsaMarketingController extends TsaBaseController {
 		mav.addObject("dnGbList" , rendererService.getCommonCodeList("G058"));
 		// 결제수단 조회
 		mav.addObject("payTypeList" , rendererService.getCommonCodeList("G015"));
-		// 결제수단 조회
+		// 쿠폰상태 조회
 		mav.addObject("cpnStatList" , rendererService.getCommonCodeList("G232"));
 		// 시간 분 리스트 세팅
 		mav.addObject("mmList" , mmList);
@@ -246,7 +246,7 @@ public class TsaMarketingController extends TsaBaseController {
 
 	/**
 	 * 쿠폰 저장
-	 * @param Coupon - 쿠폰 정보
+	 * @param coupon - 쿠폰 정보
 	 * @return
 	 * @author xyzp1539
 	 * @since 2021. 1. 11

+ 10 - 0
src/main/java/com/style24/persistence/domain/Coupon.java

@@ -4,6 +4,8 @@ import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 import lombok.Data;
 
+import java.util.Collection;
+
 /**
  * 쿠폰 도메인
  * @author xyzp1539
@@ -55,6 +57,7 @@ public class Coupon extends TscBaseDomain {
     private Integer useCnt;					// 쿠폰사용개수
     private String  payType;                 // 결제수단
     private String  custJoinYn;             // 신규회원여부
+    private String  regNm;                  // 사용자명
 
     private String  supplyCompCd;            // 공급업체코드
     private int     burdenRate;                 // 업체분담율
@@ -78,6 +81,13 @@ public class Coupon extends TscBaseDomain {
     private String  burdenList;              // 업체 분담율 리스트
     private String  cateList;                // 카테고리 리스트
 
+    private Collection<Coupon> supplyCompListNew;          // 공급업체 리스트
+    private Collection<Coupon>  brandListNew;               // 브랜드 리스트
+    private Collection<Coupon>  applyGoodsListNew;          // 적용상품 리스트
+    private Collection<Coupon>  exceptGoodsListNew;         // 제외상품 리스트
+    private Collection<Coupon>  burdenListNew;              // 업체 분담율 리스트
+    private Collection<Coupon>  cateListNew;                // 카테고리 리스트
+
     // Pagination
     private TsaPageRequest pageable;
     private int pageNo = 1;

+ 11 - 11
src/main/java/com/style24/persistence/domain/FreeGoods.java

@@ -14,16 +14,16 @@ import lombok.Data;
 @Data
 public class FreeGoods extends TscBaseDomain {
 
-	private Integer productNo;	//사은품 상품 번호 - ProductNo(WMS)
-	private String productCode;	//ProductCode(WMS)
-	private String goodsNum;	//품번
-	private String brandCd;		//브랜드코드
-	private String goodsNm;		//상품명
-	private String useYn;		//사용여부
-	private String sysImgNm;	//시스템이미지
-	private String newSysImgNm;	//신규 시스템이미지
-
-	private String brandEnm;		//브랜드명
-
+	private Integer productNo;		//사은품 상품 번호 - ProductNo(WMS)
+	private String productCode;		//ProductCode(WMS)
+	private String goodsNum;		//품번
+	private String brandCd;			//브랜드코드
+	private String goodsNm;			//상품명
+	private String useYn;			//사용여부
+	private String sysImgNm;		//시스템이미지
+	private String newSysImgNm;		//신규 시스템이미지
 
+	private String searchTxt;		// 팝업 검색어
+	private String callbackFn;		// 팝업 리콜펑션명
+	private String brandEnm;		// 브랜드명
 }

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

@@ -80,8 +80,8 @@ public class GoodsSearch extends TscBaseDomain {
 	private String alarmYn;
 	private String useYn;
 	private String noticeTitle;
-
 	private Integer rinbdInfoSq;
+	private String callbackFn;
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] siteCd;

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

@@ -20,7 +20,7 @@
 		, PD_GB
 		, AVAIL_STDT
 		, AVAIL_EDDT
-		, REG_NO
+		, FN_GET_USER_NM(REG_NO) AS REG_NM
 		, REG_DT
 		FROM TB_COUPON
 		WHERE 1=1
@@ -64,7 +64,7 @@
 		, T.PD_GB
 		, T.AVAIL_STDT
 		, T.AVAIL_EDDT
-		, T.REG_NO
+		, T.REG_NM
 		, T.REG_DT
 		ORDER BY  T.REG_DT DESC
 	</select>
@@ -179,8 +179,8 @@
 		  , #{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')
+		  , DATE_FORMAT(#{availStdt} , '%Y-%m-%d %H:%i:%s')
+		  , DATE_FORMAT(#{availEddt} , '%Y-%m-%d %H:%i:%s')
 			  </when>
 			  <when test='pdGb != null and pdGb == "D"' >
 		  , #{availDays}
@@ -191,8 +191,8 @@
 		  , #{onePubQty}
 		  , #{dnGb}
 		  <if test='dnGb != null and dnGb == "G058_20"'>
-		  , DATE_FORMAT(#{downStdt} , '%Y-%m-%d %h:%i:%s')
-		  , DATE_FORMAT(#{downEddt} , '%Y-%m-%d %h:%i:%s')
+		  , DATE_FORMAT(#{downStdt} , '%Y-%m-%d %H:%i:%s')
+		  , DATE_FORMAT(#{downEddt} , '%Y-%m-%d %H:%i:%s')
 		  </if>
 		  , #{buyLimitAmt}
 		  , #{planSq}
@@ -206,12 +206,12 @@
 		  , #{firstYn}
 		  , #{downYn}
 		  <if test='custJoinYn != null and custJoinYn == "Y"'>
-		  , DATE_FORMAT(#{custJoinStdt} , '%Y-%m-%d %h:%i:%s')
-		  , DATE_FORMAT(#{custJoinEddt} , '%Y-%m-%d %h:%i:%s')
+		  , DATE_FORMAT(#{custJoinStdt} , '%Y-%m-%d %H:%i:%s')
+		  , DATE_FORMAT(#{custJoinEddt} , '%Y-%m-%d %H:%i:%s')
 		  </if>
 		  <if test='firstYn != null and firstYn == "Y"'>
-		  , DATE_FORMAT(#{buyStdt} , '%Y-%m-%d %h:%i:%s')
-		  , DATE_FORMAT(#{buyEddt} , '%Y-%m-%d %h:%i:%s')
+		  , DATE_FORMAT(#{buyStdt} , '%Y-%m-%d %H:%i:%s')
+		  , DATE_FORMAT(#{buyEddt} , '%Y-%m-%d %H:%i:%s')
 		  </if>
 		  <if test='cpnType != null and cpnType == "G230_20"'>
 		  , #{payType}

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

@@ -6,7 +6,7 @@
 	<select id="getItemkindList" parameterType="Itemkind" resultType="Itemkind">
 		/* TsaGoods.getItemkindList */
 		SELECT ITEMKIND_CD
-		     , ITEMKIND_NM
+		     , ITEMKIND_NMgetFreeGoodsList
 		     /* , ITEMKIND_ENM*/
 		     , NI_CLSF_CD
 		     , USE_YN

+ 212 - 0
src/main/webapp/WEB-INF/views/display/GoodsCategoryForm.html

@@ -0,0 +1,212 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsCategoryForm.html
+ * @desc    : 상품별카테고리전시관리 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.01.13   bin2107     최초 작성
+ *******************************************************************************
+ -->
+	<div id="main">
+		<!-- 메인타이틀 영역 -->
+		<div class="main-title">
+		</div>
+		<!-- //메인타이틀 영역 -->
+		
+		<!-- 메뉴 설명 -->
+		<div class="infoBox menu-desc">
+		</div>
+		<!-- //메뉴 설명 -->
+		
+		<!-- 검색조건 영역 -->
+		<div class="panelStyle">
+			<form id="goodsCateForm" name="goodsCateForm" action="#" th:action="@{'/display/goods/category/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+				<table class="frmStyle" aria-describedby="검색조건">
+					<colgroup>
+						<col width="7%"/>
+						<col width="18%"/>
+						<col width="7%"/>
+						<col width="18%"/>
+						<col width="7%"/>
+						<col width="18%"/>
+						<col width="7%"/>
+						<col/>
+					</colgroup>
+					<tr>
+						<th>상품코드</th>
+						<td>
+							<input type="text" class="w100" name="goodsCd" id="goodsCd"/>
+						</td>
+						<th>원코드</th>
+						<td>
+							<input type="text" class="w100" name="supplyGoodsCd" maxlength="20" required="required" data-valid-name="원코드"/>
+						</td>
+						<th>상품명</th>
+						<td>
+							<input type="text" class="w100" name="goodsNm" maxlength="200" required="required" data-valid-name="상품명"/>
+						</td>
+						<th>상품상태</th>
+						<td>
+							<select name="goodsStat">
+								<option value=''>[전체]</option>
+								<!--<option th:if="${goodsStatList}" th:each="oneData, status : ${goodsStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<th>업체코드</th>
+						<td>
+							<select name="supplyCompCd">
+								<option value=''>[전체]</option>
+								<!--<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+							</select>
+						</td>
+						<th>담당MD</th>
+						<td>
+							<select name="mdId">
+								<option value=''>[전체]</option>
+								<!--<option th:if="${mdIdList}" th:each="oneData, status : ${mdIdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+							</select>
+						</td>
+						<th>브랜드/품목</th>
+						<td colspan="3">
+							<select name="brandCd">
+								<option value=''>[전체]</option>
+								<!--<option th:if="${brandCdList}" th:each="oneData, status : ${brandCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+							</select>
+							<select name="itemkindCd">
+								<option value=''>[전체]</option>
+								<!--<option th:if="${itemkindList}" th:each="oneData, status : ${itemkindList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+							</select>
+						</td>
+					</tr>
+					<tr>
+						<th>이월구분</th>
+						<td>
+							<select name="formalGb">
+								<option value=''>[전체]</option>
+								<!--<option th:if="${formalList}" th:each="oneData, status : ${formalList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+							</select>
+						</td>
+						<th>재고수량</th>
+						<td>
+							<input type="text" class="w100" name="currStockQty" maxlength="11" required="required" data-valid-name="재고수량" data-valid-type="numeric"/>개 이상
+						</td>
+						<th>년도/시즌</th>
+						<td>
+							<select name="styleYear">
+								<option value=''>[전체]</option>
+								<!--<option th:if="${styleYearList}" th:each="oneData, status : ${styleYearList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+							</select>
+							<select name="seasonCd">
+								<option value=''>[전체]</option>
+								<!--<option th:if="${seasonCdList}" th:each="oneData, status : ${seasonCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>-->
+							</select>
+						</td>
+						<th>판매가</th>
+						<td>
+							<input type="text" class="w60" name="currPriceSt" required="required" data-valid-name="판매가" data-valid-type="integer"/>원 ~
+							<input type="text" class="w60" name="currPriceEd" required="required" data-valid-name="판매가" data-valid-type="integer"/>원
+						</td>
+					</tr>
+					<tr>
+						<th>품절여부</th>
+						<td>
+							<select name="soldoutYn">
+								<option value=''>[전체]</option>
+								<option value='Y'>[Y] Yes</option>
+								<option value='N'>[N] No</option>
+							</select>
+						</td>
+						<th>반품/교환</th>
+						<td colspan='3'>
+							<label><input type="checkbox" id="changeableYn">반품불가</label>
+							<input type="hidden" name="changeableYn" class="formControl">
+							<label><input type="checkbox" id="returnableYn">교환불가</label>
+							<input type="hidden" name="returnableYn" class="formControl">
+							<label><input type="checkbox" id="returnFeeFreeYn">무료반품</label>
+							<input type="hidden" name="returnFeeFreeYn" class="formControl">
+							<label><input type="checkbox" id="changeFeeFreeYn">무료교환</label>
+							<input type="hidden" name="changeFeeFreeYn" class="formControl">
+						</td>
+						<th>할인율(%)</th>
+						<td>
+							<input type="text" class="w50" name="dcRateSt" maxlength="3" required="required" data-valid-name="할인율" data-valid-type="numeric"/> ~
+							<input type="text" class="w50" name="dcRateEd" maxlength="3" required="required" data-valid-name="할인율" data-valid-type="numeric"/>
+						</td>
+					</tr>
+					<tr>
+						<th>기간</th>
+						<td id="sellTerms" colspan='7'></td>
+					</tr>
+					<tr>
+						<th>전시여부</th>
+						<td colspan='7'>
+							<select name="useYn">
+								<option value=''>[전체]</option>
+								<option value='Y'>[Y] Yes</option>
+								<option value='N'>[N] No</option>
+							</select>
+						</td>
+					</tr>
+				</table>
+			</form>
+		</div>
+		<!-- 검색조건 영역 -->
+
+		<!-- 리스트 영역 -->
+		<div class="panelStyle">
+			<div id="gridList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
+		</div>
+		<!-- //리스트 영역 -->
+		
+		<!-- 등록/수정 -->
+		<div class="panelStyle">
+			<form id="detailForm" name="detailForm" action="#" th:action="@{'/display/category/save'}">
+				<table class="frmStyle" aria-describedby="등록/수정 폼">
+					<colgroup>
+						<col style="width:10%;"/>
+						<col style="width:23%;"/>
+						<col style="width:10%;"/>
+						<col style="width:23%;"/>
+						<col style="width:10%;"/>
+						<col/>
+					</colgroup>
+
+				</table>
+			</form>
+			
+			<!-- 버튼 배치 영역 -->
+			<ul class="panelBar">
+				<li class="right">
+					<button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
+					<button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
+					<button type="button" class="btn btn-base btn-lg" id="btnRefresh4Srch" th:if="${sessionInfo.roleCd == 'G001_0000'}">4SRCH 갱신</button>
+				</li>
+			</ul>
+			<!-- //버튼 배치 영역 -->
+		</div>
+		<!-- 등록/수정 -->
+	</div>
+
+<script th:inline="javascript">
+/*<![CDATA[*/
+$(document).ready(function() {
+
+	cfnCreateCalendar('#sellTerms', 'searchStdt', 'searchEddt', true, '기간', 'X');
+
+	// Create a agGrid
+	//gagaAgGrid.createGrid('gridList', gridOptions);
+
+});
+/*]]>*/
+</script>
+
+</html>

+ 133 - 0
src/main/webapp/WEB-INF/views/goods/FreeGoodsSearchForm.html

@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : FreeGoodsSearchForm.html
+ * @desc    : 사은품 조회 페이지
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.01.12   xodud1202   최초 작성
+ *******************************************************************************
+ -->
+<div class="modalPopup" data-width="850" id="popupFreeGoodsList">
+	<div class="panelStyle">
+		<!-- TITLE -->
+		<div class="panelTitle">
+			<strong>사은품 목록</strong>
+			<button type="button" class="close" onclick="uifnPopupClose('popupFreeGoodsList');"><em class="fa fa-times"></em></button>
+		</div>
+		<!-- //TITLE -->
+
+		<!-- 검색 조건 -->
+		<div class="panelContent">
+			<form id="searchCompanyListForm" name="searchCompanyListForm" action="#" th:action="@{'/goods/freeGoods/list'}" onsubmit="$('#btnSearchFreeGoodsList').trigger('click'); return false;">
+				<table class="frmStyle" aria-describedby="검색조건">
+					<colgroup>
+						<col style="width:15%;"/>
+						<col/>
+					</colgroup>
+					<tbody>
+					<tr>
+						<th>검색어 지정</th>
+						<td>
+							<label class="rdoBtn"><input type="radio" name="search" value="searchProductNo" checked/>사은품코드</label>
+							<label class="rdoBtn"><input type="radio" name="search" value="searchGoodsNm"/>품번</label>
+							<textarea name="condition" style="height:75px;"></textarea>
+						</td>
+					</tr>
+					</tbody>
+				</table>
+				<ul class="panelBar">
+					<li class="center">
+						<button type="button" class="btn btn-base btn-lg" id="btnSearchFreeGoodsList">조회</button>
+					</li>
+				</ul>
+			</form>
+		</div>
+		<!-- //검색 조건 -->
+
+		<!-- 리스트 영역 -->
+		<div class="panelContent">
+			<div id="freeGoodsSearchList" style="width: 100%; height: 470px" class="ag-theme-balham"></div>
+		</div>
+		<!-- //리스트 영역 -->
+
+		<!-- 버튼 배치 영역 -->
+		<ul class="panelBar">
+			<li class="right">
+				<button type="button" class="btn btn-info btn-lg" id="btnConfirmFreeGoods">확인</button>
+			</li>
+		</ul>
+	</div>
+
+	<script th:inline="javascript">
+		/*<![CDATA[*/
+		let columnFreeGoodsPopupDefList = [
+			  {width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false}
+			, {headerName: "사은품코드", field: "productNo", width: 120, cellClass: 'text-center'}
+			, {headerName: "품번코드", field: "goodsNum", width: 150, cellClass: 'text-center'}
+			, {headerName: "사은품명", field: "goodsNm", width: 300, cellClass: 'text-center'}
+			, {headerName: "상태", field: "useYn", width: 50, cellClass: 'text-center'}
+			, {headerName: "잔여수량", field: "supplyStatNm", width: 150, cellClass: 'text-center'
+				,valueFormatter: function(params) { return '999'; }
+			}    <!-- 잔여 수량 해당 시점 기준 I/F 재고수량 표시 라고 되어있는데 맞는지 확인 필요함 -->
+		];
+
+		let gridOptionsFreeGoodsPopupList = gagaAgGrid.getGridOptions(columnFreeGoodsPopupDefList);
+		gridOptionsFreeGoodsPopupList.rowSelection = "multiple";
+
+		// Row double click
+		gridOptionsFreeGoodsPopupList.onRowDoubleClicked = function(event) {
+			$('#popupFreeGoodsList #btnConfirmFreeGoods').trigger('click');
+		}
+
+		// 조회
+		$('#popupFreeGoodsList #btnSearchFreeGoodsList').on('click', function() {
+			// Fetch data
+			gagaAgGrid.fetch($('#popupFreeGoodsList #searchCompanyListForm').prop('action'), gridOptionsFreeGoodsPopupList, '#searchCompanyListForm');
+		});
+
+		// 확인
+		$('#popupFreeGoodsList #btnConfirmFreeGoods').on('click', function() {
+			var selectedData = gagaAgGrid.selectedRowData(gridOptionsFreeGoodsPopupList);
+
+			if (selectedData.length == 0) {
+				mcxDialog.alert('선택된 공급업체가 없습니다.');
+				return false;
+			}
+
+			var callbackFn = [[${param.callbackFn}]];
+
+			var jsonData = JSON.stringify(selectedData);
+
+			if (typeof callbackFn != 'undefined' && callbackFn) {
+				if (typeof callbackFn == 'function') {
+					callbackFn(jsonData);
+				} else {
+					if (callbackFn) {
+						if (callbackFn.indexOf("(") == -1) {
+							eval(callbackFn + "(" + jsonData + ")");
+						} else {
+							eval(callbackFn(jsonData));
+						}
+					}
+				}
+				uifnPopupClose('popupFreeGoodsList');
+			}
+		});
+
+		$(document).ready(function() {
+			// Create a agGrid
+			gagaAgGrid.createGrid('freeGoodsSearchList', gridOptionsFreeGoodsPopupList);
+		});
+		/*]]>*/
+	</script>
+
+</div>
+
+</html>

+ 54 - 11
src/main/webapp/WEB-INF/views/marketing/CouponListForm.html

@@ -3,7 +3,7 @@
 	  xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
- * @source  : CouponListForm.html
+ * @source  : .html
  * @desc    : 쿠폰관리 Page
  *============================================================================
  * STYLE24
@@ -133,20 +133,46 @@
 			</ul>
 
 			<!-- 검색결과 영역 -->
-			<div id="gridList" style="width: 100%; height: 700px;" class="ag-theme-balham lh60"></div>
+			<div id="gridList" style="width: 100%; height: 570px;" class="ag-theme-balham"></div>
 		</div>
 	</form>
 	<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=2019072202"></script>
 	<script th:inline="javascript">
 		/*<![CDATA[*/
+		var cpnTypeList = gagajf.convertToArray([[${cpnTypeList}]]);
+		var siteCdList = gagajf.convertToArray([[${siteCdList}]]);
+		var dcWayList = gagajf.convertToArray([[${dcWayList}]]);
+		var usableCustGbList = gagajf.convertToArray([[${usableCustGbList}]]);
+		var pdGbList = { "P":"기간", "D":"일수" };
+
 		var columnDefs = [];
 		columnDefs = [
-			{headerName: "사이트", field: "siteCd", width: 80, cellClass: 'text-center'},
+			{headerName: "사이트", field: "siteCd", width: 80, 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: "쿠폰ID", field: "cpnId", width: 130, cellClass: 'text-center'},
 			{headerName: "쿠폰명", field: "cpnNm", width: 140, cellClass: 'text-center'},
-			{headerName: "사용가능고객구분", field: "usableCustGb", width: 140, cellClass: 'text-center'},
-			{headerName: "쿠폰유형", field: "cpnType", width: 140, cellClass: 'text-center'},
-			{headerName: "할인방식", field: "dcWay", width: 140, cellClass: 'text-center'},
+			{headerName: "사용가능고객구분", field: "usableCustGb", width: 140, cellClass: 'text-center' ,
+				cellEditor: 'agRichSelectCellEditor',
+				cellEditorParams: { values: gagaAgGrid.extractValues(usableCustGbList) },
+				valueFormatter: function (params) { return gagaAgGrid.lookupValue(usableCustGbList, params.value); },
+				valueParser: function (params) { return gagaAgGrid.lookupKey(usableCustGbList, params.newValue);}
+			},
+			{headerName: "쿠폰유형", field: "cpnType", width: 140, cellClass: 'text-center' ,
+				cellEditor: 'agRichSelectCellEditor',
+				cellEditorParams: { values: gagaAgGrid.extractValues(cpnTypeList) },
+				valueFormatter: function (params) { return gagaAgGrid.lookupValue(cpnTypeList, params.value); },
+				valueParser: function (params) { return gagaAgGrid.lookupKey(cpnTypeList, params.newValue); }
+			},
+			{headerName: "할인방식", field: "dcWay", width: 140, cellClass: 'text-center' ,
+				cellEditor: 'agRichSelectCellEditor',
+				cellEditorParams: { values: gagaAgGrid.extractValues(dcWayList) },
+				valueFormatter: function (params) { return gagaAgGrid.lookupValue(dcWayList, params.value); },
+				valueParser: function (params) { return gagaAgGrid.lookupKey(dcWayList, params.newValue); }
+			},
 			{headerName: "할인값(PC)", field: "dcPval", width: 140, cellClass: 'text-center'},
 			{headerName: "할인값(MOBILE)", field: "dcMval", width: 140, cellClass: 'text-center'},
 			{headerName: "최고할인값", field: "maxDcAmt", width: 140, cellClass: 'text-center'},
@@ -155,11 +181,28 @@
 					return params.data.issueCnt + "/" + params.data.useCnt;
 				}
 			},
-			{headerName: "기간/일수구분", field: "pdGb", width: 140, cellClass: 'text-center'},
-			{headerName: "유효시작일시", field: "availStdt", width: 140, cellClass: 'text-center'},
-			{headerName: "유효종료일시", field: "availEddt", width: 140, cellClass: 'text-center'},
-			{headerName: "등록자", field: "regNo", width: 200, cellClass: 'text-left'},
-			{headerName: "등록일시", field: "regDt", width: 140, cellClass: 'text-center'},
+			{headerName: "기간/일수구분", field: "pdGb", width: 140, cellClass: 'text-center' ,
+				cellEditor: 'agRichSelectCellEditor',
+				cellEditorParams: { values: gagaAgGrid.extractValues(pdGbList) },
+				valueFormatter: function (params) { return gagaAgGrid.lookupValue(pdGbList, params.value); },
+				valueParser: function (params) { return gagaAgGrid.lookupKey(pdGbList, params.newValue); }
+			},
+			{headerName: "유효시작일시", field: "availStdt", width: 140, cellClass: 'text-center' ,
+				cellRenderer: function(params) {
+					return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
+				}
+			},
+			{headerName: "유효종료일시", field: "availEddt", width: 140, cellClass: 'text-center' ,
+				cellRenderer: function(params) {
+					return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
+				}
+			},
+			{headerName: "등록자", field: "regNm", width: 150, cellClass: 'text-center'},
+			{headerName: "등록일시", field: "regDt", width: 140, cellClass: 'text-center' ,
+				cellRenderer: function(params) {
+					return !gagajf.isNull(params.value) ? params.value.toDate("YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss") : '';
+				}
+			},
 		];
 
 		// Get GridOptions

+ 4 - 5
src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionForm.html

@@ -16,19 +16,18 @@
  -->
 	<div id="main">
 		<!-- 메인타이틀 영역 -->
-		<div class="main-title">
-		</div>
+		<div class="main-title"></div>
 		<!-- //메인타이틀 영역 -->
 		
 		<!-- 메뉴 설명 -->
-		<div class="infoBox menu-desc">
-		</div>
+		<div class="infoBox menu-desc"></div>
+
 		<form id="searchForm" name="searchForm" action="#" th:action="@{'/marketing/freeGoodsPromotion/list'}">
 			<input type="hidden" id="searchGb" name="searchGb" />
 			<input type="hidden" id="imageViewYn" name="imageViewYn" />
 			<input type="hidden" id="goodsPriceYn" name="goodsPriceYn" value="Y"/> <!-- 즉시할인판매가 조회 -->
 
-				<!-- 패널 영역1 -->
+			<!-- 패널 영역1 -->
 			<div class="panelStyle" >
 				<!-- 검색조건 영역 -->
 				<!-- TITLE -->

+ 646 - 627
src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionRegiForm.html

@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 <html lang="ko"
-	xmlns:th="http://www.thymeleaf.org">
+	  xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
  * @source  : FreeGoodsPromotionRegiForm.html
@@ -13,687 +13,706 @@
  * ===  ===========  ==========  =============================================
  * 1.0  2020.12.23   xodud1202   최초 작성
  *******************************************************************************
- -->	
-	<div class="modalPopup frGoodsPro" data-width="1100">
-		<div class="panelStyle" style="max-height:900px;overflow-y:scroll;">
-			<div class="panelTitle">
-				<h2>사은품 프로모션 관리</h2>
-				<button type="button" class="close" onclick="fnFreeGoodsPromotionFormClose()"><i class="fa fa-times"></i></button>
+ -->
+<div class="modalPopup frGoodsPro" data-width="1100">
+	<div class="panelStyle" style="max-height:700px;overflow-y:scroll;">
+		<div class="panelTitle">
+			<h2>사은품 프로모션 관리</h2>
+			<button type="button" class="close" onclick="fnFreeGoodsPromotionFormClose()"><i class="fa fa-times"></i></button>
+		</div>
+
+		<form id="freeGoodsPromotionForm" name="freeGoodsPromotionForm" th:method="post" >
+			<input type="hidden" name="gbn" th:value="${param.gbn}" />				<!-- 신규/수정 구분 -->
+			<input type="hidden" id="supplyCompCds" name="supplyCompCds"/>			<!-- 공급업체 리스트 -->
+			<input type="hidden" id="brandCds" name="brandCds"/>					<!-- 브랜드 리스트 -->
+			<input type="hidden" id="applyGoodsCds" name="applyGoodsCds"/>			<!-- 적용상품 리스트 -->
+			<input type="hidden" id="exceptGoodsCds" name="exceptGoodsCds"/>		<!-- 제외상품 리스트 -->
+			<input type="hidden" id="freeGoods1Cds" name="freeGoods1Cds"/>			<!-- 적용 사은품1 리스트 -->
+			<input type="hidden" id="freeGoods2Cds" name="freeGoods2Cds"/>			<!-- 적용 사은품2 리스트 -->
+			<input type="hidden" id="extmallIds" name="extmallIds" value=""/>			<!-- 적용 사은품2 리스트 -->
+
+			<div class="panelContent">
+				<table class="frmStyle">
+					<colgroup>
+						<col width="10%"/>
+						<col width="50%"/>
+						<col width="10%"/>
+						<col width="40%"/>
+					</colgroup>
+					<tr>
+						<th>프로모션명<em class="required" title="필수"></em></th>
+						<td>
+							<!-- 수정시 프로모션명 입력 : before -->
+							<input class="w50p" type="text" id="freegiftNm" name="freegiftNm" minlength="2" maxlength="30" required="required" data-valid-name="프로모션명"/>
+						</td>
+						<th>프로모션ID</th>
+						<td>
+							<!-- 프로모션 ID 입력 : before -->
+							<span />
+						</td>
+					</tr>
+					<tr>
+						<th>행사 기간<em class="required" title="필수"></em></th>
+						<td>
+							<input type="text" class="schDate w100" id="freegiftStdt" name="freegiftStdt" maxlength="10" required="required" data-valid-name="시작일자"/>
+							~
+							<input type="text" class="schDate w100" id="freegiftEddt" name="freegiftEddt" maxlength="10" required="required" data-valid-name="종료일자"/>
+						</td>
+						<!-- <td id="promotionTerms">수정시 행사기간 입력되도록 수정(JAVASCRIPT?) : before</td> -->
+						<th>상태</th>
+						<td>
+							<!-- 상태 입력 : before -->
+							<span />
+						</td>
+					</tr>
+					<tr>
+						<th>적용 몰 구분<em class="required" title="필수"></em></th>
+						<td colspan="3">
+							<label class="chkBox"><input type="checkbox" name="mallCds" value="G011_10"/>자사몰</label>
+							<label class="chkBox" id="G011_20"><input type="checkbox" name="mallCds" value="G011_20"/>제휴몰</label>
+							<button type="button" class="btn btnRight btn-success btn-lg" id="btnExtmallPopup">선택</button><span id="extmallCntArea"> 선택 : <span id="extmallCnt">00</span>개</span>
+						</td>
+					</tr>
+				</table>
 			</div>
 
-			<form id="freeGoodsPromotionForm" name="freeGoodsPromotionForm" th:method="post" >
-				<input type="hidden" name="gbn" th:value="${param.gbn}" />				<!-- 신규/수정 구분 -->
-				<input type="hidden" id="supplyCompCds" name="supplyCompCds"/>			<!-- 공급업체 리스트 -->
-				<input type="hidden" id="brandCds" name="brandCds"/>					<!-- 브랜드 리스트 -->
-				<input type="hidden" id="applyGoodsCds" name="applyGoodsCds"/>			<!-- 적용상품 리스트 -->
-				<input type="hidden" id="exceptGoodsCds" name="exceptGoodsCds"/>		<!-- 제외상품 리스트 -->
-				<input type="hidden" id="freeGoods1Cds" name="freeGoods1Cds"/>			<!-- 적용 사은품1 리스트 -->
-				<input type="hidden" id="freeGoods2Cds" name="freeGoods2Cds"/>			<!-- 적용 사은품2 리스트 -->
-				<input type="hidden" id="extmallIds" name="extmallIds" value=""/>			<!-- 적용 사은품2 리스트 -->
-
-				<div class="panelContent">
-					<table class="frmStyle">
-						<colgroup>
-							<col width="10%"/>
-							<col width="50%"/>
-							<col width="10%"/>
-							<col width="40%"/>
-						</colgroup>
-						<tr>
-							<th>프로모션명<em class="required" title="필수"></em></th>
-							<td>
-								<!-- 수정시 프로모션명 입력 : before -->
-								<input class="w50p" type="text" id="freegiftNm" name="freegiftNm" minlength="2" maxlength="30" required="required" data-valid-name="프로모션명"/>
-							</td>
-							<th>프로모션ID</th>
-							<td>
-								<!-- 프로모션 ID 입력 : before -->
-								<span />
-							</td>
-						</tr>
-						<tr>
-							<th>행사 기간<em class="required" title="필수"></em></th>
-							<td>
-								<input type="text" class="schDate w100" id="freegiftStdt" name="freegiftStdt" maxlength="10" required="required" data-valid-name="시작일자"/>
-								~
-								<input type="text" class="schDate w100" id="freegiftEddt" name="freegiftEddt" maxlength="10" required="required" data-valid-name="종료일자"/>
-							</td>
-							<!-- <td id="promotionTerms">수정시 행사기간 입력되도록 수정(JAVASCRIPT?) : before</td> -->
-							<th>상태</th>
-							<td>
-								<!-- 상태 입력 : before -->
-								<span />
-							</td>
-						</tr>
-						<tr>
-							<th>적용 몰 구분<em class="required" title="필수"></em></th>
-							<td colspan="3">
-								<label class="chkBox"><input type="checkbox" name="mallCds" value="G011_10"/>자사몰</label>
-								<label class="chkBox" id="G011_20"><input type="checkbox" name="mallCds" value="G011_20"/>제휴몰</label>
-								<button type="button" class="btn btnRight btn-success btn-lg" id="btnExtmallPopup">선택</button><span id="extmallCntArea"> 선택 : <span id="extmallCnt">00</span>개</span>
-							</td>
-						</tr>
-					</table>
-				</div>
-
-				<div class="panelStyle" style="margin:unset;">
-					<!-- TITLE -->
-					<div class="panelTitle">
-						<h2>적용 대상 상품 등록</h2>
-						<span class="panelControl">
+			<div class="panelStyle" style="margin:unset;">
+				<!-- TITLE -->
+				<div class="panelTitle">
+					<h2>적용 대상 상품 등록</h2>
+					<span class="panelControl">
 							<i class="fa inner-fa-chevron-up"></i>    <!-- 열림/닫힘 화살표 -->
 						</span>
-					</div>
-					<!-- //TITLE -->
-					<div class="inner-panelContent">
-						<div><i class="fa fa-info-circle"></i> 브랜드/공급업체/상품 중 1가지는 필수로 지정하셔야 합니다.</div>
-						<div><i class="fa fa-info-circle"></i> 브랜드와 공급업체는 지정 시, 해당 브랜드의 공급처와 같은 AND조건으로 적용됩니다.(예시:A브랜드 상품 중 B업체 상품만)</div>
-						<div><i class="fa fa-info-circle"></i> 공급업체와 브랜드를 적용하시더라도 적용상품은 별개로 등록된 상품을 기준으로 사은품 지급기준으로 적용하실 수 있습니다.</div>
-
-						<div class="panelContent">
-							<table class="frmStyle">
-								<colgroup>
-									<col width="10%"/>
-									<col width="90%"/>
-								</colgroup>
-								<tr>
-									<th>공급업체/브랜드</th>
-									<td>
-										<!-- 수정시 프로모션명 입력 : before -->
-										<div class="padding10 wid45">
-											<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="btnDeleteCompany">선택삭제</button>
-												<span>선택 : <span id="companyCnt">00</span>개</span>
-												<br/>
-												<div id="gridFGPromotionCompanyList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
-											</div>
-										</div>
-										<div class="padding10 wid45">
-											<span>브랜드 설정</span>
-											<div class="padding10 inner-tb-solid">
-												<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddBrand">브랜드 추가</button>
-												<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteBrand">선택삭제</button>
-												<span>선택 : <span id="brandCnt">00</span>개</span>
-												<br/>
-												<!-- 브랜드 선택 팝업(단수 선택 팝업... 복수를 새로 만들어야하는지 ? 아니면 변수처리해야하는지 ? -->
-												<div id="gridFGBrandList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
-											</div>
+				</div>
+				<!-- //TITLE -->
+				<div class="inner-panelContent">
+					<div><i class="fa fa-info-circle"></i> 브랜드/공급업체/상품 중 1가지는 필수로 지정하셔야 합니다.</div>
+					<div><i class="fa fa-info-circle"></i> 브랜드와 공급업체는 지정 시, 해당 브랜드의 공급처와 같은 AND조건으로 적용됩니다.(예시:A브랜드 상품 중 B업체 상품만)</div>
+					<div><i class="fa fa-info-circle"></i> 공급업체와 브랜드를 적용하시더라도 적용상품은 별개로 등록된 상품을 기준으로 사은품 지급기준으로 적용하실 수 있습니다.</div>
+
+					<div class="panelContent">
+						<table class="frmStyle">
+							<colgroup>
+								<col width="10%"/>
+								<col width="90%"/>
+							</colgroup>
+							<tr>
+								<th>공급업체/브랜드</th>
+								<td>
+									<!-- 수정시 프로모션명 입력 : before -->
+									<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="btnDeleteCompany">선택삭제</button>
+											<br/>
+											<div id="gridFGPromotionCompanyList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
 										</div>
-									</td>
-								</tr>
-								<tr>
-									<th>적용상품</th>
-									<td>
-										<div class="padding10">
-											<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddApplyGoods">상품 추가</button>
-											<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteApplyGoods">선택삭제</button>
-											<span>선택 : <span id="applyGoodsCnt">00</span>개</span>
+									</div>
+									<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="btnAddBrand">브랜드 추가</button>
+											<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteBrand">선택삭제</button>
 											<br/>
-											<div id="gridFGApplyGoodsList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
+											<!-- 브랜드 선택 팝업(단수 선택 팝업... 복수를 새로 만들어야하는지 ? 아니면 변수처리해야하는지 ? -->
+											<div id="gridFGBrandList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
 										</div>
-									</td>
-								</tr>
-							</table>
-						</div>
+									</div>
+								</td>
+							</tr>
+							<tr>
+								<th>적용상품</th>
+								<td>
+									<div class="padding10">
+										<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddApplyGoods">상품 추가</button>
+										<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteApplyGoods">선택삭제</button>
+										<br/>
+										<div id="gridFGApplyGoodsList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
+									</div>
+								</td>
+							</tr>
+						</table>
 					</div>
 				</div>
+			</div>
 
-				<div class="panelStyle" style="margin:unset;">
-					<!-- TITLE -->
-					<div class="panelTitle">
-						<h2>제외 대상 상품</h2>
-						<span class="panelControl">
+			<div class="panelStyle" style="margin:unset;">
+				<!-- TITLE -->
+				<div class="panelTitle">
+					<h2>제외 대상 상품</h2>
+					<span class="panelControl">
 							<i class="fa inner-fa-chevron-up"></i>    <!-- 열림/닫힘 화살표 -->
 						</span>
-					</div>
-					<!-- //TITLE -->
-					<div class="inner-panelContent">
-						<div class="panelContent">
-							<table class="frmStyle">
-								<colgroup>
-									<col width="10%"/>
-									<col width="90%"/>
-								</colgroup>
-								<tr>
-									<th>제외 대상</th>
-									<td>
-										<div class="padding10">
-											<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddExceptGoods">상품 추가</button>
-											<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteExtGoods">선택삭제</button>
-											<span>선택 : <span id="exceptGoodsCnt">00</span>개</span>
-											<br/>
-											<div id="gridFGExceptGoodsList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
-										</div>
-									</td>
-								</tr>
-							</table>
-						</div>
+				</div>
+				<!-- //TITLE -->
+				<div class="inner-panelContent">
+					<div class="panelContent">
+						<table class="frmStyle">
+							<colgroup>
+								<col width="10%"/>
+								<col width="90%"/>
+							</colgroup>
+							<tr>
+								<th>제외 대상</th>
+								<td>
+									<div class="padding10">
+										<button type="button" class="btn btnRight btn-success btn-lg" id="btnAddExceptGoods">상품 추가</button>
+										<button type="button" class="btn btnRight btn-success btn-lg" id="btnDeleteExtGoods">선택삭제</button>
+										<br/>
+										<div id="gridFGExceptGoodsList" style="width:100%; height:200px;" class="ag-theme-balham"></div>
+									</div>
+								</td>
+							</tr>
+						</table>
 					</div>
 				</div>
+			</div>
 
-				<div class="panelStyle" style="margin:unset;">
-					<!-- TITLE -->
-					<div class="panelTitle">
-						<h2>적용 사은품 정보</h2>
-						<span class="panelControl">
+			<div class="panelStyle" style="margin:unset;">
+				<!-- TITLE -->
+				<div class="panelTitle">
+					<h2>적용 사은품 정보</h2>
+					<span class="panelControl">
 						<i class="fa inner-fa-chevron-up"></i>    <!-- 열림/닫힘 화살표 -->
 					</span>
-					</div>
-					<!-- //TITLE -->
-					<div class="inner-panelContent">
-						<div class="panelContent">
-							<table class="frmStyle">
-								<colgroup>
-									<col width="10%"/>
-									<col width="90%"/>
-								</colgroup>
-								<tr>
-									<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>
-										</div>
-									</td>
-								</tr>
-								<tr>
-									<th>사은품 조건1<em class="required" title="필수"></em><br/>(최대 2개)</th>
-									<td>
-										<div>
-											<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" /> <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>
-											<br/>
-											<div id="gridFreeGoods1List" style="width:100%; height:200px;" class="ag-theme-balham"></div>
-										</div>
-									</td>
-								</tr>
-								<tr>
-									<th>사은품 조건2<br/>(최대 2개)</th>
-									<td>
-										<div>
-											<label for="saleAmt2">구매금액</label><input type="text" class="w300" id="saleAmt2" /> <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>
-											<br/>
-											<div id="gridFreeGoods2List" style="width:100%; height:200px;" class="ag-theme-balham"></div>
-										</div>
-									</td>
-								</tr>
-							</table>
-						</div>
+				</div>
+				<!-- //TITLE -->
+				<div class="inner-panelContent">
+					<div class="panelContent">
+						<table class="frmStyle">
+							<colgroup>
+								<col width="10%"/>
+								<col width="90%"/>
+							</colgroup>
+							<tr>
+								<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>
+									</div>
+								</td>
+							</tr>
+							<tr>
+								<th>사은품 조건1<em class="required" title="필수"></em><br/>(최대 2개)</th>
+								<td>
+									<div>
+										<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" /> <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>
+										<br/>
+										<div id="gridFreeGoods1List" style="width:100%; height:200px;" class="ag-theme-balham"></div>
+									</div>
+								</td>
+							</tr>
+							<tr>
+								<th>사은품 조건2<br/>(최대 2개)</th>
+								<td>
+									<div>
+										<label for="saleAmt2">구매금액</label><input type="text" class="w300" id="saleAmt2" /> <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>
+										<br/>
+										<div id="gridFreeGoods2List" style="width:100%; height:200px;" class="ag-theme-balham"></div>
+									</div>
+								</td>
+							</tr>
+						</table>
 					</div>
 				</div>
-				<div class="panelStyle" th:if="${#strings.toString(param.gbn) == 'U'}" style="margin:unset;">
-					<!-- //TITLE -->
-					<div class="inner-panelContent">
-						<div class="panelContent">
-							<table class="frmStyle">
-								<colgroup>
-									<col width="10%"/>
-									<col width="40%"/>
-									<col width="10%"/>
-									<col width="40%"/>
-								</colgroup>
-								<tr>
-									<th>등록자</th>
-									<td>
-										<span>등록자이름(연.월.일 시간:분:초)</span>
-									</td>
-									<th>최종수정자</th>
-									<td>
-										<span>수정자이름(연.월.일 시간:분:초)</span>
-									</td>
-								</tr>
-							</table>
-						</div>
+			</div>
+			<div class="panelStyle" th:if="${#strings.toString(param.gbn) == 'U'}" style="margin:unset;">
+				<!-- //TITLE -->
+				<div class="inner-panelContent">
+					<div class="panelContent">
+						<table class="frmStyle">
+							<colgroup>
+								<col width="10%"/>
+								<col width="40%"/>
+								<col width="10%"/>
+								<col width="40%"/>
+							</colgroup>
+							<tr>
+								<th>등록자</th>
+								<td>
+									<span>등록자이름(연.월.일 시간:분:초)</span>
+								</td>
+								<th>최종수정자</th>
+								<td>
+									<span>수정자이름(연.월.일 시간:분:초)</span>
+								</td>
+							</tr>
+						</table>
 					</div>
 				</div>
-			</form>
-
-			<ul class="panelBar">
-				<li  class="right">
-					<!-- <th:block th:if="${sessionInfo.roleCd == 'G001_0000' OR sessionInfo.roleCd == 'G001_A000' OR sessionInfo.roleCd == 'G001_A101' OR sessionInfo.roleCd == 'G001_A100' OR sessionInfo.roleCd == 'G001_A001'}"> -->
-						<button type="button" class="btn btnRight btn-success btn-lg" id="btnSearchList">목록</button>
-						<button type="button" class="btn btnRight btn-success btn-lg" id="btnFreegoodsPromotionSave">저장</button>
-						<button type="button" class="btn btnRight btn-success btn-lg" id="btnChangeStatIng">진행</button>
-						<button type="button" class="btn btnRight btn-success btn-lg" id="btnPromotionDelete">삭제</button>
-						<button type="button" class="btn btnRight btn-success btn-lg" id="btnPromotionStop">중지</button>
-					<!-- </th:block> -->
-				</li>
-			</ul>
-		</div>	
+			</div>
+		</form>
+
+		<ul class="panelBar">
+			<li  class="right">
+				<!-- <th:block th:if="${sessionInfo.roleCd == 'G001_0000' OR sessionInfo.roleCd == 'G001_A000' OR sessionInfo.roleCd == 'G001_A101' OR sessionInfo.roleCd == 'G001_A100' OR sessionInfo.roleCd == 'G001_A001'}"> -->
+				<button type="button" class="btn btnRight btn-success btn-lg" id="btnSearchList">목록</button>
+				<button type="button" class="btn btnRight btn-success btn-lg" id="btnFreegoodsPromotionSave">저장</button>
+				<button type="button" class="btn btnRight btn-success btn-lg" id="btnChangeStatIng">진행</button>
+				<button type="button" class="btn btnRight btn-success btn-lg" id="btnPromotionDelete">삭제</button>
+				<button type="button" class="btn btnRight btn-success btn-lg" id="btnPromotionStop">중지</button>
+				<!-- </th:block> -->
+			</li>
+		</ul>
 	</div>
-
-	<script th:inline="javascript">
-		let FGAddGoodsStatList = gagajf.convertToArray([[${goodsStatList}]]);		// 상품 상태 리스트
-		// 공급업체 리스트 설정
-		let columnFGCompanyList = [
-			{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-			{headerName: "공급처ID", field: "supplyCompCd", width: 120, cellClass: 'text-center'},
-			{headerName: "공급업체명", field: "supplyCompNm", width: 150, cellClass: 'text-center'}
-		];
-		// 브랜드 리스트 설정
-		let columnBrandList = [
-			{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-			{headerName: "브랜드ID", field: "brandCd", width: 120, cellClass: 'text-center'},
-			{headerName: "공급업체명", field: "brandEnm", width: 150, cellClass: 'text-center'}
-		];
-		// 적용상품 리스트 설정
-		let columnApplyGoodsList = [
-			{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-			{headerName: "Product ID", field: "goodsCd", width: 120, cellClass: 'text-center'},
-			{headerName: "브랜드명", field: "brandEnm", width: 150, cellClass: 'text-center'},
-			{headerName: "상품명", field: "goodsNm", width: 120, cellClass: 'text-center'},
-			{headerName: "판매상태", field: "goodsStat" , width: 120, cellClass: 'text-center',
-				cellEditorParams: { values: gagaAgGrid.extractValues(FGAddGoodsStatList) },
-				valueFormatter: function (params) { return gagaAgGrid.lookupValue(FGAddGoodsStatList, params.value); },
-				valueParser: function (params) { return gagaAgGrid.lookupKey(FGAddGoodsStatList, params.newValue); }
-			},
-			{headerName: "정상가", field: "listPrice", width: 120, cellClass: 'text-center', valueFormatter: function(params) {return params.value.addComma();}},
-			{headerName: "판매가", field: "currPrice", width: 120, cellClass: 'text-center', valueFormatter: function(params) {return params.value.addComma();}}
-		];
-		// 제외상품 리스트 설정
-		let columnExceptGoodsList = [
-			{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-			{headerName: "Product ID", field: "goodsCd", width: 120, cellClass: 'text-center'},
-			{headerName: "브랜드명", field: "brandEnm", width: 150, cellClass: 'text-center'},
-			{headerName: "상품명", field: "goodsNm", width: 120, cellClass: 'text-center'},
-			{headerName: "판매상태", field: "goodsStat" , width: 120, cellClass: 'text-center',
-				cellEditorParams: { values: gagaAgGrid.extractValues(FGAddGoodsStatList) },
-				valueFormatter: function (params) { return gagaAgGrid.lookupValue(FGAddGoodsStatList, params.value); },
-				valueParser: function (params) { return gagaAgGrid.lookupKey(FGAddGoodsStatList, params.newValue); }
-			},
-			{headerName: "정상가", field: "listPrice", width: 120, cellClass: 'text-center',valueFormatter: function(params) {return params.value.addComma();}},
-			{headerName: "판매가", field: "currPrice", width: 120, cellClass: 'text-center',valueFormatter: function(params) {return params.value.addComma();}}
-		];
-		// 사은품 조건1 리스트 설정 (사은품 상품 만들어지면 만들어야함)
-		let columnFreeGoods1List = [
-			{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-			{headerName: "사은품 코드", field: "goodsCd", width: 120, cellClass: 'text-center'},
-			{headerName: "사은품명", field: "goodsNm", width: 150, cellClass: 'text-center'},
-			{headerName: "포인트액", field: "pointAmt" , width: 100, cellClass: 'text-center'
-				,valueFormatter: function(params) {
-					if(params.value && params.value > 0) {
-						return params.value.addComma();
-					} else {
-						return 0;
-					}
-				},
-				cellEditor: 'textCellEditor',
-				cellEditorParams: { maxlength: 14, validType: 'numeric'}
-			},
-			{headerName: "지급수량", field: "sendQty" , width: 100, cellClass: 'text-center'
-				,valueFormatter: function(params) {
-					if(params.value && params.value > 0) {
-						return params.value.addComma();
-					} else {
-						return 1;
-					}
-				},
-				cellEditor: 'textCellEditor',
-				cellEditorParams: { maxlength: 14, validType: 'numeric'}
-			},
-			{headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center'
-				,cellEditor: 'textCellEditor'
-				,cellEditorParams: { maxlength: 14, validType: 'numeric'}
-			},
-			{headerName: "잔여수량", field: "leftQty", width: 120, cellClass: 'text-center'
-				,valueFormatter: function(params) {
-					if(params.value && params.value > 0) {
-						return params.value.addComma();
-					} else {
-						return 0;
-					}
+</div>
+
+<script th:inline="javascript">
+	let FGAddGoodsStatList = gagajf.convertToArray([[${goodsStatList}]]);		// 상품 상태 리스트
+	// 공급업체 리스트 설정
+	let columnFGCompanyList = [
+		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: "공급처ID", field: "supplyCompCd", width: 120, cellClass: 'text-center'},
+		{headerName: "공급업체명", field: "supplyCompNm", width: 150, cellClass: 'text-center'}
+	];
+	// 브랜드 리스트 설정
+	let columnBrandList = [
+		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: "브랜드ID", field: "brandCd", width: 120, cellClass: 'text-center'},
+		{headerName: "공급업체명", field: "brandEnm", width: 150, cellClass: 'text-center'}
+	];
+	// 적용상품 리스트 설정
+	let columnApplyGoodsList = [
+		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: "Product ID", field: "goodsCd", width: 120, cellClass: 'text-center'},
+		{headerName: "브랜드명", field: "brandEnm", width: 150, cellClass: 'text-center'},
+		{headerName: "상품명", field: "goodsNm", width: 120, cellClass: 'text-center'},
+		{headerName: "판매상태", field: "goodsStat" , width: 120, cellClass: 'text-center',
+			cellEditorParams: { values: gagaAgGrid.extractValues(FGAddGoodsStatList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(FGAddGoodsStatList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(FGAddGoodsStatList, params.newValue); }
+		},
+		{headerName: "정상가", field: "listPrice", width: 120, cellClass: 'text-center'
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
 				}
 			}
-		];
-		// 사은품 조건2 리스트 설정 (사은품 상품 만들어지면 만들어야함)
-		let columnFreeGoods2List = [
-			{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
-			{headerName: "사은품 코드", field: "goodsCd", width: 120, cellClass: 'text-center'},
-			{headerName: "사은품명", field: "goodsNm", width: 150, cellClass: 'text-center'},
-			{headerName: "포인트액", field: "pointAmt" , width: 100, cellClass: 'text-center'
-				,valueFormatter: function(params) {
-					if(params.value && params.value > 0) {
-						return params.value.addComma();
-					} else {
-						return '0';
-					}
-				},
-				cellEditor: 'textCellEditor',
-				cellEditorParams: { maxlength: 14, validType: 'numeric'}
-			},
-			{headerName: "지급수량", field: "sendQty" , width: 100, cellClass: 'text-center'
-				,valueFormatter: function(params) {
-					if(params.value && params.value > 0) {
-						return params.value.addComma();
-					} else {
-						return '1';
-					}
-				},
-				cellEditor: 'textCellEditor',
-				cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "판매가", field: "currPrice", width: 120, cellClass: 'text-center'
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
+				}
+			}
+		}
+	];
+	// 제외상품 리스트 설정
+	let columnExceptGoodsList = [
+		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: "Product ID", field: "goodsCd", width: 120, cellClass: 'text-center'},
+		{headerName: "브랜드명", field: "brandEnm", width: 150, cellClass: 'text-center'},
+		{headerName: "상품명", field: "goodsNm", width: 120, cellClass: 'text-center'},
+		{headerName: "판매상태", field: "goodsStat" , width: 120, cellClass: 'text-center',
+			cellEditorParams: { values: gagaAgGrid.extractValues(FGAddGoodsStatList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(FGAddGoodsStatList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(FGAddGoodsStatList, params.newValue); }
+		},
+		{headerName: "정상가", field: "listPrice", width: 120, cellClass: 'text-center'
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
+				}
+			}
+		},
+		{headerName: "판매가", field: "currPrice", width: 120, cellClass: 'text-center'
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
+				}
+			}
+		}
+	];
+	// 사은품 조건1 리스트 설정 (사은품 상품 만들어지면 만들어야함)
+	let columnFreeGoods1List = [
+		{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: "pointAmt" , width: 100, cellClass: 'text-center'
+			,editable: true
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
+				}
 			},
-			{headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center'
-				,valueFormatter: function(params) {
-					if(params.value && params.value > 0) {
-						return params.value.addComma();
-					} else {
-						return '0';
-					}
-				},
-				cellEditor: 'textCellEditor',
-				cellEditorParams: { maxlength: 14, validType: 'numeric'}
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "지급수량", field: "sendQty" , width: 100, cellClass: 'text-center'
+			,editable: true
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 1;
+				}
 			},
-			{headerName: "잔여수량", field: "leftQty", width: 120, cellClass: 'text-center'
-				,valueFormatter: function(params) {
-					if(params.value && params.value > 0) {
-						return params.value.addComma();
-					} else {
-						return '0';
-					}
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center'
+			,editable: true
+			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "잔여수량", field: "leftQty", width: 120, cellClass: 'text-center'
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
 				}
 			}
-		];
-		// 공급업체 리스트 설정
-		let gridOptionsFGCompanyList = gagaAgGrid.getGridOptions(columnFGCompanyList);
-		gridOptionsFGCompanyList.rowSelection = "multiple";
-		// 브랜드 리스트 설정
-		let gridOptionsFGBrandList = gagaAgGrid.getGridOptions(columnBrandList);
-		gridOptionsFGBrandList.rowSelection = "multiple";
-		// 적용상품 리스트 설정
-		let gridOptionsFGApplyGoodsList = gagaAgGrid.getGridOptions(columnApplyGoodsList);
-		gridOptionsFGApplyGoodsList.rowSelection = "multiple";
-		// 제외상품 리스트 설정
-		let gridOptionsFGExceptGoodsList = gagaAgGrid.getGridOptions(columnExceptGoodsList);
-		gridOptionsFGExceptGoodsList.rowSelection = "multiple";
-		// 사은품 조건1 리스트 설정
-		let gridOptionsFreeGoods1List = gagaAgGrid.getGridOptions(columnFreeGoods1List);
-		gridOptionsFreeGoods1List.rowSelection = "multiple";
-		// 사은품 조건2 리스트 설정
-		let gridOptionsFreeGoods2List = gagaAgGrid.getGridOptions(columnFreeGoods2List);
-		gridOptionsFreeGoods2List.rowSelection = "multiple";
-
-		$(document).ready(function() {
-			gagaAgGrid.createGrid("gridFGPromotionCompanyList", gridOptionsFGCompanyList);
-			gagaAgGrid.createGrid("gridFGBrandList", gridOptionsFGBrandList);
-			gagaAgGrid.createGrid("gridFGApplyGoodsList", gridOptionsFGApplyGoodsList);
-			gagaAgGrid.createGrid("gridFGExceptGoodsList", gridOptionsFGExceptGoodsList);
-			gagaAgGrid.createGrid("gridFreeGoods1List", gridOptionsFreeGoods1List);
-			gagaAgGrid.createGrid("gridFreeGoods2List", gridOptionsFreeGoods2List);
-
-			cfnCreateCalendar('#promotionTerms', 'freegoodsStdt', 'freegoodsEddt', true, '행사기간', 'X');
-		});
-
-		// 제휴몰 체크 상태 확인
-		$("#G011_20").on("click", function() {
-			// 체크여부 확인 (선택되면 자동 checked 추가되는데, 추가되기 전 동작해서 반대로 지정)
-			if($("#G011_20").hasClass("checked")) {
-				$("#btnExtmallPopup").hide();
-				$("#extmallCntArea").hide();
-				$("#extmallCnt").text(0);
-				$("#extmallIds").val("");
-			} else {
-				$("#btnExtmallPopup").show();
-				$("#extmallCntArea").show();
-			}
-		});
-
-		$('#freeGoodsPromotionForm input[name=freegiftNm]').on('focusout', function() {
-			if($('#freeGoodsPromotionForm input[name=freegiftNm]').val().length < 2) {
-				mcxDialog.alert("2자~30자 이상 프로모션명을 입력하세요.");
-				return;
+		}
+	];
+	// 사은품 조건2 리스트 설정 (사은품 상품 만들어지면 만들어야함)
+	let columnFreeGoods2List = [
+		{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: "pointAmt" , width: 100, cellClass: 'text-center'
+			,editable: true
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return '0';
+				}
 			}
-		});
-
-		// list 데이터 세팅
-		function setSendGridListVal(gridListOption, key, inputId) {
-			let list = gagaAgGrid.getAllRowData(gridListOption);
-			let cds = [];
-			for(let k = 0 ; k < list.length ; k++) {
-				cds.push(eval("list[k]." + key));
+			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "지급수량", field: "sendQty" , width: 100, cellClass: 'text-center'
+			,editable: true
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return '1';
+				}
+			},
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center'
+			,editable: true
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return '0';
+				}
+			},
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "잔여수량", field: "leftQty", width: 120, cellClass: 'text-center'
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return '0';
+				}
 			}
-
-			var jsonData = JSON.stringify(cds);
-			$("#" + inputId).val(jsonData);
+		}
+	];
+	// 공급업체 리스트 설정
+	let gridOptionsFGCompanyList = gagaAgGrid.getGridOptions(columnFGCompanyList);
+	gridOptionsFGCompanyList.rowSelection = "multiple";
+	// 브랜드 리스트 설정
+	let gridOptionsFGBrandList = gagaAgGrid.getGridOptions(columnBrandList);
+	gridOptionsFGBrandList.rowSelection = "multiple";
+	// 적용상품 리스트 설정
+	let gridOptionsFGApplyGoodsList = gagaAgGrid.getGridOptions(columnApplyGoodsList);
+	gridOptionsFGApplyGoodsList.rowSelection = "multiple";
+	// 제외상품 리스트 설정
+	let gridOptionsFGExceptGoodsList = gagaAgGrid.getGridOptions(columnExceptGoodsList);
+	gridOptionsFGExceptGoodsList.rowSelection = "multiple";
+	// 사은품 조건1 리스트 설정
+	let gridOptionsFreeGoods1List = gagaAgGrid.getGridOptions(columnFreeGoods1List);
+	gridOptionsFreeGoods1List.rowSelection = "multiple";
+	// 사은품 조건2 리스트 설정
+	let gridOptionsFreeGoods2List = gagaAgGrid.getGridOptions(columnFreeGoods2List);
+	gridOptionsFreeGoods2List.rowSelection = "multiple";
+
+	$(document).ready(function() {
+		gagaAgGrid.createGrid("gridFGPromotionCompanyList", gridOptionsFGCompanyList);
+		gagaAgGrid.createGrid("gridFGBrandList", gridOptionsFGBrandList);
+		gagaAgGrid.createGrid("gridFGApplyGoodsList", gridOptionsFGApplyGoodsList);
+		gagaAgGrid.createGrid("gridFGExceptGoodsList", gridOptionsFGExceptGoodsList);
+		gagaAgGrid.createGrid("gridFreeGoods1List", gridOptionsFreeGoods1List);
+		gagaAgGrid.createGrid("gridFreeGoods2List", gridOptionsFreeGoods2List);
+
+		if("C" == [[${param.gbn}]]) {
+			$("#freeGoodsPromotionForm #btnExtmallPopup").hide();
+			$("#freeGoodsPromotionForm #extmallCntArea").hide();
+			$("#freeGoodsPromotionForm #extmallCnt").text(0);
+			$("#freeGoodsPromotionForm #extmallIds").val("");
 		}
 
-		// 저장 버튼 클릭시
-		$('#btnFreegoodsPromotionSave').on('click', function() {
-			// 각 ag-grid list 수량
-			let supplyCompCnt = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList).length;
-			let brandCnt = gagaAgGrid.getAllRowData(gridOptionsFGBrandList).length;
-			let applyGoodsCnt = gagaAgGrid.getAllRowData(gridOptionsFGApplyGoodsList).length;
-			let exceptGoodsCnt = gagaAgGrid.getAllRowData(gridOptionsFGExceptGoodsList).length;
-			let freeGoods1Cnt = gagaAgGrid.getAllRowData(gridOptionsFreeGoods1List).length;
-			let freeGoods2Cnt = gagaAgGrid.getAllRowData(gridOptionsFreeGoods2List).length;
-
-			if (!gagajf.validation('#freeGoodsPromotionForm')) {
-				return false;
-			};
+		cfnCreateCalendar('#promotionTerms', 'freegoodsStdt', 'freegoodsEddt', true, '행사기간', 'X');
+	});
+
+	// 제휴몰 체크 상태 확인
+	$("#freeGoodsPromotionForm #G011_20").on("click", function() {
+		// 체크여부 확인 (선택되면 자동 checked 추가되는데, 추가되기 전 동작해서 반대로 지정)
+		if($("#freeGoodsPromotionForm #G011_20").hasClass("checked")) {
+			$("#freeGoodsPromotionForm #btnExtmallPopup").hide();
+			$("#freeGoodsPromotionForm #extmallCntArea").hide();
+			$("#freeGoodsPromotionForm #extmallCnt").text(0);
+			$("#freeGoodsPromotionForm #extmallIds").val("");
+		} else {
+			$("#freeGoodsPromotionForm #btnExtmallPopup").show();
+			$("#freeGoodsPromotionForm #extmallCntArea").show();
+		}
+	});
 
-			if($('#freeGoodsPromotionForm input[name=freegiftNm]').val().length < 2) {
-				mcxDialog.alert("2자~30자 이상 프로모션명을 입력하세요.");
-				return false;
-			}
+	$('#freeGoodsPromotionForm input[name=freegiftNm]').on('focusout', function() {
+		if($('#freeGoodsPromotionForm input[name=freegiftNm]').val().length < 2) {
+			mcxDialog.alert("2자~30자 이상 프로모션명을 입력하세요.");
+			return;
+		}
+	});
+
+	// list 데이터 setting
+	function fnSetSendGridListVal(gridListOption, key, inputId) {
+		let list = gagaAgGrid.getAllRowData(gridListOption);
+		let cds = [];
+		alert("aa / " + key);
+		for(let k = 0 ; k < list.length ; k++) {
+			cds.push(eval("list[k]." + key));
+		}
 
-			// 행사기간 확인
-			let fromDate = $('#freeGoodsPromotionForm input[name=freegiftStdt]').val();
-			let toDate = $('#freeGoodsPromotionForm input[name=freegiftEddt]').val();
+		let jsonData = JSON.stringify(cds);
+		$("#" + inputId).val(jsonData);
+	}
 
-			if (fromDate > toDate) {
-				mcxDialog.alert("시작일자는 종료일자 보다 늦을 수 없습니다.");
-				$('#freeGoodsPromotionForm input[name=freegiftStdt]').focus();
-				return false;
-			}
+	// 리스트 정보 수정
+	function fnSetListInfo(result, gridListOption, key) {
+		let resultList = [];											// 최종 상품 리스트
+		let gridListValue = gagaAgGrid.getAllRowData(gridListOption);	// 기존 리스트
 
-			// 공급업체, 브랜드, 적용상품 중 1개 필수 체크
-			if(supplyCompCnt < 1 && brandCnt < 1 && applyGoodsCnt < 1) {
-				mcxDialog.alert("공급업체, 브랜드, 적용 상품 중 한가지 이상 등록해주세요.");
-				return false;
-			}
+		// 기존 리스트 데이터 for
+		for(let i = 0 ; i < result.length ; i++) {
+			let addChk = true;					// 받아온 모든 데이터
 
-			// 사은품조건1 필수 체크
-			if(freeGoods1Cnt < 1) {
-				mcxDialog.alert("사은품 조건1의 사은품을 등록해주세요.");
-				return false;
+			// 받아온 data for
+			for(let j = 0 ; j < gridListValue.length ; j++) {
+				// 조회한 상품 중 동일하지 않은 데이터만 추가
+				if(eval("gridListValue[j]." + key) == eval("result[i]." + key)) {	addChk = false;	}		// 중복체크
 			}
 
-			// 사은품조건1 의 수량 체크
-			if(freeGoods1Cnt > 2) {
-				mcxDialog.alert("사은품 조건1의 사은품은 최대 2개까지 등록가능합니다.");
-				return false;
-			}
+			// 추가된 데이터 중 중복되지 않은 데이터 리스트에 추가
+			if(addChk) {	resultList.push(result[i]);	}
+		}
 
-			// 사은품조건2의 수량 체크
-			if(freeGoods2Cnt > 2) {
-				mcxDialog.alert("사은품 조건2의 사은품은 최대 2개까지 등록가능합니다.");
+		// 사은품 추가는 5개까지만
+		if(key == "productNo") {
+			let totalCnt = resultList.length + gridListValue.length;
+			if(totalCnt > 5) {
+				mcxDialog.alert("사은품은 최대 5개까지만 등록하실 수 있습니다.");
 				return false;
 			}
+		}
 
-			// 각 리스트 데이터 세팅
-			if(supplyCompCnt > 0) { setSendGridListVal(gridOptionsFGCompanyList, "supplyCompCd", "supplyCompCds"); }		// 공급업체 설정 데이터
-			if(brandCnt > 0) { setSendGridListVal(gridOptionsFGBrandList, "brandCd", "brandCds"); }							// 브랜드 설정 데이터
-			if(applyGoodsCnt > 0) { setSendGridListVal(gridOptionsFGApplyGoodsList, "goodsCd", "applyGoodsCds"); }			// 적용 상품 설정 데이터
-			if(exceptGoodsCnt > 0) { setSendGridListVal(gridOptionsFGExceptGoodsList, "goodsCd", "exceptGoodsCds"); }		// 제외 상품 설정 데이터
-			if(freeGoods1Cnt > 0) { setSendGridListVal(gridOptionsFreeGoods1List, "goodsCd", "freeGoods1Cds"); }			// 사은품 조건 1
-		});
-
-		// 공급업체 설정 / 업체 추가 콜백함수
-		var fnSetPopupComapnyInfo = function(result) {
-			// 기존 리스트 데이터 for
-			for(let i = 0 ; i < result.length ; i++) {
-				let addChk = true, gridListValue = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList);		// 받아온 모든 데이터
-
-				// 받아온 data for
-				for(let j = 0 ; j < gridListValue.length ; j++) {
-					// 동일한 data는 추가하지 않음
-					if(gridListValue[j].supplyCompCd == result[i].supplyCompCd) {	addChk = false;	}		// 중복체크
-				}
-
-				// 중복되지 않은 데이터 리스트에 추가
-				if(addChk) {	gagaAgGrid.addRowData(gridOptionsFGCompanyList, result[i], "supplyCompCd");	}
-			}
+		// 추가된 정보 그리드에 추가
+		for(let i = 0 ; i < resultList.length ; i++) {
+			gagaAgGrid.addRowData(gridListOption, resultList[i], key);
+		}
+	}
+
+	// 저장 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnFreegoodsPromotionSave').on('click', function() {
+		// 각 ag-grid list 수량
+		let supplyCompCnt = gagaAgGrid.getAllRowData(gridOptionsFGCompanyList).length;
+		let brandCnt = gagaAgGrid.getAllRowData(gridOptionsFGBrandList).length;
+		let applyGoodsCnt = gagaAgGrid.getAllRowData(gridOptionsFGApplyGoodsList).length;
+		let exceptGoodsCnt = gagaAgGrid.getAllRowData(gridOptionsFGExceptGoodsList).length;
+		let freeGoods1Cnt = gagaAgGrid.getAllRowData(gridOptionsFreeGoods1List).length;
+		let freeGoods2Cnt = gagaAgGrid.getAllRowData(gridOptionsFreeGoods2List).length;
+
+		if (!gagajf.validation('#freeGoodsPromotionForm')) {
+			return false;
+		}
 
-			$("#companyCnt").text(gridOptionsFGCompanyList.api.getDisplayedRowCount());
-		};
+		if($('#freeGoodsPromotionForm input[name=freegiftNm]').val().length < 2) {
+			mcxDialog.alert("2자~30자 이상 프로모션명을 입력하세요.");
+			return false;
+		}
 
-		// 브랜드 설정 / 브랜드 추가 콜백함수 (단수로 가져오므로 복수일 경우에 수정 확인 필요)
-		var fnSetPopupBrandInfo = function(result) {
-			for(let i = 0 ; i < result.length ; i++) {
-				let addChk = true, gridListValue = gagaAgGrid.getAllRowData(gridOptionsFGBrandList);		// 받아온 모든 데이터
+		// 행사기간 확인
+		let fromDate = $('#freeGoodsPromotionForm input[name=freegiftStdt]').val();
+		let toDate = $('#freeGoodsPromotionForm input[name=freegiftEddt]').val();
 
-				// 받아온 data for
-				for(let j = 0 ; j < gridListValue.length ; j++) {
-					if(gridListValue[j].brandCd == result[i].brandCd) {	addChk = false;	}					// 중복체크
-				}
+		if (fromDate > toDate) {
+			mcxDialog.alert("시작일자는 종료일자 보다 늦을 수 없습니다.");
+			$('#freeGoodsPromotionForm input[name=freegiftStdt]').focus();
+			return false;
+		}
 
-				// 중복되지 않은 데이터 리스트에 추가
-				if(addChk) {	gagaAgGrid.addRowData(gridOptionsFGBrandList, result[i], "brandCd");	}
-			}
+		// 공급업체, 브랜드, 적용상품 중 1개 필수 체크
+		if(supplyCompCnt < 1 && brandCnt < 1 && applyGoodsCnt < 1) {
+			mcxDialog.alert("공급업체, 브랜드, 적용 상품 중 한가지 이상 등록해주세요.");
+			return false;
+		}
 
-			$("#brandCnt").text(gridOptionsFGBrandList.api.getDisplayedRowCount());
-		};
-
-		// 적용 상품 리스트 콜백함수
-		var fnSetPopupApplyGoodsInfo = function(result) {
-			gridAddGoodsList(gridOptionsFGApplyGoodsList, result);
-			$("#applyGoodsCnt").text(gridOptionsFGApplyGoodsList.api.getDisplayedRowCount());
-		};
-
-		// 제외 상품 리스트 콜백함수
-		var fnSetPopupExceptGoodsInfo = function(result) {
-			gridAddGoodsList(gridOptionsFGExceptGoodsList, result);
-			$("#exceptGoodsCnt").text(gridOptionsFGExceptGoodsList.api.getDisplayedRowCount());
-		};
-
-		// 사은품 조건1 상품 리스트 콜백함수
-		var fnSetPopupFreeGoods1Info = function(result) {
-			gridAddGoodsList(gridOptionsFreeGoods1List, result);
-		};
-
-		// 사은품 조건2 상품 리스트 콜백함수
-		var fnSetPopupFreeGoods2Info = function(result) {
-			gridAddGoodsList(gridOptionsFreeGoods2List, result);
-		};
-
-		// ag-grid 상품관련 list 콜백함수
-		function gridAddGoodsList(OriginGridListOption, result) {
-			for(let i = 0 ; i < result.length ; i++) {
-				let addChk = true, gridListValue = gagaAgGrid.getAllRowData(OriginGridListOption);		// 받아온 모든 데이터
-
-				// 받아온 data for
-				for(let j = 0 ; j < gridListValue.length ; j++) {
-					if(gridListValue[j].goodsCd == result[i].goodsCd) {	addChk = false;	}				// 중복체크
-				}
+		// 사은품조건1 필수 체크
+		if(freeGoods1Cnt < 1) {
+			mcxDialog.alert("사은품 조건1의 사은품을 등록해주세요.");
+			return false;
+		}
 
-				// 중복되지 않은 데이터 리스트에 추가
-				if(addChk) {	gagaAgGrid.addRowData(OriginGridListOption, result[i], "goodsCd");	}
-			}
+		// 사은품조건1 의 수량 체크
+		if(freeGoods1Cnt > 5) {
+			mcxDialog.alert("사은품 조건1의 사은품은 최대 5개까지 등록가능합니다.");
+			return false;
 		}
 
-		// 제휴몰 list 콜백함수
-		function fnSetPopupExtmallInfo(result) {
-			let extmallIds = [];
-			if($("#extmallIds").val() != null && $("#extmallIds").val() != "") {
-				extmallIds = JSON.parse($("#extmallIds").val());
-			}
+		// 사은품조건2의 수량 체크
+		if(freeGoods2Cnt > 5) {
+			mcxDialog.alert("사은품 조건2의 사은품은 최대 2개까지 등록가능합니다.");
+			return false;
+		}
 
-			for(let i = 0 ; i < result.length ; i++) {
-				let addChk = true;
-				for(let j = 0 ; j < extmallIds.length ; j++) {
-					if(result[i].extmallId == extmallIds[j]) {	addChk = false;	}
-				}
+		// 각 리스트 데이터 세팅
+		if(supplyCompCnt > 0) { fnSetSendGridListVal(gridOptionsFGCompanyList, "supplyCompCd", "supplyCompCds"); }		// 공급업체 설정 데이터
+		if(brandCnt > 0) { fnSetSendGridListVal(gridOptionsFGBrandList, "brandCd", "brandCds"); }						// 브랜드 설정 데이터
+		if(applyGoodsCnt > 0) { fnSetSendGridListVal(gridOptionsFGApplyGoodsList, "goodsCd", "applyGoodsCds"); }		// 적용 상품 설정 데이터
+		if(exceptGoodsCnt > 0) { fnSetSendGridListVal(gridOptionsFGExceptGoodsList, "goodsCd", "exceptGoodsCds"); }		// 제외 상품 설정 데이터
+		if(freeGoods1Cnt > 0) { fnSetSendGridListVal(gridOptionsFreeGoods1List, "productNo", "freeGoods1Cds"); }			// 사은품 조건 1
+		if(freeGoods2Cnt > 0) { fnSetSendGridListVal(gridOptionsFreeGoods1List, "productNo", "freeGoods2Cds"); }			// 사은품 조건 2
+	});
+
+	// 공급업체 설정 / 업체 추가 콜백함수
+	var fnSetPopupComapnyInfo = function(result) {
+		fnSetListInfo(result, gridOptionsFGCompanyList, "supplyCompCd");
+	};
+	// 브랜드 설정 / 브랜드 추가 콜백함수 (단수로 가져오므로 복수일 경우에 수정 확인 필요)
+	var fnSetPopupBrandInfo = function(result) {
+		fnSetListInfo(result, gridOptionsFGBrandList, "brandCd");
+	};
+	// 적용 상품 리스트 콜백함수
+	var fnSetPopupApplyGoodsInfo = function(result) {
+		fnSetListInfo(result, gridOptionsFGApplyGoodsList, "goodsCd");
+	};
+	// 제외 상품 리스트 콜백함수
+	var fnSetPopupExceptGoodsInfo = function(result) {
+		fnSetListInfo(result, gridOptionsFGExceptGoodsList, "goodsCd");
+	};
+	// 사은품 조건1 상품 리스트 콜백함수
+	var fnSetPopupFreeGoods1Info = function(result) {
+		fnSetListInfo(result, gridOptionsFreeGoods1List, "productNo");
+	};
+	// 사은품 조건2 상품 리스트 콜백함수
+	var fnSetPopupFreeGoods2Info = function(result) {
+		fnSetListInfo(result, gridOptionsFreeGoods2List, "productNo");
+	};
+
+	// 제휴몰 list 콜백함수
+	function fnSetPopupExtmallInfo(result) {
+		let extmallIds = [];
+		if($("#freeGoodsPromotionForm #extmallIds").val() != null && $("#freeGoodsPromotionForm #extmallIds").val() != "") {
+			extmallIds = JSON.parse($("#freeGoodsPromotionForm #extmallIds").val());
+		}
 
-				if(addChk) {	extmallIds.push(result[i].extmallId)	};
+		for(let i = 0 ; i < result.length ; i++) {
+			let addChk = true;
+			for(let j = 0 ; j < extmallIds.length ; j++) {
+				if(result[i].extmallId == extmallIds[j]) {	addChk = false;	}
 			}
 
-			var jsonData = JSON.stringify(extmallIds);
-			$("#extmallIds").val(jsonData);
-			$("#extmallCnt").text(extmallIds.length);
-		}
-
-		// 제휴몰 선택 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnExtmallPopup').on('click', function() {
-			cfnOpenExtmallListPopup("fnSetPopupExtmallInfo");
-		});
-		// 공급업체 설정 업체 추가 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnAddCompany').on('click', function() {
-			cfnOpenCompanyListPopup("fnSetPopupComapnyInfo");
-		});
-		// 브랜드 추가 버튼 클릭시 (복수 브랜드때 수정 필요)
-		$('#freeGoodsPromotionForm #btnAddBrand').on('click', function() {
-			cfnOpenBrandListPopup("fnSetPopupBrandInfo", "M");
-		});
-		// 적용 상품 추가 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnAddApplyGoods').on('click', function() {
-			cfnOpenGoodsPopup("fnSetPopupApplyGoodsInfo");
-		});
-		// 제외 상품 추가 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnAddExceptGoods').on('click', function() {
-			cfnOpenGoodsPopup("fnSetPopupExceptGoodsInfo");
-		});
-		// 사은품 조건1 상품 추가 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnAddFreeGoods1').on('click', function() {
-			cfnOpenGoodsPopup("fnSetPopupFreeGoods1Info");
-		});
-		// 사은품 조건2 상품 추가 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnAddFreeGoods2').on('click', function() {
-			cfnOpenGoodsPopup("fnSetPopupFreeGoods2Info");
-		});
-
-		// 공급업체 설정 선택삭제 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnDeleteCompany').on('click', function() {
-			gridOptionsFGCompanyList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGCompanyList)});
-			$("#companyCnt").text(gridOptionsFGCompanyList.api.getDisplayedRowCount());
-		});
-		// 브랜드 설정 선택삭제 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnDeleteBrand').on('click', function() {
-			gridOptionsFGBrandList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGBrandList)});
-			$("#brandCnt").text(gridOptionsFGBrandList.api.getDisplayedRowCount());
-		});
-		// 적용상품 선택삭제 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnDeleteApplyGoods').on('click', function() {
-			gridOptionsFGApplyGoodsList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGApplyGoodsList)});
-			$("#applyGoodsCnt").text(gridOptionsFGApplyGoodsList.api.getDisplayedRowCount());
-		});
-		// 제외상품 선택삭제 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnDeleteExtGoods').on('click', function() {
-			gridOptionsFGExceptGoodsList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGExceptGoodsList)});
-			$("#exceptGoodsCnt").text(gridOptionsFGExceptGoodsList.api.getDisplayedRowCount());
-		});
-		// 사은품조건1 선택삭제 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnDeleteFreeGoods1').on('click', function() {
-			gridOptionsFreeGoods1List.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFreeGoods1List)});
-		});
-		// 사은품조건2 선택삭제 버튼 클릭시
-		$('#freeGoodsPromotionForm #btnDeleteFreeGoods2').on('click', function() {
-			gridOptionsFreeGoods2List.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFreeGoods2List)});
-		});
-
-		//패널영역 줄이기
-		$(document).on("click",".panelControl .inner-fa-chevron-up", function() {
-			$(this).parent().parent().parent().find(".inner-panelContent").slideUp(100);
-			$(this).attr("class","fa inner-fa-chevron-down");
-		});
-		//패널영역 펼치기
-		$(document).on("click",".panelControl .inner-fa-chevron-down", function() {
-			$(this).parent().parent().parent().find(".inner-panelContent").slideDown(100);
-			$(this).attr("class","fa inner-fa-chevron-up");
-		});
-
-		// 창 닫기
-		var fnFreeGoodsPromotionFormClose = function(){
-			uifnPopupClose('popupFreeGoodsPromotionRegi');
+			if(addChk) {	extmallIds.push(result[i].extmallId)	};
 		}
 
-	</script>
+		var jsonData = JSON.stringify(extmallIds);
+		$("#freeGoodsPromotionForm #extmallIds").val(jsonData);
+		$("#freeGoodsPromotionForm #extmallCnt").text(extmallIds.length);
+	}
+
+	// 제휴몰 선택 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnExtmallPopup').on('click', function() {
+		cfnOpenExtmallListPopup("fnSetPopupExtmallInfo");
+	});
+	// 공급업체 설정 업체 추가 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnAddCompany').on('click', function() {
+		cfnOpenCompanyListPopup("fnSetPopupComapnyInfo");
+	});
+	// 브랜드 추가 버튼 클릭시 (복수 브랜드때 수정 필요)
+	$('#freeGoodsPromotionForm #btnAddBrand').on('click', function() {
+		cfnOpenBrandListPopup("fnSetPopupBrandInfo", "M");
+	});
+	// 적용 상품 추가 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnAddApplyGoods').on('click', function() {
+		cfnOpenGoodsPopup("fnSetPopupApplyGoodsInfo");
+	});
+	// 제외 상품 추가 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnAddExceptGoods').on('click', function() {
+		cfnOpenGoodsPopup("fnSetPopupExceptGoodsInfo");
+	});
+	// 사은품 조건1 상품 추가 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnAddFreeGoods1').on('click', function() {
+		cfnOpenFreeGoodsPopup("fnSetPopupFreeGoods1Info");
+	});
+	// 사은품 조건2 상품 추가 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnAddFreeGoods2').on('click', function() {
+		cfnOpenFreeGoodsPopup("fnSetPopupFreeGoods2Info");
+	});
+
+	// 공급업체 설정 선택삭제 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnDeleteCompany').on('click', function() {
+		gridOptionsFGCompanyList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGCompanyList)});
+	});
+	// 브랜드 설정 선택삭제 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnDeleteBrand').on('click', function() {
+		gridOptionsFGBrandList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGBrandList)});
+	});
+	// 적용상품 선택삭제 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnDeleteApplyGoods').on('click', function() {
+		gridOptionsFGApplyGoodsList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGApplyGoodsList)});
+	});
+	// 제외상품 선택삭제 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnDeleteExtGoods').on('click', function() {
+		gridOptionsFGExceptGoodsList.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFGExceptGoodsList)});
+	});
+	// 사은품조건1 선택삭제 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnDeleteFreeGoods1').on('click', function() {
+		gridOptionsFreeGoods1List.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFreeGoods1List)});
+	});
+	// 사은품조건2 선택삭제 버튼 클릭시
+	$('#freeGoodsPromotionForm #btnDeleteFreeGoods2').on('click', function() {
+		gridOptionsFreeGoods2List.api.updateRowData({remove:gagaAgGrid.selectedRowData(gridOptionsFreeGoods2List)});
+	});
+
+	//패널영역 줄이기
+	$(document).on("click",".panelControl .inner-fa-chevron-up", function() {
+		$(this).parent().parent().parent().find(".inner-panelContent").slideUp(100);
+		$(this).attr("class","fa inner-fa-chevron-down");
+	});
+	//패널영역 펼치기
+	$(document).on("click",".panelControl .inner-fa-chevron-down", function() {
+		$(this).parent().parent().parent().find(".inner-panelContent").slideDown(100);
+		$(this).attr("class","fa inner-fa-chevron-up");
+	});
+
+	// 창 닫기
+	var fnFreeGoodsPromotionFormClose = function(){
+		uifnPopupClose('popupFreeGoodsPromotionRegi');
+	}
+
+</script>
 </html>

+ 14 - 12
src/main/webapp/WEB-INF/views/order/CancelRequestForm.html

@@ -26,13 +26,13 @@
 				<input type="hidden" name="chgReason" value=""/>
 				<input type="hidden" name="chgReasonDesc" value=""/>
 				
-				<h3>주문정보</h3>
+				<h4>주문정보</h4>
 				<div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 
-				<h3>취소정보</h3>
+				<h4>취소정보</h4>
 				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 				
-				<h3>배송비정보</h3>
+				<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;">
@@ -214,7 +214,7 @@ var columnCancelReqList = [
 				}
 			},
 			{
-				headerName		: "취소"		
+				headerName		: "취소/반품"		
 				, field			: "ordCanChgQty"			
 				, width			: 100		
 				, cellClass		: 'text-center'
@@ -484,7 +484,7 @@ var columnCancelReqToBeList = [
 				}
 			},
 			{
-				headerName		: "취소"		
+				headerName		: "취소/반품"		
 				, field			: "ordCanChgQty"			
 				, width			: 100		
 				, cellClass		: 'text-center'
@@ -881,13 +881,15 @@ var fnCalculateRefundAmt = function (obj) {
 			$("#spanTotRtnDelvFee").text(result.spanTotRtnDelvFee.addComma());		//반품 환불 배송 금액
 			$("#spanTotExcDelvFee").text(result.spanTotExcDelvFee.addComma());		//교환 환불 배송 금액
 			
-			// 고객사유 : 환불금액계산 = (취소금액 + 배송비) - 추가배송비
-			if (isCustomer) {
-				result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee) - result.spanTotDeliveryFee;
-			} 
-			// 회사사유 : 환불금액계산 = (취소금액 + 배송비)
-			else {
-				result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee);
+			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());				//환불 금액 합계

+ 61 - 44
src/main/webapp/WEB-INF/views/order/ReturnRequestForm.html

@@ -26,19 +26,15 @@
 				<input type="hidden" name="chgReason" value=""/>
 				<input type="hidden" name="chgReasonDesc" value=""/>
 				
-				<h3>주문정보</h3>
+				<h4>주문정보</h4>
 				<div id="gridOrderCancelRequestList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 
-				<h3>반품정보</h3>
+				<h4>반품정보</h4>
 				<div id="gridOrderCancelRequestToBeList" style="width:100%; height: 200px;" class="ag-theme-balham"></div>
 				
-				<h3>배송비정보</h3>
+				<h4>배송비정보</h4>
 				<div id="gridDelvCdList" style="width:100%; height: 140px;" class="ag-theme-balham"></div>
 				
-				<h3>회수지정보</h3>
-				<button type="button" style="margin-left:10px;" class="btn btnRight btn-base btn-sm off" id="btnUpdateOrderAddr">수정</button>
-				<div id="gridDelvRtnAddrInfo" style="width:100%; height:100px;" class="ag-theme-balham"></div>
-				
 				<div style="text-align:right; padding-bottom:5px; padding-top:5px;">
 					<button type="button" class="btn btn-success" id="btnCancelRequestPartOk" onclick="fnCancelRequestPartOk();">요청</button>
 				</div>
@@ -129,6 +125,51 @@
 					</tbody>
 				</table>
 				
+				<h4>회수지 정보</h4>
+				<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 colspan="3"><input type="text" name ="chgerNm" class="" /></td>
+						</tr>
+						<tr>
+							<th>회수지주소 <i class="star"></i></th>
+							<td colspan="3">
+								<input type="text" name ="chgerPostNo" class="w100" readonly="readonly" />
+								<button type="button" class="btn btn-info" onclick="cfnOpenPostFindPopup('returnRequest');">우편번호찾기</button>
+								<input type="text" name ="chgerBaseAddr" class="w300" />
+								<input type="text" name ="chgerDtlAddr" class="w300" />
+							</td>
+						</tr>
+						<tr>
+							<th>일반전화</th>
+							<td>
+								<select name="chgerTelno1" class="w100">
+									<option value="">[선택하세요]</option>
+									<option th:if="${TelExcNoList}" th:each="oneData, status : ${TelExcNoList}" th:value="${oneData.cd}" th:text="${oneData.cd}"></option>
+								</select>
+								- <input type="text" name ="chgerTelno2" class="w60" value="0000" />
+								- <input type="text" name ="chgerTelno3" class="w60" value="0000" />
+							</td>
+							<th>휴대전화 <i class="star"></i></th>
+							<td>
+								<select name="chgerPhnno1" class="w100">
+									<option value="">[선택하세요]</option>
+									<option th:if="${PhnExcNoList}" th:each="oneData, status : ${PhnExcNoList}" th:value="${oneData.cd}" th:text="${oneData.cd}"></option>
+								</select>
+								- <input type="text" name ="chgerPhnno2" class="w60" value="0000" />
+								- <input type="text" name ="chgerPhnno3" class="w60" value="0000" />
+							</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>
@@ -147,7 +188,6 @@ var cancelRequestTargetList = [[${cancelRequestTargetList}]];				// 취소대상
 var ordNo 					= [[${ordNo}]];									// 주문번호
 var orderInfoList 			= [[${orderInfoList}]];							// 주문기본정보
 var payMeans 				= orderInfoList[0].payMeans;					// 결제수단
-var orderDelvRtnAddrInfo	= [[${orderDelvRtnAddrInfo}]];					// 주문배송정보
 
 var temp1 = true;
 var temp2 = false;
@@ -226,7 +266,7 @@ var columnCancelReqList = [
 				}
 			},
 			{
-				headerName		: "반품"		
+				headerName		: "취소/반품"		
 				, field			: "ordCanChgQty"			
 				, width			: 100		
 				, cellClass		: 'text-center'
@@ -519,7 +559,7 @@ var columnCancelReqToBeList = [
 				}
 			},
 			{
-				headerName		: "취소"		
+				headerName		: "취소/반품"		
 				, field			: "cnclRtnAmt"			
 				, width			: 80		
 				, cellClass		: 'text-right'
@@ -788,27 +828,6 @@ var columnDefsRefundAccountInfo = [
 ];
 
 var gridOptionsRefundAccountInfo = orderAgGrid.getGridOptions(columnDefsRefundAccountInfo);
-
-// 5 .배송정보(회수지)
-var columnDefsDeliveryInfo = [
-	{headerName: "배송지번호"		, field: "delvAddrSq"	, width: 100, cellClass: 'text-center'},
-	{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			: 200
-		, cellClass		: 'text-left'
-		, cellRenderer	: function (params) {
-			return params.value + "<button type=\"button\" style=\"margin-left:10px\" class=\"btn btn-info\" onclick=\"fnOpenDaumAddr('grid');\">우편번호찾기</button>";
-		}
-	},
-	{headerName: "주소(기본)"		, field: "recipBaseAddr"	, width: 350, cellClass: 'text-left'},
-	{headerName: "주소(상세)"		, field: "recipDtlAddr"		, width: 200, cellClass: 'text-left', editable: true},
-	{headerName: "배송메모"		, field: "delvMemo"			, width: 280, cellClass: 'text-left', editable: true, hide: true}
-];
-var gridOptionsDelvRtnInfo = orderAgGrid.getGridOptions(columnDefsDeliveryInfo);
 </script>
 
 <!-- AgGrid 컬럼 세팅 -->
@@ -913,14 +932,16 @@ var fnCalculateRefundAmt = function (obj) {
 			
 			$("#spanTotRtnDelvFee").text(result.spanTotRtnDelvFee.addComma());		//반품 환불 배송 금액
 			$("#spanTotExcDelvFee").text(result.spanTotExcDelvFee.addComma());		//교환 환불 배송 금액
-						
-			// 고객사유 : 환불금액게산 = (취소금액 + 배송비) - 추가배송비 - 반품배송비
-			if (isCustomer) {
-				result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee) - result.spanTotDeliveryFee - result.spanTotRtnDelvFee;
-			} 
-			// 회사사유 : 환불금액게산 = (취소금액 + 배송비)
-			else {
-				result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee);
+
+			if (result.spanRealCnclRtnAmt > 0) {
+				// 고객사유 : 환불금액게산 = (취소금액 + 배송비) - 추가배송비 - 반품배송비
+				if (isCustomer) {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee) - result.spanTotDeliveryFee - result.spanTotRtnDelvFee;
+				} 
+				// 회사사유 : 환불금액게산 = (취소금액 + 배송비)
+				else {
+					result.spanRefundAmt = (result.spanRealCnclRtnAmt + result.sumDeliveryFee);
+				}
 			}
 			
 			$("#spanRefundAmt").text(result.spanRefundAmt.addComma());				//환불 금액 합계
@@ -1051,8 +1072,7 @@ var fnBindOrderRfAccountInfo = function () {
 	)
 };
 
-
-// DAUM을 이용한 우편번호 팝업 레이어 
+// 우편번호 DAUM을 이용한 우편번호 팝업 레이어
 var fnOpenDaumAddr = function() {
 	let daumZip = new daum.Postcode({
 		oncomplete: function(data) {
@@ -1080,9 +1100,6 @@ $(document).ready(function() {
 	
 	gagaAgGrid.createGrid('gridRefundAccountInfo'			, gridOptionsRefundAccountInfo);		// 환불계좌정보
 	
-	gagaAgGrid.createGrid('gridDelvRtnAddrInfo'				, gridOptionsDelvRtnInfo);				// 배송지정보
-	gridOptionsDelvRtnInfo.api.setRowData(orderDelvRtnAddrInfo);
-	
 	// 취소정보계산
 	fnCalculateRefundAmt(null);
 	

+ 19 - 1
src/main/webapp/ux/js/admin.popup.js

@@ -307,6 +307,24 @@ var cfnOpenGoodsPopup = function(callbackfun) {
 	cfnOpenModalPopup(actionUrl,'popupGoods');
 }
 
+/**
+ * @type   : function
+ * @access : public
+ * @desc   : 사은품조회 팝업
+ * <pre>
+ *     cfnOpenFreeGoodsPopup('callbackfn');
+ * </pre>
+ * @param  : callbackfun - 콜백함수
+ * @since  : 2021/01/12
+ * @author : xodud1202
+ */
+var cfnOpenFreeGoodsPopup = function(callbackFn) {
+	var actionUrl = "/goods/freeGoods/popup/list/form";
+	if (typeof(callbackFn) != 'undefined') actionUrl += "?callbackFn=" + callbackFn;
+	uifnPopupClose('popupFreeGoodsList');
+	cfnOpenModalPopup(actionUrl,'popupFreeGoodsList');
+}
+
 /**
  * @type   : function
  * @access : public
@@ -710,7 +728,7 @@ var cfnOpenFreeGoodsPromotionSetPopup = function(gbn) {
  * @access : public
  * @desc   : 공급업체 조회 팝업
  * <pre>
- *     cfnOpenCompanyListPopup();
+ *     cfnOpenCompanyListPopup('callbackfn');
  * </pre>
  * @since  : 2020/12/23
  * @author : xodud1202