Procházet zdrojové kódy

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

Conflicts:
style24.scm/pom.xml

gagamel před 5 roky
rodič
revize
de8af2650f
100 změnil soubory, kde provedl 624 přidání a 258 odebrání
  1. 23 2
      style24.admin/src/main/java/com/style24/admin/biz/dao/TsaGoodsDao.java
  2. 37 8
      style24.admin/src/main/java/com/style24/admin/biz/service/TsaGoodsService.java
  3. 2 2
      style24.admin/src/main/java/com/style24/admin/biz/service/TsaStockService.java
  4. 2 0
      style24.admin/src/main/java/com/style24/admin/biz/service/TsaSystemService.java
  5. 2 2
      style24.admin/src/main/java/com/style24/admin/biz/web/TsaBusinessController.java
  6. 92 63
      style24.admin/src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  7. 1 3
      style24.admin/src/main/java/com/style24/admin/biz/web/TsaStockController.java
  8. 2 2
      style24.admin/src/main/java/com/style24/persistence/domain/Goods.java
  9. 5 0
      style24.admin/src/main/java/com/style24/persistence/domain/GoodsImg.java
  10. 1 0
      style24.admin/src/main/java/com/style24/persistence/domain/GoodsPriceRes.java
  11. 2 1
      style24.admin/src/main/java/com/style24/persistence/domain/GoodsSearch.java
  12. 3 0
      style24.admin/src/main/java/com/style24/persistence/domain/NotiInfo.java
  13. 2 1
      style24.admin/src/main/java/com/style24/persistence/domain/UserMenu.java
  14. 3 3
      style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaBusiness.xml
  15. 100 17
      style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  16. 9 8
      style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaLogin.xml
  17. 10 4
      style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaStock.xml
  18. 4 4
      style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaSystem.xml
  19. 30 7
      style24.admin/src/main/webapp/WEB-INF/views/business/BrandForm.html
  20. 64 12
      style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html
  21. 25 28
      style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsDetailSizeStockForm.html
  22. 62 12
      style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsListForm.html
  23. 6 11
      style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsMassRegisterForm.html
  24. 46 12
      style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsPopupListForm.html
  25. 4 4
      style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsPriceReserveForm.html
  26. 21 10
      style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsPriceReservePopupForm.html
  27. 26 7
      style24.admin/src/main/webapp/WEB-INF/views/stock/GoodsSizeStockForm.html
  28. 10 10
      style24.admin/src/main/webapp/WEB-INF/views/system/UserDetailForm.html
  29. 25 20
      style24.admin/src/main/webapp/WEB-INF/views/system/UserMenuForm.html
  30. 2 2
      style24.admin/src/main/webapp/ux/plugins/gaga/gaga.summernote.js
  31. 3 3
      style24.admin/src/main/webapp/ux/plugins/gaga/gaga.validation.js
  32. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/+1.png
  33. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/-1.png
  34. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/100.png
  35. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/109.png
  36. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/1234.png
  37. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/8ball.png
  38. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/a.png
  39. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/ab.png
  40. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/abc.png
  41. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/abcd.png
  42. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/accept.png
  43. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/aerial_tramway.png
  44. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/airplane.png
  45. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/alarm_clock.png
  46. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/alien.png
  47. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/ambulance.png
  48. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/anchor.png
  49. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/angel.png
  50. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/anger.png
  51. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/angry.png
  52. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/anguished.png
  53. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/ant.png
  54. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/apple.png
  55. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/aquarius.png
  56. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/aries.png
  57. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_backward.png
  58. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_double_down.png
  59. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_double_up.png
  60. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_down.png
  61. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_down_small.png
  62. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_forward.png
  63. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_heading_down.png
  64. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_heading_up.png
  65. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_left.png
  66. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_lower_left.png
  67. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_lower_right.png
  68. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_right.png
  69. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_right_hook.png
  70. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_up.png
  71. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_up_down.png
  72. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_up_small.png
  73. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_upper_left.png
  74. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_upper_right.png
  75. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrows_clockwise.png
  76. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrows_counterclockwise.png
  77. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/art.png
  78. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/articulated_lorry.png
  79. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/astonished.png
  80. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/atm.png
  81. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/b.png
  82. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baby.png
  83. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baby_bottle.png
  84. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baby_chick.png
  85. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baby_symbol.png
  86. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baggage_claim.png
  87. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/balloon.png
  88. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/ballot_box_with_check.png
  89. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bamboo.png
  90. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/banana.png
  91. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bangbang.png
  92. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bank.png
  93. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bar_chart.png
  94. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/barber.png
  95. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baseball.png
  96. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/basketball.png
  97. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bath.png
  98. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bathtub.png
  99. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/battery.png
  100. binární
      style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bear.png

+ 23 - 2
style24.admin/src/main/java/com/style24/admin/biz/dao/TsaGoodsDao.java

@@ -9,6 +9,7 @@ import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsEpSkip;
 import com.style24.persistence.domain.GoodsHst;
+import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsPriceRes;
 import com.style24.persistence.domain.GoodsResSell;
@@ -239,6 +240,15 @@ public interface TsaGoodsDao {
 	 */
 	Collection<Option> getGoodsSizeList(Goods goods);
 
+	/**
+	 * 상품 색상목록 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 18
+	 */
+	Collection<GoodsImg> getGoodsColorList(Goods goods);
 
 	/**
 	 * 상품 고시 조회
@@ -250,6 +260,17 @@ public interface TsaGoodsDao {
 	 */
 	Collection<GoodsNotiInfo> getGoodsNotiInfoList(GoodsNotiInfo goodsNotiInfo);
 
+	/**
+	 * 상품의 정보고시 항목 목록
+	 *
+	 * @param notiInfo
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 18
+	 */
+	Collection<NotiInfo> getNotiGoodsInfoList(NotiInfo notiInfo);
+
+
 	/**
 	 * 구성상품 목록
 	 *
@@ -774,13 +795,13 @@ public interface TsaGoodsDao {
 	void saveVideoDispLoc(Video video);
 
 	/**
-	 * 상품 사이즈 존재여부 확인
+	 * 상품 옵션 존재여부 확인
 	 *
 	 * @param option
 	 * @return
 	 * @author eskim
 	 * @since 2020. 11. 17
 	 */
-	int getGoodsSizeCount(Option option);
+	int getGoodsOptionCount(Option option);
 
 }

+ 37 - 8
style24.admin/src/main/java/com/style24/admin/biz/service/TsaGoodsService.java

@@ -23,6 +23,7 @@ import com.style24.persistence.domain.GoodsCompose;
 import com.style24.persistence.domain.GoodsDesc;
 import com.style24.persistence.domain.GoodsEpSkip;
 import com.style24.persistence.domain.GoodsHst;
+import com.style24.persistence.domain.GoodsImg;
 import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsPriceRes;
 import com.style24.persistence.domain.GoodsResSell;
@@ -542,6 +543,18 @@ public class TsaGoodsService {
 		return goodsDao.getGoodsSizeList(goods);
 	}
 
+	/**
+	 * 상품 색상목록 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 18
+	 */
+	public Collection<GoodsImg> getGoodsColorList(Goods goods) {
+		return goodsDao.getGoodsColorList(goods);
+	}
+
 	/**
 	 * 상품 정보고시 조회
 	 *
@@ -554,6 +567,18 @@ public class TsaGoodsService {
 		return goodsDao.getGoodsNotiInfoList(goodsNotiInfo);
 	}
 
+	/**
+	 * 상품의 정보고시 항목 목록
+	 *
+	 * @param notiInfo
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 18
+	 */
+	public Collection<NotiInfo> getNotiGoodsInfoList(NotiInfo notiInfo) {
+		return goodsDao.getNotiGoodsInfoList(notiInfo);
+	}
+
 	/**
 	 * 구성상품 목록
 	 *
@@ -1113,13 +1138,15 @@ public class TsaGoodsService {
 		stock.setUpdNo(goods.getUpdNo());
 		stock.setRegNo(goods.getRegNo());
 		goodsDao.createStockHst(stock);
-
+		log.info("saveStock goods={}", goods);
 		for (String optCd : goods.getOptCd()) {
+			log.info("saveStock index={}", index);
+			log.info("saveStock optCd={}", optCd);
 			Option goodsStock = new Option();
 			goodsStock.setGoodsCd(goods.getCompsGoodsCd()[index]); // 구성상품 코드
 			goodsStock.setOptCd(optCd);
-			goodsStock.setOptCd1(goods.getOptNm1()[index]);
-			goodsStock.setOptCd2(goods.getOptNm2()[index]);
+			goodsStock.setOptCd1(goods.getOptCd1()[index]);
+			goodsStock.setOptCd2(goods.getOptCd2()[index]);
 			goodsStock.setBaseStockQty(Integer.parseInt(goods.getBaseStockQty()[index]));
 			goodsStock.setSoldoutYn(goods.getSoldoutYn()[index]);
 			goodsStock.setDispOrd(goods.getDispOrd()[index]);
@@ -1201,7 +1228,7 @@ public class TsaGoodsService {
 		regGoods.setStyleYear(goods.getStyleYear());
 		regGoods.setSeasonCd(goods.getSeasonCd());
 		regGoods.setSexGb(goods.getSexGb());
-		regGoods.setMainColorCd("Y");
+		regGoods.setMainColorCd("00");
 		regGoods.setOriginCd(goods.getOriginCd());
 		regGoods.setMakeYmd(goods.getMakeYmd());
 		regGoods.setSelfMallYn(goods.getSelfMallYn());
@@ -1276,7 +1303,7 @@ public class TsaGoodsService {
 		regGoods.setStyleYear(goods.getStyleYear());
 		regGoods.setSeasonCd(goods.getSeasonCd());
 		regGoods.setSexGb(goods.getSexGb());
-		regGoods.setMainColorCd("Y");   /// 수정
+		regGoods.setMainColorCd("00");
 		regGoods.setOriginCd(goods.getOriginCd());
 		regGoods.setMakeYmd(goods.getMakeYmd());
 		regGoods.setSelfMallYn(goods.getSelfMallYn());
@@ -1385,6 +1412,7 @@ public class TsaGoodsService {
 			dispOrd++;
 		}
 
+
 		// 사용자 검색어를 검색어에 적용
 		String goodsSnm = goodsDao.getGoodsSnm(regGoods.getGoodsCd());
 		regGoods.setGoodsSnm(goodsSnm);
@@ -2109,15 +2137,16 @@ public class TsaGoodsService {
 	}
 
 	/**
-	 * 상품별 사이즈 등록 여부 확인
+	 * 상품별 옵션 등록 여부 확인
 	 *
 	 * @param
 	 * @return
 	 * @author eskim
 	 * @since 2020. 11. 17
 	 */
-	public int getGoodsSizeCount(Option option) {
+	public int getGoodsOptionCount(Option option) {
 
-		return goodsDao.getGoodsSizeCount(option);
+		return goodsDao.getGoodsOptionCount(option);
 	}
+
 }

+ 2 - 2
style24.admin/src/main/java/com/style24/admin/biz/service/TsaStockService.java

