eskim 5 лет назад
Родитель
Сommit
e9dee51a2c

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

@@ -0,0 +1,25 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 배송비정책 Domain
+ * 
+ * @author gagamel
+ * @since 2020. 11. 24
+ */
+@SuppressWarnings("serial")
+@Data
+public class DelvFeePolicy extends TscBaseDomain {
+
+	private String delvFeeCd;		// 배송비정책코드
+	private String supplyCompCd;	// 공급업체코드
+	private String delvFeeCrite;	// 배송비부과기준(G078_10:조건부무료, G078_20:무료, G078_30:유료)
+	private int minOrdAmt;			// 무료배송비최소주문금액
+	private int delvFee;			// 배송비
+	private int rtnDelvFee;			// 반품배송비
+	private String useYn;			// 사용여부
+
+}

+ 20 - 1
src/main/java/com/style24/persistence/mybatis/shop/TssBusiness.xml

@@ -314,6 +314,25 @@
 		AND    USE_YN = 'Y'
 	</insert>
 	
-	
+	<!-- 배송비정책 목록 -->
+	<select id="getDeliveryFeePolicyList" parameterType="DelvFeePolicy" resultType="DelvFeePolicy">
+		/* TsaBusiness.getDeliveryFeePolicyList */
+		SELECT DELV_FEE_CD    /*배송비정책코드*/
+		     , SUPPLY_COMP_CD /*공급업체코드*/
+		     , DELV_FEE_CRITE /*배송비부과기준*/
+		     , MIN_ORD_AMT    /*무료배송비최소주문금액*/
+		     , DELV_FEE       /*배송비*/
+		     , RTN_DELV_FEE   /*반품배송비*/
+		     , USE_YN         /*사용여부*/
+		FROM   TB_DELV_FEE_POLICY
+		WHERE  SUPPLY_COMP_CD = #{supplyCompCd}
+		<if test="delvFeeCd != null and delvFeeCd != ''">
+		AND DELV_FEE_CD = #{delvFeeCd}
+		</if>
+		<if test="useYn != null and useYn != ''">
+		AND USE_YN = #{useYn}
+		</if>
+		ORDER  BY DELV_FEE_CD
+	</select>
 	
 </mapper>

+ 10 - 0
src/main/java/com/style24/scm/biz/dao/TssBusinessDao.java

@@ -5,6 +5,7 @@ import java.util.Collection;
 import com.style24.core.support.annotation.ShopDs;
 import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.BrandMd;
+import com.style24.persistence.domain.DelvFeePolicy;
 import com.style24.persistence.domain.SupplyCompany;
 
 /**
@@ -225,4 +226,13 @@ public interface TssBusinessDao {
 //	 */
 //	void deleteShipCompany(ShipCompany shipComp);
 
+
+	/**
+	 * 배송비정책 목록
+	 * @param DelvFeePolicy
+	 * @author gagamel
+	 * @since 2021. 01. 25
+	 */
+	Collection<DelvFeePolicy> getDeliveryFeePolicyList(DelvFeePolicy DelvFeePolicy);
+
 }

+ 11 - 0
src/main/java/com/style24/scm/biz/service/TssBusinessService.java

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.BrandMd;
+import com.style24.persistence.domain.DelvFeePolicy;
 import com.style24.persistence.domain.SupplyCompany;
 import com.style24.scm.biz.dao.TssBusinessDao;
 
@@ -315,4 +316,14 @@ public class TssBusinessService {
 //		}
 //	}
 
+	/**
+	 * 배송비정책 목록
+	 * @return
+	 * @author eskim
+	 * @since 2021. 01. 25
+	 */
+	public Collection<DelvFeePolicy> getDeliveryFeePolicyList(DelvFeePolicy delvFeePolicy) {
+		return businessDao.getDeliveryFeePolicyList(delvFeePolicy);
+	}
+
 }

+ 33 - 7
src/main/java/com/style24/scm/biz/service/TssGoodsService.java

@@ -16,6 +16,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.CommonCode;
+import com.style24.persistence.domain.DelvFeePolicy;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsCategory;
 import com.style24.persistence.domain.GoodsDesc;
