فهرست منبع

Merge branch 'develop' of http://112.172.147.34:4936/style24/STYLE24.git into develop

gagamel 5 سال پیش
والد
کامیت
3518273d3b

+ 27 - 25
style24.admin/src/main/java/com/style24/admin/biz/dao/TsaRendererDao.java

@@ -3,8 +3,10 @@ package com.style24.admin.biz.dao;
 import java.util.Collection;
 
 import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.CommonCode;
+import com.style24.persistence.domain.Itemkind;
 import com.style24.persistence.domain.SupplyCompany;
 
 /**
@@ -69,15 +71,15 @@ public interface TsaRendererDao {
 //	 */
 //	Collection<CommonCode> getVendorExtmallSellStoreList(String vendorId);
 //
-//	/**
-//	 * 브랜드 목록
-//	 * @param brand --브랜드 정보
-//	 * @return 브랜드 목록
-//	 * @author qkwlstktma
-//	 * @since 2019. 12. 6
-//	 */
-//	Collection<CommonCode> getBrandList(AdmBrand brand);
-//
+	/**
+	 * 브랜드 목록
+	 * @param brand --브랜드 정보
+	 * @return 브랜드 목록
+	 * @author eskim
+	 * @since 2020. 10. 20
+	 */
+	Collection<CommonCode> getBrandList(Brand brand);
+
 //	/**
 //	 * 권한별 브랜드 목록
 //	 * @param userId - 사용자ID
