Explorar el Código

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

eskim hace 5 años
padre
commit
05352f655f

+ 260 - 234
style24.admin/src/main/java/com/style24/admin/biz/dao/TsaBusinessDao.java

@@ -1,234 +1,260 @@
-package com.style24.admin.biz.dao;
-
-import java.util.Collection;
-
-import com.style24.core.support.annotation.ShopDs;
-import com.style24.persistence.domain.Aflink;
-import com.style24.persistence.domain.Brand;
-import com.style24.persistence.domain.BrandMd;
-import com.style24.persistence.domain.DeliveryLoc;
-import com.style24.persistence.domain.SellStore;
-import com.style24.persistence.domain.ShipCompany;
-import com.style24.persistence.domain.SiteBrand;
-import com.style24.persistence.domain.StockSyncBase;
-import com.style24.persistence.domain.SupplyCompany;
-
-/**
- * 영업관리 Dao
- *
- * @author gagamel
- * @since 2020. 10. 14
- */
-@ShopDs
-public interface TsaBusinessDao {
-
-	/**
-	 * 공급업체 목록
-	 * @param supplyComp - 공급업체 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 14
-	 */
-	Collection<SupplyCompany> getSupplyCompanyList(SupplyCompany supplyComp);
-
-	/**
-	 * 공급업체 생성
-	 * @param supplyComp - 공급업체 정보
-	 * @author gagamel
-	 * @since 2020. 10. 14
-	 */
-	void createSupplyCompany(SupplyCompany supplyComp);
-
-	/**
-	 * 공급업체 수정
-	 * @param supplyComp - 공급업체 정보
-	 * @author gagamel
-	 * @since 2020. 10. 14
-	 */
-	void updateSupplyCompany(SupplyCompany supplyComp);
-
-	/**
-	 * 출고처관리 목록
-	 * @param delvLoc - 출고처 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 16
-	 */
-	Collection<DeliveryLoc> getDeliveryLocList(DeliveryLoc delvLoc);
-
-	/**
-	 * 브랜드 목록
-	 * @param brand - 브랜드 정보
-	 * @return
-	 * @author eskim
-	 * @since 2020. 10. 22
-	 */
-	Collection<Brand> getBrandList(Brand brand);
-
-	/**
-	 * 담당MD 목록
-	 * @param brandMd - 담당MD 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 11. 4
-	 */
-	Collection<BrandMd> getMdList(BrandMd brandMd);
-
-	/**
-	 * 브랜드담당MD 목록
-	 * @param brandCd - 브랜드코드
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 11. 4
-	 */
-	Collection<BrandMd> getBrandMdList(String brandCd);
-
-	/**
-	 * 브랜드담당MD 삭제
-	 * @param brandCd - 브랜드코드
-	 * @author gagamel
-	 * @since 2020. 11. 4
-	 */
-	void deleteBrandMd(String brandCd);
-
-	/**
-	 * 브랜드담당MD 등록
-	 * @param brandMd - 브랜드담당MD 정보
-	 * @author gagamel
-	 * @since 2020. 11. 4
-	 */
-	void createBrandMd(BrandMd brandMd);
-
-	/**
-	 * 브랜드 노출사이트 목록
-	 * @param brandCd - 브랜드코드
-	 * @author gagamel
-	 * @since 2020. 11. 4
-	 */
-	Collection<SiteBrand> getBrandSiteList(String brandCd);
-
-	/**
-	 * 브랜드 노출사이트 등록/수정
-	 * @param siteBrand - 사이트브랜드 정보
-	 * @author gagamel
-	 * @since 2020. 11. 4
-	 */
-	void saveBrandSite(SiteBrand siteBrand);
-
-	/**
-	 * 브랜드 등록
-	 * @param brand - 브랜드 정보
-	 * @author gagamel
-	 * @since 2020. 11. 5
-	 */
-	void createBrand(Brand brand);
-
-	/**
-	 * 브랜드 수정
-	 * @param brand - 브랜드 정보
-	 * @author gagamel
-	 * @since 2020. 11. 5
-	 */
-	void updateBrand(Brand brand);
-
-	/**
-	 * 출고처관리 저장
-	 * @param delvLoc - 출고처 정보
-	 * @author gagamel
-	 * @since 2020. 10. 16
-	 */
-	void saveDeliveryLoc(DeliveryLoc delvLoc);
-
-	/**
-	 * 재고연계관리 - 출고처 목록
-	 * @param delvLoc - 출고처 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 11. 7
-	 */
-	Collection<DeliveryLoc> getStockSyncDeliveryLocList(DeliveryLoc delvLoc);
-
-	/**
-	 * 재고연계관리 - 재고연계기준 목록
-	 * @param stockSyncBase - 재고연계기준 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 11. 7
-	 */
-	Collection<StockSyncBase> getStockSyncBaseList(StockSyncBase stockSyncBase);
-
-	/**
-	 * 재고연계관리 - 재고연계기준 저장
-	 * @param stockSyncBase - 재고연계기준 정보
-	 * @author gagamel
-	 * @since 2020. 11. 7
-	 */
-	void saveStockSyncBase(StockSyncBase stockSyncBase);
-
-	/**
-	 * 판매매장 목록
-	 * @param sellStore - 판매매장 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	Collection<SellStore> getSellStoreList(SellStore sellStore);
-
-	/**
-	 * 판매매장 정보 수정
-	 * @param sellStore - 판매매장 정보
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	void saveSellStore(SellStore sellStore);
-
-	/**
-	 * 제휴링크 목록
-	 * @param aflink - 제휴링크 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	Collection<Aflink> getAflinkList(Aflink aflink);
-
-	/**
-	 * 제휴링크 저장
-	 * @param aflink - 제휴링크 정보
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	void saveAflink(Aflink aflink);
-
-	/**
-	 * 제휴링크 삭제
-	 * @param aflink - 제휴링크 정보
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	void deleteAflink(Aflink aflink);
-
-	/**
-	 * 배송업체 목록
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	Collection<ShipCompany> getShipCompanyList();
-
-	/**
-	 * 배송업체 저장
-	 * @param shipComp - 배송업체 정보
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	void saveShipCompany(ShipCompany shipComp);
-
-	/**
-	 * 배송업체 삭제
-	 * @param shipComp - 배송업체 정보
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	void deleteShipCompany(ShipCompany shipComp);
-
-}
+package com.style24.admin.biz.dao;
+
+import java.util.Collection;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Aflink;
+import com.style24.persistence.domain.Brand;
+import com.style24.persistence.domain.BrandMd;
+import com.style24.persistence.domain.DeliveryLoc;
+import com.style24.persistence.domain.DelvFeePolicy;
+import com.style24.persistence.domain.SellStore;
+import com.style24.persistence.domain.ShipCompany;
+import com.style24.persistence.domain.SiteBrand;
+import com.style24.persistence.domain.StockSyncBase;
+import com.style24.persistence.domain.SupplyCompany;
+
+/**
+ * 영업관리 Dao
+ *
+ * @author gagamel
+ * @since 2020. 10. 14
+ */
+@ShopDs
+public interface TsaBusinessDao {
+
+	/**
+	 * 공급업체 목록
+	 * @param supplyComp - 공급업체 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 14
+	 */
+	Collection<SupplyCompany> getSupplyCompanyList(SupplyCompany supplyComp);
+
+	/**
+	 * 공급업체 생성
+	 * @param supplyComp - 공급업체 정보
+	 * @author gagamel
+	 * @since 2020. 10. 14
+	 */
+	void createSupplyCompany(SupplyCompany supplyComp);
+
+	/**
+	 * 공급업체 수정
+	 * @param supplyComp - 공급업체 정보
+	 * @author gagamel
+	 * @since 2020. 10. 14
+	 */
+	void updateSupplyCompany(SupplyCompany supplyComp);
+
+	/**
+	 * 배송비정책 목록
+	 * @param supplyCompCd - 공급업체코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 24
+	 */
+	Collection<DelvFeePolicy> getDeliveryFeePolicyList(String supplyCompCd);
+
+	/**
+	 * 배송비정책 생성
+	 * @param delvFeePolicy - 배송비정책 정보
+	 * @author gagamel
+	 * @since 2020. 11. 24
+	 */
+	void createDeliveryFeePolicy(DelvFeePolicy delvFeePolicy);
+
+	/**
+	 * 배송비정책 수정
+	 * @param delvFeePolicy - 배송비정책 정보
+	 * @author gagamel
+	 * @since 2020. 11. 24
+	 */
+	void updateDeliveryFeePolicy(DelvFeePolicy delvFeePolicy);
+
+	/**
+	 * 출고처관리 목록
+	 * @param delvLoc - 출고처 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 16
+	 */
+	Collection<DeliveryLoc> getDeliveryLocList(DeliveryLoc delvLoc);
+
+	/**
+	 * 브랜드 목록
+	 * @param brand - 브랜드 정보
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	Collection<Brand> getBrandList(Brand brand);
+
+	/**
+	 * 담당MD 목록
+	 * @param brandMd - 담당MD 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	Collection<BrandMd> getMdList(BrandMd brandMd);
+
+	/**
+	 * 브랜드담당MD 목록
+	 * @param brandCd - 브랜드코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	Collection<BrandMd> getBrandMdList(String brandCd);
+
+	/**
+	 * 브랜드담당MD 삭제
+	 * @param brandCd - 브랜드코드
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	void deleteBrandMd(String brandCd);
+
+	/**
+	 * 브랜드담당MD 등록
+	 * @param brandMd - 브랜드담당MD 정보
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	void createBrandMd(BrandMd brandMd);
+
+	/**
+	 * 브랜드 노출사이트 목록
+	 * @param brandCd - 브랜드코드
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	Collection<SiteBrand> getBrandSiteList(String brandCd);
+
+	/**
+	 * 브랜드 노출사이트 등록/수정
+	 * @param siteBrand - 사이트브랜드 정보
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	void saveBrandSite(SiteBrand siteBrand);
+
+	/**
+	 * 브랜드 등록
+	 * @param brand - 브랜드 정보
+	 * @author gagamel
+	 * @since 2020. 11. 5
+	 */
+	void createBrand(Brand brand);
+
+	/**
+	 * 브랜드 수정
+	 * @param brand - 브랜드 정보
+	 * @author gagamel
+	 * @since 2020. 11. 5
+	 */
+	void updateBrand(Brand brand);
+
+	/**
+	 * 출고처관리 저장
+	 * @param delvLoc - 출고처 정보
+	 * @author gagamel
+	 * @since 2020. 10. 16
+	 */
+	void saveDeliveryLoc(DeliveryLoc delvLoc);
+
+	/**
+	 * 재고연계관리 - 출고처 목록
+	 * @param delvLoc - 출고처 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 7
+	 */
+	Collection<DeliveryLoc> getStockSyncDeliveryLocList(DeliveryLoc delvLoc);
+
+	/**
+	 * 재고연계관리 - 재고연계기준 목록
+	 * @param stockSyncBase - 재고연계기준 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 7
+	 */
+	Collection<StockSyncBase> getStockSyncBaseList(StockSyncBase stockSyncBase);
+
+	/**
+	 * 재고연계관리 - 재고연계기준 저장
+	 * @param stockSyncBase - 재고연계기준 정보
+	 * @author gagamel
+	 * @since 2020. 11. 7
+	 */
+	void saveStockSyncBase(StockSyncBase stockSyncBase);
+
+	/**
+	 * 판매매장 목록
+	 * @param sellStore - 판매매장 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	Collection<SellStore> getSellStoreList(SellStore sellStore);
+
+	/**
+	 * 판매매장 정보 수정
+	 * @param sellStore - 판매매장 정보
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	void saveSellStore(SellStore sellStore);
+
+	/**
+	 * 제휴링크 목록
+	 * @param aflink - 제휴링크 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	Collection<Aflink> getAflinkList(Aflink aflink);
+
+	/**
+	 * 제휴링크 저장
+	 * @param aflink - 제휴링크 정보
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	void saveAflink(Aflink aflink);
+
+	/**
+	 * 제휴링크 삭제
+	 * @param aflink - 제휴링크 정보
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	void deleteAflink(Aflink aflink);
+
+	/**
+	 * 배송업체 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	Collection<ShipCompany> getShipCompanyList();
+
+	/**
+	 * 배송업체 저장
+	 * @param shipComp - 배송업체 정보
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	void saveShipCompany(ShipCompany shipComp);
+
+	/**
+	 * 배송업체 삭제
+	 * @param shipComp - 배송업체 정보
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	void deleteShipCompany(ShipCompany shipComp);
+
+}

+ 357 - 326
style24.admin/src/main/java/com/style24/admin/biz/service/TsaBusinessService.java

@@ -1,326 +1,357 @@
-package com.style24.admin.biz.service;
-
-import java.util.Collection;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.style24.admin.biz.dao.TsaBusinessDao;
-import com.style24.admin.support.security.session.TsaSession;
-import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.domain.Aflink;
-import com.style24.persistence.domain.Brand;
-import com.style24.persistence.domain.BrandMd;
-import com.style24.persistence.domain.DeliveryLoc;
-import com.style24.persistence.domain.SellStore;
-import com.style24.persistence.domain.ShipCompany;
-import com.style24.persistence.domain.SiteBrand;
-import com.style24.persistence.domain.StockSyncBase;
-import com.style24.persistence.domain.SupplyCompany;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 영업관리 Service
- *
- * @author gagamel
- * @since 2020. 10. 14
- */
-@Service
-@Slf4j
-public class TsaBusinessService {
-
-	@Autowired
-	private TscMessageByLocale message;
-
-	@Autowired
-	private TsaBusinessDao businessDao;
-
-	/**
-	 * 공급업체 목록
-	 * @param supplyComp - 공급업체 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 14
-	 */
-	public Collection<SupplyCompany> getSupplyCompanyList(SupplyCompany supplyComp) {
-		return businessDao.getSupplyCompanyList(supplyComp);
-	}
-
-	/**
-	 * 공급업체 저장 처리
-	 * @param supplyComp - 공급업체 정보
-	 * @author gagamel
-	 * @since 2020. 10. 14
-	 */
-	public void saveSupplyCompany(SupplyCompany supplyComp) {
-		if (StringUtils.isNotBlank(supplyComp.getSupplyCompCd())) {
-			businessDao.updateSupplyCompany(supplyComp);
-		} else {
-			businessDao.createSupplyCompany(supplyComp);
-		}
-	}
-
-	/**
-	 * 출고처 목록
-	 * @param delvLoc - 출고처 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 16
-	 **/
-	public Collection<DeliveryLoc> getDeliveryLocList(DeliveryLoc delvLoc) {
-		return businessDao.getDeliveryLocList(delvLoc);
-	}
-
-	/**
-	 * 출고처 저장
-	 * @param delvLoc - 출고처 정보
-	 * @author gagamel
-	 * @since 2020. 10. 16
-	 */
-	@Transactional("shopTxnManager")
-	public void saveDeliveryLoc(DeliveryLoc delvLoc) {
-		if (StringUtils.isEmpty(delvLoc.getUseYn())) {
-			delvLoc.setUseYn("N");
-		}
-
-		businessDao.saveDeliveryLoc(delvLoc);
-	}
-
-	/**
-	 * 브랜드 목록
-	 * @param brand - 브랜드 정보
-	 * @return
-	 * @author eskim
-	 * @since 2020. 10. 22
-	 */
-	public Collection<Brand> getBrandList(Brand brand) {
-		return businessDao.getBrandList(brand);
-	}
-
-	/**
-	 * 담당MD 목록
-	 * @param brandMd - 담당MD 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 11. 4
-	 */
-	public Collection<BrandMd> getMdList(BrandMd brandMd) {
-		return businessDao.getMdList(brandMd);
-	}
-
-	/**
-	 * 브랜드담당MD 목록
-	 * @param brandCd - 브랜드코드
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 11. 4
-	 */
-	public Collection<BrandMd> getBrandMdList(String brandCd) {
-		return businessDao.getBrandMdList(brandCd);
-	}
-
-	/**
-	 * 브랜드담당MD 목록 등록/수정 처리
-	 * @param brandMdList - 브랜드담당MD 목록
-	 * @author gagamel
-	 * @since 2020. 11. 4
-	 */
-	@Transactional("shopTxnManager")
-	public void saveBrandMdList(Collection<BrandMd> brandMdList) {
-		businessDao.deleteBrandMd(brandMdList.iterator().next().getBrandCd());
-
-		for (BrandMd brandMd : brandMdList) {
-			brandMd.setRegNo(TsaSession.getInfo().getUserNo());
-			brandMd.setUpdNo(TsaSession.getInfo().getUserNo());
-			businessDao.createBrandMd(brandMd);
-		}
-	}
-
-	/**
-	 * 브랜드 노출사이트 목록
-	 * @param brandCd - 브랜드코드
-	 * @author gagamel
-	 * @since 2020. 11. 4
-	 */
-	public Collection<SiteBrand> getBrandSiteList(String brandCd) {
-		return businessDao.getBrandSiteList(brandCd);
-	}
-
-	/**
-	 * 브랜드 노출사이트 등록/수정 처리
-	 * @param siteBrandList - 브랜드사이트 목록
-	 * @author gagamel
-	 * @since 2020. 11. 4
-	 */
-	@Transactional("shopTxnManager")
-	public void saveBrandSiteList(Collection<SiteBrand> siteBrandList) {
-		for (SiteBrand siteBrand : siteBrandList) {
-			siteBrand.setRegNo(TsaSession.getInfo().getUserNo());
-			siteBrand.setUpdNo(TsaSession.getInfo().getUserNo());
-//			siteBrand.setTcateCd(businessDao.getTcateCdByBrand(siteBrand));
-			businessDao.saveBrandSite(siteBrand);
-		}
-	}
-
-	/**
-	 * 브랜드 등록/수정
-	 * @param brand - 브랜드 정보
-	 * @author gagamel
-	 * @since 2020. 11. 5
-	 */
-	@Transactional("shopTxnManager")
-	public void saveBrand(Brand brand) {
-		if (brand.getMode().equals("N")) { // 신규
-			businessDao.createBrand(brand);
-		} else { // 수정
-			businessDao.updateBrand(brand);
-		}
-	}
-
-	/**
-	 * 재고연계관리 - 출고처 목록
-	 * @param delvLoc - 출고처 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 11. 7
-	 */
-	public Collection<DeliveryLoc> getStockSyncDeliveryLocList(DeliveryLoc delvLoc) {
-		return businessDao.getStockSyncDeliveryLocList(delvLoc);
-	}
-
-	/**
-	 * 재고연계관리 - 재고연계기준 목록
-	 * @param stockSyncBase - 재고연계기준 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 11. 7
-	 */
-	public Collection<StockSyncBase> getStockSyncBaseList(StockSyncBase stockSyncBase) {
-		return businessDao.getStockSyncBaseList(stockSyncBase);
-	}
-
-	/**
-	 * 재고연계관리 - 재고연계기준 저장
-	 * @param stockSyncBase - 재고연계기준 정보
-	 * @author gagamel
-	 * @since 2020. 11. 7
-	 */
-	public void saveStockSyncBaseList(Collection<StockSyncBase> stockSyncBaseList) {
-		for (StockSyncBase stockSyncBase : stockSyncBaseList) {
-			stockSyncBase.setRegNo(TsaSession.getInfo().getUserNo());
-			stockSyncBase.setUpdNo(TsaSession.getInfo().getUserNo());
-			businessDao.saveStockSyncBase(stockSyncBase);
-		}
-	}
-
-	/**
-	 * 판매매장 목록
-	 * @param sellStore - 판매매장 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	public Collection<SellStore> getSellStoreList(SellStore sellStore) {
-		return businessDao.getSellStoreList(sellStore);
-	}
-
-	/**
-	 * 판매매장 목록 저장 처리
-	 * @param sellStoreList - 판매매장 목록
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	@Transactional("shopTxnManager")
-	public void saveSellStoreList(Collection<SellStore> sellStoreList) {
-		for (SellStore sellStore : sellStoreList) {
-			sellStore.setRegNo(TsaSession.getInfo().getUserNo());
-			sellStore.setUpdNo(TsaSession.getInfo().getUserNo());
-			businessDao.saveSellStore(sellStore);
-		}
-	}
-
-	/**
-	 * 제휴링크 목록
-	 * @param aflink - 제휴링크 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	public Collection<Aflink> getAflinkList(Aflink aflink) {
-		return businessDao.getAflinkList(aflink);
-	}
-
-	/**
-	 * 제휴링크 등록/수정
-	 * @param aflink - 제휴링크 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	@Transactional("shopTxnManager")
-	public void saveAflink(Aflink aflink) {
-		aflink.setRegNo(TsaSession.getInfo().getUserNo());
-		aflink.setUpdNo(TsaSession.getInfo().getUserNo());
-		businessDao.saveAflink(aflink);
-	}
-
-	/**
-	 * 제휴링크 목록 삭제 처리
-	 * @param aflinkList - 제휴링크 목록
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	@Transactional("shopTxnManager")
-	public void deleteAflinkList(Collection<Aflink> aflinkList) {
-		for (Aflink aflink : aflinkList) {
-			aflink.setUpdNo(TsaSession.getInfo().getUserNo());
-			businessDao.deleteAflink(aflink);
-		}
-	}
-
-	/**
-	 * 배송업체 목록
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	public Collection<ShipCompany> getShipCompanyList() {
-		return businessDao.getShipCompanyList();
-	}
-
-	/**
-	 * 배송업체 목록 저장
-	 * @param shipCompList - 배송업체 목록
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	@Transactional("shopTxnManager")
-	public void saveShipCompanyList(Collection<ShipCompany> shipCompList) {
-		for (ShipCompany shipComp : shipCompList) {
-			shipComp.setRegNo(TsaSession.getInfo().getUserNo());
-			shipComp.setUpdNo(TsaSession.getInfo().getUserNo());
-			businessDao.saveShipCompany(shipComp);
-		}
-	}
-
-	/**
-	 * 배송업체 목록 삭제
-	 * @param shipCompList - 배송업체 목록
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 10. 20
-	 */
-	@Transactional("shopTxnManager")
-	public void deleteShipCompanyList(Collection<ShipCompany> shipCompList) {
-		for (ShipCompany shipComp : shipCompList) {
-			shipComp.setUpdNo(TsaSession.getInfo().getUserNo());
-			businessDao.deleteShipCompany(shipComp);
-		}
-	}
-
-}
+package com.style24.admin.biz.service;
+
+import java.util.Collection;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.style24.admin.biz.dao.TsaBusinessDao;
+import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.persistence.domain.Aflink;
+import com.style24.persistence.domain.Brand;
+import com.style24.persistence.domain.BrandMd;
+import com.style24.persistence.domain.DeliveryLoc;
+import com.style24.persistence.domain.DelvFeePolicy;
+import com.style24.persistence.domain.SellStore;
+import com.style24.persistence.domain.ShipCompany;
+import com.style24.persistence.domain.SiteBrand;
+import com.style24.persistence.domain.StockSyncBase;
+import com.style24.persistence.domain.SupplyCompany;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 영업관리 Service
+ *
+ * @author gagamel
+ * @since 2020. 10. 14
+ */
+@Service
+@Slf4j
+public class TsaBusinessService {
+
+	@Autowired
+	private TscMessageByLocale message;
+
+	@Autowired
+	private TsaBusinessDao businessDao;
+
+	/**
+	 * 공급업체 목록
+	 * @param supplyComp - 공급업체 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 14
+	 */
+	public Collection<SupplyCompany> getSupplyCompanyList(SupplyCompany supplyComp) {
+		return businessDao.getSupplyCompanyList(supplyComp);
+	}
+
+	/**
+	 * 공급업체 저장 처리
+	 * @param supplyComp - 공급업체 정보
+	 * @author gagamel
+	 * @since 2020. 10. 14
+	 */
+	public void saveSupplyCompany(SupplyCompany supplyComp) {
+		if (StringUtils.isNotBlank(supplyComp.getSupplyCompCd())) {
+			businessDao.updateSupplyCompany(supplyComp);
+		} else {
+			businessDao.createSupplyCompany(supplyComp);
+		}
+	}
+
+	/**
+	 * 배송비정책 목록
+	 * @param supplyCompCd - 공급업체코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 24
+	 */
+	public Collection<DelvFeePolicy> getDeliveryFeePolicyList(String supplyCompCd) {
+		return businessDao.getDeliveryFeePolicyList(supplyCompCd);
+	}
+
+	/**
+	 * 배송비정책 저장 처리
+	 * @param supplyComp - 공급업체 정보
+	 * @author gagamel
+	 * @since 2020. 10. 14
+	 */
+	public void saveDeliveryFeePolicyList(Collection<DelvFeePolicy> delvFeePolicyList) {
+		for (DelvFeePolicy delvFeePolicy : delvFeePolicyList) {
+			delvFeePolicy.setRegNo(TsaSession.getInfo().getUserNo());
+			delvFeePolicy.setUpdNo(TsaSession.getInfo().getUserNo());
+
+			if (StringUtils.isNotBlank(delvFeePolicy.getDelvFeeCd())) {
+				businessDao.updateDeliveryFeePolicy(delvFeePolicy);
+			} else {
+				businessDao.createDeliveryFeePolicy(delvFeePolicy);
+			}
+		}
+	}
+
+	/**
+	 * 출고처 목록
+	 * @param delvLoc - 출고처 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 16
+	 **/
+	public Collection<DeliveryLoc> getDeliveryLocList(DeliveryLoc delvLoc) {
+		return businessDao.getDeliveryLocList(delvLoc);
+	}
+
+	/**
+	 * 출고처 저장
+	 * @param delvLoc - 출고처 정보
+	 * @author gagamel
+	 * @since 2020. 10. 16
+	 */
+	@Transactional("shopTxnManager")
+	public void saveDeliveryLoc(DeliveryLoc delvLoc) {
+		if (StringUtils.isEmpty(delvLoc.getUseYn())) {
+			delvLoc.setUseYn("N");
+		}
+
+		businessDao.saveDeliveryLoc(delvLoc);
+	}
+
+	/**
+	 * 브랜드 목록
+	 * @param brand - 브랜드 정보
+	 * @return
+	 * @author eskim
+	 * @since 2020. 10. 22
+	 */
+	public Collection<Brand> getBrandList(Brand brand) {
+		return businessDao.getBrandList(brand);
+	}
+
+	/**
+	 * 담당MD 목록
+	 * @param brandMd - 담당MD 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	public Collection<BrandMd> getMdList(BrandMd brandMd) {
+		return businessDao.getMdList(brandMd);
+	}
+
+	/**
+	 * 브랜드담당MD 목록
+	 * @param brandCd - 브랜드코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	public Collection<BrandMd> getBrandMdList(String brandCd) {
+		return businessDao.getBrandMdList(brandCd);
+	}
+
+	/**
+	 * 브랜드담당MD 목록 등록/수정 처리
+	 * @param brandMdList - 브랜드담당MD 목록
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	@Transactional("shopTxnManager")
+	public void saveBrandMdList(Collection<BrandMd> brandMdList) {
+		businessDao.deleteBrandMd(brandMdList.iterator().next().getBrandCd());
+
+		for (BrandMd brandMd : brandMdList) {
+			brandMd.setRegNo(TsaSession.getInfo().getUserNo());
+			brandMd.setUpdNo(TsaSession.getInfo().getUserNo());
+			businessDao.createBrandMd(brandMd);
+		}
+	}
+
+	/**
+	 * 브랜드 노출사이트 목록
+	 * @param brandCd - 브랜드코드
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	public Collection<SiteBrand> getBrandSiteList(String brandCd) {
+		return businessDao.getBrandSiteList(brandCd);
+	}
+
+	/**
+	 * 브랜드 노출사이트 등록/수정 처리
+	 * @param siteBrandList - 브랜드사이트 목록
+	 * @author gagamel
+	 * @since 2020. 11. 4
+	 */
+	@Transactional("shopTxnManager")
+	public void saveBrandSiteList(Collection<SiteBrand> siteBrandList) {
+		for (SiteBrand siteBrand : siteBrandList) {
+			siteBrand.setRegNo(TsaSession.getInfo().getUserNo());
+			siteBrand.setUpdNo(TsaSession.getInfo().getUserNo());
+//			siteBrand.setTcateCd(businessDao.getTcateCdByBrand(siteBrand));
+			businessDao.saveBrandSite(siteBrand);
+		}
+	}
+
+	/**
+	 * 브랜드 등록/수정
+	 * @param brand - 브랜드 정보
+	 * @author gagamel
+	 * @since 2020. 11. 5
+	 */
+	@Transactional("shopTxnManager")
+	public void saveBrand(Brand brand) {
+		if (brand.getMode().equals("N")) { // 신규
+			businessDao.createBrand(brand);
+		} else { // 수정
+			businessDao.updateBrand(brand);
+		}
+	}
+
+	/**
+	 * 재고연계관리 - 출고처 목록
+	 * @param delvLoc - 출고처 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 7
+	 */
+	public Collection<DeliveryLoc> getStockSyncDeliveryLocList(DeliveryLoc delvLoc) {
+		return businessDao.getStockSyncDeliveryLocList(delvLoc);
+	}
+
+	/**
+	 * 재고연계관리 - 재고연계기준 목록
+	 * @param stockSyncBase - 재고연계기준 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 7
+	 */
+	public Collection<StockSyncBase> getStockSyncBaseList(StockSyncBase stockSyncBase) {
+		return businessDao.getStockSyncBaseList(stockSyncBase);
+	}
+
+	/**
+	 * 재고연계관리 - 재고연계기준 저장
+	 * @param stockSyncBase - 재고연계기준 정보
+	 * @author gagamel
+	 * @since 2020. 11. 7
+	 */
+	public void saveStockSyncBaseList(Collection<StockSyncBase> stockSyncBaseList) {
+		for (StockSyncBase stockSyncBase : stockSyncBaseList) {
+			stockSyncBase.setRegNo(TsaSession.getInfo().getUserNo());
+			stockSyncBase.setUpdNo(TsaSession.getInfo().getUserNo());
+			businessDao.saveStockSyncBase(stockSyncBase);
+		}
+	}
+
+	/**
+	 * 판매매장 목록
+	 * @param sellStore - 판매매장 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	public Collection<SellStore> getSellStoreList(SellStore sellStore) {
+		return businessDao.getSellStoreList(sellStore);
+	}
+
+	/**
+	 * 판매매장 목록 저장 처리
+	 * @param sellStoreList - 판매매장 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void saveSellStoreList(Collection<SellStore> sellStoreList) {
+		for (SellStore sellStore : sellStoreList) {
+			sellStore.setRegNo(TsaSession.getInfo().getUserNo());
+			sellStore.setUpdNo(TsaSession.getInfo().getUserNo());
+			businessDao.saveSellStore(sellStore);
+		}
+	}
+
+	/**
+	 * 제휴링크 목록
+	 * @param aflink - 제휴링크 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	public Collection<Aflink> getAflinkList(Aflink aflink) {
+		return businessDao.getAflinkList(aflink);
+	}
+
+	/**
+	 * 제휴링크 등록/수정
+	 * @param aflink - 제휴링크 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void saveAflink(Aflink aflink) {
+		aflink.setRegNo(TsaSession.getInfo().getUserNo());
+		aflink.setUpdNo(TsaSession.getInfo().getUserNo());
+		businessDao.saveAflink(aflink);
+	}
+
+	/**
+	 * 제휴링크 목록 삭제 처리
+	 * @param aflinkList - 제휴링크 목록
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void deleteAflinkList(Collection<Aflink> aflinkList) {
+		for (Aflink aflink : aflinkList) {
+			aflink.setUpdNo(TsaSession.getInfo().getUserNo());
+			businessDao.deleteAflink(aflink);
+		}
+	}
+
+	/**
+	 * 배송업체 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	public Collection<ShipCompany> getShipCompanyList() {
+		return businessDao.getShipCompanyList();
+	}
+
+	/**
+	 * 배송업체 목록 저장
+	 * @param shipCompList - 배송업체 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void saveShipCompanyList(Collection<ShipCompany> shipCompList) {
+		for (ShipCompany shipComp : shipCompList) {
+			shipComp.setRegNo(TsaSession.getInfo().getUserNo());
+			shipComp.setUpdNo(TsaSession.getInfo().getUserNo());
+			businessDao.saveShipCompany(shipComp);
+		}
+	}
+
+	/**
+	 * 배송업체 목록 삭제
+	 * @param shipCompList - 배송업체 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 10. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void deleteShipCompanyList(Collection<ShipCompany> shipCompList) {
+		for (ShipCompany shipComp : shipCompList) {
+			shipComp.setUpdNo(TsaSession.getInfo().getUserNo());
+			businessDao.deleteShipCompany(shipComp);
+		}
+	}
+
+}

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

@@ -24,6 +24,7 @@ import com.style24.persistence.domain.Aflink;
 import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.BrandMd;
 import com.style24.persistence.domain.DeliveryLoc;
+import com.style24.persistence.domain.DelvFeePolicy;
 import com.style24.persistence.domain.SellStore;
 import com.style24.persistence.domain.ShipCompany;
 import com.style24.persistence.domain.SiteBrand;
@@ -167,6 +168,37 @@ public class TsaBusinessController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 
+	/**
+	 * 배송비정책 목록
+	 * @param supplyCompCd - 공급업체코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 24
+	 **/
+	@GetMapping("/delivery/fee/policy/list/{supplyCompCd}")
+	@ResponseBody
+	public Collection<DelvFeePolicy> getDeliveryFeePolicyList(@PathVariable String supplyCompCd) {
+		return businessService.getDeliveryFeePolicyList(supplyCompCd);
+	}
+
+	/**
+	 * 배송비정책 등록/수정 처리
+	 * @param delvFeePolicyList - 배송비정책 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 24
+	 */
+	@PostMapping("/delivery/fee/policy/list/save")
+	@ResponseBody
+	public GagaResponse saveDeliveryFeePolicyList(@RequestBody Collection<DelvFeePolicy> delvFeePolicyList) {
+		if (delvFeePolicyList == null || delvFeePolicyList.isEmpty()) {
+			throw new IllegalStateException(message.getMessage("FAIL_1001"));
+		}
+
+		businessService.saveDeliveryFeePolicyList(delvFeePolicyList);
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
+
 	/**
 	 * 브랜드관리 화면
 	 * @return

+ 25 - 0
style24.admin/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;			// 사용여부
+
+}

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

@@ -182,6 +182,69 @@
 		WHERE  SUPPLY_COMP_CD = #{supplyCompCd}
 	</update>
 	
+	<!-- 배송비정책 목록 -->
+	<select id="getDeliveryFeePolicyList" parameterType="String" 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}
+		ORDER  BY DELV_FEE_CD
+	</select>
+	
+	<!-- 배송비정책 생성 -->
+	<insert id="createDeliveryFeePolicy" parameterType="DelvFeePolicy">
+		/* TsaBusiness.createDeliveryFeePolicy */
+		INSERT INTO TB_DELV_FEE_POLICY (
+		       DELV_FEE_CD
+		     , SUPPLY_COMP_CD
+		     , DELV_FEE_CRITE
+		     , MIN_ORD_AMT
+		     , DELV_FEE
+		     , RTN_DELV_FEE
+		     , USE_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       (SELECT CONCAT(SUPPLY_COMP_CD,'_',IFNULL(LPAD(SUBSTRING(MAX(DELV_FEE_CD),INSTR(MAX(DELV_FEE_CD),'_') + 1) + 1,2,'0'),'01'))
+		        FROM   TB_DELV_FEE_POLICY Z
+		        WHERE  SUPPLY_COMP_CD LIKE CONCAT(#{supplyCompCd},'%')
+		       )
+		     , #{supplyCompCd}
+		     , #{delvFeeCrite}
+		     , IFNULL(#{minOrdAmt},0)
+		     , IFNULL(#{delvFee},0)
+		     , IFNULL(#{rtnDelvFee},0)
+		     , #{useYn}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+	</insert>
+	
+	<!-- 배송비정책 수정 -->
+	<update id="updateDeliveryFeePolicy" parameterType="DelvFeePolicy">
+		/* TsaBusiness.updateDeliveryFeePolicy */
+		UPDATE TB_DELV_FEE_POLICY
+		SET    DELV_FEE_CRITE = #{delvFeeCrite}
+		     , MIN_ORD_AMT = IFNULL(#{minOrdAmt},0)
+		     , DELV_FEE = IFNULL(#{delvFee},0)
+		     , RTN_DELV_FEE = IFNULL(#{rtnDelvFee},0)
+		     , USE_YN = #{useYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  DELV_FEE_CD = #{delvFeeCd}
+	</update>
+	
 	<!-- 출고처 목록 -->
 	<select id="getDeliveryLocList" parameterType="DeliveryLoc" resultType="DeliveryLoc">
 		/* TsaBusiness.getDeliveryLocList */

+ 205 - 63
style24.admin/src/main/webapp/WEB-INF/views/business/SupplyCompanyForm.html

@@ -149,9 +149,7 @@
 						<td colspan="3" rowspan="2">
 							<input type="text" name="bizZipcode"  class="w100" data-valid-name="우편번호" readonly="readonly"/>
 							<button type="button" class="btn btn-info btn-sm" onclick="fnOpenDaumAddr();">우편번호찾기</button>
-							<br>
-							<input type="text" name="bizBaseAddr" class="w300" maxlength="200" required="required" data-valid-name="사업장주소" readonly="readonly"/>
-							-
+							<input type="text" name="bizBaseAddr" class="w300" maxlength="200" required="required" data-valid-name="사업장주소" readonly="readonly"/><br>
 							<input type="text" name="bizDtlAddr" class="w300" maxlength="200"/>
 						</td>
 						<th>홈페이지URL</th>
@@ -192,26 +190,6 @@
 							<label class="rdoBtn"><input type="radio" name="shotDelvYn" value="N" checked="checked"/>No<span></span></label>
 						</td>
 					</tr>
-					<tr>
-						<th>비고</th>
-						<td colspan="7">
-							<textarea name="remarks" class="textareaR3"  data-valid-name="비고" ></textarea>
-						</td>
-					</tr>
-				</table>
-				
-				<h4>담당자/정산 정보</h4>
-				<table class="frmStyle" aria-describedby="담당자/정산 등록/수정 폼">
-					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-					</colgroup>
 					<tr>
 						<th>CS담당자</th>
 						<td>
@@ -269,43 +247,62 @@
 							<input type="text" class="w100" name="depositorNm" maxlength="50"/>
 						</td>
 					</tr>
+					<tr>
+						<th>비고</th>
+						<td colspan="7">
+							<textarea name="remarks" class="textareaR2"  data-valid-name="비고" ></textarea>
+						</td>
+					</tr>
 				</table>
+			</form>
+			
+			<!-- 버튼 배치 영역 -->
+			<ul class="panelBar">
+				<li class="right">
+					<button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
+					<button type="button" class="btn btn-success btn-lg" id="btnSave">기본정보 저장</button>
+				</li>
+			</ul>
+			<!-- //버튼 배치 영역 -->
+			
+			<form id="delvFeePolicyForm" name="delvFeePolicyForm" action="#" th:action="@{'/business/delivery/fee/policy/list/save'}">
+				<input type="hidden" name="delvFeeCd"/>
+				<input type="hidden" name="supplyCompCd"/>
+				<input type="hidden" name="delvFeeCrite"/>
+				<input type="hidden" name="minOrdAmt"/>
+				<input type="hidden" name="delvFee"/>
+				<input type="hidden" name="rtnDelvFee"/>
+				<input type="hidden" name="useYn"/>
 				
-				<h4>배송정책</h4>
-				<table class="frmStyle" aria-describedby="배송정책 등록/수정 폼">
+				<h4 class="delvFeePolicy" style="display: none;">배송정책<button type="button" class="btn btn-info btn-ssm marL10" id="btnAddDelvFeePolicy"><i class="fa fa-plus" aria-hidden="true"></i></button></h4>
+				<table class="frmStyle delvFeePolicy" style="display: none;" aria-describedby="배송정책 등록/수정 폼">
 					<colgroup>
 						<col style="width:10%;"/>
+						<col style="width:25%;"/>
+						<col style="width:25%;"/>
 						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:15%;"/>
-						<col style="width:10%;"/>
 						<col style="width:15%;"/>
 						<col style="width:10%;"/>
-						<col style="width:15%;"/>
 					</colgroup>
-					<tr>
-						<th>무료배송비기준<i class="required" title="필수"></i></th>
-						<td colspan="3">
-							<input type="text" name="minOrdAmt" class="w100 aR" placeholder="40,000" maxlength="7" required="required" data-valid-type="integer" data-valid-name="무료배송비기준"/>원 이상
-							<span class="infoTxt cBlue marL20"><i class="fa fa-info-circle" aria-hidden="true"></i>배송비를 무료로 적용할 수 있는 최소주문금액</span>
-						</td>
-						<th>배송비<i class="required" title="필수"></i></th>
-						<td>
-							<input type="text" name="delvFee" class="w100 aR" placeholder="2,500" maxlength="7" required="required" data-valid-type="integer" data-valid-name="배송비"/>원
-						</td>
-						<th>반품배송비<i class="required" title="필수"></i></th>
-						<td>
-							<input type="text" name="rtnDelvFeee" class="w100 aR" placeholder="2,500" maxlength="7" required="required" data-valid-type="real" data-valid-name="반품배송비"/>원
-						</td>
-					</tr>
+					<thead>
+						<tr>
+							<th>정책코드</th>
+							<th>배송비부과기준</th>
+							<th>무료배송비기준금액</th>
+							<th>배송비</th>
+							<th>반품배송비</th>
+							<th>사용여부</th>
+						</tr>
+					</thead>
+					<tbody id="tbodyDelvFeePolicy">
+					</tbody>
 				</table>
 			</form>
 			
 			<!-- 버튼 배치 영역 -->
-			<ul class="panelBar">
+			<ul class="panelBar delvFeePolicy" style="display: none;">
 				<li class="right">
-					<button type="button" class="btn btn-info btn-lg" id="btnNew">신규</button>
-					<button type="button" class="btn btn-success btn-lg" id="btnSave">저장</button>
+					<button type="button" class="btn btn-success btn-lg" id="btnSaveDelvFeePolicy">배송비 정책 저장</button>
 				</li>
 			</ul>
 			<!-- //버튼 배치 영역 -->
@@ -361,18 +358,18 @@
 				return gagaAgGrid.lookupValue(distributionGbList, params.data.distributionGb);
 			}
 		},
-		{
-			headerName: "무료배송비최소주문금액", field: "minOrdAmt", width: 150, cellClass: 'text-center',
-			valueGetter: function(params) {
-				return Number(params.data.minOrdAmt).addComma();
-			}
-		},
-		{
-			headerName: "배송비", field: "delvFee", width: 100, cellClass: 'text-center',
-			valueGetter: function(params) {
-				return Number(params.data.delvFee).addComma();
-			}
-		},
+// 		{
+// 			headerName: "무료배송비최소주문금액", field: "minOrdAmt", width: 150, cellClass: 'text-center',
+// 			valueGetter: function(params) {
+// 				return Number(params.data.minOrdAmt).addComma();
+// 			}
+// 		},
+// 		{
+// 			headerName: "배송비", field: "delvFee", width: 100, cellClass: 'text-center',
+// 			valueGetter: function(params) {
+// 				return Number(params.data.delvFee).addComma();
+// 			}
+// 		},
 		{
 			headerName: "판매수수료율", field: "sellFeeRate", width: 120, cellClass: 'text-center',
 			valueGetter: function(params) {
@@ -444,8 +441,8 @@
 		}
 		
 		$('#detailForm input[name=settleDay]').val(event.data.settleDay);
-		$('#detailForm input[name=minOrdAmt]').val(Number(event.data.minOrdAmt).addComma());
-		$('#detailForm input[name=delvFee]').val(Number(event.data.delvFee).addComma());
+// 		$('#detailForm input[name=minOrdAmt]').val(Number(event.data.minOrdAmt).addComma());
+// 		$('#detailForm input[name=delvFee]').val(Number(event.data.delvFee).addComma());
 		$('#detailForm select[name=bankCd]').val(event.data.bankCd);
 		$('#detailForm input[name=accountNo]').val(event.data.accountNo);
 		$('#detailForm input[name=depositorNm]').val(event.data.depositorNm);
@@ -462,6 +459,9 @@
 		} else {
 			$('#detailForm input:radio[name=shotDelvYn]').eq(1).trigger('click');
 		}
+		
+		// 배송비 정책 조회
+		fnGetDeliveryFeePolicy(event.data.supplyCompCd);
 	}
 
 	// 검색
@@ -472,15 +472,19 @@
 	// 신규버튼
 	$('#btnNew').on('click', function() {
 		$("#detailForm")[0].reset();
+		
+		// 배송비 정책 초기화
+		$('#tbodyDelvFeePolicy').html('');
+		$('.delvFeePolicy').hide();
 	});
 
-	// 저장
+	// 기본정보 저장
 	$("#btnSave").on("click", function() {
 		// 필수값 체크
 		if (!gagajf.validation('#detailForm'))
 			return false;
 
-		mcxDialog.confirm("저장하시겠습니까?", {
+		mcxDialog.confirm("기본정보를 저장하시겠습니까?", {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function() {
@@ -497,6 +501,144 @@
 		gagaAgGrid.exportToExcel('공급업체 목록', gridOptions);
 	});
 
+	// 배송비 정책 추가
+	$('#btnAddDelvFeePolicy').on('click', function() {
+		let idx = $('#delvFeePolicyForm input[name=delvFeeCd]').length;
+		
+		let tag = '<tr>\n';
+		tag += '	<td align="center">\n';
+		tag += '		<input type="text" name="delvFeeCd" class="w100 aC" placeholder="자동생성" maxlength="20" readonly="readonly"/>\n';
+		tag += '		<input type="hidden" name="supplyCompCd" value="' + $('#detailForm input[name=supplyCompCd]').val() + '"/>\n';
+		tag += '	</td>\n';
+		tag += '	<td align="center">\n';
+		tag += '		<select name="delvFeeCrite" onclick="fnChangeDeliveryFeeCriterion(' + idx + ', this);">\n';
+		tag += '			<option value="G078_10">[G078_10] 조건부 무료</option>\n';
+		tag += '			<option value="G078_20">[G078_20] 무료</option>\n';
+		tag += '			<option value="G078_30">[G078_30] 유료</option>\n';
+		tag += '		</select>\n';
+		tag += '	</td>\n';
+		tag += '	<td align="center">\n';
+		tag += '		<input type="text" name="minOrdAmt" class="w100 aR" placeholder="" maxlength="7" required="required" data-valid-type="integer" data-valid-name="무료배송비기준금액"/>원 <span id="txtCriterion' + idx + '">이상</span>\n';
+		tag += '	</td>\n';
+		tag += '	<td align="center">\n';
+		tag += '		<input type="text" name="delvFee" class="w100 aR" placeholder="" maxlength="7" required="required" data-valid-type="integer" data-valid-name="배송비"/>원\n';
+		tag += '	</td>\n';
+		tag += '	<td align="center">\n';
+		tag += '		<input type="text" name="rtnDelvFee" class="w100 aR" placeholder="" maxlength="7" required="required" data-valid-type="integer" data-valid-name="반품배송비"/>원\n';
+		tag += '	</td>\n';
+		tag += '	<td align="center">\n';
+		tag += '		<select name="useYn">\n';
+		tag += '			<option value="Y">Yes</option>\n';
+		tag += '			<option value="N">No</option>\n';
+		tag += '		</select>\n';
+		tag += '	</td>\n';
+		tag += '</tr>\n';
+		
+		$('#tbodyDelvFeePolicy').append(tag);
+	});
+	
+	// 배송비 정책 조회
+	let fnGetDeliveryFeePolicy = function(supplyCompCd) {
+		$('#tbodyDelvFeePolicy').html('');
+		
+		$.getJSON('/business/delivery/fee/policy/list/' + supplyCompCd
+			, function(result, status) {
+				if (result == null || result.length == 0) {
+					return;
+				}
+				
+				$.each(result, function(idx, item) {
+					let tag = '<tr>\n';
+					tag += '	<td align="center">\n';
+					tag += '		<input type="text" name="delvFeeCd" class="w100 aC" placeholder="자동생성" value="' + item.delvFeeCd + '" maxlength="20" readonly="readonly"/>\n';
+					tag += '		<input type="hidden" name="supplyCompCd" value="' + item.supplyCompCd + '"/>\n';
+					tag += '	</td>\n';
+					tag += '	<td align="center">\n';
+					tag += '		<select name="delvFeeCrite" onclick="fnChangeDeliveryFeeCriterion(' + (idx + 1) + ', this);">\n';
+					tag += '			<option value="G078_10"' + (item.delvFeeCrite == "G078_10" ? " selected" : "") + '>[G078_10] 조건부 무료</option>\n';
+					tag += '			<option value="G078_20"' + (item.delvFeeCrite == "G078_20" ? " selected" : "") + '>[G078_20] 무료</option>\n';
+					tag += '			<option value="G078_30"' + (item.delvFeeCrite == "G078_30" ? " selected" : "") + '>[G078_30] 유료</option>\n';
+					tag += '		</select>\n';
+					tag += '	</td>\n';
+					tag += '	<td align="center">\n';
+					tag += '		<input type="text" name="minOrdAmt" class="w100 aR" placeholder="" value="' + item.minOrdAmt.addComma() + '" maxlength="7" required="required" data-valid-type="integer" data-valid-name="무료배송비기준금액"/>원 <span id="txtCriterion' + (idx + 1) + '">이상</span>\n';
+					tag += '	</td>\n';
+					tag += '	<td align="center">\n';
+					tag += '		<input type="text" name="delvFee" class="w100 aR" placeholder="" value="' + item.delvFee.addComma() + '" maxlength="7" required="required" data-valid-type="integer" data-valid-name="배송비"/>원\n';
+					tag += '	</td>\n';
+					tag += '	<td align="center">\n';
+					tag += '		<input type="text" name="rtnDelvFee" class="w100 aR" placeholder="" value="' + item.rtnDelvFee.addComma() + '" maxlength="7" required="required" data-valid-type="integer" data-valid-name="반품배송비"/>원\n';
+					tag += '	</td>\n';
+					tag += '	<td align="center">\n';
+					tag += '		<select name="useYn">\n';
+					tag += '			<option value="Y" ' + (item.useYn == "Y" ? "selected" : "") + '>Yes</option>\n';
+					tag += '			<option value="N" ' + (item.useYn == "N" ? "selected" : "") + '>No</option>\n';
+					tag += '		</select>\n';
+					tag += '	</td>\n';
+					tag += '</tr>\n';
+					
+					$('#tbodyDelvFeePolicy').append(tag);
+				});
+				
+				$('.delvFeePolicy').show();
+			});
+	}
+
+	// 배송비부과기준
+	var fnChangeDeliveryFeeCriterion = function(idx, obj) {
+		if ($(obj).val() == 'G078_10') {
+			$('#delvFeePolicyForm input[name=minOrdAmt]').eq(idx).attr('readonly', false);
+			$('#txtCriterion' + idx).html('이상');
+// 			$('#delvFeePolicyForm input[name=delvFee]').eq(idx).attr('readonly', false);
+		} else if ($(obj).val() == 'G078_20') {
+			$('#delvFeePolicyForm input[name=minOrdAmt]').eq(idx).val(0);
+			$('#delvFeePolicyForm input[name=minOrdAmt]').eq(idx).attr('readonly', true);
+			$('#txtCriterion' + idx).html('이상');
+// 			$('#delvFeePolicyForm input[name=delvFee]').eq(idx).val(0);
+// 			$('#delvFeePolicyForm input[name=delvFee]').eq(idx).attr('readonly', true);
+		} else if ($(obj).val() == 'G078_30') {
+			$('#delvFeePolicyForm input[name=minOrdAmt]').eq(idx).val(0);
+			$('#delvFeePolicyForm input[name=minOrdAmt]').eq(idx).attr('readonly', true);
+			$('#txtCriterion' + idx).html('금액에 상관 없음');
+// 			$('#delvFeePolicyForm input[name=delvFee]').eq(idx).attr('readonly', false);
+		}
+	}
+	
+	// 배송비정책 저장
+	$("#btnSaveDelvFeePolicy").on("click", function() {
+		// 필수값 체크
+		if (!gagajf.validation('#delvFeePolicyForm'))
+			return false;
+
+		mcxDialog.confirm("배송비정책을 저장하시겠습니까?", {
+			cancelBtnText: "취소",
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				// comma(,) 제거
+				gagajf.removeCommaAtNumberFormattedInput('#delvFeePolicyForm');
+				
+				var arrData = [];
+				$('#tbodyDelvFeePolicy tr').each(function(idx) {
+					var params = new Object();
+					params.delvFeeCd = $(this).find('input[name=delvFeeCd]').val();
+					params.supplyCompCd = $(this).find('input[name=supplyCompCd]').val();
+					params.delvFeeCrite = $(this).find('select[name=delvFeeCrite]').val();
+					params.minOrdAmt = $(this).find('input[name=minOrdAmt]').val();
+					params.delvFee = $(this).find('input[name=delvFee]').val();
+					params.rtnDelvFee = $(this).find('select[name=rtnDelvFee]').val();
+					params.useYn = $(this).find('select[name=useYn]').val();
+					arrData.push(params);
+				});
+				
+				let jsonData = JSON.stringify(arrData);
+				gagajf.ajaxJsonSubmit($('#delvFeePolicyForm').prop('action'), jsonData, function() {
+					// 배송비정책 조회
+					fnGetDeliveryFeePolicy($('#detailForm input[name=supplyCompCd]').val());
+				});
+			}
+		});
+	});
+	
 	/**
 	 * DAUM을 이용한 우편번호 팝업 레이어
 	 */