@@ -1453,7 +1454,6 @@ public class TssGoodsService {
 		float pntPrate = 0f;
 		float pntMrate = 0f;
 		float sellFeeRate = 0f;
-		String delvFeeCd = "";
 		String supplyCompCd = "";
 		for (Brand tmpBrand : brandList) {
 			if ("G009_10".equals(goods.getFormalGb())) {
@@ -1463,14 +1463,12 @@ public class TssGoodsService {
 				pntPrate = tmpBrand.getPntPrate20();
 				pntMrate = tmpBrand.getPntMrate20();
 			}
-			delvFeeCd = tmpBrand.getDelvFeeCd();	//배송비정책 코드
 			supplyCompCd = tmpBrand.getSupplyCompCd();	//업체코드
 			sellFeeRate = tmpBrand.getSellFeeRate();	//판매수수료율
 		}
 		goods.setPntPrate(pntPrate); // 포인트적립율(PC)
 		goods.setPntMrate(pntMrate); // 포인트적립율(MOBILE)
 		goods.setSupplyCompCd(supplyCompCd); // 업체코드
-		goods.setDelvFeeCd(delvFeeCd); // 배송비정책 코드
 		goods.setSellFeeRate(sellFeeRate); // 판매수수료율
 
 		goodsMass.setSupplyCompCd(supplyCompCd); // 업체 코드
@@ -1895,6 +1893,13 @@ public class TssGoodsService {
 		}
 		goods.setSupplyCompCd(goodsMass.getSupplyCompCd().trim().toUpperCase());
 
+		// 사용자와 엑셀정보의 업체코드 확인
+		if (!goods.getSupplyCompCd().equals(TssSession.getInfo().getSupplyCompCd())) {
+			goods.setGoodsRegMsg("공급업체 코드 오류");
+			goods.setGoodsStat("10");
+			return goods;
+		}
+
 		// 상품코드 중복여부 확인 - 입점업체코드+입점상품코드
 		Goods goodsDup = goodsDao.getGoods(goods);
 		if (goodsDup != null) {
@@ -2073,7 +2078,6 @@ public class TssGoodsService {
 		float pntPrate = 0f;
 		float pntMrate = 0f;
 		float sellFeeRate = 0f;
-		String delvFeeCd = "";
 		String supplyCompCd = "";
 		for (Brand tmpBrand : brandList) {
 			if ("G009_10".equals(goods.getFormalGb())) {
@@ -2083,18 +2087,19 @@ public class TssGoodsService {
 				pntPrate = tmpBrand.getPntPrate20();
 				pntMrate = tmpBrand.getPntMrate20();
 			}
-			delvFeeCd = tmpBrand.getDelvFeeCd();	//배송비정책 코드
 			supplyCompCd = tmpBrand.getSupplyCompCd();	//업체코드
 			sellFeeRate = tmpBrand.getSellFeeRate();	//판매수수료율
 		}
 		goods.setPntPrate(pntPrate); // 포인트적립율(PC)
 		goods.setPntMrate(pntMrate); // 포인트적립율(MOBILE)
 		goods.setSupplyCompCd(supplyCompCd); // 업체코드
-		goods.setDelvFeeCd(delvFeeCd); // 배송비정책 코드
 		goods.setSellFeeRate(sellFeeRate); // 판매수수료율
 
 		goodsMass.setSupplyCompCd(supplyCompCd); // 업체 코드
 
+		// 배송비 정책
+		goods.setDelvFeeCd(goodsMass.getDelvFeeCd()); // 화면에서 받은값
+
 		// 원산지 / 제조국
 		if (StringUtils.isBlank(goodsMass.getOriginCd())) {
 			goods.setGoodsRegMsg("원산지 오류");
@@ -2796,7 +2801,7 @@ public class TssGoodsService {
 			return goods;
 		}
 		goods.setAdultYn(goodsMass.getAdultYn().trim().toUpperCase());
-		if (!UPDATE_NO_PATTERN.equals(goodsMass.getAdultYn().trim())) {
+		if (!UPDATE_NO_PATTERN.equals(goods.getAdultYn())) {
 			if (!"Y".equals(goods.getAdultYn()) && !"N".equals(goods.getAdultYn())) {
 				goods.setGoodsRegMsg("성인용품여부 오류");
 				goods.setGoodsStat("10");
@@ -2872,6 +2877,27 @@ public class TssGoodsService {
 			}
 		}
 
+		// 배송비 정책 확인
+		if (StringUtils.isBlank(goodsMass.getDelvFeeCd())) {
+			goods.setGoodsRegMsg("배송비정책코드 오류");
+			goods.setGoodsStat("10");
+			return goods;
+		}
+		goods.setDelvFeeCd(goodsMass.getDelvFeeCd().trim().toUpperCase());
+		if (!UPDATE_NO_PATTERN.equals(goods.getDelvFeeCd())) {
+
+			DelvFeePolicy delvFeePolicy = new DelvFeePolicy();
+			delvFeePolicy.setSupplyCompCd(goods.getSupplyCompCd());
+			delvFeePolicy.setDelvFeeCd(goods.getDelvFeeCd());
+			delvFeePolicy.setUseYn("Y");
+			Collection<DelvFeePolicy> deliveryFeePolicyList =  businessService.getDeliveryFeePolicyList(delvFeePolicy);
+			if (deliveryFeePolicyList != null && !deliveryFeePolicyList.isEmpty()) {
+				goods.setGoodsRegMsg("배송비정책코드 오류");
+				goods.setGoodsStat("10");
+				return goods;
+			}
+		}
+
 		return goods;
 	}
 

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

@@ -761,7 +761,9 @@ public class TssGoodsController extends TssBaseController {
 		// 정보고시 목록
 		mav.addObject("niClsfCdList", rendererService.getAvailCommonCodeList("G004"));
 		// 사용자 업체
-		String supplyCompCd = !StringUtils.isBlank(TssSession.getInfo().getSupplyCompCd()) ? TssSession.getInfo().getSupplyCompCd() : "NONE";
+		String supplyCompCd = TssSession.getInfo().getSupplyCompCd();
+		// 업체별 배송비 목록
+		mav.addObject("supplyDeliveryFeePolicyList", rendererService.getSupplyDeliveryFeePolicyList(supplyCompCd));
 
 		mav.addObject("supplyCompCd", supplyCompCd);
 		mav.setViewName("goods/GoodsMassRegisterForm");
@@ -878,7 +880,7 @@ public class TssGoodsController extends TssBaseController {
 		String[] goodsNames = {"goodsCd", "goodsNm", "goodsTnm", "goodsSnm1", "itemkindCd", "seasonCd",
 			"sexGb", "currPrice", "sellFeeRate", "goodsGb", "formalGb", "minOrdQty", "maxOrdQty", "dayMaxOrdQty",
 			"giftPackYn", "newCustOrdYn","pntPrate","prePpntUsableYn", "pntMrate","preMpntUsableYn",
-			"returnableYn", "changeableYn","taxGb", "ageGrpCd", "adultYn", "goodsContent",
+			"returnableYn", "changeableYn","taxGb", "ageGrpCd", "adultYn", "delvFeeCd", "goodsContent",
 			"niClsfCd", "niContent1", "niContent2",
 			"niContent3", "niContent4", "niContent5", "niContent6", "niContent7", "niContent8", "niContent9",
 			"niContent10", "niContent11", "niContent12", "niContent13", "niContent14", "niContent15", "niContent16",

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

@@ -28,6 +28,7 @@
 			<ul class="notice">
 				<li>상품을 대량으로 등록하는 페이지입니다.</li>
 				<li>상품을 등록 할 경우 [승인대기] 상태이며, STYLE 관리자의 [승인완료] 상태 변경 후 FRONT애 노출이 가능합니다.</li>
+				<li><th:block th:if="${sessionInfo.roleCd == 'G001_B000'}"><em>해당 업체으 배송비 </em></th:block></li>
 				<li><th:block th:if="${sessionInfo.roleCd == 'G001_E000'}"><em>촬영업체의 대량수정은 고시정보만 적용됩니다.</em></th:block></li>
 				<li><th:block th:if="${wmsSyncYn == 'N'}"><em><b>WMS연동여부가 [N]입니다.</b></em></th:block></li>
 			</ul>
@@ -38,6 +39,11 @@
 						<button type="button" class="btn btn-primary btn-lg" id="btnGoodsSelfCreate" >자사상품 등록</button>
 					</th:block>
 					<th:block th:if="${sessionInfo.roleCd == 'G001_B000'}">
+						<em><b><th:block th:text="${sessionInfo.supplyCompNm}"></th:block></b></em> 업체의 배송비 정책 : &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>
+						</select>
 						<button type="button" class="btn btn-default btn-lg"  onclick="cfnDownloadSampleFile('SF005');">입점상품 등록양식 다운로드</button>
 						<button type="button" class="btn btn-primary btn-lg" id="btnGoodsCreate" >입점상품 등록</button>
 					</th:block>
@@ -201,12 +207,24 @@
 	
 	//입점상품대량등록 클릭시
 	$('#btnGoodsCreate').on('click', function() {
+		if (gagajf.isNull($("#massForm select[name=delvFeeCd]").val())){
+			mcxDialog.alertC("배송비정책을 선택해주세요.",  {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#massForm select[name=delvFeeCd]').focus();
+				}
+			});
+			return false;
+		}
+		
 		cfnExcelUploadPopup('createGoods', 'createGoods');
 	});
 
 	var createGoods = function(result){
+		var delvFeeCd = $("#massForm select[name=delvFeeCd]").val();
 		var data = {procJob : result.procJob
 					,excelFileNm : result.excelFileNm
+					,delvFeeCd : delvFeeCd
 					};
 		var jsonData = JSON.stringify(data);
 		gagajf.ajaxJsonSubmit('/goods/mass/excelupload/create', jsonData, fnGoodsCreateCallBack);