@@ -106,15 +108,15 @@ public interface TsaRendererDao {
 //	 */
 //	Collection<CommonCode> getCateInfoList(String goodsCd);
 //
-//	/**
-//	 * 품목 목록
-//	 * @param itemkind
-//	 * @return
-//	 * @author eskim
-//	 * @since 2019. 12. 10
-//	 */
-//	Collection<CommonCode> getItemkindList(AdmItemkind itemkind);
-//
+	/**
+	 * 품목 목록
+	 * @param itemkind
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 19
+	 */
+	Collection<CommonCode> getItemkindList(Itemkind itemkind);
+
 //	/**
 //	 * 브랜드그룹 목록
 //	 * @return
@@ -141,13 +143,13 @@ public interface TsaRendererDao {
 //	 */
 //	Collection<CommonCode> getTCategoryList(String cateGb);
 //
-//	/**
-//	 * 브랜드에 등록된 MD 목록
-//	 * @return MD 목록
-//	 * @author eskim
-//	 * @since 2020. 01. 07
-//	 */
-//	Collection<CommonCode> getBrandMdList();
+	/**
+	 * 브랜드에 등록된 MD 목록
+	 * @return MD 목록
+	 * @author eskim
+	 * @since 2020. 10. 19
+	 */
+	Collection<CommonCode> getBrandMdList();
 //
 //	/**
 //	 * 택배사명 목록 조회

+ 45 - 43
style24.admin/src/main/java/com/style24/admin/biz/service/TsaRendererService.java

@@ -6,8 +6,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.style24.admin.biz.dao.TsaRendererDao;
+import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.CommonCode;
+import com.style24.persistence.domain.Itemkind;
 import com.style24.persistence.domain.SupplyCompany;
 
 import lombok.extern.slf4j.Slf4j;
@@ -228,18 +230,18 @@ public class TsaRendererService {
 //	//		return rendererDao.getBrandList(brand);
 //	//	}
 //	//
-//	/**
-//	 * 공급업체 브랜드 목록
-//	 * @param supplyCompCd - 공급업체코드
-//	 * @return
-//	 * @author gagamel
-//	 * @since 2019. 10. 2
-//	 */
-//	public Collection<CommonCode> getSupplyCompanyBrandList(String supplyCompCd) {
-//		AdmBrand brand = new AdmBrand();
-//		brand.setSupplyCompCd(supplyCompCd);
-//		return rendererDao.getBrandList(brand);
-//	}
+	/**
+	 * 공급업체 브랜드 목록
+	 * @param supplyCompCd - 공급업체코드
+	 * @return
+	 * @author gagamel
+	 * @since 2019. 10. 20
+	 */
+	public Collection<CommonCode> getSupplyCompanyBrandList(String supplyCompCd) {
+		Brand brand = new Brand();
+		brand.setSupplyCompCd(supplyCompCd);
+		return rendererDao.getBrandList(brand);
+	}
 //
 //	/**
 //	 * 브랜드그룹별 브랜드 목록
@@ -324,28 +326,28 @@ public class TsaRendererService {
 //	//		return rendererDao.getCateInfoList(goodsCd);
 //	//	}
 //
-//	/**
-//	 * 품목 목록
-//	 * @return 품목 목록
-//	 * @author eskim
-//	 * @since 2019. 12. 10
-//	 */
-//	public Collection<CommonCode> getAllItemkindList() {
-//		AdmItemkind itemkind = new AdmItemkind();
-//		return this.getItemkindList(itemkind);
-//	}
-//
-//	/**
-//	 * 품목 목록
-//	 * @param itemkind - 품목 정보
-//	 * @return 품목 목록
-//	 * @author eskim
-//	 * @since 2019. 12. 10
-//	 */
-//	public Collection<CommonCode> getItemkindList(AdmItemkind itemkind) {
-//		return rendererDao.getItemkindList(itemkind);
-//	}
-//
+	/**
+	 * 품목 목록
+	 * @return 품목 목록
+	 * @author eskim
+	 * @since 2020. 10. 19
+	 */
+	public Collection<CommonCode> getAllItemkindList() {
+		Itemkind itemkind = new Itemkind();
+		return this.getItemkindList(itemkind);
+	}
+
+	/**
+	 * 품목 목록
+	 * @param itemkind - 품목 정보
+	 * @return 품목 목록
+	 * @author eskim
+	 * @since 2020. 10. 19
+	 */
+	public Collection<CommonCode> getItemkindList(Itemkind itemkind) {
+		return rendererDao.getItemkindList(itemkind);
+	}
+
 //	/**
 //	 * 브랜드그룹 목록
 //	 * @return 브랜드그룹 목록
@@ -378,15 +380,15 @@ public class TsaRendererService {
 //		return rendererDao.getTCategoryList(cateGb);
 //	}
 //
-//	/**
-//	 * 브랜드에 등록된 MD 목록
-//	 * @return MD 목록
-//	 * @author eskim
-//	 * @since 2020. 01. 07
-//	 */
-//	public Collection<CommonCode> getBrandMdList() {
-//		return rendererDao.getBrandMdList();
-//	}
+	/**
+	 * 브랜드에 등록된 MD 목록
+	 * @return MD 목록
+	 * @author eskim
+	 * @since 2020. 10. 19
+	 */
+	public Collection<CommonCode> getBrandMdList() {
+		return rendererDao.getBrandMdList();
+	}
 //
 //	/**
 //	 * 택배사명 목록 조회

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

@@ -4,6 +4,7 @@ import java.util.Collection;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -14,13 +15,17 @@ import org.springframework.web.servlet.ModelAndView;
 import com.style24.admin.biz.service.TsaGoodsService;
 import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
+import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.domain.Color;
+import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.Itemkind;
 import com.style24.persistence.domain.NotiInfo;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponse;
 
 /**
@@ -249,11 +254,78 @@ public class TsaGoodsController extends TsaBaseController {
 	public ModelAndView listForm() {
 		ModelAndView mav = new ModelAndView();
 
+		mav.addObject("siteList", rendererService.getAvailCommonCodeList("G000"));
+		// 공급업체
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList());
+		// 상품상태
+		String[] exceptCds = {"G008_00"};
+		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
+		// 정상이월
+		mav.addObject("formalGbList", rendererService.getAvailCommonCodeList("G009"));
+		// 성별
+		mav.addObject("sexGbList", rendererService.getAvailCommonCodeList("G007"));
+		// 시즌
+		mav.addObject("seasonList", rendererService.getAvailCommonCodeList("G006"));
+		// 년도
+		mav.addObject("styleYearList", rendererService.getAvailCommonCodeList("G006"));
+		// 연령대
+		mav.addObject("ageGrpCdList", rendererService.getAvailCommonCodeList("G023"));
+		// 사용여부
+		mav.addObject("useYnList", rendererService.getAvailCommonCodeList("G002"));
+		// 품목
+		mav.addObject("itemkindList", rendererService.getAllItemkindList());
+		// 상품구분
+		mav.addObject("goodsTypeList", rendererService.getAvailCommonCodeList("G056"));
+		// MD
+		//mav.addObject("brandMdList", rendererService.getBrandMdList());
+
 		mav.setViewName("goods/GoodsListForm");
 
 		return mav;
 	}
 
+	/**
+	 * 상품목록 조회
+	 *
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 20
+	 */
+	@PostMapping("/list")
+	@ResponseBody
+	public GagaMap getGoodsList(@RequestBody GoodsSearch goodsSearch) {
+		// log.debug("[getGoodsList] goodsSearch=>{}", goodsSearch);
+		GagaMap result = new GagaMap();
+
+		// 입점업체담당자는 업체코드 설정
+		if ("B000".equals(TsaSession.getInfo().getRoleCd())) {
+			goodsSearch.setSupplyCompCd(TsaSession.getInfo().getSupplyCompCd());
+			goodsSearch.setMdId(TsaSession.getInfo().getUserId());
+		}
+
+		// multi row 검색관련 처리
+		if (!StringUtils.isEmpty(goodsSearch.getCondition())) {
+//			TsitUtil tsitUtil = new TsitUtil();
+//			String condition = tsitUtil.replaceMultiSelectParamsArr(goodsSearch.getCondition());
+			//goodsSearch.setConditionList(condition.split(","));
+
+			if ("searchExtendGoodsCd".equals(goodsSearch.getSearch())) {
+				goodsSearch.setSearchGb("EXTEND");
+			} else if ("searchMasterGoodsCd".equals(goodsSearch.getSearch())) {
+				goodsSearch.setSearchGb("MASTER");
+			}
+		}
+
+		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
+		goodsSearch.setPageable(new TsaPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
+		//goodsSearch.getPageable().setTotalCount(goodsService.getGoodsListCount(goodsSearch));
+
+		result.set("pageing", goodsSearch);
+		//result.set("goodsList", goodsService.getGoodsList(goodsSearch));
+
+		return result;
+	}
+
 	/**
 	 * 상품 대량 등록 화면
 	 *

+ 190 - 0
style24.admin/src/main/java/com/style24/admin/biz/web/TsaRendererController.java

@@ -0,0 +1,190 @@
+package com.style24.admin.biz.web;
+
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.style24.admin.biz.service.TsaRendererService;
+import com.style24.admin.support.controller.TsaBaseController;
+import com.style24.persistence.domain.CommonCode;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 콤보박스, 체크박스, 라디오버튼 구성 시 필요한 Renderer Controller
+ *
+ * @author renderer
+ * @since 2020. 10. 20
+ */
+@Controller
+@RequestMapping("/renderer")
+@Slf4j
+public class TsaRendererController extends TsaBaseController {
+
+	@Autowired
+	private TsaRendererService rendererService;
+
+	/**
+	 * 입점업체브랜드 목록
+	 * @param supplyCompCd - 입점업체관리일련번호
+	 * @return
+	 * @author gagamel
+	 * @since 2019. 6. 7
+	 */
+	@GetMapping("/supplyCompany/brand/list/{supplyCompCd}")
+	@ResponseBody
+	public Collection<CommonCode> getSupplyCompanyBrandList(@PathVariable String supplyCompCd) {
+		return rendererService.getSupplyCompanyBrandList(supplyCompCd);
+	}
+//
+//	/**
+//	 * 브랜드그룹별 브랜드 목록
+//	 * @param brandGrpNm - 브랜드그룹명
+//	 * @return
+//	 * @author gagamel
+//	 * @since 2020. 1. 10
+//	 */
+//	@GetMapping("/group/brand/list/{brandGrpNm}")
+//	@ResponseBody
+//	public Collection<AdmCommonCode> getGroupBrandList(@PathVariable String brandGrpNm) {
+//		return rendererService.getGroupBrandList(brandGrpNm);
+//	}
+//
+//	/**
+//	 * 권한별 브랜드 목록
+//	 * @return
+//	 * @author eskim
+//	 * @since 2019. 6.17
+//	 */
+//	@GetMapping("/brand/AuthBrandlist")
+//	@ResponseBody
+//	public Collection<AdmCommonCode> getAuthBrandList() {
+//		return rendererService.getAuthBrandList(AdmSession.getInfo().getUserId());
+//	}
+//
+//	/**
+//	 * 출고처 목록
+//	 * @param supplyCompCd - 공급업체코드
+//	 * @return
+//	 * @throws Exception
+//	 * @author sasa004
+//	 * @since 2019. 12.12
+//	 */
+//	@GetMapping("/deliveryLoc/list/{supplyCompCd}")
+//	@ResponseBody
+//	public Collection<AdmCommonCode> getDeliveryLocList(@PathVariable String supplyCompCd) {
+//		return rendererService.getDeliveryLocList(supplyCompCd);
+//	}
+//
+//	/**
+//	 * 벤더외부몰 목록
+//	 * @param vendorId - 벤더ID
+//	 * @return
+//	 * @author gagamel
+//	 * @since 2019. 8. 11
+//	 */
+//	@GetMapping("/vendor/extmall/list/{vendorId}")
+//	@ResponseBody
+//	public Collection<AdmCommonCode> getVendorExtmallList(@PathVariable String vendorId) {
+//		return rendererService.getVendorExtmallList(vendorId);
+//	}
+//
+//	/**
+//	 * 벤더외부몰판매매장 목록
+//	 * @param vendorId - 벤더ID
+//	 * @return
+//	 * @author gagamel
+//	 * @since 2020. 4. 28
+//	 */
+//	@GetMapping("/vendor/extmall/sellStore/list/{vendorId}")
+//	@ResponseBody
+//	public Collection<AdmCommonCode> getVendorExtmallSellStoreList(@PathVariable String vendorId) {
+//		return rendererService.getVendorExtmallSellStoreList(vendorId);
+//	}
+//
+//	/**
+//	 * 현재 유효한 공통코드 목록
+//	 * @param cdGb - 공통그룹코드
+//	 * @return
+//	 * @author eskim
+//	 * @since 2020. 01. 22
+//	 */
+//	@GetMapping("/avail/commonCode/list/{cdGb}")
+//	@ResponseBody
+//	public Collection<AdmCommonCode> getAvailCommonCodeList(@PathVariable String cdGb) {
+//		return rendererService.getAvailCommonCodeList(cdGb);
+//	}
+//
+//	/**
+//	 * 업체별 색상 목록
+//	 * @param cdGb - 공통그룹코드
+//	 * @return
+//	 * @author eskim
+//	 * @since 2020. 01. 22
+//	 */
+//	@GetMapping("/avail/color/list/{supplyCompCd}")
+//	@ResponseBody
+//	public Collection<AdmCommonCode> getColorList(@PathVariable String supplyCompCd) {
+//		AdmColor color = new AdmColor();
+//		color.setSupplyCompCd(supplyCompCd);
+//		return rendererService.getColorList(color);
+//	}
+//
+//	/**
+//	 * MD별 브랜드 목록
+//	 * @param mdId - 엠디아이디
+//	 * @return
+//	 * @author jaewonho
+//	 * @since 2020. 02. 11
+//	 */
+//	@GetMapping("/md/brand/list/{mdId}")
+//	@ResponseBody
+//	public Collection<AdmCommonCode> getMdBrandList(@PathVariable String mdId) {
+//		return rendererService.getMdBrandList(mdId);
+//	}
+//
+//	/**
+//	 * MD별 브랜드그룹 목록
+//	 * @param mdId - 엠디아이디
+//	 * @return
+//	 * @author jaewonho
+//	 * @since 2020. 02. 11
+//	 */
+//	@GetMapping("/md/brand/grp/list/{mdId}")
+//	@ResponseBody
+//	public Collection<AdmCommonCode> getMdBrandGrpList(@PathVariable String mdId) {
+//		return rendererService.getMdBrandGrpList(mdId);
+//	}
+//
+//	/**
+//	 * 판매몰 목록
+//	 * @param
+//	 * @return
+//	 * @author swkim
+//	 * @since 2020. 03. 19
+//	 */
+//	@GetMapping("/sellStore/list")
+//	@ResponseBody
+//	public Collection<AdmCommonCode> getSellStoreList() {
+//		return rendererService.getSellStoreList();
+//	}
+//
+//	/**
+//	 * 제휴링크 목록
+//	 * @param afChannel - 제휴채널
+//	 * @return
+//	 * @author gagamel
+//	 * @since 2020. 5. 4
+//	 */
+//	@GetMapping("/aflink/list/{afChannel}")
+//	@ResponseBody
+//	public Collection<AdmCommonCode> getAflinkList(@PathVariable String afChannel) {
+//		return rendererService.getAflinkList(afChannel);
+//	}
+
+}

+ 19 - 18
style24.admin/src/main/java/com/style24/persistence/domain/Brand.java

@@ -6,7 +6,7 @@ import lombok.Data;
 
 /**
  * 브랜드 Domain
- * 
+ *
  * @author gagamel
  * @since 2020. 10. 7
  */
@@ -21,23 +21,24 @@ public class Brand extends TsaBaseDomain {
 //	private String refVal;		//관련값(쿠폰유형이 "10:상품쿠폰"일 때는 상품코드, "11:브랜드쿠폰"일 때는 브랜드코드, "12:카테고리쿠폰"일 때는 카테고리코드)
 //	private String delYn;		//삭제여부
 
-	private String brandGb;		// 브랜드구분(자사(S) 입점(E))
-	private String brandCd;		// 브랜드코드
-	private String brandEnm;	// 브랜드영문명
-	private String brandKnm;	// 브랜드한글명
-	private String brandGrpNm;	// 브랜드그룹명
-//	private String erpBrandCd;	// ERP브랜드코드
-	private int minOrdAmt;		// 무료배송비최소주문금액
-	private int delvFee;		// 배송비
-	private String delvLocCd;	// 출고처코드
-	private String delvLocNm;	// 출고처명
-	private float sellFeeRate;	// 판매수수료율
-	private String brandImg;	// 브랜드이미지
-	private float pntPrate10;	// 포인트적립율(PC정상)
-	private float pntMrate10;	// 포인트적립율(모바일정상)
-	private float pntPrate20;	// 포인트적립율(PC이월)
-	private float pntMrate20;	// 포인트적립율(모바일이월)
-	private float dispOrd;		// 표시순서
+	private String brandCd;		//브랜드코드
+	private String brandEnm;		//브랜드영문명
+	private String brandKnm;		//브랜드한글명
+	private String brandGrpNm;		//브랜드그룹명
+	private String supplyCompCd;		//공급업체코드(공급업체)
+	private String distributionGb;		//유통구분(공통코드 G065)
+	private String selfYn;		//자사여부(Y:자사, N:입점)
+	private String erpBrandCd;		//ERP브랜드코드
+	private int minOrdAmt;		//무료배송비최소주문금액
+	private int delvFee;		//배송비
+	private String delvLocCd;		//출고처코드(출고처)
+	private float sellFeeRate;		//판매수수료율
+	private float pntPrate10;		//포인트적립율(PC정상)
+	private float pntMrate10;		//포인트적립율(모바일정상)
+	private float pntPrate20;		//포인트적립율(PC이월)
+	private float pntMrate20;		//포인트적립율(모바일이월)
+	private int dispOrd;		//표시순서
+	private String useYn;		//사용여부(Y:사용)
 
 //	//TB_SUPPLY_COMPANY
 //	private String supplyCompCd; /*공급업체코드*/

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

@@ -0,0 +1,134 @@
+package com.style24.persistence.domain;
+
+import java.util.Collection;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.style24.persistence.TsaBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 상품 Domain
+ *
+ * @author eskim
+ * @since 2020. 10. 20
+ */
+@SuppressWarnings("serial")
+@Data
+public class Goods extends TsaBaseDomain {
+
+	private String goodsCd;		//상품코드
+	private String brandCd;		//브랜드코드
+	private String itemkindCd;		//품목코드
+	private String goodsNm;		//상품명
+	private String goodsTnm;		//상품타이틀명
+	private String goodsSnm;		//상품검색명
+	private String goodsSnm1;		//상품검색명1(사용자등록용)
+	private String colorCd;		//색상코드
+	private String styleYear;		//스타일연도
+	private String seasonCd;		//시즌코드(공통코드G006)
+	private String sexGb;		//성별구분(공통코드G007)
+	private String goodsNum;		//품번(자사상품만 사용)
+	private String goodsType;		//상품타입(공통코드G056)
+	private int listPrice;		//정상가(최초판매가)
+	private int currPrice;		//현재판매가
+	private int currBprice;		//변경전현재판매가
+	private String priceUpdDt;		//가격변경일시
+	private float dcRate;		//할인율
+
+	private String goodsStat;		//상품상태(공통코드G008)
+	private String dispYn;		//노출여부
+	private String goodsGb;		//해외구매대행/병행수입 상품일 경우 주문 시 통관부호 입력 란이 추가되어야 한다
+	private String distributionGb;		//유통구분(공콩코드 G065)
+	private String selfGoodsYn;		//자사상품여부
+	private String supplyCompCd;		//공급업체코드
+	private String supplyGoodsCd;		//공급업체상품코드(원코드)
+	private String ageGrpCd;		//상품연령대(공통코드 G023)
+	private int delvFee;		//배송비
+	private int minOrdAmt;		//무료배송비최소구매금액
+	private float pntPrate;		//포인트적립율(PC)
+	private float pntMrate;		//포인트적립율(모바일)
+	private float sellFeeRate;		//판매수수료율
+	private String formalGb;		//정상이월구분(공통코드G009)
+	private String changeableYn;		//교환가능여부
+	private String returnableYn;		//반품가능여부
+	private String changeFeeFreeYn;		//교환배송비무료여부
+	private String returnFeeFreeYn;		//반품배송비무료여부
+	private String prePpntUsableYn;		//선포인트사용가능여부(PC)
+	private String preMpntUsableYn;		//선포인트사용가능여부(모바일)
+	private int minOrdQty;		//최소주문수량
+	private int maxOrdQty;		//최대주문수량
+	private int dayMaxOrdQty;		//ID당1일최대구매수량
+	private String frstCfrmDt;		//최초승인일시
+	private String makeNm;		//제조국(원산지)
+	private String makeYmd;		//제조연월일
+	private String taxGb;		//과세구분(10:과세, 20:비과세)
+	private String erpPriceLinkYn;		//ERP가격연계여부(자사상품만 사용. Y:연계)
+	private String erpStockLinkYn;		//ERP재고연계여부(자사상품만 사용. Y:연계)
+
+//	private String goodsDesc;
+//	private String goodsPcTopDesc;
+//	private String goodsPcDownDesc;
+//	private String goodsMobileTopDesc;
+//	private String goodsMobileDownDesc;
+//	private String chkDescKeep = "N";
+//
+//	private String chDataYn = "N";
+//	private String chImgYn = "N";
+//	private String chNotiYn = "N";
+//	private String chStockDataYn = "N";
+//	private String stockQtySum;
+//	private String goodsImageYn;
+//	private String itemkindNm;
+//	private String niClsfCd;
+//	private Integer currPriceOrg;
+//
+//	private String imgType;
+//	private String imgPath1;
+//	private String imgPath4;
+//
+//	private String niClsfNm;
+//
+//	private String goodsRegMsg;
+//	private String procJob;
+//	private String excelFileNm;
+//	private String searchGb;
+//
+//	private String blankFlag;
+//
+//	private Integer sizeCurrStockQty;
+//	private Integer sizeBaseStockQty;
+//	private Integer sizeSaleStockQty;
+//	private Integer sizeStockQty;
+//	private String goodsSizeCd;
+//	private String sizeSoldoutYn;
+//	private String siteCd;
+//	private Integer sellDay15Qty;
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] arrGoodsCd;
+
+	// 상품옵션/재고
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] sizeCd; // 상품 사이즈
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] baseStockQty; // 안전재고
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] currStockQty; // erp가용재고
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] editCurrStockQty; // 수정가용재고
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] soldoutYn; // 품절여부
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] dispOrd; // 우선순위
+
+	private Collection<GoodsNotiInfo> notiListNew; // 고시항목
+
+	private String notiList; // 고시항목
+	private String delvLocCd; // 고시항목
+}

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

