Selaa lähdekoodia

상품에 배송비정책코드 적용

eskim 5 vuotta sitten
vanhempi
commit
c9bdd0ab1d

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

@@ -46,6 +46,8 @@ public class Goods extends TscBaseDomain {
 	private String supplyGoodsCd;		//공급업체상품코드(원코드)
 	private String ageGrpCd;		//상품연령대(공통코드 G023)
 	private String delvFeeCd;	//배송비정책코드
+	private int delvFee;		//배송비
+	private int minOrdAmt;		//무료배송비최소구매금액
 	private float pntPrate;		//포인트적립율(PC)
 	private float pntMrate;		//포인트적립율(모바일)
 	private float sellFeeRate;		//판매수수료율

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

@@ -42,6 +42,7 @@ public class GoodsHst extends TscBaseDomain {
 	private String supplyCompCd;		//공급업체코드
 	private String supplyGoodsCd;		//공급업체상품코드(원코드)
 	private String ageGrpCd;		//상품연령대(공통코드 G023)
+	private String delvFeeCd;	//배송비정책코드
 	private int delvFee;		//배송비
 	private int minOrdAmt;		//무료배송비최소구매금액
 	private float pntPrate;		//포인트적립율(PC)

+ 12 - 7
style24.admin/src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -432,6 +432,7 @@
 		              , G.CHANGEABLE_YN
 		              , G.RETURNABLE_YN
 		              , G.GIFT_PACK_YN
+		              , G.DELV_FEE_CD
 		              , 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
@@ -862,8 +863,9 @@
 		     , G.SUPPLY_COMP_CD
 		     , G.SUPPLY_GOODS_CD
 		     , G.AGE_GRP_CD
-		     , G.DELV_FEE
-		     , G.MIN_ORD_AMT
+		     , G.DELV_FEE_CD
+		     , D.DELV_FEE
+		     , D.MIN_ORD_AMT
 		     , G.PNT_PRATE
 		     , G.PNT_MRATE
 		     , G.SELL_FEE_RATE
@@ -904,6 +906,8 @@
 		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
+		LEFT OUTER JOIN TB_DELV_FEE_POLICY D ON G.SUPPLY_COMP_CD = D.SUPPLY_COMP_CD
+		                                     AND G.DELV_FEE_CD =  D.DELV_FEE_CD
 		WHERE 1 = 1 
 		<choose>
 		<when test="goodsCd != null and goodsCd != ''">
@@ -1026,8 +1030,7 @@
 		      , SUPPLY_COMP_CD
 		      , SUPPLY_GOODS_CD
 		      , AGE_GRP_CD
-		      , DELV_FEE
-		      , MIN_ORD_AMT
+		      , DELV_FEE_CD
 		      , PNT_PRATE
 		      , PNT_MRATE
 		      , SELL_FEE_RATE
@@ -1079,8 +1082,7 @@
 		     , SUPPLY_COMP_CD      
 		     , SUPPLY_GOODS_CD     
 		     , AGE_GRP_CD          
-		     , DELV_FEE            
-		     , MIN_ORD_AMT         
+		     , DELV_FEE_CD            
 		     , PNT_PRATE           
 		     , PNT_MRATE           
 		     , SELL_FEE_RATE       
@@ -1169,6 +1171,9 @@
 		<if test="giftPackYn != null and giftPackYn != ''" >
 		    , GIFT_PACK_YN = #{giftPackYn}
 		</if>
+		<if test="delvFeeCd != null and delvFeeCd != ''" >
+		    , DELV_FEE_CD = #{delvFeeCd}
+		</if>
 		WHERE GOODS_CD = #{goodsCd}
 	</update>
 	
@@ -1574,7 +1579,7 @@
 		  , DC_RATE = #{dcRate}
 		  , GOODS_STAT = #{goodsStat}
 		  , GOODS_GB = #{goodsGb}
-		  , MIN_ORD_AMT = #{minOrdAmt}
+		  , DELV_FEE_CD = #{delvFeeCd}
 		  , PNT_PRATE = #{pntPrate}
 		  , PNT_MRATE = #{pntMrate}
 		  , FORMAL_GB = #{formalGb}

+ 2 - 22
style24.admin/src/main/webapp/WEB-INF/views/business/BrandForm.html

@@ -409,16 +409,7 @@
 				}
 			);
 			