@@ -178,8 +178,8 @@ public class TsaStockService {
 			if (!"N".equals(stock.getSoldoutYn()) && !"Y".equals(stock.getSoldoutYn())) {
 				return (cnt + 2) + "행의 품절여부  확인해주세요.";
 			}
-			// 상품코드 사이즈 확인
-			int stockCnt = goodsService.getGoodsSizeCount(stock);
+			// 상품코드 옵션 확인
+			int stockCnt = goodsService.getGoodsOptionCount(stock);
 			if (stockCnt <= 0) {
 				return (cnt + 2) + "행의 상품 사이즈는 존재하지 않습니다.<br/>확인해주세요.";
 			}

+ 2 - 0
style24.admin/src/main/java/com/style24/admin/biz/service/TsaSystemService.java

@@ -237,6 +237,7 @@ public class TsaSystemService {
 			throw new IllegalStateException(message.getMessage("FAIL_1001"));
 
 		int cnt = 0;
+		log.info("saveUserMenuList userMenuList={}", userMenuList);
 
 		for (UserMenu adminMenu : userMenuList) {
 			if (cnt++ == 0) {
@@ -246,6 +247,7 @@ public class TsaSystemService {
 
 			adminMenu.setRegNo(TsaSession.getInfo().getUserNo());
 			adminMenu.setUpdNo(TsaSession.getInfo().getUserNo());
+			adminMenu.setUseRole("RCUD");
 
 			// 사용자 메뉴 생성
 			systemDao.createUserMenu(adminMenu);

+ 2 - 2
style24.admin/src/main/java/com/style24/admin/biz/web/TsaBusinessController.java

@@ -258,7 +258,7 @@ public class TsaBusinessController extends TsaBaseController {
 	 * @author gagamel
 	 * @since 2020. 11. 4
 	 */
-	@PostMapping("/brand/md/list/save")
+	@PostMapping("/brand/md/save")
 	@ResponseBody
 	public GagaResponse saveBrandMdList(@RequestBody Collection<BrandMd> brandMdList) {
 		if (brandMdList == null || brandMdList.isEmpty()) {
@@ -290,7 +290,7 @@ public class TsaBusinessController extends TsaBaseController {
 	 * @author gagamel
 	 * @since 2020. 11. 4
 	 */
-	@PostMapping("/brand/site/list/save")
+	@PostMapping("/brand/site/save")
 	@ResponseBody
 	public GagaResponse saveBrandSiteList(@RequestBody Collection<SiteBrand> brandSiteList) {
 		if (brandSiteList == null || brandSiteList.isEmpty()) {

+ 92 - 63
style24.admin/src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -44,6 +44,7 @@ import com.style24.persistence.domain.Itemkind;
 import com.style24.persistence.domain.NotiInfo;
 import com.style24.persistence.domain.Notice;
 import com.style24.persistence.domain.NoticeGoods;
+import com.style24.persistence.domain.Option;
 import com.style24.persistence.domain.User;
 import com.style24.persistence.domain.Video;
 import com.style24.persistence.domain.WmsColorMapping;
@@ -266,8 +267,6 @@ public class TsaGoodsController extends TsaBaseController {
 		mav.addObject("useYnList", rendererService.getAvailCommonCodeList("G002"));
 		// 정보고시 분류별 항목
 		mav.addObject("niItemCdList", rendererService.getAvailCommonCodeList("G005"));
-		// 공급업체
-//		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList());
 
 		mav.setViewName("goods/NotiinfoForm");
 
@@ -432,9 +431,14 @@ public class TsaGoodsController extends TsaBaseController {
 	public ModelAndView listForm() {
 		ModelAndView mav = new ModelAndView();
 
-		mav.addObject("siteList", rendererService.getAvailCommonCodeList("G000"));
 		// 공급업체
-		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList());
+		String supplyCompCd = "";
+		String selfYn = "Y";
+		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
+			supplyCompCd = TsaSession.getInfo().getSupplyCompCd();
+			selfYn = "N";
+		}
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, selfYn));
 		// 상품상태
 		String[] exceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
@@ -587,33 +591,36 @@ public class TsaGoodsController extends TsaBaseController {
 						returnGoods += tmpGoods.getGoodsCd() + ",";
 						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;
+								}
+							}
+						}
+					}
 				}
 			}
 
@@ -711,12 +718,15 @@ public class TsaGoodsController extends TsaBaseController {
 	public ModelAndView detailForm(Goods goods) {
 		ModelAndView mav = new ModelAndView();
 
-		String supplyCompCd = "";
-		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
-			supplyCompCd = TsaSession.getInfo().getSupplyCompCd();
-		}
 		// 공급업체
+		String supplyCompCd = "";
 		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd));
+//		String selfYn = "Y";
+//		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
+//			supplyCompCd = TsaSession.getInfo().getSupplyCompCd();
+//			selfYn = "N";
+//		}
+//		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, selfYn));
 
 		String[] goodsStatExceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", goodsStatExceptCds));
@@ -740,8 +750,9 @@ public class TsaGoodsController extends TsaBaseController {
 		// 상품구분
 		mav.addObject("goodsGbList", rendererService.getAvailCommonCodeList("G073"));
 		// 유통구분
-		String[] distributionGbExceptCds = {"G065_20"};
-		mav.addObject("distributionGbList", rendererService.getCommonCodeList("G065", "Y", distributionGbExceptCds));
+		//String[] distributionGbExceptCds = {"G065_20"};
+		//mav.addObject("distributionGbList", rendererService.getCommonCodeList("G065", "Y", distributionGbExceptCds));
+		mav.addObject("distributionGbList", rendererService.getCommonCodeList("G065", "Y"));
 		// 상품연령대
 		mav.addObject("ageGrpCdList", rendererService.getAvailCommonCodeList("G023"));
 		// 년도
@@ -800,6 +811,7 @@ public class TsaGoodsController extends TsaBaseController {
 		ModelAndView mav = new ModelAndView();
 		mav.addObject("goods", goodsService.getGoods(goods));
 		mav.addObject("goodsSizeList", goodsService.getGoodsSizeList(goods));
+		mav.addObject("goodsColorList", goodsService.getGoodsColorList(goods));
 		// 사용여부
 		mav.addObject("useYnList", rendererService.getAvailCommonCodeList("G002"));
 
@@ -828,6 +840,21 @@ public class TsaGoodsController extends TsaBaseController {
 		return goodsService.getGoodsNotiInfoList(goodsInfo);
 	}
 
+	/**
+	 * 상품의 정보고시 항목 목록
+	 *
+	 * @param notiInfo
+	 * @return
+	 * @author eskim
+	 * @since 2010. 11. 18
+	 */
+	@PostMapping("/noti/goodsInfo/list")
+	@ResponseBody
+	public Collection<NotiInfo> getNotiGoodsInfoList(NotiInfo notiInfo) {
+		return goodsService.getNotiGoodsInfoList(notiInfo);
+	}
+
+
 	/**
 	 * 구성상품 목록
 	 *
@@ -1070,6 +1097,9 @@ public class TsaGoodsController extends TsaBaseController {
 	public ModelAndView wmsInstockForm() {
 		ModelAndView mav = new ModelAndView();
 
+		// 공급업체
+		String supplyCompCd = "";
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, "Y"));
 		// 상품상태
 		String[] exceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
@@ -1092,12 +1122,14 @@ public class TsaGoodsController extends TsaBaseController {
 	public ModelAndView itemkindForm() {
 		ModelAndView mav = new ModelAndView();
 
+		// 공급업체
 		String supplyCompCd = "";
+		String selfYn = "Y";
 		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
 			supplyCompCd = TsaSession.getInfo().getSupplyCompCd();
+			selfYn = "N";
 		}
-		// 공급업체
-		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd));
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, selfYn));
 		// 시즌
 		mav.addObject("seasonList", rendererService.getAvailCommonCodeList("G006"));
 		// 년도
@@ -1144,7 +1176,12 @@ public class TsaGoodsController extends TsaBaseController {
 	public ModelAndView priceForm() {
 		ModelAndView mav = new ModelAndView();
 		// 공급업체
-		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList());
+		String supplyCompCd = "";
+		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
+			supplyCompCd = TsaSession.getInfo().getSupplyCompCd();
+		}
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, "N"));
+
 		// 상품상태
 		String[] exceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
@@ -1167,13 +1204,12 @@ public class TsaGoodsController extends TsaBaseController {
 		ModelAndView mav = new ModelAndView();
 
 		// 사이트
-		mav.addObject("siteList", rendererService.getAvailCommonCodeList("G000"));
 		String supplyCompCd = "";
 		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
 			supplyCompCd = TsaSession.getInfo().getSupplyCompCd();
 		}
 		// 공급업체
-		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd));
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, "Y"));
 		// 상품상태
 		// mav.addObject("goodsStatList",
 		// rendererService.getAvailCommonCodeList("G008"));
@@ -1374,12 +1410,9 @@ public class TsaGoodsController extends TsaBaseController {
 	public ModelAndView epSkipForm() {
 		ModelAndView mav = new ModelAndView();
 
-		String supplyCompCd = "";
-		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
-			supplyCompCd = TsaSession.getInfo().getSupplyCompCd();
-		}
 		// 공급업체
-		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd));
+		String supplyCompCd = "";
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd,"Y"));
 		// 상품상태
 		String[] exceptCds = {"G001_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
@@ -1482,7 +1515,6 @@ public class TsaGoodsController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0003"));
 	}
 
-
 	/**
 	 * 상품 재입고알림관리 화면
 	 *
@@ -1510,14 +1542,9 @@ public class TsaGoodsController extends TsaBaseController {
 	public ModelAndView reserveSellForm() {
 		ModelAndView mav = new ModelAndView();
 
-		// 사이트
-		mav.addObject("siteList", rendererService.getAvailCommonCodeList("G000"));
-		String supplyCompCd = "";
-		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
-			supplyCompCd = TsaSession.getInfo().getSupplyCompCd();
-		}
 		// 공급업체
-		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd));
+		String supplyCompCd = "";
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd,"Y"));
 		// 상품상태
 		String[] exceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
@@ -1628,7 +1655,8 @@ public class TsaGoodsController extends TsaBaseController {
 		ModelAndView mav = new ModelAndView();
 
 		// 공급업체
-		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList());
+		String supplyCompCd = "";
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, "Y"));
 
 		mav.setViewName("goods/GoodsDetailNoticeForm");
 
@@ -1717,9 +1745,15 @@ public class TsaGoodsController extends TsaBaseController {
 	public ModelAndView relationListForm(GoodsSearch goodsSearch) {
 		ModelAndView mav = new ModelAndView();
 
-		mav.addObject("siteList", rendererService.getAvailCommonCodeList("G000"));
 		// 공급업체
-		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList());
+		String supplyCompCd = "";
+		String selfYn = "Y";
+		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
+			supplyCompCd = TsaSession.getInfo().getSupplyCompCd();
+			selfYn = "N";
+		}
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, selfYn));
+		//mav.addObject("supplyCompList", rendererService.getSupplyCompanyList());
 		// 상품상태
 		String[] exceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
@@ -1801,14 +1835,9 @@ public class TsaGoodsController extends TsaBaseController {
 	public ModelAndView priceReserveForm() {
 		ModelAndView mav = new ModelAndView();
 
-		// 사이트
-		mav.addObject("siteList", rendererService.getAvailCommonCodeList("G000"));
-		String supplyCompCd = "";
-		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
-			supplyCompCd = TsaSession.getInfo().getSupplyCompCd();
-		}
 		// 공급업체
-		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd));
+		String supplyCompCd = "";
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, "Y"));
 		// 상품상태
 		String[] exceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));

+ 1 - 3
style24.admin/src/main/java/com/style24/admin/biz/web/TsaStockController.java

@@ -72,15 +72,13 @@ public class TsaStockController extends TsaBaseController {
 	public ModelAndView goodsSizeStockListForm() {
 
 		ModelAndView mav = new ModelAndView();
-		//사이트
-		mav.addObject("siteList", rendererService.getAvailCommonCodeList("G000"));
 
 		String supplyCompCd = "";
 		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
 			supplyCompCd = TsaSession.getInfo().getSupplyCompCd();
 		}
 		// 공급업체
-		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd));
+		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, "Y"));
 		// 상품상태
 		String[] exceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));

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

@@ -129,10 +129,10 @@ public class Goods extends TscBaseDomain {
 	private String[] optCd; // 상품 사이즈
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] optNm1; // 상품 옵션1
+	private String[] optCd1; // 상품 옵션1
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] optNm2; // 상품 옵션2
+	private String[] optCd2; // 상품 옵션2
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] baseStockQty; // 안전재고

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

@@ -14,6 +14,7 @@ import lombok.Data;
 public class GoodsImg extends TscBaseDomain {
 
 	private String goodsCd;
+	private String colorCd;
 	private String imgType;
 	private String imgPath1;
 	private String imgPath2;
@@ -38,5 +39,9 @@ public class GoodsImg extends TscBaseDomain {
 
 	private String goodsImgPath;
 	private String col;
+	private String mainColorCd;
+	private String mainColorYn;
+	private String colorEnm;
+	private String optCd1;
 
 }

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

@@ -18,6 +18,7 @@ public class GoodsPriceRes extends TscBaseDomain {
 	private String goodsCd;
 	private int resGoodsPrice;
 	private int endGoodsPrice;
+	private Float sellFeeRate;
 	private String applyStdt;
 	private String applyEddt;
 	private String cfrmYn;

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

@@ -57,8 +57,8 @@ public class GoodsSearch extends TscBaseDomain {
 	private String callBackFun;
 	private String applyStdt;
 	private String applyEddt;
+	private String optCd1;	//옵션1
 	private String optCd2;	//옵션2
-	private String colorCd;	//옵션1
 	private String beforSkipFlag;
 	private String goodsTnm;
 	private String imageViewYn;
@@ -109,4 +109,5 @@ public class GoodsSearch extends TscBaseDomain {
 	private int pageSize = 50;
 	private int pageUnit = 10;
 
+
 }

+ 3 - 0
style24.admin/src/main/java/com/style24/persistence/domain/NotiInfo.java

@@ -25,6 +25,9 @@ public class NotiInfo extends TscBaseDomain {
 	private String reqYn;
 	private String dispYn;
 
+	private String crud;
+	private String goodsCd;
+
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] arrNiClsfCd;
 

+ 2 - 1
style24.admin/src/main/java/com/style24/persistence/domain/UserMenu.java

@@ -6,7 +6,7 @@ import lombok.Data;
 
 /**
  * 사용자메뉴 Domain
- * 
+ *
  * @author gagamel
  * @since 2020. 10. 7
  */
@@ -21,4 +21,5 @@ public class UserMenu extends TscBaseDomain {
 	private int menuLvl;	// 메뉴레벨
 	private String useYn;	// 사용여부
 
+	private String useRole;
 }

+ 3 - 3
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaBusiness.xml

@@ -316,7 +316,7 @@
 	<select id="getBrandList" parameterType="Brand" resultType="Brand">
 		/* TsaBusiness.getBrandList */
 		SELECT CASE WHEN A.SELF_YN = 'Y' THEN 'S'
-		            ELSE 'N'
+		            ELSE 'E'
 		       END               AS BRAND_GB /*브랜드구분*/
 		     , A.BRAND_CD                    /*브랜드코드*/
 		     , A.BRAND_ENM                   /*브랜드영문명*/
@@ -377,7 +377,8 @@
 		SELECT USER_NO AS MD_NO
 		     , USER_NM AS MD_NM
 		FROM   TB_USER
-		WHERE  ROLE_CD = 'G001_A101' /*MD권한*/
+		WHERE   1 = 1
+		/* AND ROLE_CD = 'G001_A101'  */  /*MD권한*/
 		<if test="mdNm != null and mdNm != ''">
 		AND    LOWER(USER_NM) LIKE CONCAT('%',LOWER(#{mdNm}),'%')
 		</if>
@@ -496,7 +497,6 @@
 		     , PNT_MRATE20
 		     , DISP_ORD
 		     , USE_YN
-		     , DISP_ORD
 		     , REG_NO
 		     , REG_DT
 		     , UPD_NO

+ 100 - 17
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -387,6 +387,7 @@
 		                   )
 		        </if>
 		        LEFT OUTER JOIN TB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		                                        AND G.MAIN_COLOR_CD = GI.COLOR_CD
 		        WHERE 1=1
 		        <if test="searchGb == null or searchGb =='BASIC' or searchGb =='EXTEND' or searchGb =='MASTER'" >
 		        <include refid="getGoodsListCondition_sql"/>
@@ -397,9 +398,9 @@
 	<select id="getGoodsList" parameterType="GoodsSearch" resultType="Goods">
 		/* TsaGoods.getGoodsList */
 		SELECT Z.*
-		    /*, (CASE WHEN Z.GOODS_TYPE = 'N' THEN (SELECT NVL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = Z.GOODS_CD) 
-		            ELSE (SELECT NVL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_EXTEND WHERE GOODS_CD = Z.GOODS_CD) 
-		            END) AS STOCK_QTY_SUM */
+		    , (CASE WHEN Z.GOODS_TYPE = 'G056_N' THEN (SELECT NVL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK WHERE GOODS_CD = Z.GOODS_CD) 
+		            ELSE (SELECT NVL(SUM(CURR_STOCK_QTY - BASE_STOCK_QTY),0) FROM VW_STOCK_COMPOSE WHERE GOODS_CD = Z.GOODS_CD) 
+		            END) AS STOCK_QTY_SUM
 		    , 0 AS STOCK_QTY_SUM
 		    , (SELECT ITEMKIND_NM FROM TB_ITEMKIND WHERE ITEMKIND_CD = Z.ITEMKIND_CD ) AS ITEMKIND_NM
 		    , FN_GET_USER_NM(REG_NO) AS REG_NM
@@ -430,6 +431,7 @@
 		              , G.ERP_PRICE_LINK_YN
 		              , G.CHANGEABLE_YN
 		              , G.RETURNABLE_YN
+		              , G.GIFT_PACK_YN
 		              , DATE_FORMAT(G.FRST_CFRM_DT, '%Y%m%d%H%i%S') AS FRST_CFRM_DT
 		              , G.SELL_FEE_RATE
 		              , DATE_FORMAT(G.PRICE_UPD_DT,'%Y%m%d%H%i%S') AS PRICE_UPD_DT
@@ -496,6 +498,7 @@
 		                   )
 		        </if>
 		        LEFT OUTER JOIN TB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		                                        AND G.MAIN_COLOR_CD = GI.COLOR_CD
 		        WHERE 1=1
 		        <if test="searchGb == null or searchGb =='BASIC' or searchGb =='EXTEND' or searchGb =='MASTER'" >
 		        <include refid="getGoodsListCondition_sql"/>
@@ -692,11 +695,11 @@
 		        </if>
 		        <if test='dateGbn != null and dateGbn == "S"'>
 		            <if test="stDate != null and stDate != ''">
-		        AND G.APPR_UPD_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		        AND G.FRST_CFRM_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
 		            </if>
 		            <if test="edDate != null and edDate != ''">
 		            <![CDATA[
-		        AND G.APPR_UPD_DT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		        AND G.FRST_CFRM_DT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
 		            ]]>
 		            </if>
 		        </if>
@@ -818,6 +821,7 @@
 		              )
 		</if>
 		LEFT OUTER JOIN TB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		                                AND G.MAIN_COLOR_CD = GI.COLOR_CD
 		WHERE 1=1
 		<if test="searchGb == null or searchGb =='BASIC' or searchGb =='EXTEND' or searchGb =='MASTER'" >
 		<include refid="getGoodsListCondition_sql"/>
@@ -899,6 +903,7 @@
 		FROM TB_GOODS G
 		INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
 		LEFT OUTER JOIN TB_GOODS_IMG GI ON G.GOODS_CD = GI.GOODS_CD
+		                                AND G.MAIN_COLOR_CD = GI.COLOR_CD
 		WHERE 1 = 1 
 		<choose>
 		<when test="goodsCd != null and goodsCd != ''">
@@ -947,6 +952,50 @@
 		ORDER BY C.DISP_ORD
 	</select>
 	
+	<!-- 상품의 정보고시 항목 목록 -->
+	<select id="getNotiGoodsInfoList" parameterType="NotiInfo" resultType="NotiInfo">
+		/* TsaGoods.getNotiGoodsInfoList */
+		SELECT  N.SUPPLY_COMP_CD
+		      , N.NI_CLSF_CD
+		      , N.NI_ITEM_CD
+		      , FN_GET_CODE_NM('G005', N.NI_ITEM_CD) AS NI_ITEM_NM
+		      , CASE WHEN NI_ITEM_CD = 'G005_003' THEN NVL(G.COLOR_NM,N.NI_CONTENT)
+		             WHEN NI_ITEM_CD = 'G005_004' THEN NVL(G.SIZE_NAME,N.NI_CONTENT)
+		             WHEN NI_ITEM_CD = 'G005_006' THEN NVL(FN_GET_CODE_NM('G076', G.ORIGIN_CD),N.NI_CONTENT)
+		             WHEN NI_ITEM_CD = 'G005_097' AND FN_GET_CODE_NM('G076', G.ORIGIN_CD) IN ('대한민국', '한국', 'KOREA') THEN 'N'
+		             WHEN NI_ITEM_CD = 'G005_097' AND FN_GET_CODE_NM('G076', G.ORIGIN_CD) NOT IN ('대한민국', '한국', 'KOREA') THEN 'Y'
+		             WHEN NI_ITEM_CD = 'G005_005' AND G.BRAND_CD= 'T007' THEN G.SUPPLY_COMP_NM
+		             WHEN NI_ITEM_CD = 'G005_009' THEN NVL(G.MAKE_YMD, N.NI_CONTENT)
+		        ELSE N.NI_CONTENT
+		        END
+		        AS  NI_CONTENT
+		      , N.DISP_ORD
+		      , N.REQ_YN
+		      , N.DISP_YN
+		 FROM (
+		     SELECT G.GOODS_CD
+		         , G.ITEMKIND_CD
+		         , G.SUPPLY_COMP_CD
+		         , G.ORIGIN_CD
+		         , G.MAKE_YMD
+		         , (SELECT GROUP_CONCAT(DISTINCT T.OPT_CD1) FROM TB_OPTION T WHERE T.GOODS_CD = G.GOODS_CD)  AS COLOR_NM
+		         , (SELECT GROUP_CONCAT(DISTINCT T.OPT_CD2) FROM TB_OPTION T WHERE T.GOODS_CD = G.GOODS_CD)  AS SIZE_NAME
+		         , G.BRAND_CD
+		         , (SELECT SUPPLY_COMP_NM FROM tb_supply_company SC WHERE SC.SUPPLY_COMP_CD = G.SUPPLY_COMP_CD) AS SUPPLY_COMP_NM 
+		     FROM TB_GOODS G
+		     WHERE 1=1
+		     AND G.GOODS_CD = #{goodsCd}
+		   ) G
+		  , TB_NOTI_INFO N
+		 WHERE 1 = 1
+		 AND N.NI_CLSF_CD = #{niClsfCd}
+		 AND N.SUPPLY_COMP_CD =  CASE G.SUPPLY_COMP_CD
+		                              WHEN 'S0001' THEN 'S0001'
+		                              WHEN 'S0002' THEN 'S0002'
+		                         ELSE 'E' END 
+		 ORDER BY  G.GOODS_CD , N.NI_CLSF_CD, N.DISP_ORD
+	</select>
+	
 	<!-- 상품 기본정보 이력 생성 -->
 	<insert id="createGoodsHst" parameterType="Goods">
 		/* TsaGoods.createGoodsHst */
@@ -1117,6 +1166,9 @@
 		<if test="dayMaxOrdQty != null and dayMaxOrdQty > 0" >
 		    , DAY_MAX_ORD_QTY = #{dayMaxOrdQty}
 		</if>
+		<if test="giftPackYn != null and giftPackYn != ''" >
+		    , GIFT_PACK_YN = #{giftPackYn}
+		</if>
 		WHERE GOODS_CD = #{goodsCd}
 	</update>
 	
@@ -1133,6 +1185,7 @@
 		       END AS GOODS_IMAGE_YN
 		FROM TB_GOODS A
 		LEFT OUTER JOIN TB_GOODS_IMG B ON A.GOODS_CD = B.GOODS_CD
+		                               AND A.MAIN_COLOR_CD = B.COLOR_CD
 		WHERE 1 = 1
 		<choose>
 		<when test="goodsCd != null and goodsCd != ''">
@@ -1165,6 +1218,7 @@
 		     , GOODS_SNM1
 		     , ITEMKIND_CD
 		     , SELF_MALL_YN
+		     , GIFT_PACK_YN
 		     , DATE_FORMAT(FRST_CFRM_DT, '%Y%m%d%H%i%S') AS FRST_CFRM_DT
 		     , UPD_NO
 		     , FN_GET_USER_NM(UPD_NO) AS UPD_NM
@@ -1199,15 +1253,15 @@
 		       G.STYLE_YEAR,';',
 		       FN_GET_CODE_NM('G006',G.SEASON_CD),';',
 		       FN_GET_CODE_NM('G007',G.SEX_GB),';',
-		       G.COLOR_CD,';',
+		      /* G.COLOR_CD,';',
 		       C.COLOR_ENM,';',
-		       C.COLOR_KNM,';',
+		       C.COLOR_KNM,';',*/
 		       REPLACE(I.ITEMKIND_NM,'>',';')
 		       )) AS GOODS_SNM
 		FROM TB_GOODS G
 		INNER JOIN TB_BRAND B ON G.BRAND_CD = B.BRAND_CD
 		LEFT OUTER JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD
-		LEFT OUTER JOIN TB_COLOR C ON G.COLOR_CD = C.COLOR_CD
+		/*LEFT OUTER JOIN TB_COLOR C ON G.COLOR_CD = C.COLOR_CD*/
 		WHERE G.GOODS_CD = #{goodsCd}
 	</select>
 	
@@ -1337,6 +1391,31 @@
 		ORDER BY C.DISP_ORD, A.DISP_ORD
 	</select>
 	
+	<!-- 상품 색상목록 조회 -->
+	<select id="getGoodsColorList" parameterType="Goods" resultType="GoodsImg">
+		/* TsaGoods.getGoodsColorList */
+		SELECT A.GOODS_CD 
+		     , NVL(A.OPT_CD1, A.MAIN_COLOR_CD) AS OPT_CD1
+		     , A.MAIN_COLOR_CD
+		     , IF(A.MAIN_COLOR_CD = NVL(A.OPT_CD1, A.MAIN_COLOR_CD), 'Y','N') AS  MAIN_COLOR_YN 
+		     , GI.IMG_PATH1
+		     , GI.IMG_PATH6
+		     , NVL(GI.IMG_TYPE,'G030_A') AS IMG_TYPE
+		     , C.COLOR_ENM 
+		FROM (
+		      SELECT A.GOODS_CD 
+		           , A.MAIN_COLOR_CD 
+		           , B.OPT_CD1 
+		      FROM TB_GOODS A
+		      LEFT OUTER JOIN TB_OPTION B ON A.GOODS_CD = B.GOODS_CD
+		      WHERE A.GOODS_CD  = #{goodsCd}
+		      GROUP BY A.GOODS_CD , B.OPT_CD1
+		     ) A 
+		LEFT OUTER JOIN TB_COLOR C ON A.OPT_CD1 = C.COLOR_CD 
+		LEFT OUTER JOIN TB_GOODS_IMG GI ON A.GOODS_CD  = GI.GOODS_CD 
+		                                AND A.OPT_CD1 = GI.COLOR_CD
+	</select>
+	
 	<!-- 구성상품 목록 -->
 	<select id="getGoodsDetailComposeList" parameterType="Goods" resultType="GoodsCompose">
 		/* TsaGoods.getGoodsDetailComposeList */
@@ -1368,6 +1447,7 @@
 		FROM TB_GOODS_COMPOSE A
 		INNER JOIN  TB_GOODS B ON A.COMPS_GOODS_CD = B.GOODS_CD
 		LEFT OUTER JOIN TB_GOODS_IMG I ON A.COMPS_GOODS_CD = I.GOODS_CD
+		                               AND B.MAIN_COLOR_CD = I.COLOR_CD
 		WHERE A.GOODS_CD = #{goodsCd}
 		ORDER BY A.DISP_ORD 
 	</select>
@@ -1513,6 +1593,7 @@
 		  , AGE_GRP_CD = #{ageGrpCd}
 		  , SELL_FEE_RATE = #{sellFeeRate}
 		  , GIFT_PACK_YN = #{giftPackYn}
+		  , MAIN_COLOR_CD = #{mainColorCd}
 		  , UPD_NO = #{updNo}
 		  , UPD_DT = NOW()
 		WHERE GOODS_CD = #{goodsCd}
@@ -1655,8 +1736,8 @@
 		VALUES (
 		       #{goodsCd}
 		     , #{optCd}
-		     , #{optNm1}
-		     , #{optNm2}
+		     , #{optCd1}
+		     , #{optCd2}
 		     , #{baseStockQty}
 		     , #{currStockQty}
 		     , #{addPrice}
@@ -1670,8 +1751,6 @@
 		)
 		ON DUPLICATE KEY UPDATE 
 		        BASE_STOCK_QTY = #{baseStockQty}
-		      , OPT_CD1 = #{optCd1}
-		      , OPT_CD2 = #{optCd2}
 		      , ADD_PRICE = #{addPrice}
 		      , SOLDOUT_YN = #{soldoutYn}
 		      , DISP_ORD = #{dispOrd}
@@ -1679,7 +1758,7 @@
 		      , UPD_NO = #{updNo}
 		      , UPD_DT = NOW()
 		      <if test='selfGoodsYn != null and selfGoodsYn == "N"'>
-		      , CURR_ON_STOCK_QTY = #{currOnStockQty}
+		      , CURR_STOCK_QTY = #{currStockQty}
 		      </if>
 	</update>
 	
@@ -2467,6 +2546,7 @@
 		              , 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
@@ -2559,6 +2639,7 @@
 		, GOODS_CD
 		, RES_GOODS_PRICE
 		, END_GOODS_PRICE
+		, SELL_FEE_RATE
 		, APPLY_STDT
 		, APPLY_EDDT
 		, CFRM_YN
@@ -2575,6 +2656,7 @@
 		, #{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')
@@ -2769,14 +2851,15 @@
 		     , UPD_DT = NOW()
 	</insert>
 	
-	<!-- 상품 사이즈 존재여부 확인 -->
-	<select id="getGoodsSizeCount" parameterType="Option" resultType="int">
-		/* TsaGoods.getGoodsSizeCount */
+	<!-- 상품 옵션 존재여부 확인 -->
+	<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>
+	</select>
+	
 </mapper>

+ 9 - 8
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaLogin.xml

@@ -12,37 +12,37 @@
 		     , ROLE_CD                                                     /*권한코드*/
 		     , FN_GET_CODE_NM('G001',ROLE_CD)            AS ROLE_NM        /*권한명*/
 		     , ROLE_REF_VAL                                                /*권한관련값*/
-		     , CASE WHEN SUBSTR(ROLE_CD,1,1) IN ('A','B','E') THEN
+		     , CASE WHEN SUBSTR(REPLACE(ROLE_CD,'G001_', ''),1,1) IN ('A','B','E') THEN
 		                ROLE_REF_VAL
 		            END                                  AS SUPPLY_COMP_CD /*공급업체코드
-		     , CASE WHEN SUBSTRING(ROLE_CD,1,1) IN ('A','B','E') THEN
+		     , CASE WHEN SUBSTRING(REPLACE(ROLE_CD,'G001_', ''),1,1) IN ('A','B','E') THEN
 		                (SELECT SUPPLY_COMP_NM
 		                 FROM   TB_SUPPLY_COMPANY
 		                 WHERE  SUPPLY_COMP_CD = A.ROLE_REF_VAL
 		                )
 		       END                                       AS SUPPLY_COMP_NM /*공급업체명*/
-		     , CASE WHEN SUBSTRING(ROLE_CD,1,1) = 'C' THEN
+		     , CASE WHEN SUBSTRING(REPLACE(ROLE_CD,'G001_', ''),1,1) = 'C' THEN
 		                ROLE_REF_VAL
 		       END                                       AS VENDOR_ID      /*벤더ID*/
-		     , CASE WHEN SUBSTRING(ROLE_CD,1,1) = 'C' THEN
+		     , CASE WHEN SUBSTRING(REPLACE(ROLE_CD,'G001_', ''),1,1) = 'C' THEN
 		                FN_GET_CODE_NM('G003',ROLE_REF_VAL)
 		       END                                       AS VENDOR_NM      /*벤더명*/
-		     , CASE WHEN SUBSTRING(ROLE_CD,1,1) = 'D' THEN
+		     , CASE WHEN SUBSTRING(REPLACE(ROLE_CD,'G001_', ''),1,1) = 'D' THEN
 		                ROLE_REF_VAL
 		       END                                       AS AF_LINK_CD     /*제휴링크코드*/
-		     , CASE WHEN SUBSTRING(ROLE_CD,1,1) = 'D' THEN
+		     , CASE WHEN SUBSTRING(REPLACE(ROLE_CD,'G001_', ''),1,1) = 'D' THEN
 		                (SELECT AF_LINK_NM
 		                 FROM   TB_AF_LINK
 		                 WHERE  AF_LINK_CD = A.ROLE_REF_VAL
 		                )
 		       END                                       AS AF_LINK_NM     /*제휴링크명*/
-		     , CASE WHEN SUBSTRING(ROLE_CD,1,1) = 'D' THEN
+		     , CASE WHEN SUBSTRING(REPLACE(ROLE_CD,'G001_', ''),1,1) = 'D' THEN
 		                (SELECT AF_CHANNEL
 		                 FROM   TB_AF_LINK
 		                 WHERE  AF_LINK_CD = A.ROLE_REF_VAL
 		                )
 		       END                                       AS AF_CHANNEL     /*제휴채널*/
-		     , CASE WHEN SUBSTRING(ROLE_CD,1,1) = 'D' THEN
+		     , CASE WHEN SUBSTRING(REPLACE(ROLE_CD,'G001_', ''),1,1) = 'D' THEN
 		                (SELECT FN_GET_CODE_NM('G053',AL.AF_CHANNEL)
 		                 FROM   TB_AF_LINK AL
 		                 WHERE  AL.AF_LINK_CD = A.ROLE_REF_VAL
@@ -56,6 +56,7 @@
 		     , DATE_FORMAT(PASSWD_CHG_DT,'%Y%m%d%H%i%S') AS PASSWD_CHG_DT  /*비밀번호변경일시*/
 		FROM   TB_USER A
 		WHERE  USER_ID = #{userId}
+		AND    NOT (ROLE_CD LIKE 'G001_B%' OR ROLE_CD LIKE 'G001_E%') /*입점업체담당자, 촬영업체담당자*/
 		AND    USE_YN = 'Y'
 	</select>
 	

+ 10 - 4
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaStock.xml

@@ -187,11 +187,11 @@
 		        </if>
 		        <if test='dateGbn != null and dateGbn == "S"'>
 		            <if test="stDate != null and stDate != ''">
-		        AND G.APPR_UPD_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		        AND G.FRST_CFRM_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
 		            </if>
 		            <if test="edDate != null and edDate != ''">
 		            <![CDATA[
-		        AND G.APPR_UPD_DT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		        AND G.FRST_CFRM_DT < DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
 		            ]]>
 		            </if>
 		        </if>
@@ -246,8 +246,11 @@
 		            INNER JOIN TB_SUPPLY_COMPANY S ON G.SUPPLY_COMP_CD = S.SUPPLY_COMP_CD
 		            INNER JOIN TB_OPTION ST ON G.GOODS_CD = ST.GOODS_CD
 		            <if test="searchGb == null or searchGb =='BASIC'">
+		                                    <if test="optCd1 == null or optCd1 != ''">
+		                                    AND ST.OPT_CD1 = #{optCd1}
+		                                    </if>
 		                                    <if test="optCd2 == null or optCd2 != ''">
-		                                    AND ST.OPT_CD2 = ${optCd2}
+		                                    AND ST.OPT_CD2 = #{optCd2}
 		                                    </if>
 		            </if>
 		            LEFT OUTER JOIN  (SELECT GOODS_CD,
@@ -394,8 +397,11 @@
 		                    INNER JOIN TB_SUPPLY_COMPANY S ON G.SUPPLY_COMP_CD = S.SUPPLY_COMP_CD
 		                    INNER JOIN TB_OPTION ST ON G.GOODS_CD = ST.GOODS_CD
 		                    <if test="searchGb == null or searchGb =='BASIC'">
+		                                            <if test="optCd1 == null or optCd1 != ''">
+		                                            AND ST.OPT_CD1 = #{optCd1}
+		                                            </if>
 		                                            <if test="optCd2 == null or optCd2 != ''">
-		                                            AND ST.OPT_CD2 = ${optCd2}
+		                                            AND ST.OPT_CD2 = #{optCd2}
 		                                            </if>
 		                    </if>
 		                    LEFT OUTER JOIN  (SELECT GOODS_CD,

+ 4 - 4
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaSystem.xml

@@ -10,19 +10,19 @@
 		     , A.USER_NM                                                     /*사용자명*/
 		     , A.ROLE_CD                                                     /*권한코드*/
 		     , A.ROLE_REF_VAL                                                /*권한관련값*/
-		     , CASE WHEN SUBSTRING(A.ROLE_CD,1,1) IN ('A','B','E') THEN
+		     , CASE WHEN SUBSTRING(REPLACE(A.ROLE_CD,'G001_', ''),1,1) IN ('A','B','E') THEN
 		                A.ROLE_REF_VAL
 		            END                                    AS SUPPLY_COMP_CD /*공급업체코드*/
-		     , CASE WHEN SUBSTRING(A.ROLE_CD,1,1) IN ('A','B','E') THEN
+		     , CASE WHEN SUBSTRING(REPLACE(A.ROLE_CD,'G001_', ''),1,1) IN ('A','B','E') THEN
 		                (SELECT SUPPLY_COMP_NM
 		                 FROM   TB_SUPPLY_COMPANY
 		                 WHERE  SUPPLY_COMP_CD = A.ROLE_REF_VAL
 		                )
 		       END                                         AS SUPPLY_COMP_NM /*공급업체명*/
-		     , CASE WHEN SUBSTRING(A.ROLE_CD,1,1) = 'C' THEN
+		     , CASE WHEN SUBSTRING(REPLACE(A.ROLE_CD,'G001_', ''),1,1) = 'C' THEN
 		                A.ROLE_REF_VAL
 		       END                                         AS VENDOR_ID      /*벤더ID*/
-		     , CASE WHEN SUBSTRING(A.ROLE_CD,1,1) = 'C' THEN
+		     , CASE WHEN SUBSTRING(REPLACE(A.ROLE_CD,'G001_', ''),1,1) = 'C' THEN
 		                FN_GET_CODE_NM('G003',A.ROLE_REF_VAL)
 		       END                                         AS VENDOR_NM      /*벤더명*/
 		     , A.EMAIL                                                       /*이메일*/

+ 30 - 7
style24.admin/src/main/webapp/WEB-INF/views/business/BrandForm.html

@@ -304,8 +304,8 @@
 		$("#detailForm input[name=brandKnm]").val(event.data.brandKnm);
 		$("#detailForm input[name=brandGrpNm]").val(event.data.brandGrpNm);
 		$("#detailForm input[name=erpBrandCd]").val(event.data.erpBrandCd);
-		$("#detailForm select[name=supplyCompCd]").val(event.data.supplyCompCd);
 		$("#detailForm select[name=distributionGb]").val(event.data.distributionGb);
+		fnGetSupplyCompCdList(event.data.supplyCompCd);
 		
 		// 출고처 정보
 		$.getJSON('/renderer/delvloc/list/' + event.data.supplyCompCd
@@ -330,6 +330,7 @@
 		$("#detailForm input:radio[name=useYn]:input[value=" + event.data.useYn + "]").click();
 		$("#detailForm input[name=dispOrd]").val(event.data.dispOrd);
 		
+		
 		// 담당MD 영역 노출
 		$("#brandMdArea").removeClass("off").addClass("on");
 		fnGetBrandMdList(event.data.brandCd);
@@ -337,6 +338,8 @@
 		// 전시사이트 영역 노출
 		$("#siteArea").removeClass("off").addClass("on");
 		fnGetBrandSiteList(event.data.brandCd);
+		
+		$("#detailForm select[name=supplyCompCd]").val(event.data.supplyCompCd);
 	}
 
 	// 조회
@@ -412,10 +415,25 @@
 		});
 	});
 	
+	// 해당공급업체 조회
+	var fnGetSupplyCompCdList = function(supplyCompCd){
+		$.getJSON('/renderer/supply/company/list/' + $('#detailForm select[name=brandGb]').val()
+			, function(result, status) {
+				$('#detailForm select[name=supplyCompCd]').empty().append('<option value="">[선택]</option>');
+				$.each(result, function(idx, item) {
+					var optionHtml = '<option value="' + item.cd + '">[' + item.cd + '] '+ item.cdNm + '</option>\n';
+					$('#detailForm select[name=supplyCompCd]').append(optionHtml);
+				});
+				$("#detailForm select[name=supplyCompCd]").val(supplyCompCd);
+		});
+		
+	}
+	
+	
 	// 브랜드담당MD 목록
-	var fnGetBrandMdList = function(brandCd) {
+	var fnGetBrandMdList = function(brandCd) {debugger;
 		$.getJSON('/business/brand/md/list/' + brandCd
-			, function(result, status) {
+			, function(result, status) {debugger;
 				$("#tdBrandMd input[name=mdNm]").val('');
 				$("#tdBrandMd input[name=mdNo]").val('');
 				
@@ -426,7 +444,7 @@
 				});
 				
 				for (var i = 0; i < result.length; i++) {
-					if (result[i].formalGb == '10') {
+					if (result[i].formalGb == 'G009_10') {
 						if (i == 0) {
 							$("#brandMdArea input[name=mdNm]").val(result[i].mdNm);
 							$("#brandMdArea input[name=mdNo]").val(result[i].mdNo);
@@ -444,6 +462,7 @@
 			, function(result) {
 				// 전시사이트 체크박스 체크 제거
 				$('#detailForm input:checkbox[name=siteCd]').prop('checked', false);
+				$('#detailForm input:checkbox[name=siteCd]').parent("label").removeClass("checked");
 				
 				// 체크박스 개수
 				var chkboxCnt = $('#detailForm input:checkbox[name=siteCd]').length;
@@ -457,6 +476,7 @@
 							var data = result[j].siteCd;
 							if ($('#detailForm input:checkbox[name=siteCd]').eq(i).val() == data) {
 								$('#detailForm input:checkbox[name=siteCd]').eq(i).prop('checked', true);
+								$("#detailForm input:checkbox[name=siteCd]").eq(i).parent("label").addClass("checked");
 							}
 						}
 					}
@@ -464,10 +484,10 @@
 		});
 	}
 	
-	var fnSetMdInfo = function(result) {
+	var fnSetMdInfo = function(result) {debugger;
 		var ind = $('#mdIdx').val();
-		$("#tdBrandMd input[name=mdNo]").eq(ind).val(result.userNo);
-		$("#tdBrandMd input[name=mdNm]").eq(ind).val(result.userNm);
+		$("#tdBrandMd input[name=mdNo]").eq(ind).val(result[0].mdNo);
+		$("#tdBrandMd input[name=mdNm]").eq(ind).val(result[0].mdNm);
 	}
 	
 	// 브랜드담당MD 수정
@@ -576,6 +596,9 @@
 		$("#detailForm select[name=brandGb]").removeAttr("disabled");
 		$('#detailForm select[name=delvLocCd]').empty().append('<option value="">[선택]</option>');
 		
+		$("#detailForm input[type=checkbox]").removeClass("checked");
+		$("#detailForm input[type=checkbox]").parent("label").removeClass("checked");
+		
 		// 자사구매포인트적립율 설정
 		fnSetPntRate('Y');
 

+ 64 - 12
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -32,6 +32,7 @@
 				<input type="hidden" id="goodsImageYn" name="goodsImageYn" />
 				<input type="hidden" id="niClsfNm" name="niClsfNm" />
 				<input type="hidden" id="uploadGoodsUrl" name="uploadGoodsUrl" th:value="${@environment.getProperty('upload.goods.view')}"/>
+				<input type="hidden" id="mainColorCd" name="mainColorCd" />
 				<input type="hidden" id="goodsType" name="goodsType" />
 				<input type="hidden" id="goodsComposeList" name="goodsComposeList" />
 				<table class="frmStyle">
@@ -142,13 +143,19 @@
 											<input type="hidden" id="formalGbOrg" name="formalGbOrg"/>
 										</td>
 										<th>상품상태<em class="required" title="필수"></em></th>
-										<td colspan="3">
+										<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>
 											<input type="hidden" id="goodsStatOrg" name="goodsStatOrg"/>
 										</td>
+										<th>자사몰 노출여부<em class="required" title="필수"></em></th>
+										<td>
+											<label class="rdoBtn"><input type="radio" name="selfMallYn" id="selfMallYnY" value="Y" />Y</label>
+											<label class="rdoBtn"><input type="radio" name="selfMallYn" id="selfMallYnN" value="N"/>N</label>
+											<input type="hidden" id="selfMallYnOrg" name="selfMallYnOrg"/>
+										</td>
 									</tr>
 									<tr>
 										<td rowspan="11">&nbsp;</td>
@@ -199,8 +206,14 @@
 											</select>
 											<input type="hidden" id="ageGrpCdOrg" name="ageGrpCdOrg"/>
 										</td>
+										<th>선물 주문가능여부<em class="required" title="필수"></em></th>
+										<td>
+											<label class="rdoBtn"><input type="radio" name="giftPackYn" id="giftPackYnY" value="Y" />Y</label>
+											<label class="rdoBtn"><input type="radio" name="giftPackYn" id="giftPackYnN" value="N"/>N</label>
+											<input type="hidden" id="giftPackYnOrg" name="giftPackYnOrg"/>
+										</td>
 										<th>가격변경일</th>
-										<td colspan="3"><span id="priceUpdDtTxt"></span></td>
+										<td><span id="priceUpdDtTxt"></span></td>
 									</tr>
 									<tr>
 										<th>정상가</th>
@@ -221,11 +234,11 @@
 										<td><input type="text" class="w80p aR" id="sellFeeRate" name="sellFeeRate" maxlength="10" data-valid-type="numeric"/> %
 											<input type="hidden" id="sellFeeRateOrg" name="sellFeeRateOrg"/>
 										</td>
-										<th>자사몰 노출여부<em class="required" title="필수"></em></th>
+										<th>반품여부<em class="required" title="필수"></em></th>
 										<td>
-											<label class="rdoBtn"><input type="radio" name="selfMallYn" id="selfMallYnY" value="Y"  checked/>Y</label>
-											<label class="rdoBtn"><input type="radio" name="selfMallYn" id="selfMallYnn" value="N"/>N</label>
-											<input type="hidden" id="selfMallYnOrg" name="selfMallYnOrg"/>
+											<label class="rdoBtn"><input type="radio" name="returnableYn" id="returnableYnY" value="Y" />Y</label>
+											<label class="rdoBtn"><input type="radio" name="returnableYn" id="returnableYnN" value="N"/>N</label>
+											<input type="hidden" id="returnableYnOrg" name="returnableYnOrg"/>
 										</td>
 									</tr>
 									<tr>
@@ -504,6 +517,7 @@
 		},
 		{headerName: "재고연동여부", field: "erpStockLinkYn" , width: 100, cellClass: 'text-center'},
 		{headerName: "자사몰노출여부", field: "selfMallYn" , width: 120, cellClass: 'text-center'},
+		{headerName: "선물주문여부", field: "giftPackYn" , width: 120, cellClass: 'text-center'},
 		{headerName: "판매수수료율", field: "sellFeeRate" , width: 120, cellClass: 'text-right'},
 		{headerName: "사용자검색어", field: "goodsSnm1" , width: 150, cellClass: 'text-left'},
 		{headerName: "검색어", field: "goodsSnm" , width: 450, cellClass: 'text-left', tooltipField: "goodsSnm"}
@@ -651,6 +665,8 @@
 			$('#goodsDetailForm').find('#styleYearTxt').html(result.styleYear);
 			$('#goodsDetailForm select[name=goodsGb]').val(result.goodsGb);
 			$('#goodsDetailForm input[name=goodsGbOrg]').val(result.goodsGb);
+			$('#goodsDetailForm input[name=mainColorCd]').val(result.mainColorCd);
+			
 
 			$("#goodsDetailForm input[name=goodsNm]").val(result.goodsNm);
 			$('#goodsDetailForm input[name=goodsNmOrg]').val(result.goodsNm);
@@ -695,6 +711,16 @@
 			}else{
 				$("#goodsDetailForm input:radio[name=selfMallYn]:input[value='N']").trigger('click');
 			}
+			if (result.giftPackYn == "Y"){
+				$("#goodsDetailForm input:radio[name=giftPackYn]:input[value='Y']").trigger('click');
+			}else{
+				$("#goodsDetailForm input:radio[name=giftPackYn]:input[value='N']").trigger('click');
+			}
+			if (result.returnableYn == "Y"){
+				$("#goodsDetailForm input:radio[name=returnableYn]:input[value='Y']").trigger('click');
+			}else{
+				$("#goodsDetailForm input:radio[name=returnableYn]:input[value='N']").trigger('click');
+			}
 			
 			$('#goodsDetailForm input[name=sellFeeRate]').val(result.sellFeeRate);
 			$("#goodsDetailForm input[name=sellFeeRateOrg]").val(result.sellFeeRate);
@@ -718,10 +744,11 @@
 			$("#goodsDetailForm input[name=formalGbOrg]").val(result.formalGb);
 			$("#goodsDetailForm input[name=erpPriceLinkYnOrg]").val(result.erpPriceLinkYn);
 			$("#goodsDetailForm input[name=selfMallYnOrg]").val(result.selfMallYn);
+			$("#goodsDetailForm input[name=giftPackYnOrg]").val(result.giftPackYn);
 			$("#goodsDetailForm input[name=prePpntUsableYnOrg]").val(result.prePpntUsableYn);
 			$("#goodsDetailForm input[name=preMpntUsableYnOrg]").val(result.preMpntUsableYn);
 			$("#goodsDetailForm input[name=changeableYnOrg]").val(result.changeableYn);
-			
+			$("#goodsDetailForm input[name=returnableYnOrg]").val(result.returnableYn);
 
 			$("#goodsDetailForm input[type=radio][checked]").addClass("checked");
 			//$("#goodsDetailForm input[type=radio][checked]").parent("label").addClass("checked");
@@ -732,6 +759,7 @@
 				$("#goodsDetailForm").find("#selfGoodsDpTitle").html('원코드');
 				$("#goodsDetailForm").find("#selfGoodsDpTxt").html('<div id="supplyGoodsCdTxt"></div>');
 				$('#goodsDetailForm').find('#supplyGoodsCdTxt').html(result.supplyGoodsCd);
+				$('#goodsDetailForm select[name=distributionGb]').attr('readonly', true);
 			}
 			$('#goodsDetailForm input[name=delvFee]').val(result.delvFee.addComma());
 			$('#goodsDetailForm input[name=pntPrate]').val(result.pntPrate);
@@ -1129,6 +1157,15 @@
 				});
 			}
 			
