Преглед на файлове

상품상세 구매등급 관리 탭 추가

eskim преди 5 години
родител
ревизия
66e534cd1a

+ 30 - 1
style24.admin/src/main/java/com/style24/admin/biz/dao/TsaGoodsDao.java

@@ -272,7 +272,6 @@ public interface TsaGoodsDao {
 	 */
 	Collection<NotiInfo> getNotiGoodsInfoList(NotiInfo notiInfo);
 
-
 	/**
 	 * 구성상품 목록
 	 *
@@ -891,5 +890,35 @@ public interface TsaGoodsDao {
 	 */
 	void saveGoodsNaverLowestPrice(GoodsNaverLowestPrice goodsNaverLowestPrice);
 
+	/**
+	 * 상품 구매등급 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 12. 11
+	 */
+	Collection<Goods> getGoodsDetailOrderGradeList(Goods goods);
+
+	/**
+	 * 상품 구매등급 삭제
+	 *
+	 * @param map
+	 * @return
+	 * @author eskim
+	 * @since 2020. 12. 11
+	 */
+	void deleteGoodsCustGrade(Goods goods);
+
+	/**
+	 * 상품 구매등급 저장
+	 *
+	 * @param map
+	 * @return
+	 * @author eskim
+	 * @since 2020. 12. 11
+	 */
+	void createGoodsCustGrade(Goods goods);
+
 
 }

+ 28 - 0
style24.admin/src/main/java/com/style24/admin/biz/service/TsaGoodsService.java

@@ -591,6 +591,18 @@ public class TsaGoodsService {
 		return goodsDao.getNotiGoodsInfoList(notiInfo);
 	}
 
+	/**
+	 * 상품 구매등급 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 18
+	 */
+	public Collection<Goods> getGoodsDetailOrderGradeList(Goods goods) {
+		return goodsDao.getGoodsDetailOrderGradeList(goods);
+	}
+
 	/**
 	 * 구성상품 목록
 	 *
@@ -1036,6 +1048,22 @@ public class TsaGoodsService {
 		// 상품 정보고시 변경
 		this.saveGoodsNotiInfo(goods);
 
+		// 상품 구매등급 적용
+		if (goods.getGoodsOrderGrade() != null && goods.getGoodsOrderGrade().length > 0) {
+			Goods goodsOrderGrade = new Goods();
+			goodsOrderGrade.setGoodsCd(goods.getGoodsCd());
+			goodsOrderGrade.setRegNo(TsaSession.getInfo().getUserNo());
+			goodsDao.deleteGoodsCustGrade(goodsOrderGrade);
+			for(String custGrade : goods.getGoodsOrderGrade()) {
+				goodsOrderGrade.setCustGrade(custGrade);
+				goodsDao.createGoodsCustGrade(goodsOrderGrade);
+			}
+		}else {
+			Goods goodsOrderGrade = new Goods();
+			goodsOrderGrade.setGoodsCd(goods.getGoodsCd());
+			goodsOrderGrade.setRegNo(TsaSession.getInfo().getUserNo());
+			goodsDao.deleteGoodsCustGrade(goodsOrderGrade);
+		}
 	}
 
 	/**

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

@@ -759,9 +759,8 @@ public class TsaGoodsController extends TsaBaseController {
 		// 년도
 		int toYear = Integer.parseInt(GagaDateUtil.getToday("yyyy")) - 4;
 		mav.addObject("styleYearList", rendererService.getYearList(toYear,0,5));
-		// 색상
-//		Color color = new Color();
-//		mav.addObject("colorList", rendererService.getColorList(color));
+		// 회원등급
+		mav.addObject("custGradeList", rendererService.getAvailCommonCodeList("G101"));
 
 		mav.addObject("params", goods);
 
@@ -855,6 +854,19 @@ public class TsaGoodsController extends TsaBaseController {
 		return goodsService.getNotiGoodsInfoList(notiInfo);
 	}
 
+	/**
+	 * 상품 구매등급 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 12. 11
+	 */
+	@PostMapping("/detail/order/grade/list")
+	@ResponseBody
+	public Collection<Goods> getGoodsDetailOrderGradeList(Goods goods) {
+		return goodsService.getGoodsDetailOrderGradeList(goods);
+	}
 
 	/**
 	 * 구성상품 목록

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

@@ -103,8 +103,9 @@ public class Goods extends TscBaseDomain {
 	private String goodTnmInit;
 	private String certNum;
 	private String certDt;
+	private String custGrade;
+	private String custGradeName;
 
-//
 //	private String goodsRegMsg;
 	private String procJob;
 	private String excelFileNm;
@@ -157,6 +158,9 @@ public class Goods extends TscBaseDomain {
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] dispYn; // 전시여부
 
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] goodsOrderGrade; // 구매 등급
+
 	private Collection<GoodsNotiInfo> notiListNew; // 고시항목
 
 	private String notiList; // 고시항목

+ 37 - 0
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -3185,5 +3185,42 @@
 		     , UPD_NO = #{updNo}
 		     , UPD_DT = NOW()
 	</insert>
+	
+	<!-- 상품 구매등급 목록 -->
+	<select id="getGoodsDetailOrderGradeList" parameterType="Goods" resultType="Goods">
+		/* TsaGoods.getGoodsDetailOrderGradeList */
+		SELECT  G.GOODS_CD
+		      , A.CUST_GRADE
+		      , FN_GET_CODE_NM('G101', A.CUST_GRADE) AS CUST_GRADE_NAME
+		 FROM TB_GOODS_ORDER_GRADE A 
+		 INNER JOIN TB_GOODS G ON A.GOODS_CD = G.GOODS_CD
+		 WHERE A.GOODS_CD = #{goodsCd}
+		 ORDER BY G.GOODS_CD, A.CUST_GRADE
+	</select>
+	
+	<!-- 상품 구매등급 삭제 -->
+	<delete id="deleteGoodsCustGrade" parameterType="Goods" >
+		/* TsaGoods.saveGoodsNaverLowestPrice */
+		DELETE FROM TB_GOODS_ORDER_GRADE
+		WHERE GOODS_CD = #{goodsCd}
+	</delete>
+	
+	<!-- 상품 구매등급 저장 -->
+	<insert id="createGoodsCustGrade"  parameterType="Goods" >
+		/* TsaGoods.createGoodsCustGrade */
+		INSERT INTO TB_GOODS_ORDER_GRADE (
+		    GOODS_CD
+		  , CUST_GRADE
+		  , REG_NO
+		  , REG_DT
+		)
+		VALUES(
+		    #{goodsCd}
+		  , #{custGrade}
+		  , #{regNo}
+		  , NOW()
+		)
+	</insert>
+	
 	
 </mapper>