@@ -0,0 +1,43 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TsaBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 상품 이미지 Domain
+ * @author eskim
+ * @since 2020. 10. 20
+ */
+@SuppressWarnings("serial")
+@Data
+public class GoodsImg extends TsaBaseDomain {
+
+	private String goodsCd;
+	private String imgType;
+	private String imgPath1;
+	private String imgPath2;
+	private String imgPath3;
+	private String imgPath4;
+	private String imgPath5;
+	private String imgPath6;
+	private String imgPath7;
+	private String imgPath8;
+	private String imgPath9;
+	private String imgPath10;
+	private String imgPath11;
+	private String imgPath12;
+	private String imgPath13;
+	private String imgPath14;
+	private String imgPath15;
+	private String imgPath16;
+	private String imgPath17;
+	private String imgPath18;
+	private String imgPath19;
+	private String imgPath20;
+
+	private String goodsImgPath;
+	private String col;
+
+
+}

+ 26 - 0
style24.admin/src/main/java/com/style24/persistence/domain/GoodsNotiInfo.java

@@ -0,0 +1,26 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TsaBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 상품 고시 Domain
+ *
+ * @author eskim
+ * @since 2020. 10. 20
+ */
+@SuppressWarnings("serial")
+@Data
+public class GoodsNotiInfo extends TsaBaseDomain {
+
+	private String goodsCd;
+	private String niClsfCd;
+	private String niItemCd;
+	private String niContent;
+	private int dispOrd;
+
+	private String niItemNm;
+	private String supplyCompCd;
+
+}

+ 104 - 0
style24.admin/src/main/java/com/style24/persistence/domain/GoodsSearch.java

@@ -0,0 +1,104 @@
+package com.style24.persistence.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.style24.persistence.TsaBaseDomain;
+
+import lombok.Data;
+
+
+/**
+ * 상품 검색 Domain
+ *
+ * @author eskim
+ * @since 2019. 12. 10
+ */
+@SuppressWarnings("serial")
+@Data
+public class GoodsSearch extends TsaBaseDomain {
+
+	private int startRow;
+	private int endRow;
+	private String search; // 키워드 종류
+	private String condition; // 키워드 종류별 값
+	private String supplyCompCd;
+	private String brandGrpNm;
+	private String brandCd;
+	private String itemkindCd;
+	private String goodsStat;
+	private String styleYear;
+	private String seasonCd;
+	private String sexGb;
+	private String changeableYn;
+	private String returnableYn;
+	private String returnFeeFreeYn;
+	private String changeFeeFreeYn;
+	private String formalGb;
+	private String soldOutYn;
+	private String erpStockLinkYn;
+	private String erpPriceLinkYn;
+	private String erpInfoLinkYn;
+	private String erpTagPriceLinkYn;
+	private String mdId;
+	private String currPrice;
+	private String currPriceSt;
+	private String currPriceEd;
+	private String dcRate;
+	private String dcRateSt;
+	private String dcRateEd;
+	private String pntRateSt;
+	private String pntRateEd;
+	private String stDate;
+	private String edDate;
+	private String stockQtySt;
+	private String stockQtyEd;
+	private String cateCd;
+
+	private String regSuccYn;
+	private String searchGb;
+	private String callBackFun;
+	private String applyStdt;
+	private String applyEddt;
+	private String sizeCd;
+	private String colorCd;
+	private String beforSkipFlag;
+	private String goodsTnm;
+	private String imageViewYn;
+	private String goodsCd;
+	private String goodsNum;
+	private String goodsNm;
+	private String inoutGb;
+	private String applyFlag;
+	private String barcode;
+	private String dateGbn;
+	private String alarmYn;
+	private String instockAlarmSq;
+
+	private String goodsType;
+	private String selfMallYn;
+	private String goodsIcon;
+	private String priceGbn;
+	private String termGb;
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] siteCd;
+
+	/* 상품목록 Multi CheckBox 항목*/
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] multiBrand;
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] multiItemkindCd;
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] multiGoodsStat;
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] multiStyleYear;
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] multiSeasonCd;
+	/* 상품목록 Multi CheckBox 항목*/
+
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] conditionList;
+}

+ 1022 - 0
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsListForm.html