+			// 자사일 경우 대표색상 선택 여부
+			if ("Y" == $('#goodsDetailForm input[name=selfGoodsYn]').val()){
+				
+				if($("#goodsDetailForm input[name=basicColor]:checked").length == 0) {
+					mcxDialog.alert("대표색상을 선택해주세요.")
+					return false;
+				}
+			}
+			
 		}
 
 		if(optCheck) {
@@ -1472,6 +1509,8 @@
 			return false;
 		}
 		
+		var basicColor = $("#goodsDetailForm input[name=basicColor]:checked").val();
+		
 		var dcRate = 0;
 		var listPrice = $("#goodsDetailForm input[name=listPrice]").val().removeComma();
 		var currPrice = $("#goodsDetailForm input[name=currPrice]").val().removeComma();
@@ -1617,6 +1656,7 @@
 				}else{
 					$("#goodsDetailForm input[name=chDataYn]").val('N');
 				}
+				$("#goodsDetailForm input[name=mainColorCd]").val($("#goodsDetailForm input[name=basicColor]:checked").val());
 				
 				//구성상품
 				var allData = gagaAgGrid.getAllRowData(gridGoodsComposeOptions);
@@ -1678,7 +1718,7 @@
 	}
 
 	//상품기본정보 변경여부 확인