+ 77 - 13
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -76,8 +76,8 @@
 							<li><a href="#goodstab2">옵션/재고정보</a></li>
 							<li><a href="#goodstab3">상품상세정보</a></li>
 							<li id="goodsNotiTab"><a href="#goodstab4">고시정보</a></li>
-							<!-- <li id="goodsColorTab"><a href="#goodstab5">대표색상</a></li> -->
-							<li id="GoodsComposeTab" style="display:none;"><a href="#goodstab6">구성상품</a></li>
+							<li id="goodsGradeTab"><a href="#goodstab5">구매등급</a></li>
+							<li id="goodsComposeTab" style="display:none;"><a href="#goodstab6">구성상품</a></li>
 							<li><a href="#goodstab7">변경이력</a></li>
 						</ul>
 					</div>
@@ -445,14 +445,32 @@
 							<!-- //TAB4 CONTENTS AREA -->
 						</li>
 						<!-- //TAB4 : 고시정보 -->
-
-<!-- 					<li class="tab" id="goodstab5">
-						<div class="panelStyle">
-							<div id="gridGoodsNumList" style="height: 480px;" class="ag-theme-balham lh60"></div>
-						</div>
-					</li> -->
-
-						<!-- TAB6 : 구성상품 -->
+						<!-- 구매등급정보 -->
+						<li class="tab" id="goodstab5">
+							<div class="panelStyle">
+								<table class="frmStyle">
+									<colgroup>
+										<col style="width:10%"/>
+										<col style="width:13%"/>
+										<col/>
+									</colgroup>
+									<tr>
+										<th>구매등급</th>
+										<td>
+											<select id="custGrade" name="custGrade" >
+												<option value="" selected="selected">[선택]</option>
+												<option th:if="${custGradeList}" th:each="oneData, status : ${custGradeList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
+											</select>
+											<button type="button" class="btn btn-default btn-lg" onclick="fnGoodsOrderGrade()">선택</button>
+										</td>
+										<td>
+											<div class="memAddWrap" id="goodsCustGradeList"></div>
+										</td>
+									</tr>
+								</table>
+							</div>
+						</li>
+						<!-- 구성상품 -->
 						<li class="tab" id="goodstab6">
 							<!-- TAB6 CONTENTS AREA -->
 							<div class="panelStyle">
@@ -469,7 +487,6 @@
 							</div>
 							<!-- //TAB6 CONTENTS AREA -->
 						</li>
-						<!-- //TAB7 : 추가정보 -->
 						<!-- TAB5 : 이력정보 -->
 						<li class="tab" id="goodstab7">
 							<!-- TAB8 CONTENTS AREA -->
@@ -898,13 +915,13 @@
 			//세트
 			if ("G056_S" == result.goodsType){
 				//$('#goodsDetailForm #erplinkarea').addClass('off');
-				if (result.selfGoodsYn == "Y") $('#goodsDetailForm #GoodsComposeTab').css('display','block');
+				if (result.selfGoodsYn == "Y") $('#goodsDetailForm #goodsComposeTab').css('display','block');
 				$('#goodsDetailForm #goodsNotiTab').css('display','none');
 				$('#goodsDetailForm input[name=sellFeeRate]').attr('readonly', true);
 				$('#goodsDetailForm input[name=currPrice]').attr('readonly', true);
 			}else if ("G056_D" == result.goodsType){
 				//$('#goodsDetailForm #erplinkarea').addClass('off');
-				if (result.selfGoodsYn == "Y") $('#goodsDetailForm #GoodsComposeTab').css('display','block');
+				if (result.selfGoodsYn == "Y") $('#goodsDetailForm #goodsComposeTab').css('display','block');
 				$('#goodsDetailForm #goodsNotiTab').css('display','none');
 				$('#goodsDetailForm input[name=sellFeeRate]').attr('readonly', true);
 			}
@@ -924,6 +941,8 @@
 			fnGoodsDetailSizeStockSearch(params);
 			//정보고시
 			fnGoodsDetailNotiInfoSearch(params);
+			//구매등급
+			fnGoodsDetailOrderGradeSearch(params);
 			
 			//구성상품
 			if ("G056_S" == result.goodsType || "G056_D" == result.goodsType){
@@ -950,6 +969,11 @@
 		cfnAjaxSubmit("/goods/detail/notiInfo/list", "json", fnGoodsDetailNotiInfoSearchCallback, params);
 	}
 	
+	//구매등급
+	var fnGoodsDetailOrderGradeSearch = function(params) {
+		cfnAjaxSubmit("/goods/detail/order/grade/list", "json", fnGoodsDetailOrderGradeSearchCallback, params);
+	}
+	
 	//구성상품
 	var fnGoodsComposeListSearch = function(params) {
 		if ("G056_S" == params.goodsType){	//세트
@@ -998,7 +1022,27 @@
 			$('#goodsDetailForm').find('.tabs .tabsNav li:eq(3) a').attr("style", "color:red;");
 		});
 	}
+	
+	//구매등급 콜백
+	var fnGoodsDetailOrderGradeSearchCallback = function(result) {
+		if (result == null) return;
+
+		var addHtml = "";
+		$('#goodsDetailForm').find('#goodsCustGradeList').html('');
+		
+		result.forEach(function(info){
+			addHtml = '<span class="memAdd"><input type="hidden" name="goodsOrderGrade" value="'+info.custGrade+'"/>'+ info.custGradeName+' <button type="button" onclick="$(this).parent().remove();return false;">삭제</button></span>';
+			addHtml += '\n';
+		});
+
+		$('#goodsDetailForm').find('#goodsCustGradeList').append(addHtml);
+	}
 
+	//구매등급 변경여부
+	$('#goodsDetailForm').find('#goodstab5').find("input, select, textarea").on('change', function() {
+		$('#goodsDetailForm').find('.tabs .tabsNav li:eq(4) a').attr("style", "color:red;");
+	});
+	
 	//상품명 길이표시
 	$("#goodsDetailForm input[name=goodsNm]").bind('focus focusout input keyup keydown paste change', function () {
 		fnDataLengthCheck('goodsNm',200);
@@ -1960,6 +2004,26 @@
 		});
 	});
 	
+	// 상품구매등급 
+	var fnGoodsOrderGrade = function(){
+		
+		var code = $('#goodsDetailForm select[name=custGrade]').val();
+		var codeText = $("#goodsDetailForm select[name=custGrade] option:selected").text();
+		var addHtml = '';
+		
+		var addFlag = true;
+		$("#goodsDetailForm #goodsCustGradeList").find("input").each(function() {
+			if (code == $(this).val() ){
+				addFlag = false;
+			}
+		});
+		if (addFlag){
+			addHtml = '<span class="memAdd"><input type="hidden" name="goodsOrderGrade" value="'+code+'"/>'+ codeText+' <button type="button" onclick="$(this).parent().remove();return false;">삭제</button></span>';
+			$('#goodsCustGradeList').append(addHtml);	
+			//$('#goodsDetailForm').find('.tabs .tabsNav li:eq(4) a').attr("style", "color:red;");
+		}
+	}
+	
 	// 구성상품 조회 팝업
 	var fnOpenGoodsDetailPopup = function() {
 		cfnOpenGoodsPopup('fnGoodsDetailGoodsDeal');

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

@@ -104,6 +104,8 @@ public class Goods extends TscBaseDomain {
 	private String niClsfNm;
 	private String goodsTypeNm;
 	private String goodTnmInit;
+	private String custGrade;
+	private String custGradeName;
 //
 //	private String goodsRegMsg;
 	private String procJob;
@@ -157,6 +159,9 @@ public class Goods extends TscBaseDomain {
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] dispYn; // 전시여부
 
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] goodsOrderGrade; // 구매 등급
+
 	private Collection<GoodsNotiInfo> notiListNew; // 고시항목
 
 	private String notiList; // 고시항목

+ 39 - 2
style24.scm/src/main/java/com/style24/persistence/mybatis/shop/TssGoods.xml

@@ -662,7 +662,7 @@
 	
 	<!-- 상품 기본정보 이력 생성 -->
 	<insert id="createGoodsHst" parameterType="Goods">
-		/* TssGoods.createGoodsHst */
+		/* TsaGoods.createGoodsHst */
 		INSERT INTO TB_GOODS_HST 
 		(       GOODS_CD
 		      , BRAND_CD
@@ -711,6 +711,7 @@
 		      , TAX_GB
 		      , ERP_PRICE_LINK_YN
 		      , ERP_STOCK_LINK_YN
+		      , NEW_CUST_ORD_YN
 		      , REG_NO
 		      , REG_DT
 		      , UPD_NO
@@ -742,7 +743,7 @@
 		     , SUPPLY_COMP_CD      
 		     , SUPPLY_GOODS_CD     
 		     , AGE_GRP_CD          
-		     , DELV_FEE_CD
+		     , DELV_FEE_CD            
 		     , PNT_PRATE           
 		     , PNT_MRATE           
 		     , SELL_FEE_RATE       
@@ -763,6 +764,7 @@
 		     , TAX_GB              
 		     , ERP_PRICE_LINK_YN   
 		     , ERP_STOCK_LINK_YN   
+		     , NEW_CUST_ORD_YN
 		     , #{regNo}              
 		     , NOW()              
 		     , UPD_NO              
@@ -1698,4 +1700,39 @@
 		)
 	</insert>
 	
+	<!-- 상품 구매등급 목록 -->
+	<select id="getGoodsDetailOrderGradeList" parameterType="Goods" resultType="Goods">
+		/* TsaGoods.getGoodsDetailOrderGradeList */
+		SELECT  G.GOODS_CD
+		      , A.CUST_GRADE
+		      , FN_GET_CODE_NM('G101', A.CUST_GRADE) AS CUST_GRADE_NAME
+		 FROM TB_GOODS_ORDER_GRADE A 
+		 INNER JOIN TB_GOODS G ON A.GOODS_CD = G.GOODS_CD
+		 WHERE A.GOODS_CD = #{goodsCd}
+		 ORDER BY G.GOODS_CD, A.CUST_GRADE
+	</select>
+	
+	<!-- 상품 구매등급 삭제 -->
+	<delete id="deleteGoodsCustGrade" parameterType="Goods" >
+		/* TsaGoods.saveGoodsNaverLowestPrice */
+		DELETE FROM TB_GOODS_ORDER_GRADE
+		WHERE GOODS_CD = #{goodsCd}
+	</delete>
+	
+	<!-- 상품 구매등급 저장 -->
+	<insert id="createGoodsCustGrade"  parameterType="Goods" >
+		/* TsaGoods.createGoodsCustGrade */
+		INSERT INTO TB_GOODS_ORDER_GRADE (
+		    GOODS_CD
+		  , CUST_GRADE
+		  , REG_NO
+		  , REG_DT
+		)
+		VALUES(
+		    #{goodsCd}
+		  , #{custGrade}
+		  , #{regNo}
+		  , NOW()
+		)
+	</insert>
 </mapper>

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

@@ -327,4 +327,33 @@ public interface TssGoodsDao {
 	 */
 	void deleteNoticeGoods(NoticeGoods noticeGoods);
 
+	/**
+	 * 상품 구매등급 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 12. 11
+	 */
+	Collection<Goods> getGoodsDetailOrderGradeList(Goods goods);
+
+	/**
+	 * 상품 구매등급 삭제
+	 *
+	 * @param map
+	 * @return
+	 * @author eskim
+	 * @since 2020. 12. 11
+	 */
+	void deleteGoodsCustGrade(Goods goods);
+
+	/**
+	 * 상품 구매등급 저장
+	 *
+	 * @param map
+	 * @return
+	 * @author eskim
+	 * @since 2020. 12. 11
+	 */
+	void createGoodsCustGrade(Goods goods);
 }

+ 29 - 0
style24.scm/src/main/java/com/style24/scm/biz/service/TssGoodsService.java

@@ -409,6 +409,18 @@ public class TssGoodsService {
 		return goodsDao.getGoodsNotiInfoList(goodsNotiInfo);
 	}
 
+	/**
+	 * 상품 구매등급 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 11. 18
+	 */
+	public Collection<Goods> getGoodsDetailOrderGradeList(Goods goods) {
+		return goodsDao.getGoodsDetailOrderGradeList(goods);
+	}
+
 	/**
 	 * 상품의 정보고시 항목 목록
 	 *
@@ -618,6 +630,23 @@ public class TssGoodsService {
 		// 상품 정보고시 변경
 		this.saveGoodsNotiInfo(goods);
 
+		// 상품 구매등급 적용
+		if (goods.getGoodsOrderGrade() != null && goods.getGoodsOrderGrade().length > 0) {
+			Goods goodsOrderGrade = new Goods();
+			goodsOrderGrade.setGoodsCd(goods.getGoodsCd());
+			goodsOrderGrade.setRegNo(TssSession.getInfo().getUserNo());
+			goodsDao.deleteGoodsCustGrade(goodsOrderGrade);
+			for(String custGrade : goods.getGoodsOrderGrade()) {
+				goodsOrderGrade.setCustGrade(custGrade);
+				goodsDao.createGoodsCustGrade(goodsOrderGrade);
+			}
+		}else {
+			Goods goodsOrderGrade = new Goods();
+			goodsOrderGrade.setGoodsCd(goods.getGoodsCd());
+			goodsOrderGrade.setRegNo(TssSession.getInfo().getUserNo());
+			goodsDao.deleteGoodsCustGrade(goodsOrderGrade);
+		}
+
 	}
 
 	/**

+ 16 - 3
style24.scm/src/main/java/com/style24/scm/biz/web/TssGoodsController.java

@@ -421,9 +421,8 @@ public class TssGoodsController extends TssBaseController {
 		// 년도
 		int toYear = Integer.parseInt(GagaDateUtil.getToday("yyyy")) - 4;
 		mav.addObject("styleYearList", rendererService.getYearList(toYear, 0, 5));
-		// 색상
-//		Color color = new Color();
-//		mav.addObject("colorList", rendererService.getColorList(color));
+		// 회원등급
+		mav.addObject("custGradeList", rendererService.getAvailCommonCodeList("G101"));
 
 		mav.addObject("params", goods);
 
@@ -503,6 +502,20 @@ public class TssGoodsController extends TssBaseController {
 		return goodsService.getGoodsNotiInfoList(goodsInfo);
 	}
 
+	/**
+	 * 상품 구매등급 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2020. 12. 11
+	 */
+	@PostMapping("/detail/order/grade/list")
+	@ResponseBody
+	public Collection<Goods> getGoodsDetailOrderGradeList(Goods goods) {
+		return goodsService.getGoodsDetailOrderGradeList(goods);
+	}
+
 	/**
 	 * 상품의 정보고시 항목 목록
 	 *

+ 76 - 13
style24.scm/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -77,8 +77,8 @@
 							<li><a href="#goodstab2">옵션/재고정보</a></li>
 							<li><a href="#goodstab3">상품상세정보</a></li>
 							<li id="goodsNotiTab"><a href="#goodstab4">고시정보</a></li>
-							<!-- <li id="goodsColorTab"><a href="#goodstab5">대표색상</a></li> -->
-							<li id="GoodsComposeTab" style="display:none;"><a href="#goodstab6">구성상품</a></li>
+							<li id="goodsGradeTab"><a href="#goodstab5">구매등급</a></li>
+							<li id="goodsComposeTab" style="display:none;"><a href="#goodstab6">구성상품</a></li>
 							<li><a href="#goodstab7">변경이력</a></li>
 						</ul>
 					</div>
@@ -437,13 +437,31 @@
 							<!-- //TAB4 CONTENTS AREA -->
 						</li>
 						<!-- //TAB4 : 고시정보 -->
-
-<!-- 					<li class="tab" id="goodstab5">
-						<div class="panelStyle">
-							<div id="gridGoodsNumList" style="height: 480px;" class="ag-theme-balham lh60"></div>
-						</div>
-					</li> -->
-
+						<!-- 구매등급정보 -->
+						<li class="tab" id="goodstab5">
+							<div class="panelStyle">
+								<table class="frmStyle">
+									<colgroup>
+										<col style="width:10%"/>
+										<col style="width:13%"/>
+										<col/>
+									</colgroup>
+									<tr>
+										<th>구매등급</th>
+										<td>
+											<select id="custGrade" name="custGrade" >
+												<option value="" selected="selected">[선택]</option>
+												<option th:if="${custGradeList}" th:each="oneData, status : ${custGradeList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
+											</select>
+											<button type="button" class="btn btn-default btn-lg" onclick="fnGoodsOrderGrade()">선택</button>
+										</td>
+										<td>
+											<div class="memAddWrap" id="goodsCustGradeList"></div>
+										</td>
+									</tr>
+								</table>
+							</div>
+						</li>
 						<!-- TAB6 : 구성상품 -->
 						<li class="tab" id="goodstab6">
 							<!-- TAB6 CONTENTS AREA -->
@@ -624,7 +642,7 @@
 			$('#goodsDetailForm').find('#listPriceTxt').html(result.listPrice.addComma());
 			$('#goodsDetailForm input[name=listPrice]').val(result.listPrice);
 			$('#goodsDetailForm input[name=currPrice]').val(result.currPrice.addComma());
-			$('#goodsDetailForm input[name=currPriceOrg]').val(result.currPrice);debugger;
+			$('#goodsDetailForm input[name=currPriceOrg]').val(result.currPrice);
 			$('#goodsDetailForm').find('#dcRateTxt').html(result.dcRate);
 			$('#goodsDetailForm input[name=dcRate]').val(result.dcRate);
 			$('#goodsDetailForm').find('#priceUpdDtTxt').html(!gagajf.isNull(result.priceUpdDt) ? result.priceUpdDt.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") : '');
@@ -790,13 +808,13 @@
 			//세트
 			if ("G056_S" == result.goodsType){
 				//$('#goodsDetailForm #erplinkarea').addClass('off');
-				if (result.selfGoodsYn == "Y") $('#goodsDetailForm #GoodsComposeTab').css('display','block');
+				if (result.selfGoodsYn == "Y") $('#goodsDetailForm #goodsComposeTab').css('display','block');
 				$('#goodsDetailForm #goodsNotiTab').css('display','none');
 				$('#goodsDetailForm input[name=sellFeeRate]').attr('readonly', true);
 				$('#goodsDetailForm input[name=currPrice]').attr('readonly', true);
 			}else if ("G056_D" == result.goodsType){
 				//$('#goodsDetailForm #erplinkarea').addClass('off');
-				if (result.selfGoodsYn == "Y") $('#goodsDetailForm #GoodsComposeTab').css('display','block');
+				if (result.selfGoodsYn == "Y") $('#goodsDetailForm #goodsComposeTab').css('display','block');
 				$('#goodsDetailForm #goodsNotiTab').css('display','none');
 				$('#goodsDetailForm input[name=sellFeeRate]').attr('readonly', true);
 			}
@@ -816,6 +834,8 @@
 			fnGoodsDetailSizeStockSearch(params);
 			//정보고시
 			fnGoodsDetailNotiInfoSearch(params);
+			//구매등급
+			fnGoodsDetailOrderGradeSearch(params);
 			
 			//구성상품
 			if ("G056_S" == result.goodsType || "G056_D" == result.goodsType){
@@ -842,6 +862,11 @@
 		cfnAjaxSubmit("/goods/detail/notiInfo/list", "json", fnGoodsDetailNotiInfoSearchCallback, params);
 	}
 	
+	//구매등급
+	var fnGoodsDetailOrderGradeSearch = function(params) {
+		cfnAjaxSubmit("/goods/detail/order/grade/list", "json", fnGoodsDetailOrderGradeSearchCallback, params);
+	}
+	
 	//이력
 	var fnGoodsDetailHstSearch = function() {
 		gagaAgGrid.fetch("/goods/detail/hst/list?goodsCd=" + $('#goodsDetailForm input[name=goodsCd]').val() , gridGoodsHstoryOptions);
@@ -874,7 +899,27 @@
 			$('#goodsDetailForm').find('.tabs .tabsNav li:eq(3) a').attr("style", "color:red;");
 		});
 	}
+	
+	//구매등급 콜백
+	var fnGoodsDetailOrderGradeSearchCallback = function(result) {
+		if (result == null) return;
+
+		var addHtml = "";
+		$('#goodsDetailForm').find('#goodsCustGradeList').html('');
+		
+		result.forEach(function(info){
+			addHtml = '<span class="memAdd"><input type="hidden" name="goodsOrderGrade" value="'+info.custGrade+'"/>'+ info.custGradeName+' <button type="button" onclick="$(this).parent().remove();return false;">삭제</button></span>';
+			addHtml += '\n';
+		});
+
+		$('#goodsDetailForm').find('#goodsCustGradeList').append(addHtml);
+	}
 
+	//구매등급 변경여부
+	$('#goodsDetailForm').find('#goodstab5').find("input, select, textarea").on('change', function() {
+		$('#goodsDetailForm').find('.tabs .tabsNav li:eq(4) a').attr("style", "color:red;");
+	});
+	
 	//상품명 길이표시
 	$("#goodsDetailForm input[name=goodsNm]").bind('focus focusout input keyup keydown paste change', function () {
 		fnDataLengthCheck('goodsNm',200);
@@ -1714,7 +1759,25 @@
 		});
 	});
 	
-	
+	// 상품구매등급 
+	var fnGoodsOrderGrade = function(){
+		
+		var code = $('#goodsDetailForm select[name=custGrade]').val();
+		var codeText = $("#goodsDetailForm select[name=custGrade] option:selected").text();
+		var addHtml = '';
+		
+		var addFlag = true;
+		$("#goodsDetailForm #goodsCustGradeList").find("input").each(function() {
+			if (code == $(this).val() ){
+				addFlag = false;
+			}
+		});
+		if (addFlag){
+			addHtml = '<span class="memAdd"><input type="hidden" name="goodsOrderGrade" value="'+code+'"/>'+ codeText+' <button type="button" onclick="$(this).parent().remove();return false;">삭제</button></span>';
+			$('#goodsCustGradeList').append(addHtml);	
+			//$('#goodsDetailForm').find('.tabs .tabsNav li:eq(4) a').attr("style", "color:red;");
+		}
+	}
 	
 	//엑셀 상품 조회
 	$('#btnGoodsDealSearchExcel').on('click', function() {