eskim 5 лет назад
Родитель
Сommit
5913a96679

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

@@ -92,6 +92,7 @@ public class Goods extends TscBaseDomain {
 	private int currPriceOrg;
 	private int currPriceOrg;
 	private String goodsStatOrg;
 	private String goodsStatOrg;
 	private String formalGbOrg;
 	private String formalGbOrg;
+	private String sellFeeRateOrg;
 
 
 	private String imgType;
 	private String imgType;
 	private String imgPath1;
 	private String imgPath1;

+ 47 - 0
style24.scm/src/main/java/com/style24/persistence/domain/GoodsPriceRes.java

@@ -0,0 +1,47 @@
+package com.style24.persistence.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 상품가격변경예약 Domain
+ * @author eskim
+ * @since 2020. 11. 23
+ */
+@SuppressWarnings("serial")
+@Data
+public class GoodsPriceRes extends TscBaseDomain {
+
+	private Integer goodsPriceResSq;
+	private String goodsCd;
+	private int resGoodsPrice;
+	private int endGoodsPrice;
+	private Float sellFeeRate;
+	private String applyStdt;
+	private String applyEddt;
+	private String cfrmYn;
+	private int cfrmNo;
+	private String cfrmDt;
+	private String applyYn;
+
+	private String cfrmNm;
+
+	private String goodsNm;
+	private String supplyGoodsCd;
+	private String brandEnm;
+	private String goodsStat;
+	private int currPrice;
+
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] arrGoodsCd;
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private int[] arrEndGoodsPrice;
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private int[] arrGoodsPriceResSq;
+
+}

+ 217 - 0
style24.scm/src/main/java/com/style24/persistence/mybatis/shop/TssGoods.xml