-			// 업체별 배송지 정책 정보
-			$.getJSON('/renderer/delvFee/list/' + result[0].supplyCompCd
-				, function(result, status) {debugger;
-					$('#detailForm select[name=delvFeeCd]').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=delvFeeCd]').append(optionHtml);
-					});
-				}
-			);
+			cfnCreateCombo('/renderer/delvFee/list/' + result[0].supplyCompCd, $('#detailForm select[name=delvFeeCd]'), "[선택]");
 			
 		});
 	});
@@ -435,18 +426,7 @@
 				$("#detailForm select[name=supplyCompCd]").val(supplyCompCd);
 		});
 		
-		debugger;
-		// 업체별 배송지 정책 정보
-		$.getJSON('/renderer/delvFee/list/' + supplyCompCd
-			, function(result, status) {debugger;
-				$('#detailForm select[name=delvFeeCd]').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=delvFeeCd]').append(optionHtml);
-				});
-				$("#detailForm select[name=delvFeeCd]").val(delvFeeCd);
-			}
-		);
+		cfnCreateCombo('/renderer/delvFee/list/' + supplyCompCd, $('#detailForm select[name=delvFeeCd]'), "[선택]", delvFeeCd);
 	}
 	
 	

+ 46 - 43
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -158,7 +158,7 @@
 										</td>
 									</tr>
 									<tr>
-										<td rowspan="11">&nbsp;</td>
+										<td rowspan="9">&nbsp;</td>
 										<th>시즌<em class="required" title="필수"></em></th>
 										<td >
 											<select  name="seasonCd" id="seasonCd">
@@ -252,10 +252,24 @@
 											<button type="button" class="btn btn-success btn-lg" id="btnGoodsItemkindChange">품목변경</button>
 											</th:block>
 										</td>
+										<td colspan="2">
+										</td>
+									</tr>
+									<tr>
+										<th>배송비정책<em class="required" title="필수"></em></th>
+										<td>
+											<select name="delvFeeCd">
+											</select>
+											<input type="hidden" id="delvFeeCdOrg" name="delvFeeCdOrg"/>
+										</td>
 										<th>기본배송비</th>
 										<td>
 											<input type="text" class="w100 aR" id="delvFee" name="delvFee"  disabled="disabled"/> 원
 										</td>
+										<th>무료배송비기준</th>
+										<td>
+											<input type="text" class="w100 aR" id="minOrdAmt" name="minOrdAmt" disabled="disabled"/> 원
+										</td>
 									</tr>
 									<tr>
 										<th>PC포인트<em class="required" title="필수"></em></th>
@@ -274,10 +288,7 @@
 											<label class="rdoBtn"><input type="radio" name="preMpntUsableYn" id="preMpntUsableYnN" value="N"/>N</label>
 											<input type="hidden" id="preMpntUsableYnOrg" name="preMpntUsableYnOrg"/>
 										</td>
-										<th>무료배송비기준<em class="required" title="필수"></em></th>
-										<td>
-											<input type="text" class="w100 aR" id="minOrdAmt" name="minOrdAmt" data-valid-type="numeric" maxlength="10"/> 원
-											<input type="hidden" id="minOrdAmtOrg" name="minOrdAmtOrg"/>
+										<td colspan="2">
 										</td>
 									</tr>
 									<tr>
@@ -767,7 +778,6 @@
 			$('#goodsDetailForm input[name=pntMrate]').val(result.pntMrate);
 			$('#goodsDetailForm input[name=pntMrateOrg]').val(result.pntMrate);
 			$('#goodsDetailForm input[name=minOrdAmt]').val(result.minOrdAmt.addComma());
-			$('#goodsDetailForm input[name=minOrdAmtOrg]').val(result.minOrdAmt);
 			$('#goodsDetailForm input[name=minOrdQty]').val(result.minOrdQty);
 			$('#goodsDetailForm input[name=minOrdQtyOrg]').val(result.minOrdQty);
 			$('#goodsDetailForm input[name=maxOrdQty]').val(result.maxOrdQty);
@@ -778,6 +788,9 @@
 			$('#goodsDetailForm input[name=goodsType]').val(result.goodsType);
 			$("#goodsDetailForm").find("#goodsTypeNm").html(result.goodsTypeNm);
 			
+			cfnCreateCombo('/renderer/delvFee/list/' + result.supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", result.delvFeeCd);
+			$('#goodsDetailForm input[name=delvFeeCdOrg]').val(result.delvFeeCd);
+			
 			//상품상세
 			// 공지내용. Summernote에 값 세팅
 			gagaSn.setContents('#goodsPcTopDesc', result.goodsPcTopDesc);
@@ -1205,6 +1218,16 @@
 			return;
 		}
 
+		// 상품구분
+		if(gagajf.isNull($("#goodsDetailForm select[name=goodsGb]").val())){
+			mcxDialog.alertC("상품구분을 선택해 주세요.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$("#goodsDetailForm select[name=goodsGb]").focus();
+				}
+			});
+			return;
+		}
 		//시즌
 		if(gagajf.isNull($("#goodsDetailForm select[name=seasonCd]").val())){
 			mcxDialog.alertC("시즌을 선택해 주세요.", {
@@ -1265,6 +1288,16 @@
 			});
 			return false;
 		}