-	var fnChangeCheck = function(){
+	var fnChangeCheck = function(){debugger;
 		
 		//상품타이틀
 		if ($("#goodsDetailForm input[name=goodsTnmOrg]").val() != $("#goodsDetailForm input[name=goodsTnm]").val()){
@@ -1717,17 +1757,22 @@
 			return true;
 		}
 		
-		//자사일경우만
-		if($("#goodsDetailForm input[name=selfGoodsYn]").val() == 'Y' ){
+		//자사 일반상품만 
+		if($("#goodsDetailForm input[name=selfGoodsYn]").val() == 'Y' && $("#goodsDetailForm input[name=goodType]").val() == 'G056_N'){
 			//ERP재고연동여부
-			if ($("#goodsDetailForm input[name=erpStockLinkYnOrg]").val() != $("input[name=erpStockLinkYn]:checked").val()){
+			if ($("#goodsDetailForm input[name=erpStockLinkYnOrg]").val() != $("#goodsDetailForm input[name=erpStockLinkYn]:checked").val()){
 				return true;
 			}
 		}
+		
 		//자사몰 노출여부
 		if ($("#goodsDetailForm input[name=selfMallYnOrg]").val() != $("input[name=selfMallYn]:checked").val()){
 			return true;
 		}
+		//선물주문여부
+		if ($("#goodsDetailForm input[name=giftPackYnOrg]").val() != $("input[name=giftPackYn]:checked").val()){
+			return true;
+		}
 		//PC포인트 
 		if ($("#goodsDetailForm input[name=pntPrateOrg]").val() != $("#goodsDetailForm input[name=pntPrate]").val()){
 			return true;
@@ -1772,7 +1817,14 @@
 		if ($("#goodsDetailForm input[name=sellFeeRateOrg]").val() != $("#goodsDetailForm input[name=sellFeeRate]").val()){
 			return true;
 		}
-
+		// 메인 색상코드
+		if ($("#goodsDetailForm input[name=mainColorCd]").val() != $("#goodsDetailForm input[name=basicColor]:checked").val()){
+			return true;
+		}
+		// 반품가능여부
+		if ($("#goodsDetailForm input[name=returnableYnOrg]").val() != $("input[name=returnableYn]:checked").val()){
+			return true;
+		}
 		
 		return false;
 	}

+ 25 - 28
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsDetailSizeStockForm.html

@@ -14,7 +14,7 @@
  * 1.0  2020.10.26   eskim       수정
  *******************************************************************************
  -->
-	<table class="frmStyle">
+	<table class="frmStyle" th:with="uploadGoodsUrl=${@environment.getProperty('upload.goods.view')},uxImgUrl=${@environment.getProperty('domain.uximage')}">
 		<colgroup>
 			<col width="100px"/>
 			<col width="100px"/>
@@ -31,30 +31,27 @@
 			<th>색상</th>
 			<th>이미지관리</th>
 		</tr>
+		<tbody id="colorList" >
+		<th:block  th:if="${goodsColorList}" th:each="goodsColor, sizeStatus : ${goodsColorList}">
 		<tr>
-			<td class="aC">1</td>
-			<td class="aC"><label class="rdoBtn"><input type="radio" name="selfMallYn" id="selfMallYnY" value="Y"  checked/></label></td>
-			<td class="aC"><img alt="" src="http://image.istyle24.com/Upload/ProductImage/0000004766/20200826/14505664_L.jpg?RS=560" width="60px"></td>
-			<td class="aC">BK</td>
-			<td class="aC">BLACK</td>
-			<td><button type="button" class="btn btn-base btn-lg" onclick="fnGoodsDetailImg('BK')">등록</button></td>
-		</tr>
-		<tr>
-			<td class="aC">2</td>
-			<td class="aC"><label class="rdoBtn"><input type="radio" name="selfMallYn" id="selfMallYnY" value="Y"  /></label></td>
-			<td class="aC"><img alt="" src="http://image.istyle24.com/Upload/ProductImage/0000004766/20200826/14505664_L.jpg?RS=560" width="60px"></td>
-			<td class="aC">BK</td>
-			<td class="aC">BLACK</td>
-			<td><button type="button" class="btn btn-base btn-lg" onclick="fnGoodsDetailImg('BK')">등록</button></td>
-		</tr>
-		<tr>
-			<td class="aC">3</td>
-			<td class="aC"><label class="rdoBtn"><input type="radio" name="selfMallYn" id="selfMallYnY" value="Y"  /></label></td>
-			<td class="aC"><img alt="" src="http://image.istyle24.com/Upload/ProductImage/0000004766/20200826/14505664_L.jpg?RS=560" width="60px"></td>
-			<td class="aC">BK</td>
-			<td class="aC">BLACK</td>
-			<td><button type="button" class="btn btn-base btn-lg" onclick="fnGoodsDetailImg('BK')">등록</button></td>
+			<td class="aC" th:text="${sizeStatus.count}">1</td>
+			<td class="aC"><label class="rdoBtn"><input type="radio" name="basicColor" th:value="${goodsColor.optCd1}"  th:checked="${goodsColor.mainColorYn =='Y'}" /></label></td>
+			<td class="aC">
+				<th:block th:if="${goodsColor.imgType == 'G030_A'}">
+					<img width="60" th:if="${goodsColor.imgPath6}" th:src="${goodsColor.imgPath6}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/image/no.gif'}+'\';'" alt="">
+					<img width="60" th:unless="${goodsColor.imgPath6}" th:src="${goodsColor.imgPath1}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/image/no.gif'}+'\';'" alt="">
+				</th:block>
+				<th:block th:unless="${goodsColor.imgType == 'G030_A'}">
+					<img width="60" th:if="${goodsColor.imgPath6}" th:src="${uploadGoodsUrl+goodsColor.imgPath6}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/image/no.gif'}+'\';'" alt="">
+					<img width="60" th:unless="${goodsColor.imgPath6}" th:src="${uploadGoodsUrl+goodsColor.imgPath1}" th:onerror="'this.src=\''+@{${uxImgUrl}+ '/image/no.gif'}+'\';'" alt="">
+				</th:block>
+			</td>	
+			<td class="aC" th:text="${goodsColor.optCd1}">BK</td>
+			<td class="aC" th:text="${goodsColor.colorEnm}">BLACK</td>
+			<td><button type="button" class="btn btn-base btn-lg" th:onclick="fnGoodsDetailImg([[${goodsColor.optCd1}]])" th:text="${#strings.isEmpty(goodsColor.imgPath1) ?'등록':'수정'}">등록</button></td>
 		</tr>
+		</th:block>
+		</tbody>
 	</table>
 
 	<table class="frmStyle">
@@ -86,8 +83,8 @@
 		</th:block>
 		<tr>
 			<th>상품코드</th>
-			<th>옵션1</th>
-			<th>옵션2</th>
+			<th>옵션1(색상)</th>
+			<th>옵션2(사이즈)</th>
 			<th>추가가격</th>
 			<th>노출순서</th>
 			<th>노출여부</th>
@@ -98,16 +95,16 @@
 			<th>품절여부</th>
 		</tr>
 		<tbody id="optionList" >
-		<th:block th:each="goodsSize, sizeStatus : ${goodsSizeList}">
+		<th:block  th:if="${goodsSizeList}" th:each="goodsSize, sizeStatus : ${goodsSizeList}">
 		<tr>
 			<td th:rowspan="${goodsSize.rcount}" th:text="${goodsSize.compsGoodsCd}" th:if="${goodsSize.rnum == 1}"></td>
 			<td><th:block th:text="${goodsSize.optCd1}"></th:block>
 				<input type="hidden" name="compsGoodsCd" th:value="${goodsSize.compsGoodsCd}" />
 				<input type="hidden" name="optCd" th:value="${goodsSize.optCd}" />
-				<input type="hidden" name="hidOptCd1" th:value="${goodsSize.optCd1}" />
+				<input type="hidden" name="optCd1" th:value="${goodsSize.optCd1}" />
 			</td>
 			<td><th:block th:text="${goodsSize.optCd2}"></th:block>
-				<input type="hidden" name="hidOptCd2" th:value="${goodsSize.optCd2}" />
+				<input type="hidden" name="optCd2" th:value="${goodsSize.optCd2}" />
 			</td>
 			<td><input type="text" class="w100p aR" name="addPrice" th:value="${goodsSize.addPrice}"  maxlength="7"  data-valid-type="numeric"/>
 				<input type="hidden" name="hidAddPrice" th:value="${goodsSize.addPrice}" />

+ 62 - 12
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsListForm.html

@@ -52,6 +52,8 @@
 					<tr>
 						<th>업체/브랜드<em class="required" title="필수"></em></th>
 						<td colspan="3">
+							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y"  checked/>자사</label>
+							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N"/>입점</label>
 							<select name="supplyCompCd" id="supplyCompCd">
 								<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
 								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
@@ -98,25 +100,39 @@
 								</ul>
 							</div>
 						</td>
-						<th>년도/시즌</th>
+						<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">
+							<select  name="formalGb" id="formalGb">
 								<option value="">[전체]</option>
-								<option th:if="${seasonList}" th:each="oneData, status : ${seasonList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+								<option th:if="${formalGbList}" th:each="oneData, status : ${formalGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
 						</td>
 					</tr>
 					<tr>
-						<th>정상/이월 구분</th>
+						<th>년도/시즌</th>
 						<td>
-							<select  name="formalGb" id="formalGb">
+							<!-- <select  name="styleYear" id="styleYear">
 								<option value="">[전체]</option>
-								<option th:if="${formalGbList}" th:each="oneData, status : ${formalGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></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> -->
+							<div class="multiCheckBox" style="width:140px;">
+								<button type="button" class="sltBtn">[전체]</button>
+								<ul style="overflow:auto; height:140px">
+									<li><label class="chkBox"><input type="checkbox" name="전체선택" id="multiStyleYear" onclick="uifnAllCheck('multiStyleYear')">전체선택</label></li>
+									<li th:if="${styleYearList}" th:each="oneData, status : ${styleYearList}"><label class="chkBox"><input type="checkbox" name="multiStyleYear" th:id="${'styleYear' + oneData.cd}" th:value="${oneData.cd}" ><th:block th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></th:block></label></li>
+								</ul>
+							</div>
+							<div class="multiCheckBox" style="width:170px;">
+								<button type="button" class="sltBtn">[전체]</button>
+								<ul style="overflow:auto; height:170px">
+									<li><label class="chkBox"><input type="checkbox" name="전체선택" id="multiSeasonCd" onclick="uifnAllCheck('multiSeasonCd')">전체선택</label></li>
+									<li th:if="${seasonList}" th:each="oneData, status : ${seasonList}"><label class="chkBox"><input type="checkbox" name="multiSeasonCd" th:id="${'seasonCd' + oneData.cd}" th:value="${oneData.cd}" ><th:block th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></th:block></label></li>
+								</ul>
+							</div>		
 						</td>
 						<th>연령대</th>
 						<td>
@@ -328,6 +344,18 @@
 								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('pntMrate')" >적용</button>
 							</td>
 						</tr>
+						<tr>
+							<th>선물 주문가능</th>
+							<td>
+								<select id="giftPackYnC" name="giftPackYnC">
+									<option value="">[선택]</option>
+									<option value="Y">가능</option>
+									<option value="N">불가</option>
+								</select>
+								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('giftPackYn')" >적용</button>
+							</td>
+							<td colspan="6"></td>
+						</tr>
 					</table>
 				</li>
 			</ul>
@@ -396,7 +424,7 @@
 			}
 		},
 		{headerName: "품목", field: "itemkindNm", width: 150, cellClass: 'text-center'},
-		/*{headerName: "판매가능재고", field: "stockQtySum", width: 120, cellClass: 'text-right',
+		{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) {
@@ -408,7 +436,7 @@
 				}
 				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); },
@@ -715,6 +743,7 @@
 		var dayMaxOrdQtyVal = '';
 		var pntPrateVal = '';
 		var pntMrateVal = '';
+		var giftPackYnVal = '';
 
 		if (proc == "goodsStat") {
 			goodsStatVal = $(objId).val();
@@ -787,6 +816,8 @@
 				return;
 			}
 			pntMrateVal = $(objId).val();
+		}else if (proc == "giftPackYn") {
+			giftPackYnVal = $(objId).val();	
 		}else{
 			return;
 		}
@@ -813,6 +844,7 @@
 							,dayMaxOrdQty : dayMaxOrdQtyVal
 							,pntPrate : pntPrateVal
 							,pntMrate : pntMrateVal
+							,giftPackYn : giftPackYnVal
 							,procJob : proc
 							};
 
@@ -936,6 +968,23 @@
 		cfnOpenGoodsDealPopup();
 	});
 
+	// 자사/입점 변경여부
+	$("#searchForm input[name=selfYn]").bind('click change', function () {
+		var radioValue = $(this).val();
+		var selfGb = "S";	// 자사 공급 업체
+		if (radioValue == "N"){
+			selfGb = "E";	//입점 공급업체
+		}
+		
+		var actionUrl = '/renderer/supply/company/list/'+ selfGb;	
+
+		$('#searchForm').find('#multiBrand').empty();
+		//$("#searchForm select[name=brandCd] option:gt(0)").remove();
+
+		cfnCreateCombo(actionUrl, $('#searchForm select[name=supplyCompCd]'), "[전체]", "");
+		
+	});
+	
 	$(document).ready(function() {
 
 		cfnCreateCalendar('#sellTerms', 'stDate', 'edDate', true, '등록일', 'X');
@@ -943,6 +992,7 @@
 		var selectCode = '<select  name="dateGbn" id="dateGbn">';
 		selectCode += '<option value="R" seledted>상품등록일</option>';
 		selectCode += '<option value="P">가격변경일</option>';
+		selectCode += '<option value="S">최초승인일</option>';
 		selectCode += '</select>';
 
 		$("#searchForm").find('#sellTerms').prepend(selectCode);

+ 6 - 11
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsMassRegisterForm.html

@@ -139,9 +139,9 @@
 					</div>
 					<!-- //아이콘 툴팁 -->
 				</li>
-				<li class="right">
+				<!-- <li class="right">
 					<button type="button" class="btn btn-default btn-lg" id="btnGoodsRegExcelDownLoad">엑셀다운로드</button>
-				</li>
+				</li> -->
 			</ul>
 			<!-- //상단버튼 영역  -->
 			<div id="gridList" style="width: 100%; height: 500px;" class="ag-theme-balham"></div>
@@ -227,9 +227,6 @@
 		{headerName: "시즌", field: "seasonCd", width: 80, cellClass: 'text-center'},
 		{headerName: "성별", field: "sexGb", width: 80, cellClass: 'text-center'},
 		{headerName: "품번", field: "goodsNum", width: 100, cellClass: 'text-center'},
-		{headerName: "형태", field: "shapeCd", width: 80, cellClass: 'text-center'},
-		{headerName: "색상", field: "colorCd", width: 80, cellClass: 'text-center'},
-		{headerName: "TAG가", field: "tagPrice", width: 100, cellClass: 'text-center'},
 		{headerName: "정상가", field: "listPrice", width: 100, cellClass: 'text-center'},
 		{headerName: "판매가", field: "currPrice", width: 100, cellClass: 'text-center'},
 		{headerName: "공급업체상품코드", field: "supplyGoodsCd", width: 130, cellClass: 'text-center'},
@@ -400,18 +397,17 @@
 		str = str + '<div class="mdPopContent">';
 		str = str + '<ul class="notice ">';
 		str = str + '- <em>상품미등록</em>';
-		str = str + '<li>상품코드 오류 : 빈값, 길이 11, \'_\'가 존재하는지</li>';
-		str = str + '<li>업체 오류 : 빈값, \'W\'나 \'F\' 가 아닌경우</li>';
+		str = str + '<li>상품코드 오류 : 빈값</li>';
+		str = str + '<li>업체 오류 : 빈값</li>';
 		str = str + '<li>상품명 오류 : 빈값</li>';
 		str = str + '<li>제조국 오류 : 빈값</li>';
 		str = str + '<li>제조년월일 오류 : 빈값, 날짜형식이 맞는지</li>';
-		str = str + '<li>ERP 미존재 상품코드 : ERP에 상품코드가 존재하는지</li>';
+		str = str + '<li>WMS 미존재 상품코드 : WMS에 상품코드가 존재하는지</li>';
 		str = str + '<li>스타일 연도 오류 : 온라인에서 관리되지 않는 스타일 연도</li>';
 		str = str + '<li>성별 오류 : 온라인에서 관리되지 않는 성별</li>';
-		str = str + '<li>컬러 오류 : 온라인에서 관리되지 않는 컬러</li>';
 		str = str + '<li>상품코드 중복등록요청 : 등록된 상품코드 등록요청</li>';
 		str = str + '<li>품목 오류 : 온라인에서 관리되지 않는 품목</li>';
-		str = str + '<li>ERP 브랜드 오류 : 온라인에서 관리되지 않는 ERP 브랜드</li>';
+		str = str + '<li>WMS 브랜드 오류 : 온라인에서 관리되지 않는 WMS 브랜드</li>';
 		str = str + '<li>이미지 유형 오류 : 온라인에서 관리되지 않는 이미지유형</li>';
 		str = str + '<li>상품이미지 필수 오류 : A타입 : IMG_PATH1: 정사각형이미지(앞면),IMG_PATH3: 작사각형이미지(정면),<br/></li>';
 		str = str + '<span style="padding-left:185px;"></span>';
@@ -420,7 +416,6 @@
 		str = str + '<li>품목의 고시정보 없음 : 품목의 고시분류 매핑이 안되어 있는 경우</li>';
 		str = str + '<li>고시분류 오류 : 등록요청 고시분류 와 온라인에서 품목과 매핑된 고시분류가 다른 경우</li>';
 		str = str + '- <em>상품등록</em>';
-		str = str + '<li>ERP 상품 사이즈 정보 없음 : ERP에 상품코드의 사이즈가 없을 경우</li>';
 		str = str + '</ul>';
 		str = str + '</div></div></div>';
 

+ 46 - 12
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsPopupListForm.html

@@ -14,7 +14,7 @@
  * 1.0  2020.10.26   eskim       최초 작성
  *******************************************************************************
  -->
-	<div class="modalPopup" data-width="1600">
+	<div class="modalPopup" data-width="1700">
 	<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">
@@ -41,6 +41,8 @@
 				<tr>
 					<th>업체/브랜드<em class="required" title="필수"></em></th>
 					<td colspan="3">
+						<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y"  checked/>자사</label>
+						<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N"/>입점</label>
 						<select name="supplyCompCd" id="supplyCompCd">
 							<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
 							<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
@@ -87,25 +89,40 @@
 							</ul>
 						</div>
 					</td>
-					<th>년도/시즌</th>
+					<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">
+						<select  name="formalGb" id="formalGb">
 							<option value="">[전체]</option>
-							<option th:if="${seasonList}" th:each="oneData, status : ${seasonList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							<option th:if="${formalGbList}" th:each="oneData, status : ${formalGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 						</select>
 					</td>
+					
 				</tr>
 				<tr>
-					<th>정상/이월 구분</th>
+					<th>년도/시즌</th>
 					<td>
-						<select  name="formalGb" id="formalGb">
+						<!-- <select  name="styleYear" id="styleYear">
 							<option value="">[전체]</option>
-							<option th:if="${formalGbList}" th:each="oneData, status : ${formalGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></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> -->
+						<div class="multiCheckBox" style="width:140px;">
+							<button type="button" class="sltBtn">[전체]</button>
+							<ul style="overflow:auto; height:140px">
+								<li><label class="chkBox"><input type="checkbox" name="전체선택" id="multiStyleYear" onclick="uifnAllCheck('multiStyleYear')">전체선택</label></li>
+								<li th:if="${styleYearList}" th:each="oneData, status : ${styleYearList}"><label class="chkBox"><input type="checkbox" name="multiStyleYear" th:id="${'styleYear' + oneData.cd}" th:value="${oneData.cd}" ><th:block th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></th:block></label></li>
+							</ul>
+						</div>
+						<div class="multiCheckBox" style="width:170px;">
+							<button type="button" class="sltBtn">[전체]</button>
+							<ul style="overflow:auto; height:170px">
+								<li><label class="chkBox"><input type="checkbox" name="전체선택" id="multiSeasonCd" onclick="uifnAllCheck('multiSeasonCd')">전체선택</label></li>
+								<li th:if="${seasonList}" th:each="oneData, status : ${seasonList}"><label class="chkBox"><input type="checkbox" name="multiSeasonCd" th:id="${'seasonCd' + oneData.cd}" th:value="${oneData.cd}" ><th:block th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></th:block></label></li>
+							</ul>
+						</div>
 					</td>
 					<th>연령대</th>
 					<td>
@@ -486,6 +503,23 @@
 		
 		cfnCreateMultiCombo(actionUrl,"multiBrand",  "[전체]",null, 'Y', null, null, 'goodsPopupForm');
 	});
+	
+	// 자사/입점 변경여부
+	$("#goodsPopupForm input[name=selfYn]").bind('click change', function () {
+		var radioValue = $(this).val();
+		var selfGb = "S";	// 자사 공급 업체
+		if (radioValue == "N"){
+			selfGb = "E";	//입점 공급업체
+		}
+		
+		var actionUrl = '/renderer/supply/company/list/'+ selfGb;
+
+		$('#goodsPopupForm').find('#multiBrand').empty();
+		//$("#searchForm select[name=brandCd] option:gt(0)").remove();
+
+		cfnCreateCombo(actionUrl, $('#goodsPopupForm select[name=supplyCompCd]'), "[전체]", "");
+		
+	});
 
 	$(document).ready(function() {
 		cfnCreateCalendar('#sellTermsP', 'stDate', 'edDate', true, '등록일', 'X');
@@ -493,7 +527,7 @@
 		var selectCode = '<select  name="dateGbn" id="dateGbn"  class="w100">';
 		selectCode += '<option value="R" seledted>상품등록일</option>';
 		selectCode += '<option value="P">가격변경일</option>';
-		selectCode += '<option value="S">승인일</option>';
+		selectCode += '<option value="S">최초승인일</option>';
 		selectCode += '</select>';
 
 		$("#goodsPopupForm").find('#sellTermsP').prepend(selectCode);

+ 4 - 4
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsPriceReserveForm.html

@@ -172,14 +172,14 @@
 			,valueFormatter: function(params) {return params.value.addComma();}
 			,cellStyle : function(params){return { 'color': 'red'}}
 		},
-		{headerName: "예약시작일시", field: "applyStdt", width: 130, cellClass: 'text-center',
+		{headerName: "예약시작일시", field: "applyStdt", width: 150, cellClass: 'text-center',
 			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") : '';
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
 			}
 		},
-		{headerName: "예약종료일시", field: "applyEddt", width: 130, cellClass: 'text-center',
+		{headerName: "예약종료일시", field: "applyEddt", width: 150, cellClass: 'text-center',
 			cellRenderer: function(params) {
-				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") : '';
+				return !gagajf.isNull(params.value) ? params.value.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") : '';
 			}
 		},
 		{headerName: "등록일시", field: "regDt", width: 150, cellClass: 'text-center',

+ 21 - 10
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsPriceReservePopupForm.html

@@ -32,12 +32,22 @@
 					<tr>
 						<th>상품예약가격<em class="required" title="필수"></em></th>
 						<td><input type="text" class="w100p aR" id="resGoodsPrice" name="resGoodsPrice" maxlength="10" data-valid-type="numeric" /></td>
-						<th>예약일<em class="required" title="필수"></em></th>
+						<th>예약일<em class="required" title="필수"></em></th>
 						<td>
 							<input name="applyStYMD" id="applyStYMD" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="예약시작일" />
+							<select name="applyStHH" id="applyStHH" required="required" data-valid-name="예약 시작시간">
+								<th:block th:each="num, index  : ${#numbers.sequence(0,23)}">
+								<option  th:value="${#numbers.formatInteger(num,2)}" th:text="|${#numbers.formatInteger(num,2)}시|" >시간</option>
+								</th:block>
+							</select>
 							<input name="applyStdt" id="applyStdt" type="hidden" />
 							~
 							<input name="applyEdYMD" id="applyEdYMD" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="예약 종료일" />
+							<select name="applyEdHH" id="applyEdHH" required="required" data-valid-name="예약 종료시간">
+								<th:block th:each="num: ${#numbers.sequence(0,23)}">
+								<option  th:value="${#numbers.formatInteger(num,2)}"  th:text="|${#numbers.formatInteger(num,2)}시|" th:selected="${#numbers.formatInteger(num,2)}==23 ? 'true'">시간</option>
+								</th:block>
+							</select>
 							<input name="applyEddt" id="applyEddt" type="hidden" />
 						</td>
 					</tr>
@@ -188,10 +198,14 @@
 
 		if (optCheck) return false;
 		
-		var applyStdt = $('#goodsPriceRsvtForm input[name=applyStYMD]').val().replaceAll("-","") ;
-		var applyEddt = $('#goodsPriceRsvtForm input[name=applyEdYMD]').val().replaceAll("-","");
+		var applyStdt = $('#goodsPriceRsvtForm input[name=applyStYMD]').val().replaceAll("-","") +
+		$('#goodsPriceRsvtForm select[name=applyStHH]').val() + "0000";
 
-		
+		var applyEddt = $('#goodsPriceRsvtForm input[name=applyEdYMD]').val().replaceAll("-","") +
+		$('#goodsPriceRsvtForm select[name=applyEdHH]').val() +"5959";
+
+		$('#goodsPriceRsvtForm input[name=applyStdt]').val(applyStdt);
+		$('#goodsPriceRsvtForm input[name=applyEddt]').val(applyEddt);
 
 		if ($('#goodsPriceRsvtForm input[name=applyStdt]').val() > $('#goodsPriceRsvtForm input[name=applyEddt]').val()) {
 			mcxDialog.alertC("예약 시작일자는 종료일자 보다 클 수 없습니다.", {
@@ -203,7 +217,7 @@
 			return false;
 		}
 
-		var toDateStr = new Date().format("YYYYMMDD");
+		var toDateStr = new Date().format("YYYYMMDDHHmmss");
 
 		if (toDateStr >= applyStdt){
 			mcxDialog.alertC("예약 시작일자는 현재일자 보다 작거나 같을 수 없습니다.",  {
@@ -236,9 +250,6 @@
 					arrEndGoodsPrice.push(item.currPrice);
 				});
 				
-				$('#goodsPriceRsvtForm input[name=applyStdt]').val(applyStdt +"000000");
-				$('#goodsPriceRsvtForm input[name=applyEddt]').val(applyEddt +"235959");
-
 				var data = {resGoodsPrice : $('#goodsPriceRsvtForm input[name=resGoodsPrice]').val()
 							, applyStdt : $('#goodsPriceRsvtForm input[name=applyStdt]').val()
 							, applyEddt : $('#goodsPriceRsvtForm input[name=applyEddt]').val()
@@ -305,8 +316,8 @@
 
 	//창종료
 	var fnGoodsPriceRsvtListFormClose = function(){
-		uifnPopupClose('popupGoodsTitleReserve');
-		fnGoodsTnmResDeleteCollBack();
+		uifnPopupClose('popupGoodsPriceReserve');
+		fnGoodsPriceResDeleteCollBack();
 	}
 
 	$(document).ready(function() {

+ 26 - 7
style24.admin/src/main/webapp/WEB-INF/views/stock/GoodsSizeStockForm.html

@@ -49,6 +49,8 @@
 					<tr>
 						<th>업체/브랜드<em class="required" title="필수"></em></th>
 						<td colspan="3">
+							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnY" value="Y"  checked/>자사</label>
+							<label class="rdoBtn"><input type="radio" name="selfYn" id="selfYnN" value="N"/>입점</label>
 							<select name="supplyCompCd" id="supplyCompCd">
 								<option value="" th:if="${sessionInfo.roleCd} != 'G001_B000'">[전체]</option>
 								<option th:if="${supplyCompList}" th:each="oneData, status : ${supplyCompList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
@@ -73,7 +75,6 @@
 								<option value="searchGoodsNm">상품명</option>
 								<option value="searchGoodsNum">품번</option>
 								<option value="searchSupplyGoodsCd">업체상품코드</option>
-								<option value="searchRegId">등록자</option>
 							</select>
 							<input type="text" class="w150" name="condition" id="condition" maxlength="50"/>
 						</td>
@@ -106,7 +107,7 @@
 						</td>
 						<th>색상</th>
 						<td>
-							<select name="colorCd" id="colorCd">
+							<select name="optCd1" id="optCd1">
 								<option value="">[전체]</option>
 								<option th:if="${colorList}" th:each="oneData, status : ${colorList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
 							</select>
@@ -205,7 +206,6 @@
 	var sessRoleCd = [[${sessionInfo.roleCd}]];
 	var goodsStatList = gagajf.convertToArray([[${goodsStatList}]]);
 	var formalGbList = gagajf.convertToArray([[${formalGbList}]]);
-	var siteList = gagajf.convertToArray([[${siteList}]]);
 	var columnDefs = [];
 	
 	columnDefs = [
@@ -293,16 +293,17 @@
 		fnInit();
 	});
 	
-	var fnInit = function(){
-		$("#goodsSizeStockForm input[name=siteCd]").prop("disabled", true);
-		$("#goodsSizeStockForm input[name=siteCd]").addClass("formControl");
+	var fnInit = function(){debugger;
 		
 		$('#goodsSizeStockForm')[0].reset();
 		//$("#goodsSizeStockForm input[type=radio]").removeClass("checked");
 		$("#goodsSizeStockForm input[type=checkbox]").removeClass("checked");
 		//$("#goodsSizeStockForm input[type=radio]").parent("label").removeClass("checked");
 		$("#goodsSizeStockForm input[type=checkbox]").parent("label").removeClass("checked");
-		$("#goodsSizeStockForm input[type=radio][checked]").parent("label").addClass("checked");
+		//$("#goodsSizeStockForm input[type=radio][checked]").parent("label").addClass("checked");
+		
+		$("#goodsSizeStockForm input[name=selfYn]:input[value='Y']").trigger('click');
+		
 	}
 	
 	// 조회클릭시
@@ -523,6 +524,24 @@
 		fnGoodsListSearch("EXCELRESULT");
 	}
 	
+	// 자사/입점 변경여부
+	$("#goodsSizeStockForm input[name=selfYn]").bind('click change', function () {
+	//$('#goodsSizeStockForm input[name=selfYn]').on('change', function() {debugger;
+		var radioValue = $(this).val();
+		var selfGb = "S";	// 자사 공급 업체
+		if (radioValue == "N"){
+			selfGb = "E";	//입점 공급업체
+		}
+		
+		var actionUrl = '/renderer/supply/company/list/'+ selfGb;	
+
+		$("#goodsSizeStockForm select[name=brandCd] option:gt(0)").remove();
+
+		cfnCreateCombo(actionUrl, $('#goodsSizeStockForm select[name=supplyCompCd]'), "[전체]", "");
+
+		
+	});
+	
 	$(document).ready(function() {
 		
 		// Create a agGrid

+ 10 - 10
style24.admin/src/main/webapp/WEB-INF/views/system/UserDetailForm.html

@@ -272,12 +272,12 @@
 	
 	// 등록화면 권한 변경 시
 	$('#userRegisterForm select[name=roleCd]').on('change', function() {
-		var abRoleCd = $(this).val().substring(0,1);
-		if (abRoleCd == 'A' || abRoleCd == 'B') { // 입점업체
+		var abRoleCd = $(this).val().substring(0,6);
+		if (abRoleCd == 'G001_A' || abRoleCd == 'G001_B') { // 입점업체
 			$('#userRegisterForm select[name=supplyCompCd]').show();
 			$('#userRegisterForm select[name=vendorId]').hide();
 			$('#registerRoleRefVal').text('업체');
-		} else if (abRoleCd == 'C') { // 외부몰벤더
+		} else if (abRoleCd == 'G001_C') { // 외부몰벤더
 			$('#userRegisterForm select[name=supplyCompCd]').hide();
 			$('#userRegisterForm select[name=vendorId]').show();
 			$('#registerRoleRefVal').text('외부몰벤더');
@@ -371,12 +371,12 @@
 			$('#userDetailForm input[name=roleChangeYn]').val('Y');
 		}
 		
-		var abRoleCd = $(this).val().substring(0,1);
-		if (abRoleCd == 'A' || abRoleCd == 'B') { // 입점업체
+		var abRoleCd = $(this).val().substring(0,6);
+		if (abRoleCd == 'G001_A' || abRoleCd == 'G001_B') { // 입점업체
 			$('#userDetailForm select[name=supplyCompCd]').show();
 			$('#userDetailForm select[name=vendorId]').hide();
 			$('#detailRoleRefVal').text('업체');
-		} else if (abRoleCd == 'C') { // 외부몰벤더
+		} else if (abRoleCd == 'G001_C') { // 외부몰벤더
 			$('#userDetailForm select[name=supplyCompCd]').hide();
 			$('#userDetailForm select[name=vendorId]').show();
 			$('#detailRoleRefVal').text('외부몰벤더');
@@ -439,11 +439,11 @@
 			sureBtnClick: function() {
 				$(formId + ' input[name=ipChkYn]').val($(formId + ' input:checkbox[name=chkIpChkYn]').is(":checked") ? 'Y' : 'N');
 				$(formId + ' input[name=useYn]').val($(formId + ' input:checkbox[name=chkUseYn]').is(":checked") ? 'Y' : 'N');
-				
-				var abRoleCd = $(formId + ' select[name=roleCd]').val().substring(0,1);
-				if (abRoleCd == 'A' || abRoleCd == 'B' || abRoleCd == 'E') { // 자사,입점,촬영업체
+				debugger;
+				var abRoleCd = $(formId + ' select[name=roleCd]').val().substring(0,6);
+				if (abRoleCd == 'G001_A' || abRoleCd == 'G001_B' || abRoleCd == 'G001_E') { // 자사,입점,촬영업체
 					$(formId + ' input[name=roleRefVal]').val($(formId + ' select[name=supplyCompCd]').val());
-				} else if (abRoleCd == 'C') { // 외부몰벤더
+				} else if (abRoleCd == 'G001_C') { // 외부몰벤더
 					$(formId + ' input[name=roleRefVal]').val($(formId + ' select[name=vendorId]').val());
 				} else {
 					$(formId + ' input[name=roleRefVal]').val('');

+ 25 - 20
style24.admin/src/main/webapp/WEB-INF/views/system/UserMenuForm.html

@@ -14,18 +14,17 @@
  * 1.0  2019.12.06   gagamel     최초 작성
  *******************************************************************************
  -->
-<ul class="popup modeless ui-widget-content" data-width="600" data-height="670">
-	<li class="mdPopTitle">
-		<strong>사용자 메뉴</strong>
-		<button type="button" class="close" onclick="uifnPopupClose('popupUserMenu');"><em class="fa fa-times"></em></button>
-	</li>
-	
-	<li class="mdPopContent">
-		<div class="yScroll" style="height: 500px;">
+<div class="modalPopup" data-width="600">
+	<div class="panelStyle">
+		<div class="panelTitle">
+			<h2>사용자 메뉴</h2>
+			<button type="button" class="close" onclick="uifnPopupClose('popupUserMenu');"><i class="fa fa-times"></i></button>
+		</div>
+		<div class="panelContent yScroll" style="height: 500px;">
 			<form id="userMenuForm" name="userMenuForm" action="#" th:action="@{'/system/user/menu/list/save'}" th:method="post">
 				<table class="frmStyle" aria-describedby="사용자 메뉴 목록">
 					<colgroup>
-						<col style="width: 20%"/>
+						<col style="width: 10%"/>
 						<col style="width: 20%"/>
 						<col/>
 						<col style="width: 20%"/>
@@ -43,28 +42,25 @@
 							<td colspan="4">조회 결과가 없습니다.</td>
 						</tr>
 						<tr th:each="oneData : ${userMenuList}">
-							<input type="hidden" name="userNo" th:value="${oneData.userNo}"/>
-							<input type="hidden" name="menuId" th:value="${oneData.menuId}"/>
-							<td><label class="chkBox"><input type="checkbox" name="chkUseYn" th:checked="${oneData.useYn == 'Y'}" th:readonly="${oneData.menuGb == 'M'}"/></label></td>
+							<td class="aC"><label class="chkBox" th:classappend="${oneData.useYn == 'Y' ? 'checked' :''}"><input type="checkbox" name="chkUseYn" th:checked="${oneData.useYn == 'Y'}" th:readonly="${oneData.menuGb == 'M'}"/></label></td>
 							<td style="text-align: left" th:text="${(oneData.menuLvl == 1 ? '&nbsp;&nbsp;&nbsp;' : oneData.menuLvl == 2 ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' : '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;') + oneData.menuLvl + '. ' + oneData.menuId}">A</td>
 							<td style="text-align: left" th:text="${oneData.menuNm}">상품</td>
 							<td th:text="${oneData.menuGb == 'M' ? '메뉴' : '프로그램'}">메뉴</td>
+							<input type="hidden" name="userNo" th:value="${oneData.userNo}"/>
+							<input type="hidden" name="menuId" th:value="${oneData.menuId}"/>
 						</tr>
 					</tbody>
 				</table>
 			</form>
 		</div>
-	</li>
-	
-	<li class="mdPopBtnB">
-		<ul class="lrStyle">
-			<li class="aL">
+		<ul class="panelBar" style="padding-top:15px">
+			<li class="center">
 				<button type="button" class="btn btn-info btn-lg" onclick="fnSaveUserMenu();">저장</button>
-				<button type="button" class="btn btn-gray btn-lg" onclick="$('#userMenuForm')[0].reset();">초기화</button>
+				<button type="button" class="btn btn-gray btn-lg" onclick="fnInit();">초기화</button>
 			</li>
 		</ul>
-	</li>
-</ul>
+	</div>
+</div>
 
 <script th:inline="javascript">
 /*<![CDATA[*/
@@ -86,8 +82,10 @@
 		
 		if ($(obj).hasClass('checked')) {
 			$(obj).removeClass('checked');
+			$(obj).parent('label').removeClass('checked');
 		} else {
 			$(obj).addClass('checked');
+			$(obj).parent('label').addClass('checked');
 		}
 	}
 	
@@ -122,6 +120,13 @@
 		});
 	}
 	