@@ -15,6 +15,7 @@
 		                                      AND GE.GOODS_CD IN
 		                                      AND GE.GOODS_CD IN
 		            <foreach collection="conditionList" item="item" index="index"  open="(" close=")" separator=",">
 		            <foreach collection="conditionList" item="item" index="index"  open="(" close=")" separator=",">
 		                                          UPPER(#{item})
 		                                          UPPER(#{item})
+		                                          
 		            </foreach>
 		            </foreach>
 		        </if>
 		        </if>
 		        <if test="searchGb != null and searchGb =='MASTER'">
 		        <if test="searchGb != null and searchGb =='MASTER'">
@@ -1350,4 +1351,220 @@
 		</selectKey>
 		</selectKey>
 		INSERT INTO TB_GOODS_SEQUENCE (GOODS_SQ) VALUES (NULL)
 		INSERT INTO TB_GOODS_SEQUENCE (GOODS_SQ) VALUES (NULL)
 	</insert>
 	</insert>
+	
+	<!-- 상품 가격예약 목록 건수 -->
+	<select id="getGoodsPriceResCount" parameterType="GoodsSearch" resultType="int">
+		/* TsaGoods.getGoodsPriceResCount */
+		SELECT COUNT(*) AS TOTCNT
+		FROM TB_GOODS G
+		INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		INNER JOIN TB_SUPPLY_COMPANY S ON G.SUPPLY_COMP_CD = S.SUPPLY_COMP_CD
+		INNER JOIN TB_GOODS_PRICE_RES GR ON G.GOODS_CD = GR.GOODS_CD
+		<if test="searchGb == null or searchGb =='BASIC'" >
+		    <if test="applyStdt != null and applyStdt != ''">
+		                               AND GR.APPLY_EDDT >= DATE_FORMAT(#{applyStdt}, '%Y-%m-%d %H:%i:%S')
+		    </if>
+		    <if test="applyEddt != null and applyEddt != ''">
+		    <![CDATA[
+		                               AND GR.APPLY_STDT < DATE_FORMAT(DATE_ADD(#{applyEddt}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		    ]]>
+		    </if>
+		    <if test='beforSkipFlag != null and beforSkipFlag == "Y"'>
+		                               AND GR.APPLY_EDDT >= NOW() 
+		    </if>
+		    <if test="goodsPriceResSt != null and goodsPriceResSt != ''">
+		                               AND GR.RES_GOODS_PRICE >= #{goodsPriceResSt}
+		    </if>
+		    <if test="goodsPriceResEd != null and goodsPriceResEd != ''">
+		    <![CDATA[
+		                               AND GR.RES_GOODS_PRICE <= #{goodsPriceResEd}
+		     ]]>
+		    </if>
+		</if>
+		<if test="searchGb != null and (searchGb =='EXCEL' or searchGb =='EXCELRESULT')">
+		INNER JOIN (
+		            SELECT SEARCH_CD
+		                 , TMP_DISP_ORD
+		            FROM (
+		                  SELECT SEARCH_CD
+		                       , MIN(DISP_ORD) AS TMP_DISP_ORD
+		                  FROM TB_SEARCH_DATA
+		                  WHERE REG_NO = #{regNo}
+		                  GROUP BY SEARCH_CD) T
+		          ) SD
+		          ON ( (G.GOODS_CD LIKE CONCAT(SD.SEARCH_CD,'%')
+		               OR G.SUPPLY_GOODS_CD LIKE CONCAT(SD.SEARCH_CD,'%')) 
+		               <if test="mdNo != null and mdNo != ''">
+		               AND G.BRAND_CD IN (
+		                                  SELECT DISTINCT BRAND_CD
+		                                  FROM TB_BRAND_MD
+		                                  WHERE MD_NO = CAST(#{mdNo} AS UNSIGNED)
+		                                  )
+		              </if>
+		           )
+		</if>
+		WHERE 1=1
+		<if test="searchGb == null or searchGb =='BASIC'" >
+		<include refid="getGoodsListCondition_sql"/>
+		</if>
+	</select>
+
+	<!-- 상품 가격예약 목록 -->
+	<select id="getGoodsPriceResList" parameterType="GoodsSearch" resultType="GoodsPriceRes">
+		/* TsaGoods.getGoodsPriceResList */
+		SELECT Z.*
+		FROM (
+		    SELECT A.*, @rownum := @rownum + 1 AS RNUM FROM (
+		        SELECT
+		                G.GOODS_CD
+		              , G.CURR_PRICE
+		              , G.LIST_PRICE
+		              , B.BRAND_ENM
+		              , B.BRAND_GRP_NM
+		              , G.BRAND_CD
+		              , G.SUPPLY_COMP_CD
+		              , G.SUPPLY_GOODS_CD
+		              , G.GOODS_NM
+		              , G.GOODS_TNM
+		              , G.SELF_GOODS_YN
+		              , G.GOODS_STAT
+		              , GR.GOODS_PRICE_RES_SQ
+		              , GR.RES_GOODS_PRICE
+		              , GR.END_GOODS_PRICE
+		              , GR.SELL_FEE_RATE
+		              , DATE_FORMAT(GR.APPLY_STDT,'%Y%m%d%H%i%S') AS APPLY_STDT
+		              , DATE_FORMAT(GR.APPLY_EDDT,'%Y%m%d%H%i%S') AS APPLY_EDDT
+		              , GR.CFRM_YN
+		              , GR.CFRM_NO
+		              , FN_GET_USER_NM(GR.REG_NO) AS CFRM_NM
+		              , DATE_FORMAT(GR.CFRM_DT,'%Y%m%d%H%i%S') AS CFRM_DT
+		              , GR.APPLY_YN
+		              , GR.REG_NO
+		              , FN_GET_USER_NM(GR.REG_NO) AS REG_NM
+		              , DATE_FORMAT(GR.REG_DT,'%Y%m%d%H%i%S') AS REG_DT
+		              , FN_GET_USER_NM(GR.UPD_NO) AS UPD_NM
+		              , DATE_FORMAT(GR.UPD_DT,'%Y%m%d%H%i%S') AS UPD_DT
+		        FROM TB_GOODS G
+		        JOIN ( SELECT @rownum := 0) R
+		        INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
+		        INNER JOIN TB_SUPPLY_COMPANY S ON G.SUPPLY_COMP_CD = S.SUPPLY_COMP_CD
+		        INNER JOIN TB_GOODS_PRICE_RES GR ON G.GOODS_CD = GR.GOODS_CD
+		        <if test="searchGb == null or searchGb =='BASIC'" >
+		            <if test="applyStdt != null and applyStdt != ''">
+		                                       AND GR.APPLY_EDDT >= DATE_FORMAT(#{applyStdt}, '%Y-%m-%d %H:%i:%S')
+		            </if>
+		            <if test="applyEddt != null and applyEddt != ''">
+		            <![CDATA[
+		                                       AND GR.APPLY_STDT < DATE_FORMAT(DATE_ADD(#{applyEddt}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		            ]]>
+		            </if>
+		            <if test='beforSkipFlag != null and beforSkipFlag == "Y"'>
+		                                       AND GR.APPLY_EDDT >= NOW() 
+		            </if>
+		            <if test="goodsPriceResSt != null and goodsPriceResSt != ''">
+		                                       AND GR.RES_GOODS_PRICE >= #{goodsPriceResSt}
+		            </if>
+		            <if test="goodsPriceResEd != null and goodsPriceResEd != ''">
+		            <![CDATA[
+		                                       AND GR.RES_GOODS_PRICE <= #{goodsPriceResEd}
+		             ]]>
+		            </if>
+		        </if>
+		        <if test="searchGb != null and (searchGb =='EXCEL' or searchGb =='EXCELRESULT')">
+		        INNER JOIN (
+		                    SELECT SEARCH_CD
+		                         , TMP_DISP_ORD
+		                    FROM (
+		                          SELECT SEARCH_CD
+		                               , MIN(DISP_ORD) AS TMP_DISP_ORD
+		                          FROM TB_SEARCH_DATA
+		                          WHERE REG_NO = #{regNo}
+		                          GROUP BY SEARCH_CD) T
+		                  ) SD
+		                  ON ( (G.GOODS_CD LIKE CONCAT(SD.SEARCH_CD,'%')
+		                       OR G.SUPPLY_GOODS_CD LIKE CONCAT(SD.SEARCH_CD,'%')) 
+		                       <if test="mdNo != null and mdNo != ''">
+		                      AND G.BRAND_CD IN (
+		                                          SELECT DISTINCT BRAND_CD
+		                                          FROM TB_BRAND_MD
+		                                          WHERE MD_NO = CAST(#{mdNo} AS UNSIGNED)
+		                                          )
+		                      </if>
+		                   )
+		        </if>
+		        WHERE 1=1
+		        AND G.SELF_GOODS_YN = #{selfGoodsYn}
+		        <if test="searchGb == null or searchGb =='BASIC'" >
+		        <include refid="getGoodsListCondition_sql"/>
+		        ORDER BY  GR.APPLY_STDT DESC, GR.APPLY_EDDT DESC, G.GOODS_CD, GR.GOODS_PRICE_RES_SQ
+		        </if>
+		        <if test="searchGb != null and searchGb =='EXCEL'">
+		        ORDER BY SD.TMP_DISP_ORD
+		        </if>
+		<include refid="getListPagingCondition_sql"/>
+	</select>
+
+	<!-- 상품 가격예약 조회(기간 체크용) -->
+	<select id="getGoodsPriceResDupChkCount" parameterType="GoodsPriceRes" resultType="int">
+		/* TsaGoods.getGoodsPriceResDupChkCount */
+		SELECT COUNT(GOODS_CD)
+		FROM TB_GOODS_PRICE_RES
+		WHERE GOODS_CD = #{goodsCd}
+		<![CDATA[
+		AND APPLY_STDT <= DATE_FORMAT(#{applyStdt}, '%Y%m%d%H%i%S')
+		]]>
+		AND APPLY_EDDT >= DATE_FORMAT(#{applyEddt},'%Y%m%d%H%i%S')
+	</select>
+
+	<!-- 상품 가격예약 등록 -->
+	<insert id="createGoodPriceRes" parameterType="GoodsPriceRes">
+		/* TsaGoods.createGoodPriceRes */
+		INSERT INTO TB_GOODS_PRICE_RES (
+		  GOODS_PRICE_RES_SQ
+		, GOODS_CD
+		, RES_GOODS_PRICE
+		, END_GOODS_PRICE
+		, SELL_FEE_RATE
+		, APPLY_STDT
+		, APPLY_EDDT
+		, CFRM_YN
+		, CFRM_NO
+		, CFRM_DT
+		, APPLY_YN
+		, REG_NO
+		, REG_DT
+		, UPD_NO
+		, UPD_DT
+		)
+		VALUES(
+		  NULL
+		, #{goodsCd}
+		, #{resGoodsPrice}
+		, #{endGoodsPrice}
+		, #{sellFeeRate}
+		, STR_TO_DATE(#{applyStdt},'%Y%m%d%H%i%S')
+		, STR_TO_DATE(#{applyEddt},'%Y%m%d%H%i%S')
+		, NVL(#{cfrmYn},'N')
+		, #{cfrmNo}
+		, #{cfrmDt}
+		, NVL(#{applyYn},'N')
+		, #{regNo}
+		, NOW()
+		, #{updNo}
+		, NOW()
+		)
+	</insert>
+	
+	
+	<!-- 상품 옵션 존재여부 확인 -->
+	<select id="getGoodsOptionCount" parameterType="Option" resultType="int">
+		/* TsaGoods.getGoodsOptionCount */
+		SELECT COUNT(*)
+		FROM TB_OPTION
+		WHERE GOODS_CD = #{goodsCd}
+		<if test='optCd != null and optCd != ""'>
+		AND OPT_CD = #{optCd}
+		</if>
+	</select>
+	
 </mapper>
 </mapper>

+ 52 - 0
style24.scm/src/main/java/com/style24/scm/biz/dao/TssGoodsDao.java

@@ -8,6 +8,7 @@ import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsHst;
 import com.style24.persistence.domain.GoodsHst;
 import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsNotiInfo;
+import com.style24.persistence.domain.GoodsPriceRes;
 import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.NotiInfo;
 import com.style24.persistence.domain.NotiInfo;
 import com.style24.persistence.domain.Option;
 import com.style24.persistence.domain.Option;
@@ -243,4 +244,55 @@ public interface TssGoodsDao {
 	 * @since 2020. 10. 23
 	 * @since 2020. 10. 23
 	 */
 	 */
 	void saveGoodsNotiInfo(GoodsNotiInfo goodsNotiInfo);
 	void saveGoodsNotiInfo(GoodsNotiInfo goodsNotiInfo);
+
+	/**
+	 * 상품 가격예약 목록 건수
+	 *
+	 * @param goodsSearch
+	 * @return Integer
+	 * @author eskim
+	 * @since 2020. 11. 13
+	 */
+	int getGoodsPriceResCount(GoodsSearch goodsSearch);
+
+	/**
+	 * 상품 가격예약 목록
+	 *
+	 * @param goodsSearch
+	 * @return Collection<GoodsPriceRes>
+	 * @author eskim
+	 * @since 2020. 11. 13
+	 */
+	Collection<GoodsPriceRes> getGoodsPriceResList(GoodsSearch goodsSearch);
+
+	/**
+	 * 상품 가격예약 조회(기간 체크용)
+	 *
+	 * @param goodsPriceRes
+	 * @return int
+	 * @author eskim
+	 * @since 2020. 11. 13
+	 */
+	int getGoodsPriceResDupChkCount(GoodsPriceRes goodsPriceRes);
+
+	/**
+	 * 상품 가격예약 등록(화면)
+	 *
+	 * @param goodsPriceRes
+	 * @return void
+	 * @author eskim
+	 * @since 2020. 11. 13
+	 */
+	void createGoodPriceRes(GoodsPriceRes goodsPriceRes);
+
+	/**
+	 * 상품 옵션 존재여부 확인
+	 *
+	 * @param option
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 17
+	 */
+	int getGoodsOptionCount(Option option);
+
 }
 }

+ 200 - 16
style24.scm/src/main/java/com/style24/scm/biz/service/TssGoodsService.java

@@ -1,6 +1,7 @@
 package com.style24.scm.biz.service;
 package com.style24.scm.biz.service;
 
 
 import java.io.IOException;
 import java.io.IOException;
+import java.text.SimpleDateFormat;
 import java.util.Collection;
 import java.util.Collection;
 
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -12,11 +13,11 @@ import org.springframework.util.StringUtils;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Goods;
-import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsHst;
 import com.style24.persistence.domain.GoodsHst;
 import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsNotiInfo;
+import com.style24.persistence.domain.GoodsPriceRes;
 import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.NotiInfo;
 import com.style24.persistence.domain.NotiInfo;
 import com.style24.persistence.domain.Option;
 import com.style24.persistence.domain.Option;
@@ -30,6 +31,7 @@ import lombok.extern.slf4j.Slf4j;
 import com.gagaframework.excel.GagaExcelUtil;
 import com.gagaframework.excel.GagaExcelUtil;
 import com.gagaframework.excel.env.GagaExcelConstants;
 import com.gagaframework.excel.env.GagaExcelConstants;
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.util.GagaDateUtil;
 import com.gagaframework.web.util.GagaFileUtil;
 import com.gagaframework.web.util.GagaFileUtil;
 import com.gagaframework.web.util.GagaStringUtil;
 import com.gagaframework.web.util.GagaStringUtil;
 
 
@@ -495,27 +497,27 @@ public class TssGoodsService {
 		goods.setGoodsSnm1(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsSnm1(), "&lt;", "<"), "&gt;", ">"));
 		goods.setGoodsSnm1(GagaStringUtil.replace(GagaStringUtil.replace(goods.getGoodsSnm1(), "&lt;", "<"), "&gt;", ">"));
 
 
 		// 세트일 경우 상품 가격 확인
 		// 세트일 경우 상품 가격 확인
-		if ("G056_S".equals(goods.getGoodsType())) {
-
-			Collection<GoodsCompose> goodsExtendList = goods.getGoodsComposeListNew();
-			int currPriceSum = 0;
-			for (GoodsCompose regGoodsExtend : goodsExtendList) {
-				currPriceSum  = currPriceSum + regGoodsExtend.getCompsCurrPrice();
-			}
-
-			if (currPriceSum != goods.getCurrPriceOrg()) {
-				goods.setCurrBprice(goods.getCurrPriceOrg());
-				goods.setCurrPrice(currPriceSum);
-				goods.setDcRate((int)(this.getDcRate(goods.getListPrice() , currPriceSum)));
-			}
-		}else {
+//		if ("G056_S".equals(goods.getGoodsType())) {
+//
+//			Collection<GoodsCompose> goodsExtendList = goods.getGoodsComposeListNew();
+//			int currPriceSum = 0;
+//			for (GoodsCompose regGoodsExtend : goodsExtendList) {
+//				currPriceSum  = currPriceSum + regGoodsExtend.getCompsCurrPrice();
+//			}
+//
+//			if (currPriceSum != goods.getCurrPriceOrg()) {
+//				goods.setCurrBprice(goods.getCurrPriceOrg());
+//				goods.setCurrPrice(currPriceSum);
+//				goods.setDcRate((int)(this.getDcRate(goods.getListPrice() , currPriceSum)));
+//			}
+//		}else {
 			// 가격변경일
 			// 가격변경일
 			if (goods.getCurrPrice() != goods.getCurrPriceOrg()) {
 			if (goods.getCurrPrice() != goods.getCurrPriceOrg()) {
 				goods.setCurrBprice(goods.getCurrPriceOrg());
 				goods.setCurrBprice(goods.getCurrPriceOrg());
 			} else {
 			} else {
 				goods.setCurrPrice(goods.getCurrPriceOrg());
 				goods.setCurrPrice(goods.getCurrPriceOrg());
 			}
 			}
-		}
+//		}
 
 
 		// 승인일
 		// 승인일
 		if (!goods.getGoodsStat().equals(goods.getGoodsStatOrg()) && "G008_90".equals(goods.getGoodsStat())) {
 		if (!goods.getGoodsStat().equals(goods.getGoodsStatOrg()) && "G008_90".equals(goods.getGoodsStat())) {
@@ -825,4 +827,186 @@ public class TssGoodsService {
 		return 100 - (long)((Math.round(rate * 100) / 100.0) * 100);
 		return 100 - (long)((Math.round(rate * 100) / 100.0) * 100);
 	}
 	}
 
 
+	/**
+	 * 상품 가격예약 목록 건수
+	 *
+	 * @param goodsSearch
+	 * @return Integer
+	 * @author eskim
+	 * @since 2020. 11. 13
+	 */
+	public int getGoodsPriceResCount(GoodsSearch goodsSearch) {
+		return goodsDao.getGoodsPriceResCount(goodsSearch);
+	}
+
+	/**
+	 * 상품 가격예약 목록
+	 *
+	 * @param goodsSearch
+	 * @return Collection<TsaGoodsResSell>
+	 * @author eskim
+	 * @since 2020. 11. 13
+	 */
+	public Collection<GoodsPriceRes> getGoodsPriceResList(GoodsSearch goodsSearch) {
+		return goodsDao.getGoodsPriceResList(goodsSearch);
+	}
+
+	/**
+	 * 상품 가격예약 등록
+	 *
+	 * @param goodsPriceRes
+	 * @return void
+	 * @author eskim
+	 * @since 2020. 11. 13
+	 */
+	@Transactional("shopTxnManager")
+	public void createGoodPriceRes(GoodsPriceRes goodsPriceRes) {
+		if (goodsPriceRes.getArrGoodsCd().length <= 0) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+		int idx = 0;
+		for (String goodsCd : goodsPriceRes.getArrGoodsCd()) {
+
+			goodsPriceRes.setGoodsCd(goodsCd);
+			goodsPriceRes.setEndGoodsPrice(goodsPriceRes.getArrEndGoodsPrice()[idx]);
+			goodsPriceRes.setRegNo(TssSession.getInfo().getUserNo());
+			goodsPriceRes.setUpdNo(TssSession.getInfo().getUserNo());
+
+			if(goodsDao.getGoodsPriceResDupChkCount(goodsPriceRes) > 0 ) {
+				throw new IllegalStateException("이미 등록된 상품 가격예약이 존재합니다. \n(상품코드 : " + goodsCd + ")");
+			}
+
+			goodsDao.createGoodPriceRes(goodsPriceRes);
+
+			Goods goods = new Goods();
+			goods.setRegNo(TssSession.getInfo().getUserNo());
+			goods.setUpdNo(TssSession.getInfo().getUserNo());
+			goods.setGoodsCd(goodsPriceRes.getGoodsCd());
+			idx++;
+		}
+	}
+
+	/**
+	 * 상품 가격예약 저장
+	 *
+	 * @param goodsPriceList
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 16
+	 */
+	@Transactional("shopTxnManager")
+	public void saveGoodsPriceExcelupload(Collection<GoodsPriceRes> goodsPriceList, String excelFilename) {
+
+		String targetPath = GagaFileUtil.getConcatenationPath(env.getProperty("upload.excel.target.path"), "excel");
+		if (goodsPriceList == null || goodsPriceList.isEmpty()) {
+			this.deleteExceluploadFile(targetPath, excelFilename);
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+
+		// 입력값 확인
+		String goodsPriceResvCheck = getGoodsPriceResvCheck(goodsPriceList);
+		if (!"SUCC".equals(goodsPriceResvCheck)) {
+			this.deleteExceluploadFile(targetPath, excelFilename);
+			throw new IllegalStateException(goodsPriceResvCheck);
+		}
+
+		int index = 0;
+		for (GoodsPriceRes goodsPriceRes : goodsPriceList) {
+			goodsPriceRes.setUpdNo(TssSession.getInfo().getUserNo());
+			goodsPriceRes.setRegNo(TssSession.getInfo().getUserNo());
+
+			// 엑셀조회를 위한 SEARCH 테이블 생성
+			SearchData searchData = new SearchData();
+			searchData.setRegNo(goodsPriceRes.getRegNo());
+			searchData.setSearchCd(goodsPriceRes.getGoodsCd());
+			searchData.setDispOrd(index);
+			if (index == 0) {
+				commonService.deleteExceluploadSearCh(searchData);
+			}
+
+			commonService.createExceluploadSearch(searchData);
+
+			goodsDao.createGoodPriceRes(goodsPriceRes);
+
+			index++;
+		}
+	}
+
+	/*
+	 * 상품 가격예약 엑셀조회용 상품 저장 - 입력값 확인
+	 */
+	private String getGoodsPriceResvCheck(Collection<GoodsPriceRes> goodsPriceList) {
+
+		int cnt = 0;
+		for (GoodsPriceRes goodsPriceRes : goodsPriceList) {
+
+			if (StringUtils.isEmpty(goodsPriceRes.getGoodsCd())) {
+				return (cnt + 2) + "행의 상품코드를 확인해주세요";
+			}
+			if (StringUtils.isEmpty(goodsPriceRes.getResGoodsPrice())) {
+				return (cnt + 2) + "행의 예약가격을 확인해주세요.";
+			}
+			if (goodsPriceRes.getResGoodsPrice() <= 0) {
+				return (cnt + 2) + "행의 예약가격을 확인해주세요.";
+			}
+
+			String nowDate = GagaDateUtil.getToday();	//yyyyMMdd
+			SimpleDateFormat dateFormatParser = new SimpleDateFormat("yyyyMMdd");
+			dateFormatParser.setLenient(false);
+			try {
+				dateFormatParser.parse(goodsPriceRes.getApplyStdt() );
+			} catch (Exception e) {
+				return (cnt + 2) + "행의 예약시작일을 확인해주세요.";
+			}
+			try {
+				dateFormatParser.parse(goodsPriceRes.getApplyEddt() );
+			} catch (Exception e) {
+				return (cnt + 2) + "행의 예약종료일을 확인해주세요.";
+			}
+
+			if (Integer.parseInt(goodsPriceRes.getApplyStdt()) > Integer.parseInt(goodsPriceRes.getApplyEddt())) {
+				return (cnt + 2) + "행의 예약 시작일은 종료일보다 보다 클 수 없습니다.";
+			}
+
+			if (Integer.parseInt(goodsPriceRes.getApplyStdt()) <= Integer.parseInt(nowDate)) {
+				return (cnt + 2) + "행의 예약 시작일자는 현재일자 보다 작거나 같을 수 없습니다.";
+			}
+
+			//정상가와 비교
+			Goods searchGoods = new Goods();
+			searchGoods.setGoodsCd(goodsPriceRes.getGoodsCd());
+			Goods goods = goodsDao.getGoods(searchGoods);
+			if (goods == null) {
+				return (cnt + 2) + "행의 상품코드를 확인해주세요";
+			}
+			if (goods.getListPrice() < goodsPriceRes.getResGoodsPrice()) {
+				return (cnt + 2) + "행의 상품 정상가보다 예약판매가가 더 큽니다.";
+			}
+			if (!"Y".equals(goods.getSelfGoodsYn())) {
+				return (cnt + 2) + "행의 상품은 자사상품이 아닙니다.";
+			}
+
+			if(goodsDao.getGoodsPriceResDupChkCount(goodsPriceRes) > 0 ) {
+				return (cnt + 2) + "행은 이미 등록된 상품 가격예약이 존재합니다. \n(상품코드 : " + goodsPriceRes.getGoodsCd() + ")";
+			}
+
+
+			cnt++;
+		}
+
+		return "SUCC";
+	}
+
+	/**
+	 * 상품별 옵션 등록 여부 확인
+	 *
+	 * @param
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 17
+	 */
+	public int getGoodsOptionCount(Option option) {
+
+		return goodsDao.getGoodsOptionCount(option);
+	}
 }
 }

+ 144 - 39
style24.scm/src/main/java/com/style24/scm/biz/web/TssGoodsController.java

@@ -23,11 +23,12 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.TssPageRequest;
 import com.style24.persistence.TssPageRequest;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.Goods;
-import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsHst;
 import com.style24.persistence.domain.GoodsHst;
 import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsNotiInfo;
+import com.style24.persistence.domain.GoodsPriceRes;
 import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.NotiInfo;
 import com.style24.persistence.domain.NotiInfo;
+import com.style24.persistence.domain.Option;
 import com.style24.persistence.domain.User;
 import com.style24.persistence.domain.User;
 import com.style24.scm.biz.service.TssCommonService;
 import com.style24.scm.biz.service.TssCommonService;
 import com.style24.scm.biz.service.TssGoodsService;
 import com.style24.scm.biz.service.TssGoodsService;
@@ -99,6 +100,10 @@ public class TssGoodsController extends TssBaseController {
 		// 상품상태
 		// 상품상태
 		String[] exceptCds = {"G008_00"};
 		String[] exceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
+
+		// 상품상태
+		String[] statChangeExceptCds = {"G008_00", "G008_90"};
+		mav.addObject("goodsStatChangeList", rendererService.getCommonCodeList("G008", "Y", statChangeExceptCds));
 		// 정상이월
 		// 정상이월
 		mav.addObject("formalGbList", rendererService.getAvailCommonCodeList("G009"));
 		mav.addObject("formalGbList", rendererService.getAvailCommonCodeList("G009"));
 		// 성별
 		// 성별
@@ -221,14 +226,13 @@ public class TssGoodsController extends TssBaseController {
 		String returnGoods = "";
 		String returnGoods = "";
 		String resultFlag = "SUCC";
 		String resultFlag = "SUCC";
 
 
-		if (!"G001_0000".equals(TssSession.getInfo().getRoleCd()) && !"G001_A000".equals(TssSession.getInfo().getRoleCd())
-			&& !"G001_A001".equals(TssSession.getInfo().getRoleCd()) && !"G001_A100".equals(TssSession.getInfo().getRoleCd())
-			&& !"G001_A101".equals(TssSession.getInfo().getRoleCd())) {
+		// 입점 담당자만 일괄 변경 가능
+		if (!"G001_B000".equals(TssSession.getInfo().getRoleCd()) ) {
 			throw new IllegalStateException("권한이 없습니다.");
 			throw new IllegalStateException("권한이 없습니다.");
 		}
 		}
 
 
 		// 상품 상태 변경일 경우 체크
 		// 상품 상태 변경일 경우 체크
-		if ("goodsStat".equals(goods.getProcJob()) && ("G008_40".equals(goods.getGoodsStat()) || "G008_90".equals(goods.getGoodsStat()))) {
+		if ("goodsStat".equals(goods.getProcJob()) && ("G008_40".equals(goods.getGoodsStat()))) {
 
 
 			// 이미지
 			// 이미지
 			Collection<Goods> goodsList = goodsService.getGoodsImgsYn(goods);
 			Collection<Goods> goodsList = goodsService.getGoodsImgsYn(goods);
@@ -249,32 +253,34 @@ public class TssGoodsController extends TssBaseController {
 						continue;
 						continue;
 					}
 					}
 					// 사이즈 등록 여부 확인
 					// 사이즈 등록 여부 확인
-//					Stock stock = new Stock();
-//					stock.setGoodsCd(tmpGoods.getGoodsCd());
-//					int stockCnt = goodsService.getGoodsSizeCount(stock);
-//					if (stockCnt <= 0) {
-//						returnGoods += tmpGoods.getGoodsCd() + ",";
-//						continue;
-//					}
+					if ("G056_N".equals(dataGoods.getGoodsType())){
+						Option stock = new Option();
+						stock.setGoodsCd(tmpGoods.getGoodsCd());
+						int stockCnt = goodsService.getGoodsOptionCount(stock);
+						if (stockCnt <= 0) {
+							returnGoods += tmpGoods.getGoodsCd() + ",";
+							continue;
+						}
+					}
 
 
 					//고시정보
 					//고시정보
-//					GoodsNotiInfo goodsNotiInfo = new GoodsNotiInfo();
-//					goodsNotiInfo.setGoodsCd(tmpGoods.getGoodsCd());
-//					goodsNotiInfo.setSupplyCompCd(tmpGoods.getSupplyCompCd());
-//					goodsNotiInfo.setNiClsfCd(tmpGoods.getNiClsfCd());
-//					Collection<GoodsNotiInfo> goodsNotiInfoList = goodsService.getGoodsNotiInfoList(goodsNotiInfo);
-//					if (goodsNotiInfoList == null || goodsNotiInfoList.isEmpty()) {
-//						returnGoods += tmpGoods.getGoodsCd() + ",";
-//					} else {
-//						for (GoodsNotiInfo tmpGoodsNotiInfo : goodsNotiInfoList) {
-//							if ("Y".equals(tmpGoodsNotiInfo.getReqYn()) || "Y".equals(tmpGoodsNotiInfo.getDispYn())) {
-//								if (StringUtils.isEmpty(tmpGoodsNotiInfo.getNiContent())) {
-//									returnGoods += tmpGoods.getGoodsCd() + ",";
-//									break;
-//								}
-//							}
-//						}
-//					}
+					GoodsNotiInfo goodsNotiInfo = new GoodsNotiInfo();
+					goodsNotiInfo.setGoodsCd(tmpGoods.getGoodsCd());
+					goodsNotiInfo.setSupplyCompCd(tmpGoods.getSupplyCompCd());
+					goodsNotiInfo.setNiClsfCd(tmpGoods.getNiClsfCd());
+					Collection<GoodsNotiInfo> goodsNotiInfoList = goodsService.getGoodsNotiInfoList(goodsNotiInfo);
+					if (goodsNotiInfoList == null || goodsNotiInfoList.isEmpty()) {
+						returnGoods += tmpGoods.getGoodsCd() + ",";
+					} else {
+						for (GoodsNotiInfo tmpGoodsNotiInfo : goodsNotiInfoList) {
+							if ("Y".equals(tmpGoodsNotiInfo.getReqYn()) || "Y".equals(tmpGoodsNotiInfo.getDispYn())) {
+								if (StringUtils.isEmpty(tmpGoodsNotiInfo.getNiContent())) {
+									returnGoods += tmpGoods.getGoodsCd() + ",";
+									break;
+								}
+							}
+						}
+					}
 				}
 				}
 			}
 			}
 
 
@@ -533,7 +539,7 @@ public class TssGoodsController extends TssBaseController {
 		}
 		}
 
 
 		Collection<GoodsNotiInfo> notiList = null;
 		Collection<GoodsNotiInfo> notiList = null;
-		Collection<GoodsCompose> goodComposeList = null;
+//		Collection<GoodsCompose> goodComposeList = null;
 		ObjectMapper mapper = new ObjectMapper();
 		ObjectMapper mapper = new ObjectMapper();
 		try {
 		try {
 			if (goods.getNotiList() != null) {
 			if (goods.getNotiList() != null) {
@@ -543,17 +549,17 @@ public class TssGoodsController extends TssBaseController {
 		} catch (Exception e) {
 		} catch (Exception e) {
 			e.printStackTrace();
 			e.printStackTrace();
 		}
 		}
-		try {
-			if (goods.getGoodsComposeList() != null) {
-				goodComposeList = mapper.readValue(goods.getGoodsComposeList(), new TypeReference<Collection<GoodsCompose>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
+//		try {
+//			if (goods.getGoodsComposeList() != null) {
+//				goodComposeList = mapper.readValue(goods.getGoodsComposeList(), new TypeReference<Collection<GoodsCompose>>() {
+//				});
+//			}
+//		} catch (Exception e) {
+//			e.printStackTrace();
+//		}
 
 
 		goods.setNotiListNew(notiList);
 		goods.setNotiListNew(notiList);
-		goods.setGoodsComposeListNew(goodComposeList);
+//		goods.setGoodsComposeListNew(goodComposeList);
 
 
 		goodsService.saveGoodsDetail(goods);
 		goodsService.saveGoodsDetail(goods);
 		return super.ok(message.getMessage("SUCC_0001"));
 		return super.ok(message.getMessage("SUCC_0001"));
@@ -638,4 +644,103 @@ public class TssGoodsController extends TssBaseController {
 
 
 		return mav;
 		return mav;
 	}
 	}
+
+	/**
+	 * 상품 가격예약 목록 조회
+	 *
+	 * @param goodsSearch
+	 * @return GagaMap
+	 * @author eskim
+	 * @since 2020. 11. 13
+	 */
+	@PostMapping("/price/reserve/list")
+	@ResponseBody
+	public GagaMap goodsPriceReserveList(@RequestBody GoodsSearch goodsSearch) {
+
+		GagaMap result = new GagaMap();
+
+		// 입점업체담당자는 업체코드 설정
+		if ("G001-B000".equals(TssSession.getInfo().getRoleCd())) {
+			goodsSearch.setSupplyCompCd(TssSession.getInfo().getSupplyCompCd());
+			goodsSearch.setMdNo(TssSession.getInfo().getUserNo().toString());
+		}
+
+		goodsSearch.setRegNo(TssSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		goodsSearch.setPageable(new TssPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsPriceResCount(goodsSearch));
+
+		result.set("pageing", goodsSearch);
+		result.set("goodsPriceResList", goodsService.getGoodsPriceResList(goodsSearch));
+
+		return result;
+	}
+
+	/**
+	 * 상품 가격예약 등록 화면
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 13
+	 */
+	@GetMapping("/price/reserve/popup/form")
+	@ResponseBody
+	public ModelAndView goodsPriceReserveRegistForm() {
+		ModelAndView mav = new ModelAndView();
+
+		mav.setViewName("goods/GoodsPriceReservePopupForm");
+		return mav;
+	}
+
+	/**
+	 * 상품 가격예약 저장
+	 *
+	 * @param goodsResSell
+	 * @return GagaResponse
+	 * @author eskim
+	 * @since 2020. 11. 13
+	 */
+	@PostMapping("/price/reserve/save")
+	@ResponseBody
+	public GagaResponse saveGoodsPriceRes(@RequestBody GoodsPriceRes goodsPriceRes) {
+		goodsService.createGoodPriceRes(goodsPriceRes);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
+	/**
+	 * 상품 가격예약 변경
+	 *
+	 * @param goods
+	 * @return
+	 * @throws Exception
+	 * @author eskim
+	 * @since 2020. 02. 20
+	 */
+	@PostMapping("/price/excelupload/save")
+	@ResponseBody
+	public GagaResponse saveGoodsPriceResvExcelupload(@RequestBody Goods goods) throws Exception {
+
+		log.info("[saveGoodsPriceResvExcelupload] goods={} ",goods);
+		ObjectMapper mapper = new ObjectMapper();
+
+		String targetPath = GagaFileUtil.getConcatenationPath(env.getProperty("upload.excel.target.path"), "excel");
+		log.info("[saveGoodsPriceResvExcelupload] targetPath={} ",targetPath);
+		// DB 처리 시 사용되는 파라미터명(셀명) 설정
+		String[] cellName = {"goodsCd", "resGoodsPrice", "applyStdt", "applyEddt"};
+
+		Collection<GagaMap> ecxelGoodsList = GagaExcelUtil.getList(GagaFileUtil.getConcatenationPath(targetPath, goods.getExcelFileNm()), 0, cellName, 0);
+
+		Collection<GoodsPriceRes> goodsPriceList = new ArrayList<>();
+		for (GagaMap map : ecxelGoodsList) {
+			GoodsPriceRes goodsPriceRes = mapper.convertValue(map, GoodsPriceRes.class);
+			goodsPriceList.add(goodsPriceRes);
+		}
+
+		goodsService.saveGoodsPriceExcelupload(goodsPriceList, goods.getExcelFileNm());
+
+		// 파일 삭제
+		GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(targetPath, goods.getExcelFileNm()));
+
+		return super.ok("");
+	}
+
 }
 }

+ 1 - 0
style24.scm/src/main/webapp/WEB-INF/views/common/fragments/header.html

@@ -32,6 +32,7 @@
 	<link rel="stylesheet" th:href="@{'/ux/plugins/mcxdialog/mcxdialog_ui.css?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" href="/ux/plugins/mcxdialog/mcxdialog_ui.css"/>
 	<link rel="stylesheet" th:href="@{'/ux/plugins/mcxdialog/mcxdialog_ui.css?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" href="/ux/plugins/mcxdialog/mcxdialog_ui.css"/>
 	<link rel="stylesheet" href="/ux/plugins/dropzone/dropzone.css"/>
 	<link rel="stylesheet" href="/ux/plugins/dropzone/dropzone.css"/>
 	<link rel="stylesheet" href="/ux/plugins/c3/c3.css"/>
 	<link rel="stylesheet" href="/ux/plugins/c3/c3.css"/>
+	<link rel="stylesheet" href="/ux/plugins/summernote/summernote.css">
 
 
 	<!-- Custom Common CSS -->
 	<!-- Custom Common CSS -->
 	<link rel="stylesheet" th:href="@{'/ux/css/admin.ui.css?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" href="/ux/css/admin.ui.css"/>
 	<link rel="stylesheet" th:href="@{'/ux/css/admin.ui.css?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" href="/ux/css/admin.ui.css"/>

+ 7 - 247
style24.scm/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -244,11 +244,11 @@
 									<tr>
 									<tr>
 										<th>품목코드<em class="required" title="필수"></em></th>
 										<th>품목코드<em class="required" title="필수"></em></th>
 										<td colspan="3">
 										<td colspan="3">
-											<select  name="itemkindCd" id="itemkindCd" th:disabled="${sessionInfo.roleCd != 'G001_0000' AND sessionInfo.roleCd != 'G001_A000' AND sessionInfo.roleCd != 'G001_A101' AND sessionInfo.roleCd != 'G001_A100' AND sessionInfo.roleCd != 'G001_A001'}">
+											<select  name="itemkindCd" id="itemkindCd" th:disabled="${sessionInfo.roleCd != 'G001_B000'}">
 												<option th:if="${itemkindList}" th:each="oneData, status : ${itemkindList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 												<option th:if="${itemkindList}" th:each="oneData, status : ${itemkindList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 											</select>
 											</select>
 											<input type="hidden" id="orgItemkindCd" name="orgItemkindCd"/>
 											<input type="hidden" id="orgItemkindCd" name="orgItemkindCd"/>
-											<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' }">
+											<th:block th:if="${sessionInfo.roleCd == 'G001_B000'}">
 											<button type="button" class="btn btn-success btn-lg" id="btnGoodsItemkindChange">품목변경</button>
 											<button type="button" class="btn btn-success btn-lg" id="btnGoodsItemkindChange">품목변경</button>
 											</th:block>
 											</th:block>
 										</td>
 										</td>
@@ -446,10 +446,9 @@
 					<ul class="panelBar marT10">
 					<ul class="panelBar marT10">
 						<li class="left">
 						<li class="left">
 							<button type="button" class="btn btnLeft btn-base btn-lg" id="btnGoodsDetailPreview">미리보기</button>
 							<button type="button" class="btn btnLeft btn-base btn-lg" id="btnGoodsDetailPreview">미리보기</button>
-							<!-- <button type="button" class="btn btnLeft btn-base btn-lg" id="btnGoodsDetailImg">이미지보기</button> -->
 						</li>
 						</li>
 						<li class="right">
 						<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'}">
+							<th:block th:if="${sessionInfo.roleCd == 'G001_B000'}">
 							<button type="button" class="btn btnRight btn-success btn-lg" id="btnGoodsDetailSave">저장</button>
 							<button type="button" class="btn btnRight btn-success btn-lg" id="btnGoodsDetailSave">저장</button>
 							</th:block>
 							</th:block>
 						</li>	
 						</li>	
@@ -523,99 +522,10 @@
 		{headerName: "검색어", field: "goodsSnm" , width: 450, cellClass: 'text-left', tooltipField: "goodsSnm"}
 		{headerName: "검색어", field: "goodsSnm" , width: 450, cellClass: 'text-left', tooltipField: "goodsSnm"}
 	];
 	];
 	
 	
-	// specify the columns - 구성상품
-	var columnGoodsComposeDefs = [
-		{headerName: "정렬", field: "dispOrd", width: 70 ,hide: false, cellClass: 'text-center',  rowDrag: true },
-		{headerName: "CRUD", field: "crud", width: 75, minWidth: 75, hide: true},
-		//{headerName: 'No', width: 60, cellClass: 'text-center', valueGetter: function(params) { return params.node.rowIndex + 1 }},
-		{headerName: "이미지", field: "imgPath1", width: 100, height: 60, cellClass: 'text-center'
-			,cellRenderer: function(params) {
-				if (params.data.imgType == "G030_A"){
-					if(!gagajf.isNull(params.data.imgPath6)){
-						return '<img width="60" src="'+ params.data.imgPath1 + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
-					}else{
-						return '<img width="60" src="'+ params.value + '" alt="" onerror="this.src=\'/image/no.gif\';"/>';
-					}	
-						
-				}else{
-					if(!gagajf.isNull(params.data.imgPath6)){
-						return '<img width="60" src="'+ uploadGoodsUrl+params.data.imgPath6 + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
-					}else{
-						return '<img width="60" src="'+ uploadGoodsUrl+params.value + '" alt=""  onerror="this.src=\'/image/no.gif\';"/>';
-					}
-				}
-			}
-		},
-		{headerName: "상품타입", field: "goodsType" , width: 100, cellClass: 'text-center',
-			cellEditorParams: { values: gagaAgGrid.extractValues(goodsTypeList) },
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsTypeList, params.value); },
-			valueParser: function (params) { return gagaAgGrid.lookupKey(goodsTypeList, params.newValue); }
-		},
-		{headerName: "구성상품코드", field: "compsGoodsCd" , width: 130, cellClass: 'text-center'},
-		{headerName: "구성상품코드명", field: "compsGoodsNm" , width: 200, cellClass: 'text-left'},
-		//{headerName: "순서", field: "dispOrd" , width: 80, cellClass: 'text-right',editable: true, required: true},
-		{headerName: "수량", field: "qty" , width: 80, cellClass: 'text-right'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "판매가", field: "currPrice" , width: 100, cellClass: 'text-right'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}
-		},
-		{headerName: "상품판매가", field: "compsCurrPrice" , width: 100, cellClass: 'text-right'
-			,valueFormatter: function(params) { return Number(params.value).addComma();}, editable: true, required: true,
-			cellEditor: 'textCellEditor',
-			cellEditorParams: { maxlength: 14, validType: 'numeric'}
-		},
-		{headerName: "상품판매가ORG", field: "compsCurrPriceOrg" , width: 100, cellClass: 'text-right', hide: true},
-		{headerName: "기준여부(품목-카테고리)", field: "baseYn", width: 160, cellClass: 'text-center'},
-		{headerName: "전시여부", field: "useYn", width: 100, cellClass: 'text-center',editable: true,
-			cellEditor: 'agRichSelectCellEditor',
-			cellEditorParams: { values: gagaAgGrid.extractValues(useYnList), required: true },
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(useYnList, params.value); },
-			valueParser: function (params) { return gagaAgGrid.lookupKey(useYnList, params.newValue); }
-		},
-		{headerName: "옵션명(딜상품용)", field: "compsGoodsOptNm" , width: 200, cellClass: 'text-left',editable: true, required: true},
-		{headerName: "상품상태", field: "goodsStat" , width: 100, cellClass: 'text-center',
-			cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },
-			valueParser: function (params) { return gagaAgGrid.lookupKey(goodsStatList, params.newValue); }
-		},
-		{headerName: "등록일시", field: "regDt", width: 140, cellClass: 'text-center' ,
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}
-		},
-		{headerName: "등록자", field: "regNm", width: 100, cellClass: 'text-center'},
-		{headerName: "수정일시", field: "updDt", width: 140, cellClass: 'text-center' ,
-			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
-			}
-		},
-		{headerName: "수정자", field: "updNm", width: 100, cellClass: 'text-center'}
-	];
-
 	// Get GridOptions
 	// Get GridOptions
 	var gridGoodsHstoryOptions = gagaAgGrid.getGridOptions(columnGoodsHstoryDefs);
 	var gridGoodsHstoryOptions = gagaAgGrid.getGridOptions(columnGoodsHstoryDefs);
 	gridGoodsHstoryOptions.enableBrowserTooltips = true;
 	gridGoodsHstoryOptions.enableBrowserTooltips = true;
-	var gridGoodsComposeOptions = gagaAgGrid.getGridOptions(columnGoodsComposeDefs);
-	gridGoodsComposeOptions.enableBrowserTooltips = true;
-	
-	// 드래그
-	gridGoodsComposeOptions.suppressRowClickSelection = true;
-	gridGoodsComposeOptions.rowDragManaged = true;
-	gridGoodsComposeOptions.stopEditingWhenGridLosesFocus = true;
-	//gridGoodsComposeOptions.rowDeselection = true;
-	//gridGoodsComposeOptions.enableMultiRowDragging = true;
-	//gridGoodsComposeOptions.rowSelection = 'multiple';
-	
-	gridGoodsComposeOptions.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
-	
-	//기준여부 표시
-	gridGoodsComposeOptions.getRowStyle = function(params) {
-		if ("Y" == params.data.baseYn) {
-			return { background: '#1ab394' };
-		}
-	}
-	
+
 	// 상품상세 조회
 	// 상품상세 조회
 	var fnGoodsDeailSearch = function() {
 	var fnGoodsDeailSearch = function() {
 
 
@@ -892,22 +802,6 @@
 		cfnAjaxSubmit("/goods/detail/notiInfo/list", "json", fnGoodsDetailNotiInfoSearchCallback, params);
 		cfnAjaxSubmit("/goods/detail/notiInfo/list", "json", fnGoodsDetailNotiInfoSearchCallback, params);
 	}
 	}
 	
 	
-	//구성상품
-	var fnGoodsComposeListSearch = function(params) {
-		if ("G056_S" == params.goodsType){	//세트
-			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'currPrice', false);
-			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'useYn', false);
-			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'compsGoodsOptNm', false);
-			
-			$('#GoodsComposeBtnArea').addClass("off");
-		}else{	//딜
-			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'qty', false);
-			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'compsCurrPrice', false);
-			gagaAgGrid.showOrHideColumn(gridGoodsComposeOptions, 'compsCurrPriceOrg', false);
-		}
-		gagaAgGrid.fetch("/goods/detail/compose/list?goodsCd=" + params.goodsCd , gridGoodsComposeOptions);
-	}
-	
 	//이력
 	//이력
 	var fnGoodsDetailHstSearch = function() {
 	var fnGoodsDetailHstSearch = function() {
 		gagaAgGrid.fetch("/goods/detail/hst/list?goodsCd=" + $('#goodsDetailForm input[name=goodsCd]').val() , gridGoodsHstoryOptions);
 		gagaAgGrid.fetch("/goods/detail/hst/list?goodsCd=" + $('#goodsDetailForm input[name=goodsCd]').val() , gridGoodsHstoryOptions);
@@ -1566,81 +1460,7 @@
 		}
 		}
 	}
 	}
 
 
-	// 구성 정보 관련 체크
-	var fnGoodsComposeCheck = function(){
-		if ($("#goodsDetailForm input[name=goodsType]").val() == "G056_N"){
-			return true;	
-		}
-		
-		var allData = gagaAgGrid.getAllRowData(gridGoodsComposeOptions);
-		var comSupplyCompCd = '';
-		var comSelfGoodsYn = '';
-		//기준여부 Y  존재하는지 확인
-		var checkBaseYn = false;
-		optCheck = false;
-		$.each(allData, function(index, item) {
-			if (index == 0){
-				comSelfGoodsYn = item.selfGoodsYn;
-				comSupplyCompCd = item.supplyCompCd;
-			}
-			
-			if (item.baseYn == "Y"){
-				checkBaseYn = true;
-			}
-			
-			if (comSelfGoodsYn != item.selfGoodsYn){
-				optCheck = true;
-				mcxDialog.alertC("구성상품중 자사/입점상품 구분값이 다릅니다.<br/>확인해 주세요", {
-					sureBtnText: "확인",
-					sureBtnClick: function() {
-						gridGoodsComposeOptions.api.setFocusedCell(index, "goodsCd", null);
-					}
-				});	
-				return false;
-				/*
-			}else{
-				
-				
-				if (comSelfGoodsYn == "N" && (comSupplyCompCd != item.supplyCompCd)){
-					optCheck = true;
-					mcxDialog.alertC("구성상품중 입점은 같은 업체 상품만 가능합니다.<br/>확인해 주세요", {
-						sureBtnText: "확인",
-						sureBtnClick: function() {
-							gridGoodsComposeOptions.api.setFocusedCell(index, "goodsCd", null);
-						}
-					});	
-					return false;
-				}
-				*/
-			}
-			
-			// 세트 가격 체크
-			if ($("#goodsDetailForm input[name=goodsType]").val() == "G056_S"){
-				if (item.compsCurrPrice <= 0){
-					optCheck = true;
-					mcxDialog.alertC("구성상품 판매가를 확인해 주세요", {
-						sureBtnText: "확인",
-						sureBtnClick: function() {
-							gridGoodsComposeOptions.api.setFocusedCell(index, "compsCurrPrice", null);
-						}
-					});	
-					return false;
-				}
-			}
-			
-		});
-		
-		if(optCheck) {
-			return false;
-		}
-		
-		if (!checkBaseYn){
-			mcxDialog.alert('구성상품중 기준여부를 선택해 주세요.');
-			return false;
-		}
-		
-		return true;
-	}
+	
 
 
 	//저장처리
 	//저장처리
 	var fnGoodsSave = function(){
 	var fnGoodsSave = function(){
@@ -1658,11 +1478,6 @@
 				}
 				}
 				$("#goodsDetailForm input[name=mainColorCd]").val($("#goodsDetailForm input[name=basicColor]:checked").val());
 				$("#goodsDetailForm input[name=mainColorCd]").val($("#goodsDetailForm input[name=basicColor]:checked").val());
 				
 				
-				//구성상품
-				var allData = gagaAgGrid.getAllRowData(gridGoodsComposeOptions);
-				var jsonData = JSON.stringify(allData);
-				$('#goodsDetailForm input[name=goodsComposeList]').val(jsonData);
-				
 				$('#goodsDetailForm input[name=goodsNm]').val($('#goodsDetailForm input[name=goodsNm]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, "&quot;").replace(/\'/gi, "&#39;"));
 				$('#goodsDetailForm input[name=goodsNm]').val($('#goodsDetailForm input[name=goodsNm]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, "&quot;").replace(/\'/gi, "&#39;"));
 				$('#goodsDetailForm input[name=goodsTnm]').val($('#goodsDetailForm input[name=goodsTnm]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, "&quot;").replace(/\'/gi, "&#39;"));
 				$('#goodsDetailForm input[name=goodsTnm]').val($('#goodsDetailForm input[name=goodsTnm]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, "&quot;").replace(/\'/gi, "&#39;"));
 				$('#goodsDetailForm input[name=goodsSnm1]').val($('#goodsDetailForm input[name=goodsSnm1]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, "&quot;").replace(/\'/gi, "&#39;"));
 				$('#goodsDetailForm input[name=goodsSnm1]').val($('#goodsDetailForm input[name=goodsSnm1]').val().trim().replace(/\n|\r/g, "<br/>").replace(/\"/gi, "&quot;").replace(/\'/gi, "&#39;"));
@@ -1883,62 +1698,7 @@
 		});
 		});
 	});
 	});
 	
 	
-	// 구성상품 조회 팝업
-	var fnOpenGoodsDetailPopup = function() {
-		cfnOpenGoodsPopup('fnGoodsDetailGoodsDeal');
-	}
-
-	// 구성상품 조회 팝업 - 상품추가
-	var fnGoodsDetailGoodsDeal = function(goodsData) {
-		if (goodsData.length < 1) return;
-		
-		// 기존상품
-		var oldGoodsDealList = gagaAgGrid.getAllRowData(gridGoodsComposeOptions);
-		var idx = oldGoodsDealList.length+1; 
-		
-		var isExist = false;
-		goodsData.forEach(function(goods){
-			isExist = false;
-
-			gridGoodsComposeOptions.api.forEachNode(function(rowNode, index) {
-
-				if (goods.goodsCd == rowNode.data.extendGoodsCd){
-					isExist = true;
-				}
-			});
-			
-			if (goods.goodsType != 'N'){
-				isExist = true;
-			}
-			if(!isExist){
-				
-				var data = { 
-						  goodsCd : $('#goodsDetailForm input[name=goodsCd]').val()
-						, extendGoodsCd: goods.goodsCd
-						, goodsType: $('#goodsDetailForm input[name=goodsType]').val()
-						, dispOrd: idx
-						, qty: 1
-						, compsCurrPrice: goods.currPrice
-						, extendStaffCurrPrice: goods.currPrice
-						, baseYn: 'N'
-						, goodsStat : goods.goodsStat
-						, useYn: 'Y'
-						, extendGoodsOptNm : goods.goodsNm
-						, extendGoodsCdNm : goods.goodsNm
-						, currPrice : goods.currPrice
-						, selfGoodsYn : goods.selfGoodsYn
-						, imgType : goods.imgType
-						, imgPath1 : goods.imgPath1
-						, imgPath6 : goods.imgPath6
-						};
-				gridGoodsComposeOptions.api.updateRowData({add: [data], addIndex: idx});
-				
-				idx++;
-				$('#goodsDetailForm').find('.tabs .tabsNav li:eq(5) a').attr("style", "color:red;");
-			}
-		});
-		gridGoodsComposeOptions.api.refreshCells();
-	}
+	
 	
 	
 	//엑셀 상품 조회
 	//엑셀 상품 조회
 	$('#btnGoodsDealSearchExcel').on('click', function() {
 	$('#btnGoodsDealSearchExcel').on('click', function() {
@@ -1968,7 +1728,7 @@
 	$(document).ready(function() {
 	$(document).ready(function() {
 
 
 		gagaAgGrid.createGrid('gridGoodsHstoryList', gridGoodsHstoryOptions);
 		gagaAgGrid.createGrid('gridGoodsHstoryList', gridGoodsHstoryOptions);
-		gagaAgGrid.createGrid('gridGoodsComposeList', gridGoodsComposeOptions);
+		//gagaAgGrid.createGrid('gridGoodsComposeList', gridGoodsComposeOptions);
 
 
 		fnGoodsDeailSearch();
 		fnGoodsDeailSearch();
 		
 		

+ 7 - 70
style24.scm/src/main/webapp/WEB-INF/views/goods/GoodsListForm.html

@@ -51,7 +51,7 @@
 					</colgroup>
 					</colgroup>
 					<tr>
 					<tr>
 						<th>업체/브랜드<em class="required" title="필수"></em></th>
 						<th>업체/브랜드<em class="required" title="필수"></em></th>
-						<td colspan="3">
+						<td colspan="5">
 							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y" th:checked="${sessionInfo.roleCd} != 'G001_B000'"/>자사</label>
 							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y" th:checked="${sessionInfo.roleCd} != 'G001_B000'"/>자사</label>
 							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N" th:checked="${sessionInfo.roleCd} == 'G001_B000'"/>입점</label>
 							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N" th:checked="${sessionInfo.roleCd} == 'G001_B000'"/>입점</label>
 							<select name="supplyCompCd" id="supplyCompCd">
 							<select name="supplyCompCd" id="supplyCompCd">
@@ -60,13 +60,13 @@
 							</select>
 							</select>
 							<span id="multiBrand"></span>
 							<span id="multiBrand"></span>
 						</td>
 						</td>
-						<th>상품타입</th>
+						<!-- <th>상품타입</th>
 						<td>
 						<td>
 							<select name="goodsType" id="goodsType">
 							<select name="goodsType" id="goodsType">
 								<option value="">[전체]</option>
 								<option value="">[전체]</option>
 								<option th:if="${goodsTypeList}" th:each="oneData, status : ${goodsTypeList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 								<option th:if="${goodsTypeList}" th:each="oneData, status : ${goodsTypeList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 							</select>
-						</td>
+						</td> -->
 						<th rowspan="4">키워드<em class="required" title="필수"></em></th>
 						<th rowspan="4">키워드<em class="required" title="필수"></em></th>
 						<td rowspan="4">
 						<td rowspan="4">
 							<select name="search" id="search">
 							<select name="search" id="search">
@@ -179,10 +179,6 @@
 								<option value="">[전체]</option>
 								<option value="">[전체]</option>
 								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 								<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 							</select>
-							<!-- <label class="chkBox"><input type="checkbox" name="returnableYn" value="Y"/>반품가능</label>
-							<label class="chkBox"><input type="checkbox" name="changeableYn" value="Y"/>교환가능</label>
-							<label class="chkBox"><input type="checkbox" name="returnFeeFreeYn" value="Y"/>무료반품</label>
-							<label class="chkBox"><input type="checkbox" name="changeFeeFreeYn" value="Y"/>무료교환</label> -->
 						</td>
 						</td>
 						<th>담당MD</th>
 						<th>담당MD</th>
 						<td>
 						<td>
@@ -226,8 +222,6 @@
 					<button type="button" class="btn btn-base btn-lg" id="btnGoodsExcelUpLoad">엑셀조회</button>
 					<button type="button" class="btn btn-base btn-lg" id="btnGoodsExcelUpLoad">엑셀조회</button>
 				</li>
 				</li>
 				<li class="right">
 				<li class="right">
-					<button type="button" class="btn btn-primary btn-lg"  id="btnGoodsSetMake">세트상품구성</button>
-					<button type="button" class="btn btn-primary btn-lg" id="btnGoodsSetDeal">딜상품구성</button>
 					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
 					검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
 					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
 					쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
 					<select id="pageSize" name="pageSize">
 					<select id="pageSize" name="pageSize">
@@ -251,8 +245,7 @@
 			</ul>
 			</ul>
 			<ul class="panelBar">
 			<ul class="panelBar">
 				<li class="right">
 				<li class="right">
-					<button type="button" class="btn btn-info btn-sm"  onclick="fnGoodsStatArea();" 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>
-					<button type="button" class="btn btn-info btn-sm" onclick="fnGoodsStaSelfNotArea();" 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>
+					<button type="button" class="btn btn-info btn-sm"  onclick="fnGoodsStatArea();" th:if="${sessionInfo.roleCd == 'G001_B000'}">상태일괄적용</button>
 				</li>
 				</li>
 			</ul>
 			</ul>
 			<ul class="boxContent off" id="goodsStatArea">
 			<ul class="boxContent off" id="goodsStatArea">
@@ -273,19 +266,10 @@
 							<td>
 							<td>
 								<select  name="goodsStatC" id="goodsStatC">
 								<select  name="goodsStatC" id="goodsStatC">
 									<option value="">[선택]</option>
 									<option value="">[선택]</option>
-									<option th:if="${goodsStatList}" th:each="oneData, status : ${goodsStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									<option th:if="${goodsStatChangeList}" th:each="oneData, status : ${goodsStatChangeList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 								</select>
 								</select>
 								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('goodsStat')">적용</button>
 								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('goodsStat')">적용</button>
 							</td>
 							</td>
-							<th>재고연동여부</th>
-							<td >
-								<select id="erpStockLinkYnC" name="erpStockLinkYnC">
-									<option value="">[선택]</option>
-									<option value="Y">연동</option>
-									<option value="N">비연동</option>
-								</select>
-								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('erpStockLinkYn')" >적용</button>
-							</td>
 							<th>정상/이월 구분</th>
 							<th>정상/이월 구분</th>
 							<td>
 							<td>
 								<select  name="formalGbC" id="formalGbC">
 								<select  name="formalGbC" id="formalGbC">
@@ -295,7 +279,7 @@
 								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('formalGb')" >적용</button>
 								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('formalGb')" >적용</button>
 							</td>
 							</td>
 							<th>반품가능여부</th>
 							<th>반품가능여부</th>
-							<td>
+							<td colspan="3">
 								<select id="returnableYnC" name="returnableYnC">
 								<select id="returnableYnC" name="returnableYnC">
 									<option value="">[선택]</option>
 									<option value="">[선택]</option>
 									<option value="Y">가능</option>
 									<option value="Y">가능</option>
@@ -359,26 +343,6 @@
 					</table>
 					</table>
 				</li>
 				</li>
 			</ul>
 			</ul>
-			<ul class="boxContent off" id="goodsStatSelfNoArea">
-				<li class="pad20">
-					<table class="frmStyle">
-						<colgroup>
-							<col width="7%"/>
-							<col/>
-						</colgroup>
-						<tr>
-							<th>상품상태</th>
-							<td>
-								<select  name="goodsStatNC" id="goodsStatNC">
-									<option value="">[선택]</option>
-									<option th:if="${goodsStatList}" th:each="oneData, status : ${goodsStatList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-								</select>
-								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsStateSelfNo('goodsStat')">적용</button>
-							</td>
-						</tr>
-					</table>
-				</li>
-			</ul>
 			<!-- 검색결과 영역 -->
 			<!-- 검색결과 영역 -->
 		</div>
 		</div>
 		</form>
 		</form>
@@ -935,39 +899,12 @@
 		if ($("#searchForm").find("#goodsStatArea").hasClass('off')) {
 		if ($("#searchForm").find("#goodsStatArea").hasClass('off')) {
 			$("#searchForm").find("#goodsStatArea").removeClass('off');
 			$("#searchForm").find("#goodsStatArea").removeClass('off');
 			$("#searchForm").find("#goodsStatArea").addClass('on');
 			$("#searchForm").find("#goodsStatArea").addClass('on');
-			
-			$("#searchForm").find("#goodsStatSelfNoArea").removeClass('on');
-			$("#searchForm").find("#goodsStatSelfNoArea").addClass('off');
 		}else{
 		}else{
 			$("#searchForm").find("#goodsStatArea").removeClass('on');
 			$("#searchForm").find("#goodsStatArea").removeClass('on');
 			$("#searchForm").find("#goodsStatArea").addClass('off');
 			$("#searchForm").find("#goodsStatArea").addClass('off');
 		}
 		}
 	}
 	}
 	
 	
-	// 입점 상태일괄변경 버튼 클릭시
-	var fnGoodsStaSelfNotArea = function(){
-		if ($("#searchForm").find("#goodsStatSelfNoArea").hasClass('off')) {
-			$("#searchForm").find("#goodsStatSelfNoArea").removeClass('off');
-			$("#searchForm").find("#goodsStatSelfNoArea").addClass('on');
-			
-			$("#searchForm").find("#goodsStatArea").removeClass('on');
-			$("#searchForm").find("#goodsStatArea").addClass('off');
-		}else{
-			$("#searchForm").find("#goodsStatSelfNoArea").removeClass('on');
-			$("#searchForm").find("#goodsStatSelfNoArea").addClass('off');
-		}
-	}
-	
-	//세트상품구성 클릭 시
-	$('#btnGoodsSetMake').click(function(e) {
-		cfnOpenGoodsSetPopup();
-	});
-	
-	//딜상품구성 클릭 시
-	$('#btnGoodsSetDeal').click(function(e) {
-		cfnOpenGoodsDealPopup();
-	});
-
 	// 자사/입점 변경여부
 	// 자사/입점 변경여부
 	$("#searchForm input[name=selfYn]").bind('click change', function () {
 	$("#searchForm input[name=selfYn]").bind('click change', function () {
 		var radioValue = $(this).val();
 		var radioValue = $(this).val();
@@ -1017,5 +954,5 @@
 /*]]>*/
 /*]]>*/
 </script>
 </script>
 	</div>
 	</div>
-
+
 </html>
 </html>