@@ -0,0 +1,1022 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsListForm.html
+ * @desc    : 상품목록 Page
+ *============================================================================
+ * SISUN
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2020.10.19   eskim       최초 작성
+ *******************************************************************************
+ -->
+	<div id="main">
+		<!-- 메인타이틀 영역 -->
+		<div class="main-title">
+		</div>
+		<!-- //메인타이틀 영역 -->
+		
+		<!-- 메뉴 설명 -->
+		<div class="infoBox menu-desc">
+		</div>
+		<form id="searchForm" name="searchForm" action="#" th:action="@{'/goods/list'}">
+		<input type="hidden" id="searchGb" name="searchGb" />
+		<input type="hidden" id="imageViewYn" name="imageViewYn" />
+	 		<!-- 패널 영역1 -->
+			<div class="panelStyle" >
+				<!-- 검색조건 영역 -->
+				<!-- TITLE -->
+				<div class="panelTitle">
+					<h3><i class="fa fa-info-circle"></i>아래 검색조건 중 <font color="red">업체, 키워드, 발생일</font>중 하나를 꼭 입력해 주세요.</h3>
+					<span class="panelControl">
+						<i class="fa fa-chevron-up"></i>
+					</span>
+				</div>
+				<!-- //TITLE -->
+				<div class="panelContent">
+						<table class="frmStyle">
+							<colgroup>
+								<col style="width: 7%;"/>
+								<col style="width: 18%;"/>
+								<col style="width: 7%;"/>
+								<col style="width: 18%;"/>
+								<col style="width: 7%;"/>
+								<col style="width: 18%;"/>
+								<col style="width: 7%;"/>
+								<col/>
+							</colgroup>
+							<tr>
+								<th>업체/브랜드<i class="star"></i></th>
+								<td colspan="3">
+									<select name="supplyCompCd" id="supplyCompCd">
+										<option value="" th:if="${sessionInfo.roleCd} != 'B000'">[전체]</option>
+										<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									</select>
+									<select name="brandCd" id="brandCd">
+										<option value="">[전체]</option>
+									</select>
+								</td>
+								<th>키워드<i class="star"></i></th>
+								<td colspan="3">
+									<select name="search" id="search">
+										<option value="searchGoodsCd">상품코드</option>
+										<option value="searchGoodsNm">상품명</option>
+										<option value="searchGoodsNum">품번</option>
+										<option value="searchSupplyGoodsCd">업체상품코드</option>
+									</select>
+									<input type="text" class="w40p" name="condition" id="condition" maxlength="50"/>
+								</td>
+							</tr>
+							<tr>
+								<th>품목</th>
+								<td>
+									<select name="itemkindCd" id="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>
+								<th>상품상태</th>
+								<td>
+									<select  name="goodsStat" id="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>
+								<th>년도/시즌</th>
+								<td>
+									<select  name="styleYear" id="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" id="seasonCd">
+										<option value="">[전체]</option>
+										<option th:if="${seasonList}" th:each="oneData, status : ${seasonList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									</select>
+								</td>
+								<th>상품구분</th>
+								<td>
+									<select name="goodsType" id="goodsType">
+										<option value="">[전체]</option>
+										<option th:if="${goodsTypeList}" th:each="oneData, status : ${goodsTypeList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									</select>
+								</td>
+							</tr>
+							<tr>
+								<th>재고연동여부</th>
+								<td>
+									<select  name="erpStockLinkYn" id="erpStockLinkYn">
+										<option value="">[전체]</option>
+										<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									</select>
+								</td>
+								<th>정상/이월 구분</th>
+								<td>
+									<select  name="formalGb" id="formalGb">
+										<option value="">[전체]</option>
+										<option th:if="${formalGbList}" th:each="oneData, status : ${formalGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									</select>
+								</td>
+								<th>성별</th>
+								<td>
+									<select  name="sexGb" id="sexGb">
+										<option value="">[전체]</option>
+										<option th:if="${sexGbList}" th:each="oneData, status : ${sexGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									</select>
+								</td>
+								<th>연령대</th>
+								<td>
+									<select  name="ageGrpCd" id="ageGrpCd">
+										<option value="">[전체]</option>
+										<option th:if="${ageGrpCdList}" th:each="oneData, status : ${ageGrpCdList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									</select>
+								</td>
+							</tr>
+							<tr>
+								<th>품절여부</th>
+								<td>
+									<select  name="soldOutYn" id="soldOutYn">
+										<option value="">[전체]</option>
+										<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									</select>
+								</td>
+								<th>담당MD</th>
+								<td>
+									<select  name="mdId" id="mdId">
+										<option value="">[전체]</option>
+										<!-- <option th:if="${brandMdList}" th:each="oneData, status : ${brandMdList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option> -->
+									</select>
+								</td>
+								<th>반품교환</th>
+								<td>
+									<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>
+								<th>자사몰노출여부</th>
+								<td>
+									<select  name="dispYn" id="dispYn">
+										<option value="">[전체]</option>
+										<option th:if="${useYnList}" th:each="oneData, status : ${useYnList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									</select>
+								</td>
+							</tr>
+							<tr>
+								<th>판매가</th>
+								<td>
+									<input type="text" class="w90" name="currPriceSt" id="currPriceSt" maxlength="10" data-valid-type="numeric"/>원 ~ <input type="text" class="w90" name="currPriceEd" id="currPriceEd" maxlength="10" data-valid-type="numeric"/>원
+								</td>
+								<th>할인율</th>
+								<td colspan="5">
+									<input type="text" class="w70" name="dcRateSt" id="dcRateSt" maxlength="3" data-valid-type="numeric"/> % ~ <input type="text" class="w70" name="dcRateEd" id="dcRateEd" maxlength="3" data-valid-type="numeric"/> %
+								</td>
+							</tr>
+							<tr>
+								<th>발생일<i class="star"></i></th>
+								<td colspan="7" id="sellTerms"></td>
+							</tr>
+						</table>
+						<ul class="panelBar">
+							<li class="center">
+								<button type="button" class="btn btn-gray btn-lg" id="btnInit" >초기화</button>
+								<button type="button" class="btn btn-info btn-lg" id="btnInit" >조회</button>
+							</li>
+						</ul>
+				</div>
+			<!-- //검색조건 영역 -->
+		</div>
+		<!-- 패널 영역1 -->
+		<div class="panelStyle">
+			<!-- 검색결과 영역 -->
+				<!-- 상단버튼 영역  -->
+				<ul class="panelBar">
+					<li>
+						<button type="button" class="btn btn-default btn-lg" onclick="fnGoodsExcelDownLoad('');">엑셀다운로드</button>
+						<button type="button" class="btn btn-default btn-lg" onclick="fnGoodsExcelDownLoad('Y');">엑셀다운로드(이미지포함)</button>
+						<button type="button" class="btn btn-default btn-lg" onclick="cfnDownloadSampleFile('SF013');">상품엑셀조회 양식 다운로드</button>
+						<button type="button" class="btn btn-base btn-lg" id="btnGoodsExcelUpLoad">엑셀조회</button>
+					</li>
+					<li class="right">
+						검색결과 : <strong><span id="gridRowTotalCount">0</span> 건</strong>&nbsp;
+						쪽번호 <span id="pgNo">0</span>/ <strong id="endPgNo">0</strong>&nbsp;&nbsp;
+					<select id="pageSize" name="pageSize">
+						<option value="50" selected="selected">50개씩 보기</option>
+						<option value="100">100개씩 보기</option>
+						<option value="500">500개씩 보기</option>
+						<option value="1000">1000개씩 보기</option>
+					</select>
+					<input type="hidden" name="pageNo" id="pageNo" value ="1"/>
+					</li>
+				</ul>
+				<label class="off">
+					<a href="javascript:void(0);" id="GoodsExcelList" style="display: none;">상품목록 엑셀다운로드</a>
+				</label>
+				<!-- //상단버튼 영역  -->
+				<div id="gridList" style="width: 100%; height: 700px;" class="ag-theme-balham lh60"></div>
+				
+				<div class="panelBtnB">
+					<!-- Paging -->
+					<div class="tablePaging" id="goodsListPagination"></div>
+					<!-- //Paging -->
+					<div class="aR">
+					<button type="button" class="btn btn-info btn-sm" onclick="fnGoodsStatArea();" th:if="${sessionInfo.roleCd == '0000' OR sessionInfo.roleCd == 'A000' OR sessionInfo.roleCd == 'A101' OR sessionInfo.roleCd == 'A100' OR sessionInfo.roleCd == 'A001'}">상태일괄적용</button>
+					</div>
+				</div>
+				
+				<ul class="boxContent off" id="goodsStatArea">
+					<li class="pad20">
+						<table class="frmStyle">
+							<colgroup>
+								<col style="width: 7%;"/>
+								<col style="width: 18%;"/>
+								<col style="width: 7%;"/>
+								<col style="width: 18%;"/>
+								<col style="width: 7%;"/>
+								<col style="width: 18%;"/>
+								<col style="width: 7%;"/>
+								<col/>
+							</colgroup>
+							<tr>
+								<th>상품상태</th>
+								<td>
+									<select  name="goodsStatC" id="goodsStatC">
+										<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="fnChangeGoodsState('goodsStat')">적용</button>
+								</td>
+								<th>가격연동여부</th>
+								<td>
+									<select id="erpPriceLinkYnC" name="erpPriceLinkYnC">
+										<option value="">[선택]</option>
+										<option value="Y">연동</option>
+										<option value="N">비연동</option>
+									</select>
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('erpPriceLinkYn')">적용</button>
+								</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>
+								<td>
+									<select  name="formalGbC" id="formalGbC">
+										<option value="">[선택]</option>
+										<option th:if="${formalGbList}" th:each="oneData, status : ${formalGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+									</select>
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('formalGb')" >적용</button>
+								</td>
+							</tr>
+							<tr>
+								<th>반품가능여부</th>
+								<td>
+									<select id="returnableYnC" name="returnableYnC">
+										<option value="">[선택]</option>
+										<option value="Y">가능</option>
+										<option value="N">불가</option>
+									</select>
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('returnableYn')" >적용</button>
+								</td>
+								<th>교환가능여부</th>
+								<td>
+									<select id="changeableYnC" name="changeableYnC">
+										<option value="">[선택]</option>
+										<option value="Y">가능</option>
+										<option value="N">불가</option>
+									</select>
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('changeableYn')" >적용</button>
+								</td>
+								<th>무료반품여부</th>
+								<td>
+									<select id="returnFeeFreeYnC" name="returnFeeFreeYnC">
+										<option value="">[선택]</option>
+										<option value="Y">가능</option>
+										<option value="N">불가</option>
+									</select>
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('returnFeeFreeYn')" >적용</button>
+								</td>
+								<th>무료교환여부</th>
+								<td>
+									<select id="changeFeeFreeYnC" name="changeFeeFreeYnC">
+										<option value="">[선택]</option>
+										<option value="Y">가능</option>
+										<option value="N">불가</option>
+									</select>
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('changeFeeFreeYn')" >적용</button>
+								</td>
+							</tr>
+							<tr>
+								<th>상품타이틀</th>
+								<td colspan="3">
+									<input id="goodsTnmC" name="goodsTnmC" type="text" class="w200" maxlength="70"/>
+									<label class="chkBox"><input type="checkbox" name="blankFlag" value="Y"/>BLANK 적용<span></span></label>
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('goodsTnm')" >적용</button>
+								</td>
+								<th>무료배송기준</th>
+								<td colspan="3">
+									<input id="minOrdAmtC" name="minOrdAmtC" type="text" class="w100"  data-valid-type="numeric" maxlength="10"/>이상 구매시 무료
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('minOrdAmt')" >적용</button>
+								</td>
+							</tr>
+							<tr>
+								<th>최소주문수량</th>
+								<td>
+									<input id="minOrdQtyC" name="minOrdQtyC" type="text" class="w100" data-valid-type="numeric" />
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('minOrdQty')" >적용</button>
+								</td>
+								<th>최대주문수량</th>
+								<td>
+									<input id="maxOrdQtyC" name="maxOrdQtyC" type="text" class="w100" data-valid-type="numeric" />
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('maxOrdQty')" >적용</button>
+								</td>
+								<th>PC포인트</th>
+								<td>
+									<input type="text" class="w100 aR" id="pntPrateC" name="pntPrateC" data-valid-type="numeric" maxlength="3"/> %
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('pntPrate')" >적용</button>
+								</td>
+								<th>모바일포인트</th>
+								<td>
+									<input type="text" class="w100 aR" id="pntMrateC" name="pntMrateC" data-valid-type="numeric" maxlength="3"/> %
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('pntMrate')" >적용</button>
+								</td>
+							</tr>
+						</table>
+					</li>
+				</ul>
+				<ul class="boxContent off" id="goodsPriceArea">
+					<li class="pad20">
+						<table class="frmStyle">
+							<colgroup>
+								<col style="width: 7%"/>
+								<col/>
+							</colgroup>
+							<tr>
+								<th>판매가</th>
+								<td>
+									<input id="currPriceC" name="currPriceC" type="text" class="w100"  data-valid-type="numeric" maxlength="10" data-valid-name="판매가"/>
+									<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsPrice('currPrice')" >적용</button>
+								</td>
+							</tr>
+						</table>
+					</li>
+				</ul>
+			<!-- 검색결과 영역 -->
+		</div>
+		</form>
+		<!-- //패널 영역2 -->
+<script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js?v=2019072202"></script>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	var sessRoleCd = [[${sessionInfo.roleCd}]];
+	var goodsStatList = gagajf.convertToArray([[${goodsStatList}]]);
+	var formalGbList = gagajf.convertToArray([[${formalGbList}]]);
+	var seasonList = gagajf.convertToArray([[${seasonList}]]);
+	var uploadGoodsUrl = [[${@environment.getProperty('upload.goods.view')}]];
+	var goodsImgParam = "?width=60&height=60";
+	var goodsImgBigParam = "?width=600&height=600";
+	var columnDefs = [];
+	columnDefs = [
+		{width: 40, minWidth: 40, cellClass: 'text-right', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
+		{headerName: 'No', width: 60, cellClass: 'text-center',
+			valueGetter: function(params) { return cfnGridNumner('searchForm',params.node.rowIndex, 'A');}
+		},
+		{headerName: "이미지", field: "imgPath1", width: 100, height: 60, cellClass: 'text-center'
+			,cellRenderer: function(params) {
+				if (params.data.imgType != "B"){
+					return '<img width="60" src="'+ params.value + '" alt="" onclick="cfnOpenImagePreViewPopup(\'goodsImgView\', \''+ params.value +'\')"/>';
+				}else{
+					if (gagajf.isNull(params.value)) {
+						
+						return '<img width="60" src="'+ params.data.imgPath4+goodsImgParam + '" alt="" onclick="cfnOpenImagePreViewPopup(\'goodsImgView\', \''+ params.data.imgPath4+goodsImgBigParam +'\')"/>';
+					} else {
+						return '<img width="60" src="'+ params.value+goodsImgParam + '" alt="" onclick="cfnOpenImagePreViewPopup(\'goodsImgView\', \''+ params.value+goodsImgBigParam +'\')"/>';
+					}
+				}
+			}
+		},
+		{headerName: "브랜드", field: "brandCd", width: 100, cellClass: 'text-center'},
+		{headerName: "브랜드명", field: "brandEnm", width: 130, cellClass: 'text-center'},
+		{headerName: "상품코드", field: "goodsCd", width: 140, cellClass: 'text-center'},
+		{headerName: "상품명", field: "goodsNm", width: 200, cellClass: 'text-left'
+			,cellRenderer: function(params) {
+				return '<a href="javascript:void(0);">' + params.value + '</a>';
+			}
+		},
+		{headerName: "품목", field: "itemkindNm", width: 150, cellClass: 'text-center'},
+		{headerName: "판매가능재고", field: "stockQtySum", width: 120, cellClass: 'text-right',
+			valueFormatter: function(params) {	return params.value.addComma();},
+			cellStyle : function(params){
+				if ("00" == params.data.goodsStat  || "10" == params.data.goodsStat || "20" == params.data.goodsStat || "30" == params.data.goodsStat) {
+					return;
+				}
+				var color = "";
+				if (params.value <= 0){
+					color = '#ff96689c';
+				}
+				return { 'background-color': color};
+			} 
+		},
+		{headerName: "상품상태", field: "goodsStat" , width: 100, cellClass: 'text-center',
+			cellEditorParams: { values: gagaAgGrid.extractValues(goodsStatList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(goodsStatList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(goodsStatList, params.newValue); }
+		},
+		{headerName: "년도", field: "styleYear" , width: 80, cellClass: 'text-center'},
+		{headerName: "시즌", field: "seasonCd" , width: 80, cellClass: 'text-center',
+			cellEditorParams: { values: gagaAgGrid.extractValues(seasonList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(seasonList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(seasonList, params.newValue); }
+		},
+		{headerName: "TAG가", field: "tagPrice" , width: 100, cellClass: 'text-right'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "정상가", field: "listPrice" , width: 100, cellClass: 'text-right'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "판매가", field: "currPrice" , width: 100, cellClass: 'text-right'
+			,valueFormatter: function(params) {return params.value.addComma();},
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+		},
+		{headerName: "할인율", field: "dcRate" , width: 90, cellClass: 'text-right'},
+		{headerName: "가격변경일", field: "priceUpdDt", width: 150, cellClass: 'text-center',
+			cellRenderer: function(params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		},
+		{headerName: "ERP재고연동여부", field: "erpStockLinkYn", width: 120, cellClass: 'text-center'},
+		{headerName: "ERP가격연동여부", field: "erpPriceLinkYn", width: 120, cellClass: 'text-center'},
+		{headerName: "이월구분", field: "formalGb", width: 100, cellClass: 'text-center',
+			cellEditorParams: { values: gagaAgGrid.extractValues(formalGbList) },
+			valueFormatter: function (params) { return gagaAgGrid.lookupValue(formalGbList, params.value); },
+			valueParser: function (params) { return gagaAgGrid.lookupKey(formalGbList, params.newValue); }
+		},
+		{headerName: "반품가능", field: "returnableYn" , width: 90, cellClass: 'text-center'},
+		{headerName: "교환가능", field: "changeableYn" , width: 90, cellClass: 'text-center'},
+		{headerName: "무료반품", field: "returnFeeFreeYn" , width: 90, cellClass: 'text-center'},
+		{headerName: "무료교환", field: "changeFeeFreeYn" , width: 90, cellClass: 'text-center'},
+		{headerName: "필수이미지여부", field: "goodsImageYn" , width: 120, cellClass: 'text-center'},
+		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',
+			cellRenderer: function(params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		},
+		{headerName: "등록자", field: "regId" , width: 100, cellClass: 'text-center'},
+		{headerName: "수정일시", field: "updDt", width: 150, cellClass: 'text-center',
+			cellRenderer: function(params) {
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
+			}
+		},
+		{headerName: "수정자", field: "updId" , width: 100, cellClass: 'text-center'}
+	];
+
+	// Get GridOptions
+	var gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// 중복 선택 가능
+	gridOptions.rowSelection = 'multiple';
+ 	gridOptions.suppressRowClickSelection = true;
+	gridOptions.rowHeight = 60; //이미지가 있을경우 높이 지정해야함.
+
+	// Row Click
+	gridOptions.onCellClicked = function(event) {
+		var goodsCd = event.data.goodsCd;
+		if (event.colDef.field == "goodsNm"){
+			cfnOpenGoodsDetailPopup('U',goodsCd);
+		}else if (event.colDef.field == "goodsCd"){
+
+			//cfnOpenFrontGoodsPopup(goodsCd, event.data.siteCd);
+		}
+	}
+
+	gridOptions.getRowStyle = function(params) {
+		if ("00" == params.data.goodsStat  || "10" == params.data.goodsStat || "20" == params.data.goodsStat || "30" == params.data.goodsStat) {
+			return { background: '#23c6c8' };
+		}
+	}
+
+	// 초기화 클릭시
+	$('#btnInit').on('click', function() {
+
+		$('#searchForm')[0].reset();
+		//$("#searchForm input[type=radio]").removeClass("checked");
+		$("#searchForm input[type=checkbox]").removeClass("checked");
+		//$("#searchForm input[type=radio]").parent("label").removeClass("checked");
+		$("#searchForm input[type=checkbox]").parent("label").removeClass("checked");
+		$("#searchForm input[type=radio][checked]").parent("label").addClass("checked");
+
+	});
+
+	// 조회클릭시
+	$('#btnSearch').on('click', function() {
+		$("#searchForm input[name=pageNo]").val('1');
+		fnGoodsListSearch('BASIC');
+	});
+
+	// 조회
+	var fnGoodsListSearch = function(gbn) {
+
+		if (typeof(gbn) != 'undefined' &&  gbn == 'EXCEL'){
+			$("#searchForm input[name=searchGb]").val("EXCEL");
+		}else{
+			$("#searchForm input[name=searchGb]").val("BASIC");
+		}
+
+		if(!fnConditionCheck()) return;
+
+		gagaPaging.init('searchForm', fnSearchCallBack, 'goodsListPagination', $('#searchForm').find('#pageSize').val());
+		gagaPaging.load($("#searchForm input[name=pageNo]").val());
+	}
+
+	//검색 조건 확인
+	var fnConditionCheck = function(){
+		var formId = '#searchForm';
+		var form = document.searchForm;
+
+		if($("#searchForm input[name=searchGb]").val() == "EXCEL") return true;
+
+		var searchFlag = false;
+		var cnt = 0;
+
+		if( !gagajf.isNull($("#searchForm select[name=supplyCompCd]").val())
+				|| !gagajf.isNull($("#searchForm input[name=condition]").val())
+				|| (!gagajf.isNull($("#searchForm input[name=stDate]").val()) && !gagajf.isNull($("#searchForm input[name=edDate]").val()))
+				|| !gagajf.isNull($("#searchForm select[name=brandGrpNm]").val())
+			){
+			searchFlag = true;
+		}else{
+			/* for (i = 0; i < form.elements.length; i++ ) {
+				var el = form.elements[i];
+
+				if ($(el).prop("type") == "text" || ($(el).prop("type") == "select-one" && el.name != "search" && el.name != "pageSize")) {
+					if (!(el.value == null || el.value == "")) {
+						cnt++;
+					}
+				}
+			}
+
+			if(cnt > 0) searchFlag = true; */
+		}
+
+		if(searchFlag == false){
+			mcxDialog.alert("검색조건을 입력하세요.");
+			return false;
+		}
+
+		if(!gagajf.isNull($("#searchForm input[name=currPriceSt]").val()) && !gagajf.isNull($("#searchForm input[name=currPriceEd]").val())){
+			if (Number($("#searchForm input[name=currPriceSt]").val().removeComma()) > Number($("#searchForm input[name=currPriceEd]").val().removeComma()) ){
+				mcxDialog.alertC("판매가를 확인해 주세요.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$("#searchForm input[name=currPriceEd]").focus();
+					}
+				});
+				return false;
+			}
+		}
+
+		if(!gagajf.isNull($("#searchForm input[name=dcRateSt]").val()) && !gagajf.isNull($("#searchForm input[name=dcRateEd]").val())){
+			if (Number($("#searchForm input[name=dcRateSt]").val().removeComma()) > Number($("#searchForm input[name=dcRateEd]").val().removeComma()) ){
+				mcxDialog.alertC("할인율를 확인해 주세요.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$("#searchForm input[name=dcRateEd]").focus();
+					}
+				});
+				return false;
+			}
+		}
+
+		var fromDate = $('#searchForm input[name=stDate]').val();
+		var toDate = $('#searchForm input[name=edDate]').val();
+
+		if (!gagajf.isNull(fromDate) || !gagajf.isNull(toDate)) {
+
+			if (gagajf.isNull(fromDate) || gagajf.isNull(toDate)) {
+				mcxDialog.alertC("등록일 조회시 시작일자와 종료일자를 입력하세요.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#searchForm input[name=stDate]').focus();
+					}
+				});
+				return false;
+			}
+
+			if (fromDate > toDate) {
+				mcxDialog.alertC("등록 시작일자는 종료일자 보다 클 수 없습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#searchForm input[name=stDate]').focus();
+					}
+				});
+				return false;
+			}
+		}
+
+		return true;
+	}
+
+	var fnSearchCallBack = function(result){
+
+		$('#searchForm').find('#gridRowTotalCount').html(result.pageing.pageable.totalCount.addComma());
+		$('#searchForm').find('#pageNo').val(result.pageing.pageable.pageNo.addComma());
+		$('#searchForm').find('#pgNo').html(result.pageing.pageable.pageNo.addComma());
+		$('#searchForm').find('#endPgNo').html(result.pageing.pageable.totalPage.addComma());
+		gridOptions.api.setRowData(result.goodsList);
+		gagaPaging.createPagination(result.pageing.pageable);
+		
+	}
+
+	//페이징
+	$('#searchForm select[name=pageSize]').on('change', function() {
+		$("#searchForm input[name=pageNo]").val('1');
+		fnGoodsListSearch($("#searchForm input[name=searchGb]").val());
+	});
+
+	//업체변경시
+	$('#searchForm select[name=supplyCompCd]').on('change', function() {
+		var actionUrl = '/renderer/supplyCompany/brand/list/' + $(this).val();
+
+		if(sessRoleCd == "B000"){
+			actionUrl = '/renderer/brand/AuthBrandlist';
+		}
+		$("#searchForm select[name=brandCd] option:gt(0)").remove();
+
+		cfnCreateCombo(actionUrl, $('#searchForm select[name=brandCd]'), "[전체]", brandCd);
+	});
+
+	//엑셀다운로드
+	var fnGoodsExcelDownLoad = function(flag){
+		var formId = '#searchForm';
+		if (gridOptions.api.getDisplayedRowCount() <= 0){
+			mcxDialog.alert("조회된 데이터가 없습니다.<br/>다시 조회 후 다운로드 받으세요.");
+			return;
+		}
+		$("#searchForm input[name=imageViewYn]").val(flag);
+
+		var params =  $(formId).serialize();
+		$('#GoodsExcelList').attr({ href : '/goods/info/excel/list?' + params }).get(0).click();
+	}
+
+	//엑셀 상품 조회
+	$('#btnGoodsExcelUpLoad').on('click', function() {
+		cfnExcelUploadPopup('goodsExcelUpload', 'goodsExcelUpload');
+	});
+
+	var goodsExcelUpload = function(result){
+		var data = {procJob : result.procJob
+					,excelFileNm : result.excelFileNm
+					};
+		var jsonData = JSON.stringify(data);
+		gagajf.ajaxJsonSubmit('/goods/search/goodslist/excelupload/save', jsonData, fnGoodsExcelUploadCallBack);
+	}
+
+	var fnGoodsExcelUploadCallBack = function(result){
+		fnGoodsListSearch("EXCEL");
+	}
+
+	//상품상태 변경시
+	var fnChangeGoodsState = function(proc){
+
+		var objId = '#'+proc+"C";
+		if (proc == "goodsTnm"){
+			if(gagajf.isNull($(objId).val()) && !$("#searchForm input:checkbox[name=blankFlag]").is(':checked')){
+				mcxDialog.alertC('적용하실 항목을 선택해주세요.', {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$(objId).focus();
+					}
+				});
+				return;
+			}else if(!gagajf.isNull($(objId).val()) && $("#searchForm input:checkbox[name=blankFlag]").is(':checked')){
+				mcxDialog.alertC('적용하실 항목을 하나만 선택해주세요.', {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$(objId).focus();	
+					}
+				});
+				return;
+			}
+		}else{
+			if (gagajf.isNull($(objId).val())){
+				mcxDialog.alertC('적용하실 항목을 선택(입력)해주세요.', {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$(objId).focus();
+					}
+				});
+				return;
+			}
+		}
+		var selectedData = gridOptions.api.getSelectedRows();
+
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+
+		var goodsStatVal  = '';
+		var erpPriceLinkYnVal  = '';
+		var erpStockLinkYnVal= '';
+		var formalGbVal= '';
+		var returnableYnVal= '';
+		var changeableYnVal= '';
+		var returnFeeFreeYnVal = '';
+		var changeFeeFreeYnVal  = '';
+		var goodsTnmVal  = '';
+		var blankFlagVal = '';
+		var minOrdAmtVal = '';
+		var minOrdQtyVal = '';
+		var maxOrdQtyVal = '';
+		var pntPrateVal = '';
+		var pntMrateVal = '';
+
+		if (proc == "goodsStat") {
+			goodsStatVal = $(objId).val();
+		}else if (proc == "erpPriceLinkYn") {
+			erpPriceLinkYnVal = $(objId).val();
+		}else if (proc == "erpStockLinkYn") {
+			erpStockLinkYnVal = $(objId).val();
+		}else if (proc == "formalGb") {
+			formalGbVal = $(objId).val();
+		}else if (proc == "returnableYn") {
+			returnableYnVal = $(objId).val();
+		}else if (proc == "changeableYn") {
+			changeableYnVal = $(objId).val();
+		}else if (proc == "returnFeeFreeYn") {
+			returnFeeFreeYnVal = $(objId).val();
+		}else if (proc == "changeFeeFreeYn") {
+			changeFeeFreeYnVal = $(objId).val();
+		}else if (proc == "goodsTnm"){
+			if($("#searchForm input:checkbox[name=blankFlag]").is(':checked')){
+				blankFlagVal = "Y";
+			}else{
+				goodsTnmVal = $(objId).val();
+			}
+		}else if (proc == "minOrdAmt") {
+			minOrdAmtVal = $(objId).val().removeComma();
+		}else if (proc == "minOrdQty") {
+			if($(objId).val()<=0){
+				mcxDialog.alertC('0보다 큰값을 입력 해주세요.', {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$(objId).focus();
+					}
+				});
+				return;
+			}
+			minOrdQtyVal = $(objId).val();
+		}else if (proc == "maxOrdQty") {
+			if($(objId).val()<=0){
+				mcxDialog.alertC('0보다 큰값을 입력 해주세요.', {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$(objId).focus();
+					}
+				});
+				return;
+			}
+			maxOrdQtyVal = $(objId).val();
+		}else if (proc == "pntPrate") {
+			if($(objId).val()>100){
+				mcxDialog.alertC('100보다 작거나 같은 값을 입력 해주세요.', {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$(objId).focus();
+					}
+				});
+				return;
+			}
+			pntPrateVal = $(objId).val();
+		}else if (proc == "pntMrate") {
+			if($(objId).val()>100){
+				mcxDialog.alertC('100보다 작거나 같은 값을 입력 해주세요.', {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$(objId).focus();
+					}
+				});
+				return;
+			}
+			pntMrateVal = $(objId).val();
+		}else{
+			return;
+		}
+
+		mcxDialog.confirm('적용 하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				var arrGoodsCd = [];
+
+				$.each(selectedData, function(idx, item) {
+					arrGoodsCd.push(item.goodsCd);
+				});
+
+				var data = {arrGoodsCd: arrGoodsCd
+							,goodsStat : goodsStatVal
+							,erpPriceLinkYn : erpPriceLinkYnVal
+							,erpStockLinkYn : erpStockLinkYnVal
+							,formalGb : formalGbVal
+							,returnableYn : returnableYnVal
+							,changeableYn : changeableYnVal
+							,returnFeeFreeYn : returnFeeFreeYnVal
+							,changeFeeFreeYn : changeFeeFreeYnVal
+							,goodsTnm : goodsTnmVal
+							,blankFlag : blankFlagVal
+							,minOrdAmt : minOrdAmtVal
+							,maxOrdQty : maxOrdQtyVal
+							,pntPrate : pntPrateVal
+							,pntMrate : pntMrateVal
+							,procJob : proc
+							};
+
+				var jsonData = JSON.stringify(data);
+				gagajf.ajaxJsonSubmit('/goods/state/update', jsonData, fnChangeGoodsStateCollback);
+
+			}
+		});
+	}
+
+	//상품가격 변경시
+	var fnChangeGoodsPrice = function(proc){
+
+		var objId = '#'+proc+"C";
+		if (gagajf.isNull($(objId).val())){
+			mcxDialog.alertC('적용할 판매가를 입력해주세요.',{
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$(objId).focus();
+				}
+			});
+			return;
+		}
+
+		var selectedData = gridOptions.api.getSelectedRows();
+
+		if (selectedData.length == 0) {
+			mcxDialog.alert('선택된 행이 없습니다.');
+			return;
+		}
+
+		var goodsPriceVal  = '';
+		goodsPriceVal = $(objId).val();
+
+
+		if (fnGoodsPriceCheck(goodsPriceVal, proc)){
+			fnGoodsPriceSave(goodsPriceVal, proc);
+		}
+	}
+
+	var fnGoodsPriceSave =function(goodsPriceVal,proc){
+
+		var selectedData = gridOptions.api.getSelectedRows();
+		mcxDialog.confirm('적용 하시겠습니까?', {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function(){
+				var arrGoodsCd = [];
+
+				$.each(selectedData, function(idx, item) {
+					arrGoodsCd.push(item.goodsCd);
+				});
+
+				var data = {arrGoodsCd: arrGoodsCd
+							,currPrice : goodsPriceVal
+							,procJob : proc
+							};
+
+				var jsonData = JSON.stringify(data);
+				gagajf.ajaxJsonSubmit('/goods/price/update', jsonData, fnChangeGoodsStateCollback);
+			}
+		});
+	}
+
+	var fnGoodsPriceCheck = function(goodsPriceVal, proc){
+
+		var selectedData = gridOptions.api.getSelectedRows();
+		var dcRateConfirm = true;
+		var optCheck = true;
+		//TAG가 대비 판매가 비교
+		$.each(selectedData, function(idx, item) {
+
+			if (item.supplyCompCd != "F"){
+				optCheck = false;
+				mcxDialog.alertC(item.goodsCd +" 상품은 플라잉타이거 상품이 아닙니다.",{
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						gridOptions.api.setFocusedCell(idx, "goodsCd", null);
+					}
+				});
+				return false;
+			}
+			if (Number(item.tagPrice) < Number(goodsPriceVal)) {
+				optCheck = false;
+				mcxDialog.alertC(item.goodsCd +" 상품은 TAG가가 입력된 판매가 보다 작습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						gridOptions.api.setFocusedCell(idx, "goodsCd", null);
+					}
+				});
+				return false;
+			}
+
+			var dcRate = 0;
+			var tagPrice = item.tagPrice;
+			var currPrice = goodsPriceVal;
+			dcRate = 100 - (Number((Number(currPrice) / Number(tagPrice)).toFixed(2)) *100);
+
+			if (dcRate < 0){
+				optCheck = false;
+				mcxDialog.alertC(item.goodsCd +" 상품은 할인율이 0보다 작습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						gridOptions.api.setFocusedCell(idx, "goodsCd", null);
+					}
+				});
+				return false;
+			}else if (dcRate >= 90 && dcRateConfirm){
+				if (confirm(item.goodsCd +" 상품은 할인율이 90%이상입니다.<br/>다른 상품들도 허용하고 계속하시겠습니까?")){
+					dcRateConfirm = false;
+				}else{
+					optCheck = false;
+					return false;
+				}
+			}
+		});
+
+		return optCheck;
+	}
+
+	var fnChangeGoodsStateCollback = function(result){
+		if (result.resultFlag == "FAIL"){
+			mcxDialog.alert("[ " + result.returnGoods + " ]은<br/>이미지가 등록되지 않아 '승인대기'나 '승인완료' 상태로 변경할 수 없습니다.<br/>상품을 확인하시고, 다시 시도해주세요.");
+			return false;
+		}else{
+			mcxDialog.alert('성공적으로 저장되었습니다.');
+		}
+		fnGoodsListSearch($("#searchForm input[name=searchGb]").val());
+	}
+
+	//상태일괄변경 버튼 클릭시
+	var fnGoodsStatArea = function(){
+		if ($("#searchForm").find("#goodsStatArea").hasClass('off')) {
+			$("#searchForm").find("#goodsStatArea").removeClass('off');
+			$("#searchForm").find("#goodsStatArea").addClass('on');
+			$("#searchForm").find("#goodsPriceArea").removeClass('on');
+			$("#searchForm").find("#goodsPriceArea").addClass('off');
+		}else{
+			$("#searchForm").find("#goodsStatArea").removeClass('on');
+			$("#searchForm").find("#goodsStatArea").addClass('off');
+		}
+		
+	}
+
+	//가격일괄변경 버튼 클릭시 - 플타만
+	var fnGoodsPriceArea = function(){
+		if ($("#searchForm").find("#goodsPriceArea").hasClass('off')) {
+			$("#searchForm").find("#goodsPriceArea").removeClass('off');
+			$("#searchForm").find("#goodsPriceArea").addClass('on');
+			$("#searchForm").find("#goodsStatArea").removeClass('on');
+			$("#searchForm").find("#goodsStatArea").addClass('off');
+		}else{
+			$("#searchForm").find("#goodsPriceArea").removeClass('on');
+			$("#searchForm").find("#goodsPriceArea").addClass('off');
+		}
+		
+	}
+
+	$(document).ready(function() {
+
+		cfnCreateCalendar('#sellTerms', 'stDate', 'edDate', true, '등록일', 'X');
+
+		var selectCode = '<select  name="dateGbn" id="dateGbn">';
+		selectCode += '<option value="R" seledted>상품등록일</option>';
+		selectCode += '<option value="P">가격변경일</option>';
+		selectCode += '</select>';
+
+		$("#searchForm").find('#sellTerms').prepend(selectCode);
+
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+
+	});
+
+/*]]>*/
+</script>
+ 	</div>
+
+</html>