+	// 초기화
+	var fnInit = function() {
+		$('#userMenuForm')[0].reset();
+		$("#userMenuForm input[type=checkbox]").removeClass("checked");
+		$("#userMenuForm input[type=checkbox]").parent("label").removeClass("checked");
+	}
+	
 	$(document).ready(function() {
 		
 	});

+ 2 - 2
style24.admin/src/main/webapp/ux/plugins/gaga/gaga.summernote.js

@@ -44,7 +44,7 @@ var gagaSn = {
 				['para', ['ul', 'ol', 'paragraph']],
 				['Insert', ['table']],
 				['Insert', ['link']],
-				['misc', ['emoji', 'print']], // 이모지, 프린트
+				['misc', [ 'print']], //  프린트
 				['code', ['fullscreen', 'codeview', 'help']]
 			];
 		} else if (type == 'media') {
@@ -59,7 +59,7 @@ var gagaSn = {
 				['para', ['ul', 'ol', 'paragraph']],
 				['Insert', ['table']],
 				['Insert', ['link', 'picture', 'video']],
-				['misc', ['emoji', 'print']], // 이모지, 프린트
+				['misc', [ 'print']], // 프린트
 				['code', ['fullscreen', 'codeview', 'help']]
 			];
 		}

+ 3 - 3
style24.admin/src/main/webapp/ux/plugins/gaga/gaga.validation.js