+		// 배송비구분
+		if(gagajf.isNull($("#goodsDetailForm select[name=delvFeeCd]").val())){
+			mcxDialog.alertC("배송비정책을 선택해 주세요.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$("#goodsDetailForm select[name=delvFeeCd]").focus();
+				}
+			});
+			return;
+		}
 		// 포인트
 		if ( gagajf.isNull($("#goodsDetailForm input[name=pntPrate]").val())) {
 			mcxDialog.alertC("PC 포인트를 입력해 주세요.", {
@@ -1379,28 +1412,6 @@
 			return false;
 		}
 
-		// 무료배송비
-		if ( gagajf.isNull($("#goodsDetailForm input[name=minOrdAmt]").val())) {
-			mcxDialog.alertC("무료 배송 금액을 입력해 주세요.", {
-				sureBtnText: "확인",
-				sureBtnClick: function() {
-					$("#goodsDetailForm input[name=minOrdAmt]").focus();
-				}
-			});
-			return false;
-		}
-		if (Number($("#goodsDetailForm input[name=minOrdAmt]").val().removeComma()) <= 0) {
-			mcxDialog.alertC("무료 배송 금액을 입력해 주세요.", {
-				sureBtnText: "확인",
-				sureBtnClick: function() {
-					$("#goodsDetailForm input[name=minOrdAmt]").focus();
-				}
-			});
-			return false;
-		}
-
-		//if (optCheck) return false;
-
 		idx = 0;
 
 		//재고 옵션 관련 확인
@@ -1409,8 +1420,8 @@
 		$("#optionList tr").each(function() {
 			var optCd1 = $(this).find("input[name=optCd1]").val();
 			var optCd2 = $(this).find("input[name=optCd2]").val();
-			var hidOptCd1 = $(this).find("input[name=hidOptCd1]").val();
-			var hidOptCd2 = $(this).find("input[name=hidOptCd2]").val();
+			//var hidOptCd1 = $(this).find("input[name=hidOptCd1]").val();
+			//var hidOptCd2 = $(this).find("input[name=hidOptCd2]").val();
 			var baseStockQty = $(this).find("input[name=baseStockQty]").val();
 			var hidBaseStockQty = $(this).find("input[name=hidBaseStockQty]").val();
 			var dispOrd = $(this).find("input[name=dispOrd]").val();
@@ -1473,15 +1484,7 @@
 				});
 				return false;
 			}
-			
-			if (optCd1 != hidOptCd1){
-				$("#goodsDetailForm input[name=chStockDataYn]").val('Y');
-			}
-			
-			if (optCd2 != hidOptCd2){
-				$("#goodsDetailForm input[name=chStockDataYn]").val('Y');
-			}
-			
+	
 			if (editCurrStockQty != currStockQty){
 				$("#goodsDetailForm input[name=chStockDataYn]").val('Y');
 			}
@@ -1801,10 +1804,6 @@
 		if ($("#goodsDetailForm input[name=dayMaxOrdQtyOrg]").val() != $("#goodsDetailForm input[name=dayMaxOrdQty]").val()){
 			return true;
 		}
-		//무료배송기준
-		if ($("#goodsDetailForm input[name=minOrdAmtOrg]").val() != $("#goodsDetailForm input[name=minOrdAmt]").val().removeComma()){
-			return true;
-		}
 		//유통구분
 		if ($("#goodsDetailForm input[name=distributionGbOrg]").val() != $("#goodsDetailForm select[name=distributionGb]").val()){
 			return true;
@@ -1825,6 +1824,10 @@
 		if ($("#goodsDetailForm input[name=returnableYnOrg]").val() != $("input[name=returnableYn]:checked").val()){
 			return true;
 		}
+		// 배송비정책
+		if ($("#goodsDetailForm input[name=delvFeeCdOrg]").val() != $("#goodsDetailForm select[name=delvFeeCd]").val()){
+			return true;
+		}
 		
 		return false;
 	}

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

@@ -120,7 +120,7 @@
 			<td><input type="text" class="w100p aC" name="editCurrStockQty" th:value="${goodsSize.currStockQty}" maxlength="10" data-valid-type="numeric" th:disabled="${goods.selfGoodsYn == 'Y'}"/>
 				<input type="hidden" name="currStockQty" th:value="${goodsSize.currStockQty}"/>
 			</td>
-			<td><input type="text" class="w100p aC"  name=baseStockQty th:value="${goodsSize.baseStockQty}" maxlength="7" data-valid-type="integer">
+			<td><input type="text" class="w100p aC"  name="baseStockQty" th:value="${goodsSize.baseStockQty}" maxlength="7" data-valid-type="integer">
 				<input type="hidden" name="hidBaseStockQty" th:value="${goodsSize.baseStockQty}"/>
 			</td>
 			<td><input type="text" class="w100p aC" name="saleStockQty" th:value="${goodsSize.saleStockQty}" maxlength="17" data-valid-type="numeric" th:disabled="disabled"/>

+ 66 - 3
style24.admin/src/main/webapp/WEB-INF/views/goods/GoodsListForm.html

@@ -354,7 +354,20 @@
 								</select>
 								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('giftPackYn')" >적용</button>
 							</td>
-							<td colspan="6"></td>
+							<th>배송지정책</th>
+							<td colspan="3">
+								<label class="rdoBtn"><input type="radio" name="statSelfYn" id="statSelfYnY" value="Y"  checked/>자사</label>
+								<label class="rdoBtn"><input type="radio" name="statSelfYn" id="statSelfYnN" value="N"/>입점</label>
+								<select name="statSupplyCompCd" id="statSupplyCompCd">
+									<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>
+								</select>
+								<select name="delvFeeCdC" id="delvFeeCdC" >
+									<option value="">[선택]</option>
+								</select>
+								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('delvFeeCd')" >적용</button>
+							</td>
+							<td colspan="2">
 						</tr>
 					</table>
 				</li>
@@ -553,7 +566,8 @@
 		var searchFlag = false;
 		var cnt = 0;
 
-		if( !gagajf.isNull($("#searchForm select[name=supplyCompCd]").val())
+		if( !gagajf.isNull($("#searchForm select[name=supplyCompCd]").val()) 
+				|| !gagajf.isNull($("#searchForm select[name=statSupplyCompCd]").val()) 
 				|| !gagajf.isNull($("#searchForm textarea[name=condition]").val())
 				|| (!gagajf.isNull($("#searchForm input[name=stDate]").val()) && !gagajf.isNull($("#searchForm input[name=edDate]").val()))
 				|| !gagajf.isNull($("#searchForm select[name=brandGrpNm]").val())
@@ -744,6 +758,7 @@
 		var pntPrateVal = '';
 		var pntMrateVal = '';
 		var giftPackYnVal = '';
+		var delvFeeCdVal = '';
 
 		if (proc == "goodsStat") {
 			goodsStatVal = $(objId).val();
@@ -817,7 +832,12 @@
 			}
 			pntMrateVal = $(objId).val();
 		}else if (proc == "giftPackYn") {
-			giftPackYnVal = $(objId).val();	
+			giftPackYnVal = $(objId).val();
+		}else if (proc == "delvFeeCd") {
+			if (!fnGoodsDelFeeCdCheck(selectedData)){
+				return;
+			}
+			delvFeeCdVal = $(objId).val();
 		}else{
 			return;
 		}
@@ -845,6 +865,7 @@
 							,pntPrate : pntPrateVal
 							,pntMrate : pntMrateVal
 							,giftPackYn : giftPackYnVal
+							,delvFeeCd : delvFeeCdVal
 							,procJob : proc
 							};
 
@@ -855,6 +876,28 @@
 		});
 	}
 	
+	// 배송비정책 관련 확인
+	var fnGoodsDelFeeCdCheck = function(selectedData){
+		
+		var statSupplyCompCd = $('#searchForm select[name=statSupplyCompCd]').val();
+		
+		$.each(selectedData, function(idx, item) {
+
+			if (item.supplyCompCd != statSupplyCompCd){
+
+				mcxDialog.alertC(item.goodsCd +" 상품은 배송지 정책업체와 상이합니다. ",{
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						gridOptions.api.setFocusedCell(idx, "goodsCd", null);
+					}
+				});
+				return false;
+			}
+		});
+		
+		return true;	
+	}
+	
 	// 입점 상품상태 변경시
 	var fnChangeGoodsStateSelfNo = function(proc){
 
@@ -985,6 +1028,26 @@
 		
 	});
 	
+	// 상태일괄변경 자사/입점 변경여부
+	$("#searchForm input[name=statSelfYn]").bind('click change', function () {
+		var radioValue = $(this).val();
+		var selfGb = "S";	// 자사 공급 업체
+		if (radioValue == "N"){
+			selfGb = "E";	//입점 공급업체
+		}
+		
+		var actionUrl = '/renderer/supply/company/list/'+ selfGb;
+		$("#searchForm select[name=delvFeeCdC] option:gt(0)").remove();
+		cfnCreateCombo(actionUrl, $('#searchForm select[name=statSupplyCompCd]'), "[전체]", "");
+		
+	});
+	
+	// 상태일괄변경 업체변경시
+	$('#searchForm select[name=statSupplyCompCd]').on('change', function() {
+		$("#searchForm select[name=delvFeeCdC] option:gt(0)").remove();
+		cfnCreateCombo('/renderer/delvFee/list/' + $('#searchForm select[name=statSupplyCompCd]').val(), $('#searchForm select[name=delvFeeCdC]'), "[선택]");
+	});
+	
 	$(document).ready(function() {
 
 		cfnCreateCalendar('#sellTerms', 'stDate', 'edDate', true, '등록일', 'X');