فهرست منبع

배송비정책용 콤보 생성

eskim 4 سال پیش
والد
کامیت
dc61741eac

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

@@ -22,4 +22,6 @@ public class DelvFeePolicy extends TscBaseDomain {
 	private int rtnDelvFee;			// 반품배송비
 	private String useYn;			// 사용여부
 
+	private String delvFeeNm;		// 배송비정책명
+	
 }

+ 16 - 0
src/main/java/com/style24/persistence/mybatis/shop/TssRenderer.xml

@@ -356,6 +356,22 @@
 		ORDER  BY DELV_FEE_CD
 	</select>
 	
+	<!-- 업체별 배송비정책 목록(정책명) -->
+	<select id="getSupplyDeliveryPolicyList" parameterType="String" resultType="DelvFeePolicy">
+		/* TsaRenderer.getSupplyDeliveryPolicyList */
+		SELECT DELV_FEE_CD
+			 , CASE WHEN DELV_FEE_CRITE = 'G078_10' THEN CONCAT('무료배송',MIN_ORD_AMT,'원/','배송비', DELV_FEE,'원' )
+		            WHEN DELV_FEE_CRITE = 'G078_20' THEN '무료배송'
+		            ELSE CONCAT('유료배송', DELV_FEE,'원' ) END DELV_FEE_NM
+		     , MIN_ORD_AMT
+		     , DELV_FEE
+		FROM TB_DELV_FEE_POLICY
+		WHERE 1=1
+		AND SUPPLY_COMP_CD = #{supplyCompCd}
+		AND USE_YN = 'Y'
+		ORDER BY DELV_FEE_CD
+	</select>
+	
 	<!-- 제휴채널 목록 -->
 	<select id="getAflinkList" parameterType="AflinkFee" resultType="CommonCode">
 		/* TssRenderer.getAflinkList */

+ 11 - 0
src/main/java/com/style24/scm/biz/dao/TssRendererDao.java

@@ -7,6 +7,7 @@ import com.style24.persistence.domain.AflinkFee;
 import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.CommonCode;
+import com.style24.persistence.domain.DelvFeePolicy;
 import com.style24.persistence.domain.Itemkind;
 import com.style24.persistence.domain.SupplyCompany;
 
@@ -215,6 +216,16 @@ public interface TssRendererDao {
 	 */
 	Collection<CommonCode> getSupplyDeliveryFeePolicyList(String supplyCompCd);
 
+	/**
+	 * 업체별 배송비정책 목록(정책명)
+	 *
+	 * @param supplyCompCd - 업체코드
+	 * @return 배송비정책 목록
+	 * @author eskim
+	 * @since 2021. 07. 19
+	 */
+	Collection<DelvFeePolicy> getSupplyDeliveryPolicyList(String supplyCompCd);
+	
 	/**
 	 * 제휴채널 목록
 	 * @param aflinkFee - 제휴채널 정보

+ 12 - 0
src/main/java/com/style24/scm/biz/service/TssRendererService.java

@@ -10,6 +10,7 @@ import com.style24.persistence.domain.AflinkFee;
 import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.CommonCode;
+import com.style24.persistence.domain.DelvFeePolicy;
 import com.style24.persistence.domain.Itemkind;
 import com.style24.persistence.domain.SupplyCompany;
 import com.style24.scm.biz.dao.TssRendererDao;
@@ -475,6 +476,17 @@ public class TssRendererService {
 		return rendererDao.getSupplyDeliveryFeePolicyList(supplyCompCd);
 	}
 
+	/**
+	 * 업체별 배송비정책 목록(정책명)
+	 * @param supplyCompCd - 공급업체코드
+	 * @return 배송비정책 목록
+	 * @author eskim
+	 * @since 2021. 07. 19
+	 */
+	public Collection<DelvFeePolicy> getSupplyDeliveryPolicyList(String supplyCompCd) {
+		return rendererDao.getSupplyDeliveryPolicyList(supplyCompCd);
+	}
+	
 	/**
 	 * 제휴채널 목록
 	 * @param afChannel - 상위제휴채널

+ 2 - 5
src/main/java/com/style24/scm/biz/web/TssGoodsController.java

@@ -1149,7 +1149,7 @@ public class TssGoodsController extends TssBaseController {
 		// 사용자 업체
 		String supplyCompCd = TssSession.getInfo().getSupplyCompCd();
 		// 업체별 배송비 목록
-		mav.addObject("supplyDeliveryFeePolicyList", rendererService.getSupplyDeliveryFeePolicyList(supplyCompCd));
+		mav.addObject("supplyDeliveryFeePolicyList", rendererService.getSupplyDeliveryPolicyList(supplyCompCd));
 		// 업체별 출고처 목록
 		mav.addObject("supplyDeliveryLocList", rendererService.getSupplyDeliveryLocList(supplyCompCd));
 
@@ -1693,7 +1693,7 @@ public class TssGoodsController extends TssBaseController {
 		mav.addObject("supplyCompanyInfo", supplyCompanyInfoList.iterator().next());
 
 		// 배송비정보
-		mav.addObject("delvFeeCdList", rendererService.getSupplyDeliveryFeePolicyList(supplyCompCd));
+		mav.addObject("delvFeeCdList", rendererService.getSupplyDeliveryPolicyList(supplyCompCd));
 
 		String[] goodsStatExceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", goodsStatExceptCds));
@@ -1890,9 +1890,6 @@ public class TssGoodsController extends TssBaseController {
 		String supplyCompCd = TssSession.getInfo().getSupplyCompCd();
 		mav.addObject("supplyCompList", rendererService.getSupplyCompanyList(supplyCompCd, selfYn));
 
-		// 배송비정보
-		mav.addObject("delvFeeCdList", rendererService.getSupplyDeliveryFeePolicyList(supplyCompCd));
-
 		String[] goodsStatExceptCds = {"G008_00"};
 		mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", goodsStatExceptCds));
 

+ 14 - 0
src/main/java/com/style24/scm/biz/web/TssRendererController.java

@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.style24.persistence.domain.Color;
 import com.style24.persistence.domain.CommonCode;
+import com.style24.persistence.domain.DelvFeePolicy;
 import com.style24.scm.biz.service.TssRendererService;
 import com.style24.scm.support.controller.TssBaseController;
 import com.style24.scm.support.security.session.TssSession;
@@ -189,6 +190,19 @@ public class TssRendererController extends TssBaseController {
 		return rendererService.getSupplyDeliveryFeePolicyList(supplyCompCd);
 	}
 	
+	/**
+	 * 업체별 배송비정책 목록(정책명)
+	 * @param supplyCompCd - 공급업체코드
+	 * @return
+	 * @author eskim
+	 * @since 2021. 07. 19
+	 */
+	@GetMapping("/delvPolicy/list/{supplyCompCd}")
+	@ResponseBody
+	public Collection<DelvFeePolicy> getSupplyDeliveryPolicyList(@PathVariable String supplyCompCd) {
+		return rendererService.getSupplyDeliveryPolicyList(supplyCompCd);
+	}
+	
 	/**
 	 * 출고처 목록
 	 * @param supplyCompCd - 공급업체코드

+ 17 - 1
src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -1080,7 +1080,8 @@
 			$('#goodsDetailForm input[name=sellEdYMD]').val(result.sellEddt.toDate("YYYYMMDDHHmmss").format("YYYY-MM-DD") );
 			$('#goodsDetailForm input[name=sellEdHH]').val(result.sellEddt.toDate("YYYYMMDDHHmmss").format("HH") );
 			
-			cfnCreateCombo('/renderer/delvFee/list/' + result.supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", result.delvFeeCd);
+			//cfnCreateCombo('/renderer/delvFee/list/' + result.supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", result.delvFeeCd);
+			cfnCreateDelvPolicyCombo( result.supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", result.delvFeeCd);
 			$('#goodsDetailForm input[name=delvFeeCdOrg]').val(result.delvFeeCd);
 			
 			cfnCreateCombo('/renderer/delvLoc/list/' + result.supplyCompCd, $('#goodsDetailForm select[name=delvLocCd]'), "[선택]", result.delvLocCd);
@@ -1420,6 +1421,21 @@
 
 	}
 	
+	//배송비정책변경시
+	$('#goodsDetailForm select[name=delvFeeCd]').on('change', function() {
+		var delvFeeCd = $("#goodsDetailForm select[name=delvFeeCd]").val();
+		
+		if (gagajf.isNull(delvFeeCd)){
+			$("#goodsDetailForm input[name=delvFee]").val('');
+			$("#goodsDetailForm input[name=minOrdAmt]").val('');
+		}else{
+			
+			var obj = $('#goodsDetailForm select[name=delvFeeCd] option:selected');
+			$("#goodsDetailForm input[name=delvFee]").val(obj.attr("delvFee").addComma());
+			$("#goodsDetailForm input[name=minOrdAmt]").val(obj.attr("minOrdAmt").addComma());
+		}
+	});	
+	
 	//품목코드변경시
 	$('#goodsDetailForm select[name=itemkindCd]').on('change', function() {
 		var itemkindCd = $("#goodsDetailForm select[name=itemkindCd]").val();

+ 30 - 15
src/main/webapp/WEB-INF/views/goods/GoodsListForm.html

@@ -342,22 +342,22 @@
 								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('delvFeeCd')" >적용</button>
 							</td>
 							<th>판매일시</th>
-							<td colspan="3">
-								<input name="sellStYMD" id="sellStYMD" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="판매시작일" />
-								<select name="sellStHH" id="sellStHH" required="required" data-valid-name="판매 시작시간">
+							<td colspan="7">
+								<input name="sellStYMDC" id="sellStYMDC" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="판매시작일" />
+								<select name="sellStHHC" id="sellStHHC" 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)}시|" th:selected="${#numbers.formatInteger(num,2)}==0 ? 'true'">시간</option>
 									</th:block>
 								</select>
-								<input name="sellStdt" id="sellStdt" type="hidden" />
+								<input name="sellStdtC" id="sellStdtC" type="hidden" />
 								~
-								<input name="sellEdYMD" id="sellEdYMD" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="판매 종료일" />
-								<select name="sellEdHH" id="sellEdHH" required="required" data-valid-name="판매 종료시간">
+								<input name="sellEdYMDC" id="sellEdYMDC" type="text" class="w80 schDate" maxlength="10" required="required" data-valid-name="판매 종료일" />
+								<select name="sellEdHHC" id="sellEdHHC" 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="sellEddt" id="sellEddt" type="hidden" />
+								<input name="sellEddtC" id="sellEddtC" type="hidden" />
 								<button type="button" class="btn btn-dark btn-sm" onclick="fnChangeGoodsState('sellDate')" >적용</button>
 							</td>
 						</tr>
@@ -703,25 +703,39 @@
 				return;
 			}
 		}else if (proc == "sellDate"){
-			if(isNaN(Date.parse($("#searchForm input[name=sellStYMD]").val()))){
+			if(isNaN(Date.parse($("#searchForm input[name=sellStYMDC]").val()))){
 				mcxDialog.alertC('날짜형식이 아닙니다.', {
 					sureBtnText: "확인",
 					sureBtnClick: function() {
-						$("#searchForm input[name=sellStYMD]").focus();
+						$("#searchForm input[name=sellStYMDC]").focus();
 					}
 				});	
 				return false;
 			}
 			
-			if(isNaN(Date.parse($("#searchForm input[name=sellEdYMD]").val()))){
+			if(isNaN(Date.parse($("#searchForm input[name=sellEdYMDC]").val()))){
 				mcxDialog.alertC('날짜형식이 아닙니다.', {
 					sureBtnText: "확인",
 					sureBtnClick: function() {
-						$("#searchForm input[name=sellEdYMD]").focus();
+						$("#searchForm input[name=sellEdYMDC]").focus();
 					}
 				});	
 				return false;
 			}
+			
+			var fromDate = $("#searchForm input[name=sellStYMDC]").val().replaceAll('-', '')+ $("#searchForm select[name=sellStHHC]").val();
+			var toDate = $("#searchForm input[name=sellEdYMDC]").val().replaceAll('-', '')+ $("#searchForm select[name=sellEdHHC]").val();
+
+			if (fromDate > toDate) {
+				mcxDialog.alertC("판매기간의 시작일시는 종료일시 보다 클 수 없습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#searchForm input[name=sellStYMDC]').focus();
+					}
+				});
+				return false;
+			}
+			
 		}else{
 			if (gagajf.isNull($(objId).val())){
 				mcxDialog.alertC('적용하실 항목을 선택(입력)해주세요.', {
@@ -839,8 +853,8 @@
 			}
 			delvFeeCdVal = $(objId).val();	
 		}else if (proc == "sellDate") {
-			sellStdtVal = $("#searchForm input[name=sellStYMD]").val().replaceAll('-', '')+ $("#searchForm select[name=sellStHH]").val()+"0000";
-			sellEddtVal = $("#searchForm input[name=sellEdYMD]").val().replaceAll('-', '')+ $("#searchForm select[name=sellEdHH]").val()+"5959";
+			sellStdtVal = $("#searchForm input[name=sellStYMDC]").val().replaceAll('-', '')+ $("#searchForm select[name=sellStHHC]").val()+"0000";
+			sellEddtVal = $("#searchForm input[name=sellEdYMDC]").val().replaceAll('-', '')+ $("#searchForm select[name=sellEdHHC]").val()+"5959";
 		}else{
 			return;
 		}
@@ -1010,7 +1024,8 @@
 	// 상태일괄변경 업체변경시
 	$('#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]'), "[선택]");
+		cfnCreateDelvPolicyCombo( $('#searchForm input[name=statSupplyCompCd]').val(), $('#searchForm select[name=delvFeeCdC]'), "[선택]");
+		
 	});
 	
 	// 업체 브랜드 초기화
@@ -1024,7 +1039,7 @@
 		cfnCreateMultiCombo(actionUrl,"multiBrand",  "[전체]",null, 'Y');
 		
 		$("#searchForm select[name=statSupplyCompCd]").val([[${sessionInfo.supplyCompCd}]]);
-		cfnCreateCombo('/renderer/delvFee/list/' + $('#searchForm select[name=statSupplyCompCd]').val(), $('#searchForm select[name=delvFeeCdC]'), "[선택]");
+		cfnCreateDelvPolicyCombo( $('#searchForm select[name=statSupplyCompCd]').val(), $('#searchForm select[name=delvFeeCdC]'), "[선택]");
 	}
 	
 	//딜상품구성 클릭 시

+ 3 - 3
src/main/webapp/WEB-INF/views/goods/GoodsMassRegisterForm.html

@@ -47,7 +47,7 @@
 						배송비 정책 : &nbsp;&nbsp;
 						<select name="delvFeeCd" id="delvFeeCd">
 							<option value="" >[선택]</option>
-							<option th:if="${supplyDeliveryFeePolicyList}" th:each="oneData, status : ${supplyDeliveryFeePolicyList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+							<option th:if="${supplyDeliveryFeePolicyList}" th:each="oneData, status : ${supplyDeliveryFeePolicyList}" th:value="${oneData.delvFeeCd}" th:text="${'[' + oneData.delvFeeCd + '] ' + oneData.delvFeeNm}"></option>
 						</select>
 						출고처 : &nbsp;&nbsp;
 						<select name="delvLocCd" id="delvLocCd">
@@ -58,11 +58,11 @@
 						<button type="button" class="btn btn-primary btn-lg" id="btnGoodsCreate" >대량입점상품 등록</button>
 					</span>
 					</th:block>
-					<span th:if="${sessionInfo.roleCd == 'G001_B000' or sessionInfo.roleCd == 'G001_E000'}" th:style="'padding-left:80px;'">
+					<span th:if="${sessionInfo.roleCd == 'G001_B000' or sessionInfo.roleCd == 'G001_E000'}" th:style="'padding-left:20px;'">
 						<button type="button" class="btn btn-default btn-lg"  onclick="cfnDownloadSampleFile('SF014');">상품대량수정 등록양식 다운로드</button>
 						<button type="button" class="btn btn-primary btn-lg" id="btnGoodsUpdate" >대량상품 수정</button>
 					</span>
-					<span th:style="'padding-left:80px;'">
+					<span th:style="'padding-left:20px;'">
 					<button type="button"  class="btn btn-primary btn-lg" id="btnGoodsImageCreate">이미지 대량 등록</button>
 					</span>
 				</li>

+ 4 - 4
src/main/webapp/WEB-INF/views/goods/GoodsRegisterForm.html

@@ -252,7 +252,7 @@
 										<td>
 											<select name="delvFeeCd" id="delvFeeCd" required="required" data-valid-name="배송지정책">
 												<option value="">[선택]</option>
-												<option th:if="${delvFeeCdList}" th:each="oneData, status : ${delvFeeCdList}" th:value="${oneData.cd}" th:text="${oneData.cdNm}"></option>
+												<option th:if="${delvFeeCdList}" th:each="oneData, status : ${delvFeeCdList}" th:value="${oneData.delvFeeCd}" th:text="${oneData.delvFeeNm}" th:attr="delvFee=${oneData.delvFee},minOrdAmt=${oneData.minOrdAmt}"></option>
 											</select>
 										</td>
 										<th>기본배송비</th>
@@ -748,9 +748,9 @@
 			$("#goodsDetailForm input[name=delvFee]").val('');
 			$("#goodsDetailForm input[name=minOrdAmt]").val('');
 		}else{
-			var arrDelvFeeed = $('#goodsDetailForm select[name=delvFeeCd] option:selected').text().split('/');
-			$("#goodsDetailForm input[name=delvFee]").val(arrDelvFeeed[1].addComma());
-			$("#goodsDetailForm input[name=minOrdAmt]").val(arrDelvFeeed[0].addComma());
+			var obj = $('#goodsDetailForm select[name=delvFeeCd] option:selected');
+			$("#goodsDetailForm input[name=delvFee]").val(obj.attr("delvFee").addComma());
+			$("#goodsDetailForm input[name=minOrdAmt]").val(obj.attr("minOrdAmt").addComma());
 		}
 	});	
 	

+ 5 - 5
src/main/webapp/WEB-INF/views/goods/GoodsSalfRegisterForm.html

@@ -560,7 +560,8 @@
 		
 		//배송지 정책
 		$("#goodsDetailForm select[name=delvFeeCd] option:gt(0)").remove();
-		cfnCreateCombo("/renderer/delvFee/list/" + supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", '');
+		cfnCreateDelvPolicyCombo( supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]");
+		//cfnCreateCombo("/renderer/delvFee/list/" + supplyCompCd, $('#goodsDetailForm select[name=delvFeeCd]'), "[선택]", '');
 		
 		//출고처
 		$("#goodsDetailForm select[name=delvLocCd] option:gt(0)").remove();
@@ -594,10 +595,9 @@
 			$("#goodsDetailForm input[name=delvFee]").val('');
 			$("#goodsDetailForm input[name=minOrdAmt]").val('');
 		}else{
-			var arrDelvFeeed = $('#goodsDetailForm select[name=delvFeeCd] option:selected').text().split('/');
-			$("#goodsDetailForm input[name=delvFee]").val(arrDelvFeeed[1].addComma());
-			var minOrdAmt = arrDelvFeeed[0].split(']');
-			$("#goodsDetailForm input[name=minOrdAmt]").val(minOrdAmt[1].addComma());
+			var obj = $('#goodsDetailForm select[name=delvFeeCd] option:selected');
+			$("#goodsDetailForm input[name=delvFee]").val(obj.attr("delvFee").addComma());
+			$("#goodsDetailForm input[name=minOrdAmt]").val(obj.attr("minOrdAmt").addComma());
 		}
 	});	
 	

+ 51 - 0
src/main/webapp/ux/js/admin.common.js

@@ -207,6 +207,57 @@ var cfnCreateMultiCombo = function(actionUrl, oTarget, defaultTxt, chooseValArr,
 	}
 }
 
+/**
+ * @type   : function
+ * @access : public
+ * @desc   : Combobox 구성
+ * <pre>
+ *     cfnCreateDelvPolicyCombo("3", oTarget, "[선택]");
+ * </pre>
+ * @param  : supplyCompCd - 업체코드. 필수
+ *           oTarget - target 오브젝트. 필수
+ *           defaultTxt - default 텍스트([선택]/[전체]). option
+ *           chooseCd - 선택된 코드 값. option
+ *           isCodeDisp - 코드표시(true/false). option
+ * @return : None
+ * @since  : 2021/07/19
+ * @author : eskim
+ */
+var cfnCreateDelvPolicyCombo = function(supplyCompCd, oTarget, defaultTxt, chooseCd, isCodeDisp) {
+	if (gagajf.isNull(isCodeDisp)) isCodeDisp = true;
+
+	var actionUrl = '/renderer/delvPolicy/list/' + supplyCompCd;
+	$.getJSON(actionUrl
+		, function(result, status) {
+			if (status == 'success') {
+				$('option', oTarget).remove();
+
+				if (!gagajf.isNull(defaultTxt)) {
+					$(oTarget).append('<option value="">' + defaultTxt + '</option>');
+				}
+
+				$.each(result, function(idx, data) {
+					var tag = '<option value="' + data.delvFeeCd + '"';
+
+					if (!gagajf.isNull(chooseCd) && chooseCd == data.delvFeeCd) {
+						tag += ' selected';
+					}
+					
+					tag += ' minOrdAmt="' + data.minOrdAmt+ '"' ;
+					tag += ' delvFee="' + data.delvFee+ '"' ;
+
+					if (isCodeDisp) {
+						tag += '>[' + data.delvFeeCd + '] ' + data.delvFeeNm + '</option>';
+					} else {
+						tag += '>' + data.delvFeeNm + '</option>';
+					}
+
+					$(oTarget).append(tag);
+				});
+			}
+		});
+}
+
 /**
  * @type   : function
  * @access : public