@@ -485,12 +485,12 @@ var gagajf = {
 	},
 
 	/**
-	 * formId의 input의 data-valid-type이 integer, real인 경우에 값에 comma(,)를 자동으로 제거한다.
+	 * formId의 input의 data-valid-type이 integer, real, numeric 인 경우에 값에 comma(,)를 자동으로 제거한다.
 	 * 사용) gagajf.removeCommaAtNumberFormattedInput('#registerForm');
 	 */
 	removeCommaAtNumberFormattedInput : function(formId) {
 		$(formId).find('input').each(function(idx, el) {
-			if ($(el).data('validType') == 'integer' || $(el).data('validType') == 'real') {
+			if ($(el).data('validType') == 'integer' || $(el).data('validType') == 'real' || $(el).data('validType') == 'numeric') {
 				$(el).val($(el).val().removeComma());
 			}
 		});
@@ -533,7 +533,7 @@ var gagajf = {
 		gagajf.removeCommaAtNumberFormattedInput(formId);
 
 		var jsonData = JSON.stringify($(formId).serializeObject());
-
+		
 		$.ajax({
 			type : 'POST',
 			url : actionUrl,

binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/+1.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/-1.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/100.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/109.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/1234.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/8ball.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/a.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/ab.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/abc.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/abcd.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/accept.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/aerial_tramway.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/airplane.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/alarm_clock.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/alien.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/ambulance.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/anchor.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/angel.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/anger.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/angry.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/anguished.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/ant.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/apple.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/aquarius.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/aries.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_backward.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_double_down.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_double_up.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_down.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_down_small.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_forward.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_heading_down.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_heading_up.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_left.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_lower_left.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_lower_right.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_right.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_right_hook.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_up.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_up_down.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_up_small.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_upper_left.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrow_upper_right.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrows_clockwise.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/arrows_counterclockwise.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/art.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/articulated_lorry.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/astonished.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/atm.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/b.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baby.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baby_bottle.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baby_chick.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baby_symbol.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baggage_claim.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/balloon.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/ballot_box_with_check.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bamboo.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/banana.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bangbang.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bank.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bar_chart.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/barber.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/baseball.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/basketball.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bath.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bathtub.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/battery.png


binární
style24.admin/src/main/webapp/ux/plugins/summernote/pngs/bear.png


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů