Forráskód Böngészése

Merge branch 'develop' into card007

card007 4 éve
szülő
commit
87c5e5e0de
28 módosított fájl, 2154 hozzáadás és 1967 törlés
  1. 3 3
      src/main/java/com/style24/admin/biz/dao/TsaBusinessDao.java
  2. 578 582
      src/main/java/com/style24/admin/biz/service/TsaBusinessService.java
  3. 2 2
      src/main/java/com/style24/admin/biz/service/TsaGoodsService.java
  4. 7 6
      src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java
  5. 8 13
      src/main/java/com/style24/admin/biz/web/TsaBusinessController.java
  6. 12 1
      src/main/java/com/style24/admin/biz/web/TsaGoodsController.java
  7. 1 0
      src/main/java/com/style24/persistence/domain/CardPromotion.java
  8. 1243 1242
      src/main/java/com/style24/persistence/mybatis/shop/TsaBusiness.xml
  9. 4 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaCardPromotion.xml
  10. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  11. 46 47
      src/main/webapp/WEB-INF/views/business/BizdayForm.html
  12. 1 1
      src/main/webapp/WEB-INF/views/common/fragments/header.html
  13. 10 2
      src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html
  14. 3 2
      src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html
  15. 82 13
      src/main/webapp/WEB-INF/views/display/MainGnbContentsPopupForm.html
  16. 66 3
      src/main/webapp/WEB-INF/views/display/PopupListForm.html
  17. 0 1
      src/main/webapp/WEB-INF/views/goods/GoodsReserveSellForm.html
  18. 5 2
      src/main/webapp/WEB-INF/views/goods/NotiinfoForm.html
  19. 6 6
      src/main/webapp/WEB-INF/views/marketing/CardInterestForm.html
  20. 24 0
      src/main/webapp/WEB-INF/views/marketing/CardInterestPopupForm.html
  21. 6 6
      src/main/webapp/WEB-INF/views/marketing/CardPromotionForm.html
  22. 24 0
      src/main/webapp/WEB-INF/views/marketing/CardPromotionPopupForm.html
  23. 5 0
      src/main/webapp/WEB-INF/views/marketing/PointGrantPopupForm.html
  24. 13 22
      src/main/webapp/WEB-INF/views/order/OrderDetailForm.html
  25. 1 9
      src/main/webapp/WEB-INF/views/order/OrderListForm.html
  26. 1 1
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerGoodsSendForm.html
  27. 1 1
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerInvoiceSendForm.html
  28. 1 1
      src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderForm.html

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

@@ -326,13 +326,13 @@ public interface TsaBusinessDao {
 	void updateBrandGroup(BrandGroup brandGroup);
 
 	/**
-	 * 영업일 목록
+	 * 휴무일 목록
 	 * @param bizday - 영업일 정보
 	 * @return
 	 * @author gagamel
 	 * @since 2021. 3. 16
 	 */
-	Collection<Bizday> getBizdayList(Bizday bizday);
+	Collection<Bizday> getHolidayList(Bizday bizday);
 
 	/**
 	 * 영업일여부 조회
@@ -358,7 +358,7 @@ public interface TsaBusinessDao {
 	 * @since 2021. 3. 16
 	 */
 	void updateBizday(Bizday bizday);
-	
+
 	/**
 	 * 총알배송 브랜드 등록
 	 * @param brand - 브랜드 정보

+ 578 - 582
src/main/java/com/style24/admin/biz/service/TsaBusinessService.java

@@ -1,582 +1,578 @@
-package com.style24.admin.biz.service;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
-
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.style24.admin.biz.dao.TsaBusinessDao;
-import com.style24.admin.support.security.session.TsaSession;
-import com.style24.core.biz.service.TscCommonService;
-import com.style24.core.support.env.TscConstants;
-import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.domain.Aflink;
-import com.style24.persistence.domain.Bizday;
-import com.style24.persistence.domain.Brand;
-import com.style24.persistence.domain.BrandGroup;
-import com.style24.persistence.domain.BrandMd;
-import com.style24.persistence.domain.Category;
-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;
-
-import com.gagaframework.web.util.GagaDateUtil;
-import com.gagaframework.web.util.GagaFileUtil;
-
-/**
- * 영업관리 Service
- *
- * @author gagamel
- * @since 2020. 10. 14
- */
-@Service
-@Slf4j
-public class TsaBusinessService {
-
-	@Autowired
-	private Environment env;
-
-	@Autowired
-	private TscMessageByLocale message;
-
-	@Autowired
-	private TsaBusinessDao businessDao;
-	
-	@Autowired
-	private TscCommonService commonService;
-
-	@Autowired
-	private TsaDisplayService displayService;
-	
-	
-
-	/**
-	 * 공급벤더 목록
-	 * @param supplyComp - 공급업체 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2021. 1. 18
-	 */
-	public Collection<SupplyCompany> getSupplyVendorList(SupplyCompany supplyComp) {
-		return businessDao.getSupplyVendorList(supplyComp);
-	}
-
-	/**
-	 * 공급벤더 저장 처리
-	 * @param supplyComp - 공급업체 정보
-	 * @author gagamel
-	 * @since 2021. 1. 18
-	 */
-	public void saveSupplyVendor(SupplyCompany supplyComp) {
-		if (!StringUtils.isEmpty(supplyComp.getSupplyVendorCd())) {
-			businessDao.updateSupplyVendor(supplyComp);
-		} else {
-			businessDao.createSupplyVendor(supplyComp);
-		}
-	}
-
-	/**
-	 * 공급업체 목록
-	 * @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.isEmpty(supplyComp.getSupplyCompCd())) {
-			businessDao.updateSupplyCompany(supplyComp);
-		} else {
-			businessDao.createSupplyCompany(supplyComp);
-		}
-	}
-
-	/**
-	 * 배송비정책 목록
-	 * @param supplyCompCd - 공급업체코드
-	 * @return
-	 * @author gagamel
-	 * @since 2020. 11. 24
-	 */
-	public Collection<DelvFeePolicy> getDeliveryFeePolicyList(DelvFeePolicy delvFeePolicy) {
-		return businessDao.getDeliveryFeePolicyList(delvFeePolicy);
-	}
-
-	/**
-	 * 배송비정책 저장 처리
-	 * @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.isEmpty(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 brandCd - 브랜드코드
-	 * @author eskim
-	 * @since 2021. 01. 21
-	 */
-	public Collection<Brand> getBrandSupplyList(String brandCd) {
-		return businessDao.getBrandSupplyList(brandCd);
-	}
-
-	/**
-	 * 브랜드 등록/수정
-	 * @param brand - 브랜드 정보
-	 * @author gagamel
-	 * @since 2020. 11. 5
-	 */
-	@Transactional("shopTxnManager")
-	public void saveBrand(Brand brand) {
-
-		// eskim
-		Collection<Brand> brandSupplyList = null;
-		ObjectMapper mapper = new ObjectMapper();
-
-		try {
-			if (brand.getBrandSupplyListInfo() != null) {
-				brandSupplyList = mapper.readValue(brand.getBrandSupplyListInfo(), new TypeReference<Collection<Brand>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		if (brand.getMode().equals("N")) { // 신규
-			businessDao.createBrand(brand);
-			// 자사 브랜드는 총알배송 브랜드 등록
-			if ("G065_10".equals(brand.getDistributionGb()) || "G065_11".equals(brand.getDistributionGb()) || "G065_12".equals(brand.getDistributionGb())) {
-				businessDao.createShotDelvBrand(brand);
-			}
-		} else { // 수정
-			businessDao.updateBrand(brand);
-		}
-		//log.info("brand ={}", brand);
-		if (brandSupplyList != null && !brandSupplyList.isEmpty()) {
-			for (Brand brandSupply : brandSupplyList) {
-				brandSupply.setRegNo(TsaSession.getInfo().getUserNo());
-				brandSupply.setBrandCd(brand.getBrandCd());
-				businessDao.saveBrandSupply(brandSupply);
-			}
-
-		}
-		
-		//자사 브랜드 총알배송 브랜드 적용
-	
-	}
-
-	/**
-	 * 재고연계관리 - 출고처 목록
-	 * @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);
-		}
-	}
-
-	/**
-	 * 브랜드 그룹 목록
-	 * @param brandGroup - 브랜드그룹 정보
-	 * @return
-	 * @author eskim
-	 * @since 2021. 02. 19
-	 */
-	public Collection<BrandGroup> getBrandGroupList(BrandGroup brandGroup) {
-		return businessDao.getBrandGroupList(brandGroup);
-	}
-
-	/**
-	 * 브랜드 그룹 등록/수정
-	 * @param brandGroup - 브랜드그룹 정보
-	 * @author gagamel
-	 * @since 2021. 02. 19
-	 */
-	@Transactional("shopTxnManager")
-	public void saveBrandGroup(BrandGroup brandGroup) {
-		
-		String brandUploadPath = env.getProperty("upload.default.target.path");
-		brandUploadPath = GagaFileUtil.getConcatenationPath(brandUploadPath, "contents", "brand");
-
-		if (brandGroup.getNewSysFileNm1() != null && !"".equals(brandGroup.getNewSysFileNm1())) {
-			String brandImgName1 = "BRAND_" + brandGroup.getBrandGroupNo() + "_" + GagaDateUtil.getTodayDateTime() + "." + StringUtils.getFilenameExtension(brandGroup.getNewSysFileNm1());
-
-			//기존이미지 삭제
-			try {
-				GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(brandUploadPath, brandGroup.getLogoFileNm()));
-			} catch (IOException e) {
-				//  nothing
-				log.info("[saveBanner 기존 이미지 삭제중 error]");
-				//e.printStackTrace();
-			}
-
-			File uniqueFile = GagaFileUtil.getUniqueFile(new File(GagaFileUtil.getConcatenationPath(brandUploadPath, brandImgName1)));
-
-			File file = new File(GagaFileUtil.getConcatenationPath(brandUploadPath, brandGroup.getNewSysFileNm1()));
-
-			// Rename a file
-			file.renameTo(uniqueFile);
-
-			brandImgName1 = "/contents/brand/" + brandImgName1;
-			brandGroup.setLogoFileNm(brandImgName1);
-
-		}
-		
-		// 흑백이미지
-		if (brandGroup.getNewSysFileNm2() != null && !"".equals(brandGroup.getNewSysFileNm2())) {
-			String brandImgName2 = "BRAND_" + brandGroup.getBrandGroupNo() + "_" + GagaDateUtil.getTodayDateTime() + "_1." + StringUtils.getFilenameExtension(brandGroup.getNewSysFileNm2());
-
-			//기존이미지 삭제
-			try {
-				GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(brandUploadPath, brandGroup.getBwLogoFileNm()));
-			} catch (IOException e) {
-				//  nothing
-				log.info("[saveBanner 기존 이미지 삭제중 error]");
-				//e.printStackTrace();
-			}
-
-			File uniqueFile2 = GagaFileUtil.getUniqueFile(new File(GagaFileUtil.getConcatenationPath(brandUploadPath, brandImgName2)));
-
-			File file2 = new File(GagaFileUtil.getConcatenationPath(brandUploadPath, brandGroup.getNewSysFileNm2()));
-
-			// Rename a file
-			file2.renameTo(uniqueFile2);
-
-			brandImgName2 = "/contents/brand/" + brandImgName2;
-			brandGroup.setBwLogoFileNm(brandImgName2);
-
-		}
-		
-		// 별도 카테고리 선택시 카테고리 생성
-		if ("N".equals(brandGroup.getDefaultCateYn()) && brandGroup.getBrandCateNo() <= 0) {
-			
-			
-			Category category = new Category();
-			
-			category.setSiteCd(TscConstants.Site.STYLE24.value());
-			category.setCateGb("G032_102");  //by brand
-			category.setCate1No(commonService.getNextSequence("SEQ_CATE"));
-			category.setCate1Nm(brandGroup.getBrandGroupKnm());
-			category.setCateType("G031_10");  // 상품분류카테고리
-			category.setLeafYn("Y");
-			category.setDispOrd(1);
-			category.setFormalGb("G009_10");	// 정상
-			category.setDispYn("Y");
-			category.setUseYn("Y");
-			displayService.saveCategory1(category);
-			
-			brandGroup.setBrandCateNo(category.getCate1No());
-		}
-
-		if (brandGroup.getMode().equals("N")) { // 신규
-			businessDao.createBrandGroup(brandGroup);
-		} else { // 수정
-			businessDao.updateBrandGroup(brandGroup);
-		}
-		
-
-	}
-
-	/**
-	 * 영업일 목록
-	 * @param bizday - 영업일 정보
-	 * @return
-	 * @author gagamel
-	 * @since 2021. 3. 16
-	 */
-	public Collection<Bizday> getBizdayList(Bizday bizday) {
-		return businessDao.getBizdayList(bizday);
-	}
-
-	/**
-	 * 영업일 저장 처리
-	 * @param
-	 * @return
-	 * @author jaewonHo
-	 * @since 2019. 12. 13
-	 */
-	@Transactional("shopTxnManager")
-	public void saveBizday(Bizday bizday) {
-		bizday.setRegNo(TsaSession.getInfo().getUserNo());
-		bizday.setUpdNo(TsaSession.getInfo().getUserNo());
-
-		String bizdayYn = businessDao.getBizdayYn(bizday.getBizday());
-
-		if (StringUtils.isEmpty(bizdayYn)) {
-			// 영업일여부 값이 없으면 신규로 등록
-			businessDao.createBizday(bizday);
-		} else {
-			bizday.setBizdayYn(bizdayYn);
-			businessDao.updateBizday(bizday);
-		}
-	}
-
-}
+package com.style24.admin.biz.service;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.style24.admin.biz.dao.TsaBusinessDao;
+import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.biz.service.TscCommonService;
+import com.style24.core.support.env.TscConstants;
+import com.style24.core.support.message.TscMessageByLocale;
+import com.style24.persistence.domain.Aflink;
+import com.style24.persistence.domain.Bizday;
+import com.style24.persistence.domain.Brand;
+import com.style24.persistence.domain.BrandGroup;
+import com.style24.persistence.domain.BrandMd;
+import com.style24.persistence.domain.Category;
+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;
+
+import com.gagaframework.web.util.GagaDateUtil;
+import com.gagaframework.web.util.GagaFileUtil;
+
+/**
+ * 영업관리 Service
+ *
+ * @author gagamel
+ * @since 2020. 10. 14
+ */
+@Service
+@Slf4j
+public class TsaBusinessService {
+
+	@Autowired
+	private Environment env;
+
+	@Autowired
+	private TscMessageByLocale message;
+
+	@Autowired
+	private TsaBusinessDao businessDao;
+
+	@Autowired
+	private TscCommonService commonService;
+
+	@Autowired
+	private TsaDisplayService displayService;
+
+	/**
+	 * 공급벤더 목록
+	 * @param supplyComp - 공급업체 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 18
+	 */
+	public Collection<SupplyCompany> getSupplyVendorList(SupplyCompany supplyComp) {
+		return businessDao.getSupplyVendorList(supplyComp);
+	}
+
+	/**
+	 * 공급벤더 저장 처리
+	 * @param supplyComp - 공급업체 정보
+	 * @author gagamel
+	 * @since 2021. 1. 18
+	 */
+	public void saveSupplyVendor(SupplyCompany supplyComp) {
+		if (!StringUtils.isEmpty(supplyComp.getSupplyVendorCd())) {
+			businessDao.updateSupplyVendor(supplyComp);
+		} else {
+			businessDao.createSupplyVendor(supplyComp);
+		}
+	}
+
+	/**
+	 * 공급업체 목록
+	 * @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.isEmpty(supplyComp.getSupplyCompCd())) {
+			businessDao.updateSupplyCompany(supplyComp);
+		} else {
+			businessDao.createSupplyCompany(supplyComp);
+		}
+	}
+
+	/**
+	 * 배송비정책 목록
+	 * @param supplyCompCd - 공급업체코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 24
+	 */
+	public Collection<DelvFeePolicy> getDeliveryFeePolicyList(DelvFeePolicy delvFeePolicy) {
+		return businessDao.getDeliveryFeePolicyList(delvFeePolicy);
+	}
+
+	/**
+	 * 배송비정책 저장 처리
+	 * @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.isEmpty(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 brandCd - 브랜드코드
+	 * @author eskim
+	 * @since 2021. 01. 21
+	 */
+	public Collection<Brand> getBrandSupplyList(String brandCd) {
+		return businessDao.getBrandSupplyList(brandCd);
+	}
+
+	/**
+	 * 브랜드 등록/수정
+	 * @param brand - 브랜드 정보
+	 * @author gagamel
+	 * @since 2020. 11. 5
+	 */
+	@Transactional("shopTxnManager")
+	public void saveBrand(Brand brand) {
+
+		// eskim
+		Collection<Brand> brandSupplyList = null;
+		ObjectMapper mapper = new ObjectMapper();
+
+		try {
+			if (brand.getBrandSupplyListInfo() != null) {
+				brandSupplyList = mapper.readValue(brand.getBrandSupplyListInfo(), new TypeReference<Collection<Brand>>() {
+				});
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		if (brand.getMode().equals("N")) { // 신규
+			businessDao.createBrand(brand);
+			// 자사 브랜드는 총알배송 브랜드 등록
+			if ("G065_10".equals(brand.getDistributionGb()) || "G065_11".equals(brand.getDistributionGb()) || "G065_12".equals(brand.getDistributionGb())) {
+				businessDao.createShotDelvBrand(brand);
+			}
+		} else { // 수정
+			businessDao.updateBrand(brand);
+		}
+		//log.info("brand ={}", brand);
+		if (brandSupplyList != null && !brandSupplyList.isEmpty()) {
+			for (Brand brandSupply : brandSupplyList) {
+				brandSupply.setRegNo(TsaSession.getInfo().getUserNo());
+				brandSupply.setBrandCd(brand.getBrandCd());
+				businessDao.saveBrandSupply(brandSupply);
+			}
+
+		}
+
+		//자사 브랜드 총알배송 브랜드 적용
+
+	}
+
+	/**
+	 * 재고연계관리 - 출고처 목록
+	 * @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);
+		}
+	}
+
+	/**
+	 * 브랜드 그룹 목록
+	 * @param brandGroup - 브랜드그룹 정보
+	 * @return
+	 * @author eskim
+	 * @since 2021. 02. 19
+	 */
+	public Collection<BrandGroup> getBrandGroupList(BrandGroup brandGroup) {
+		return businessDao.getBrandGroupList(brandGroup);
+	}
+
+	/**
+	 * 브랜드 그룹 등록/수정
+	 * @param brandGroup - 브랜드그룹 정보
+	 * @author gagamel
+	 * @since 2021. 02. 19
+	 */
+	@Transactional("shopTxnManager")
+	public void saveBrandGroup(BrandGroup brandGroup) {
+
+		String brandUploadPath = env.getProperty("upload.default.target.path");
+		brandUploadPath = GagaFileUtil.getConcatenationPath(brandUploadPath, "contents", "brand");
+
+		if (brandGroup.getNewSysFileNm1() != null && !"".equals(brandGroup.getNewSysFileNm1())) {
+			String brandImgName1 = "BRAND_" + brandGroup.getBrandGroupNo() + "_" + GagaDateUtil.getTodayDateTime() + "." + StringUtils.getFilenameExtension(brandGroup.getNewSysFileNm1());
+
+			//기존이미지 삭제
+			try {
+				GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(brandUploadPath, brandGroup.getLogoFileNm()));
+			} catch (IOException e) {
+				//  nothing
+				log.info("[saveBanner 기존 이미지 삭제중 error]");
+				//e.printStackTrace();
+			}
+
+			File uniqueFile = GagaFileUtil.getUniqueFile(new File(GagaFileUtil.getConcatenationPath(brandUploadPath, brandImgName1)));
+
+			File file = new File(GagaFileUtil.getConcatenationPath(brandUploadPath, brandGroup.getNewSysFileNm1()));
+
+			// Rename a file
+			file.renameTo(uniqueFile);
+
+			brandImgName1 = "/contents/brand/" + brandImgName1;
+			brandGroup.setLogoFileNm(brandImgName1);
+
+		}
+
+		// 흑백이미지
+		if (brandGroup.getNewSysFileNm2() != null && !"".equals(brandGroup.getNewSysFileNm2())) {
+			String brandImgName2 = "BRAND_" + brandGroup.getBrandGroupNo() + "_" + GagaDateUtil.getTodayDateTime() + "_1." + StringUtils.getFilenameExtension(brandGroup.getNewSysFileNm2());
+
+			//기존이미지 삭제
+			try {
+				GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(brandUploadPath, brandGroup.getBwLogoFileNm()));
+			} catch (IOException e) {
+				//  nothing
+				log.info("[saveBanner 기존 이미지 삭제중 error]");
+				//e.printStackTrace();
+			}
+
+			File uniqueFile2 = GagaFileUtil.getUniqueFile(new File(GagaFileUtil.getConcatenationPath(brandUploadPath, brandImgName2)));
+
+			File file2 = new File(GagaFileUtil.getConcatenationPath(brandUploadPath, brandGroup.getNewSysFileNm2()));
+
+			// Rename a file
+			file2.renameTo(uniqueFile2);
+
+			brandImgName2 = "/contents/brand/" + brandImgName2;
+			brandGroup.setBwLogoFileNm(brandImgName2);
+
+		}
+
+		// 별도 카테고리 선택시 카테고리 생성
+		if ("N".equals(brandGroup.getDefaultCateYn()) && brandGroup.getBrandCateNo() <= 0) {
+
+			Category category = new Category();
+
+			category.setSiteCd(TscConstants.Site.STYLE24.value());
+			category.setCateGb("G032_102");  //by brand
+			category.setCate1No(commonService.getNextSequence("SEQ_CATE"));
+			category.setCate1Nm(brandGroup.getBrandGroupKnm());
+			category.setCateType("G031_10");  // 상품분류카테고리
+			category.setLeafYn("Y");
+			category.setDispOrd(1);
+			category.setFormalGb("G009_10");	// 정상
+			category.setDispYn("Y");
+			category.setUseYn("Y");
+			displayService.saveCategory1(category);
+
+			brandGroup.setBrandCateNo(category.getCate1No());
+		}
+
+		if (brandGroup.getMode().equals("N")) { // 신규
+			businessDao.createBrandGroup(brandGroup);
+		} else { // 수정
+			businessDao.updateBrandGroup(brandGroup);
+		}
+
+	}
+
+	/**
+	 * 휴무일 목록
+	 * @param bizday - 영업일 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 3. 16
+	 */
+	public Collection<Bizday> getHolidayList(Bizday bizday) {
+		return businessDao.getHolidayList(bizday);
+	}
+
+	/**
+	 * 영업일 저장 처리
+	 * @param
+	 * @return
+	 * @author jaewonHo
+	 * @since 2019. 12. 13
+	 */
+	@Transactional("shopTxnManager")
+	public void saveBizday(Bizday bizday) {
+		bizday.setRegNo(TsaSession.getInfo().getUserNo());
+		bizday.setUpdNo(TsaSession.getInfo().getUserNo());
+
+		String bizdayYn = businessDao.getBizdayYn(bizday.getBizday());
+
+		if (StringUtils.isEmpty(bizdayYn)) {
+			// 영업일여부 값이 없으면 신규로 등록
+			businessDao.createBizday(bizday);
+		} else {
+			bizday.setBizdayYn(bizdayYn);
+			businessDao.updateBizday(bizday);
+		}
+	}
+
+}

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

@@ -401,7 +401,7 @@ public class TsaGoodsService {
 				"정상가", "판매가", "자사즉시할인가", "가격변경일", "ERP재고연동여부", "정상이월구분", "반품가능 여부"};
 
 			// DB 처리 시 사용되는 파라미터명(셀명) 설정
-			String[] cellNames = {"SYS_IMG_NM", "GOODS_CD", "SUPPLY_COMP_CD", "BRAND_GRP_NM", "GOODS_NM", "ITEMKIND_NM",
+			String[] cellNames = {"SYS_IMG_NM", "GOODS_CD", "SUPPLY_COMP_CD", "BRAND_ENM", "GOODS_NM", "ITEMKIND_NM",
 				"STOCK_QTY_SUM", "GOODS_STAT", "STYLE_YEAR", "SEASON_CD", "LIST_PRICE", "CURR_PRICE",
 				"BENEFIT_PRICE", "PRICE_UPD_DT", "ERP_STOCK_LINK_YN", "FORMAL_GB", "RETURNABLE_YN"};
 
@@ -438,7 +438,7 @@ public class TsaGoodsService {
 				"정상가", "판매가", "자사즉시할인가", "가격변경일", "ERP재고연동여부", "정상이월구분", "반품가능 여부"};
 
 			// DB 처리 시 사용되는 파라미터명(셀명) 설정
-			String[] cellNames = {"GOODS_CD", "SUPPLY_COMP_CD", "BRAND_GRP_NM", "GOODS_NM", "ITEMKIND_NM", "STOCK_QTY_SUM", "GOODS_STAT", "STYLE_YEAR",
+			String[] cellNames = {"GOODS_CD", "SUPPLY_COMP_CD", "BRAND_ENM", "GOODS_NM", "ITEMKIND_NM", "STOCK_QTY_SUM", "GOODS_STAT", "STYLE_YEAR",
 				"SEASON_CD", "LIST_PRICE", "CURR_PRICE", "BENEFIT_PRICE", "PRICE_UPD_DT", "ERP_STOCK_LINK_YN", "FORMAL_GB", "RETURNABLE_YN"};
 
 			String[] cellTypes = {

+ 7 - 6
src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java

@@ -64,7 +64,7 @@ public class TsaShoplinkerService {
 	 */
 	public GagaMap createShoplinkerXml(Collection<GagaMap> ecxelGoodsList, ShoplinkerGoods shoplinkerGoods)throws IOException {
 		// 파일명 추가 네이밍 규칙
-		fileAddNm = shoplinkerGoods.getRegNo() +"_"+ GagaDateUtil.getTodayDateTime();
+		fileAddNm = shoplinkerGoods.getRegNo() +"_"+ GagaDateUtil.getToday("yyMMddHHmmss");
 
 		GagaMap rtnMap = new GagaMap();
 		int optionAll=0, optionSucc=0;
@@ -271,7 +271,7 @@ public class TsaShoplinkerService {
 				// 품목매핑정보 없음. 전송 안함
 				regMap.setXmlTxt(sbRequest.toString());
 				regMap.setApiResult("error");
-				regMap.setApiMessage("API 전송안함=>샵링커 품목매핑정보가 없습니다. (자사품목코드: "+goodsMap.getItemkindCd()+")");
+				regMap.setApiMessage("API 전송안함 : 샵링커 품목매핑정보가 없습니다. (자사품목코드: "+goodsMap.getItemkindCd()+")");
 				tscShoplinkerDao.insertShoplinerApiHst(regMap);
 			}
 
@@ -804,6 +804,7 @@ public class TsaShoplinkerService {
 	private int callGoodsRegApi(ShoplinkerGoods map, StringBuilder sbRequest, String fileNm) throws IOException {
 
 		int succCnt = 0;
+		map.setApiProductId(null);
 		com.gagaframework.shoplinker.domain.goods.result.Shoplinker shoplinkerResult;
 		com.gagaframework.shoplinker.domain.goods.result.ResultMessage resultMsg;
 
@@ -814,7 +815,7 @@ public class TsaShoplinkerService {
 
 			// XML 파일 생성
 			xmlFileName = new StringBuilder();
-			xmlFileName.append(fileNm+"_"+fileAddNm).append(".xml");
+			xmlFileName.append(fileNm+"_"+map.getGoodsCd()+"_"+fileAddNm).append(".xml");
 			String xmlPath = GagaFileUtil.getConcatenationPath(map.getXmlPath(), xmlFileName.toString());
 			shoplinkerUtil.makeRequestXmlFile(sbRequest.toString(), xmlPath);
 			String xmlUrl = GagaFileUtil.getConcatenationPath(map.getDomainUrl(), xmlFileName.toString());
@@ -850,12 +851,12 @@ public class TsaShoplinkerService {
 			map.setApiMessage("API 통신오류");
 		}
 
-		// 생성 파일삭제
-		GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(map.getXmlPath(), xmlFileName.toString()));
-
 		// 전송이력 저장
 		tscShoplinkerDao.insertShoplinerApiHst(map);
 
+		// 생성 파일삭제
+		GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(map.getXmlPath(), xmlFileName.toString()));
+
 		return succCnt;
 	}
 

+ 8 - 13
src/main/java/com/style24/admin/biz/web/TsaBusinessController.java

@@ -1,13 +1,7 @@
 package com.style24.admin.biz.web;
 
-import java.net.URLDecoder;
-import java.net.URLEncoder;
 import java.util.Collection;
 
-import com.gagaframework.web.parameter.GagaMap;
-import com.style24.core.biz.service.TscKcpService;
-import com.style24.core.support.session.TscSession;
-import com.style24.persistence.domain.CustAccount;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -25,6 +19,7 @@ import com.style24.admin.biz.service.TsaRendererService;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.biz.service.TscEnvsetService;
+import com.style24.core.biz.service.TscKcpService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.Aflink;
@@ -32,6 +27,7 @@ import com.style24.persistence.domain.Bizday;
 import com.style24.persistence.domain.Brand;
 import com.style24.persistence.domain.BrandGroup;
 import com.style24.persistence.domain.BrandMd;
+import com.style24.persistence.domain.CustAccount;
 import com.style24.persistence.domain.DeliveryLoc;
 import com.style24.persistence.domain.DelvFeePolicy;
 import com.style24.persistence.domain.SellStore;
@@ -42,10 +38,9 @@ import com.style24.persistence.domain.SupplyCompany;
 
 import lombok.extern.slf4j.Slf4j;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponse;
 
-import javax.servlet.http.HttpServletRequest;
-
 /**
  * 영업관리 Controller
  *
@@ -836,16 +831,16 @@ public class TsaBusinessController extends TsaBaseController {
 	}
 
 	/**
-	 * 영업일 목록
+	 * 휴무일 목록
 	 * @param bizday - 영업일 정보
 	 * @return
 	 * @author gagamel
 	 * @since 2021. 3. 16
 	 */
-	@GetMapping("/bizday/list")
+	@GetMapping("/holiday/list")
 	@ResponseBody
-	public Collection<Bizday> getBizdayList(Bizday bizday) {
-		return businessService.getBizdayList(bizday);
+	public Collection<Bizday> getHolidayList(Bizday bizday) {
+		return businessService.getHolidayList(bizday);
 	}
 
 	/**
@@ -859,7 +854,7 @@ public class TsaBusinessController extends TsaBaseController {
 	@ResponseBody
 	public GagaResponse saveBizday(@RequestBody Bizday bizday) {
 		businessService.saveBizday(bizday);
-		return super.ok(message.getMessage("SUCC_0001"));
+		return super.ok(message.getMessage("SUCC_0009"));
 	}
 
 	/**

+ 12 - 1
src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -2112,11 +2112,22 @@ public class TsaGoodsController extends TsaBaseController {
 		GagaMap result = new GagaMap();
 
 		// 입점업체담당자는 업체코드 설정
-		if ("G001-B000".equals(TsaSession.getInfo().getRoleCd())) {
+		if ("G001_B000".equals(TsaSession.getInfo().getRoleCd())) {
 			goodsSearch.setSupplyCompCd(TsaSession.getInfo().getSupplyCompCd());
 			goodsSearch.setMdNo(TsaSession.getInfo().getUserNo().toString());
 		}
 
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(goodsSearch.getCondition())) {
+			goodsSearch.setConditionList(goodsSearch.getCondition().replaceAll("\r", "").trim().split("\n"));
+
+			if ("searchExtendGoodsCd".equals(goodsSearch.getSearch())) {
+				goodsSearch.setSearchGb("EXTEND");
+			} else if ("searchMasterGoodsCd".equals(goodsSearch.getSearch())) {
+				goodsSearch.setSearchGb("MASTER");
+			}
+		}
+		
 		goodsSearch.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		goodsSearch.setPageable(new TscPageRequest(goodsSearch.getPageNo() - 1, goodsSearch.getPageSize()));
 		goodsSearch.getPageable().setTotalCount(goodsService.getGoodsResSellCount(goodsSearch));

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

@@ -55,6 +55,7 @@ public class CardPromotion extends TscBaseDomain {
 	private int minPayAmt;	// 최소결제금액
 	private String dcWay;	// 할인구분할인방식(공통코드G240, 프로모션구분이 A:할인인 경우)
 	private int dcVal;	// 할인값(프로모션구분이 A:할인인 경우, 할인방식이 금액이면 할인금액, 율이면 할인율)
+	private String dcValNm;
 	private int maxDcAmt;	// 최대할인금액(프로모션구분이 A:할인인 경우)
 	private String minNoItrt;	// 최소무이자월수(프로모션구분이 B:무이자 인경우)
 	private String maxNoItrt;	// 최대무이자월수(프로모션구분이 B:무이자 인경우)

+ 1243 - 1242
src/main/java/com/style24/persistence/mybatis/shop/TsaBusiness.xml

@@ -1,1243 +1,1244 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.style24.admin.biz.dao.TsaBusinessDao">
-
-	<!-- 공급벤더 목록 -->
-	<select id="getSupplyVendorList" parameterType="SupplyCompany" resultType="SupplyCompany">
-		/* TsaBusiness.getSupplyVendorList */
-		SELECT SUPPLY_VENDOR_CD /*공급벤더코드*/
-		     , SUPPLY_VENDOR_NM /*공급벤더명*/
-		     , BIZ_GB           /*사업자구분*/
-		     , BIZ_NO           /*사업자등록번호*/
-		     , BIZ_KIND         /*업종*/
-		     , BIZ_TYPE         /*업태*/
-		     , OWNER_NM         /*대표자명*/
-		     , BIZ_ZIPCODE      /*사업장우편번호*/
-		     , BIZ_BASE_ADDR    /*사업장기본주소*/
-		     , BIZ_DTL_ADDR     /*사업장상세주소*/
-		     , MAIN_TELNO       /*대표전화번호*/
-		     , MAIN_FAXNO       /*대표팩스번호*/
-		     , HOMEPAGE_URL     /*홈페이지URL*/
-		     , USE_YN           /*사용여부*/
-		FROM   TB_SUPPLY_VENDOR
-		WHERE  1 = 1
-		<if test="searchTxt != null and searchTxt != ''">
-		    <if test='searchGb == "NAME"'>
-		AND    UPPER(SUPPLY_VENDOR_NM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
-		    </if>
-		    <if test='searchGb == "OWNER"'>
-		AND    UPPER(OWNER_NM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
-		    </if>
-		</if>
-		<if test="supplyVendorNm != null and supplyVendorNm != ''"> <!-- 공급벤더팝업에서 사용 -->
-		AND    UPPER(SUPPLY_VENDOR_NM) LIKE CONCAT('%',UPPER(#{supplyVendorNm}),'%')
-		</if>
-	</select>
-	
-	<!-- 공급벤더 생성 -->
-	<insert id="createSupplyVendor" parameterType="SupplyCompany">
-		/* TsaBusiness.createSupplyVendor */
-		INSERT INTO TB_SUPPLY_VENDOR (
-		       SUPPLY_VENDOR_CD
-		     , SUPPLY_VENDOR_NM
-		     , BIZ_GB
-		     , BIZ_NO
-		     , BIZ_KIND
-		     , BIZ_TYPE
-		     , OWNER_NM
-		     , BIZ_ZIPCODE
-		     , BIZ_BASE_ADDR
-		     , BIZ_DTL_ADDR
-		     , MAIN_TELNO
-		     , MAIN_FAXNO
-		     , HOMEPAGE_URL
-		     , USE_YN
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       (SELECT CONCAT('SV',IFNULL(LPAD(SUBSTRING(MAX(SUPPLY_VENDOR_CD),3) + 1,4,'0'),'0000'))
-		        FROM   TB_SUPPLY_VENDOR Z
-		       )
-		     , #{supplyVendorNm}
-		     , #{bizGb}
-		     , #{bizNo}
-		     , #{bizKind}
-		     , #{bizType}
-		     , #{ownerNm}
-		     , #{bizZipcode}
-		     , #{bizBaseAddr}
-		     , #{bizDtlAddr}
-		     , #{mainTelno}
-		     , #{mainFaxno}
-		     , #{homepageUrl}
-		     , #{useYn}
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-	</insert>
-	
-	<!-- 공급벤더 수정 -->
-	<update id="updateSupplyVendor" parameterType="SupplyCompany">
-		/* TsaBusiness.updateSupplyVendor */
-		UPDATE TB_SUPPLY_VENDOR
-		SET    SUPPLY_VENDOR_NM = #{supplyVendorNm}
-		     , BIZ_GB = #{bizGb}
-		     , BIZ_NO = #{bizNo}
-		     , BIZ_KIND = #{bizKind}
-		     , BIZ_TYPE = #{bizType}
-		     , OWNER_NM = #{ownerNm}
-		     , BIZ_ZIPCODE = #{bizZipcode}
-		     , BIZ_BASE_ADDR = #{bizBaseAddr}
-		     , BIZ_DTL_ADDR = #{bizDtlAddr}
-		     , MAIN_TELNO = #{mainTelno}
-		     , MAIN_FAXNO = #{mainFaxno}
-		     , HOMEPAGE_URL = #{homepageUrl}
-		     , USE_YN = #{useYn}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-		WHERE  SUPPLY_VENDOR_CD = #{supplyVendorCd}
-	</update>
-	
-	<!-- 공급업체 목록 -->
-	<select id="getSupplyCompanyList" parameterType="SupplyCompany" resultType="SupplyCompany">
-		/* TsaBusiness.getSupplyCompanyList */
-		SELECT SC.SUPPLY_COMP_CD                                       /*공급업체코드*/
-		     , SC.SUPPLY_COMP_NM                                       /*공급업체명*/
-		     , SC.SUPPLY_VENDOR_CD                                     /*공급벤더코드*/
-		     , SV.SUPPLY_VENDOR_NM                                     /*공급벤더명*/
-		     , SV.BIZ_GB                                               /*사업자구분*/
-		     , SV.BIZ_NO                                               /*사업자등록번호*/
-		     , SV.BIZ_KIND                                             /*업종*/
-		     , SV.BIZ_TYPE                                             /*업태*/
-		     , SV.OWNER_NM                                             /*대표자명*/
-		     , SV.BIZ_ZIPCODE                                          /*사업장우편번호*/
-		     , SV.BIZ_BASE_ADDR                                        /*사업장기본주소*/
-		     , SV.BIZ_DTL_ADDR                                         /*사업장상세주소*/
-		     , SV.MAIN_TELNO                                           /*대표전화번호*/
-		     , SV.MAIN_FAXNO                                           /*대표팩스번호*/
-		     , SV.HOMEPAGE_URL                                         /*홈페이지URL*/
-		     , SC.DISTRIBUTION_GB                                      /*유통구분*/
-		     , SC.SHOT_DELV_YN                                         /*총알배송여부*/
-		     , SC.SUPPLY_STAT                                          /*입점상태*/
-		     , FN_GET_CODE_NM('G010',SC.SUPPLY_STAT) AS SUPPLY_STAT_NM /*입점상태명*/
-		     , SC.SELL_FEE_RATE                                        /*판매수수료율*/
-		     , SC.SETTLE_DAY                                           /*정산일*/
-		     , SC.BANK_CD                                              /*은행코드*/
-		     , SC.ACCOUNT_NO                                           /*계좌번호*/
-		     , SC.DEPOSITOR_NM                                         /*예금주명*/
-		     , SC.CS_CHARGE_NM                                         /*CS담당자명*/
-		     , SC.CS_CHARGE_TELNO                                      /*CS담당자전화번호*/
-		     , SC.SETTLE_CHARGE_NM                                     /*정산담당자명*/
-		     , SC.SETTLE_CHARGE_TELNO                                  /*정산담당자전화번호*/
-		     , SC.SETTLE_CHARGE_EMAIL                                  /*정산담당자이메일*/
-		     , SC.BILL_EMAIL                                           /*계산서이메일*/
-		     , SC.ECONTRACT_YN                                         /*전자계약여부*/
-		     , SC.REMARKS                                              /*비고*/
-		     , SC.USE_YN                                               /*사용여부*/
-		     , SC.NOTE                                                 /*배송안내*/
-		FROM   TB_SUPPLY_COMPANY SC
-		     , TB_SUPPLY_VENDOR SV
-		WHERE  SC.SUPPLY_VENDOR_CD = SV.SUPPLY_VENDOR_CD
-		<if test="supplyStat != null and supplyStat != ''">
-		AND    SC.SUPPLY_STAT = #{supplyStat}
-		</if>
-		<if test="searchTxt != null and searchTxt != ''">
-		    <if test='searchGb == "NAME"'>
-		AND    (
-		        UPPER(SC.SUPPLY_COMP_NM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
-		        OR
-		        UPPER(SV.SUPPLY_VENDOR_NM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
-		       )
-		    </if>
-		    <if test='searchGb == "OWNER"'>
-		AND    UPPER(SV.OWNER_NM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
-		    </if>
-		</if>
-		<if test="econtractYn != null and econtractYn != ''">
-		AND    SC.ECONTRACT_YN = #{econtractYn}
-		</if>
-		<if test="supplyCompCd != null and supplyCompCd != ''"> <!-- 브랜드관리 화면에서 사용 -->
-		AND    SC.SUPPLY_COMP_CD = #{supplyCompCd}
-		</if>
-		<if test="multiSupplyCompCd != null and multiSupplyCompCd.length > 0">
-		AND    SC.SUPPLY_COMP_CD IN
-		    <foreach collection="multiSupplyCompCd" item="item" index="index"  open="(" close=")" separator=",">
-		UPPER(#{item})
-		    </foreach>
-		</if>
-		<if test="multiSupplyCompNm != null and multiSupplyCompNm.length > 0">
-		AND (
-		    <foreach collection="multiSupplyCompNm" item="item" index="index" separator="or">
-		    UPPER(SC.SUPPLY_COMP_NM) LIKE CONCAT('%',UPPER(#{item}),'%')
-		    </foreach>
-		 )
-		</if>
-		<if test='selfYn != null and (selfYn == "Y" or selfYn == "N")'>
-		<choose>
-		    <when test='selfYn  == "Y"'>
-		AND    SC.DISTRIBUTION_GB IN ('G065_10','G065_11','G065_12') 
-		    </when>
-		    <otherwise>
-		AND    SC.DISTRIBUTION_GB IN ('G065_20')
-		    </otherwise>
-		</choose>
-		</if>
-	</select>
-	
-	<!-- 공급업체 생성 -->
-	<insert id="createSupplyCompany" parameterType="SupplyCompany">
-		/* TsaBusiness.createSupplyCompany */
-		INSERT INTO TB_SUPPLY_COMPANY (
-		       SUPPLY_COMP_CD
-		     , SUPPLY_COMP_NM
-		     , SUPPLY_VENDOR_CD
-		     , PROVIDER_NO
-		     , DISTRIBUTION_GB
-		     , SHOT_DELV_YN
-		     , SUPPLY_STAT
-		     , SELL_FEE_RATE
-		     , SETTLE_DAY
-		     , BANK_CD
-		     , ACCOUNT_NO
-		     , DEPOSITOR_NM
-		     , CS_CHARGE_NM
-		     , CS_CHARGE_TELNO
-		     , SETTLE_CHARGE_NM
-		     , SETTLE_CHARGE_TELNO
-		     , SETTLE_CHARGE_EMAIL
-		     , BILL_EMAIL
-		     , ECONTRACT_YN
-		     , REMARKS
-		     , USE_YN
-		     , NOTE
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       (SELECT IFNULL(MAX(SUPPLY_COMP_CD),0) + 1
-		        FROM   TB_SUPPLY_COMPANY Z
-		       )
-		     , #{supplyCompNm}
-		     , #{supplyVendorCd}
-		     , (SELECT CASE WHEN MAX(PROVIDER_NO) IS NULL THEN
-		                        40000 /* AS-IS 최대 수보다 크게 수정해야함*/
-		                    ELSE
-		                        MAX(PROVIDER_NO) + 1
-		               END
-		        FROM   TB_SUPPLY_COMPANY Z
-		        WHERE  PROVIDER_NO > 40000 /* AS-IS 최대 수보다 크게 크게 수정해야함*/
-		       )
-		     , #{distributionGb}
-		     , #{shotDelvYn}
-		     , #{supplyStat}
-		     , IFNULL(#{sellFeeRate},0.0)
-		     , #{settleDay}
-		     , #{bankCd}
-		     , #{accountNo}
-		     , #{depositorNm}
-		     , #{csChargeNm}
-		     , #{csChargeTelno}
-		     , #{settleChargeNm}
-		     , #{settleChargeTelno}
-		     , #{settleChargeEmail}
-		     , #{billEmail}
-		     , #{econtractYn}
-		     , #{remarks}
-		     , #{useYn}
-		     , #{note}
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-	</insert>
-	
-	<!-- 공급업체 수정 -->
-	<update id="updateSupplyCompany" parameterType="SupplyCompany">
-		/* TsaBusiness.updateSupplyCompany */
-		UPDATE TB_SUPPLY_COMPANY
-		SET    SUPPLY_COMP_NM = #{supplyCompNm}
-		     , SUPPLY_VENDOR_CD = #{supplyVendorCd}
-		     , DISTRIBUTION_GB = #{distributionGb}
-		     , SHOT_DELV_YN = #{shotDelvYn}
-		     , SUPPLY_STAT = #{supplyStat}
-		     , SELL_FEE_RATE = IFNULL(#{sellFeeRate},0.0)
-		     , SETTLE_DAY = #{settleDay}
-		     , BANK_CD = #{bankCd}
-		     , ACCOUNT_NO = #{accountNo}
-		     , DEPOSITOR_NM = #{depositorNm}
-		     , CS_CHARGE_NM = #{csChargeNm}
-		     , CS_CHARGE_TELNO = #{csChargeTelno}
-		     , SETTLE_CHARGE_NM = #{settleChargeNm}
-		     , SETTLE_CHARGE_TELNO = #{settleChargeTelno}
-		     , SETTLE_CHARGE_EMAIL = #{settleChargeEmail}
-		     , BILL_EMAIL = #{billEmail}
-		     , ECONTRACT_YN = #{econtractYn}
-		     , REMARKS = #{remarks}
-		     , USE_YN = #{useYn}
-		     , NOTE = #{note}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-		WHERE  SUPPLY_COMP_CD = #{supplyCompCd}
-	</update>
-	
-	<!-- 배송비정책 목록 -->
-	<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}
-		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(IFNULL(SUPPLY_COMP_CD,#{supplyCompCd}),'_',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  1 = 1
-		<choose>
-		    <when test="distributionGb == 'G065_20'"> <!-- 입점-위탁 -->
-		AND    DELV_FEE_CD = #{delvFeeCd}
-		    </when>
-		    <otherwise>
-		AND    SUPPLY_COMP_CD IN (SELECT SUPPLY_COMP_CD
-		                          FROM   TB_SUPPLY_COMPANY
-		                          WHERE  DISTRIBUTION_GB != 'G065_20' /*자사*/
-		                         )
-		    </otherwise>
-		</choose>
-	</update>
-	
-	<!-- 출고처 목록 -->
-	<select id="getDeliveryLocList" parameterType="DeliveryLoc" resultType="DeliveryLoc">
-		/* TsaBusiness.getDeliveryLocList */
-		SELECT DELV_LOC_CD        /*출고처코드*/
-		     , DELV_LOC_NM        /*출고처명*/
-		     , SUPPLY_COMP_CD     /*공급업체코드*/
-		     , DELV_LOC_CLSF      /*출고처분류*/
-		     , DELV_ASSIGN_ORD    /*출고지정순서*/
-		     , DELV_ASSIGN_GRADE  /*출고지정등급*/
-		     , STOCK_APPL_RATE    /*재고적용율*/
-		     , DELV_FEE_RATE      /*출고수수료율*/
-		     , DELV_LOC_ZIPCODE   /*출고처우편번호*/
-		     , DELV_LOC_BASE_ADDR /*출고처기본주소*/
-		     , DELV_LOC_DTL_ADDR  /*출고처상세주소*/
-		     , RTN_LOC_ZIPCODE    /*반품처우편번호*/
-		     , RTN_LOC_BASE_ADDR  /*반품처기본주소*/
-		     , RTN_LOC_DTL_ADDR   /*반품처상세주소*/
-		     , RTN_LOC_NM         /*반품처명*/
-		     , INVOICE_PRINT_TYPE /*송장출력형태*/
-		     , USE_YN             /*사용여부*/
-		FROM   TB_DELIVERY_LOC
-		WHERE  1 = 1
-		<if test="supplyCompCd != null and supplyCompCd != ''">
-		AND    SUPPLY_COMP_CD = #{supplyCompCd}
-		</if>
-		<if test="delvLocNm != null and delvLocNm !=''">
-		AND    LOWER(DELV_LOC_NM) LIKE CONCAT('%',LOWER(#{delvLocNm}),'%')
-		</if>
-		<if test="delvLocClsf != null and delvLocClsf != ''">
-		AND    DELV_LOC_CLSF = #{delvLocClsf}
-		</if>
-		<if test="useYn != null and useYn != ''">
-		AND    USE_YN = #{useYn}
-		</if>
-		ORDER  BY DELV_LOC_CD
-	</select>
-
-	<!-- 출고처 저장 -->
-	<insert id="saveDeliveryLoc" parameterType="DeliveryLoc">
-		/*  TsaBusiness.saveDeliveryInfo */
-		INSERT INTO TB_DELIVERY_LOC (
-		       DELV_LOC_CD
-		     , DELV_LOC_NM
-		     , SUPPLY_COMP_CD
-		     , DELV_LOC_CLSF
-		     , DELV_ASSIGN_ORD
-		     , DELV_ASSIGN_GRADE
-		     , STOCK_APPL_RATE
-		     , DELV_FEE_RATE
-		     , DELV_LOC_ZIPCODE
-		     , DELV_LOC_BASE_ADDR
-		     , DELV_LOC_DTL_ADDR
-		     , RTN_LOC_ZIPCODE
-		     , RTN_LOC_BASE_ADDR
-		     , RTN_LOC_DTL_ADDR
-		     , RTN_LOC_NM
-		     , INVOICE_PRINT_TYPE
-		     , USE_YN
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       #{delvLocCd}
-		     , #{delvLocNm}
-		     , #{supplyCompCd}
-		     , #{delvLocClsf}
-		     , CASE WHEN #{delvLocClsf} IN ('G024_10','G024_21') THEN /*물류창고,직송매장*/
-		                IFNULL(#{delvAssignOrd},100)
-		            ELSE
-		                #{delvAssignOrd}
-		       END
-		     , #{delvAssignGrade}
-		     , CASE WHEN #{delvLocClsf} IN ('G024_10','G024_21') AND #{stockApplRate} = 0.0 THEN /*물류창고,직송매장*/
-		                IFNULL(#{stockApplRate},100.0)
-		            ELSE
-		                #{stockApplRate}
-		       END
-		     , CASE WHEN #{delvLocClsf} = 'G024_21' THEN /*직송매장*/
-		                IFNULL(#{delvFeeRate},0.0)
-		            ELSE
-		                #{delvFeeRate}
-		       END
-		     , #{delvLocZipcode}
-		     , #{delvLocBaseAddr}
-		     , #{delvLocDtlAddr}
-		     , #{rtnLocZipcode}
-		     , #{rtnLocBaseAddr}
-		     , #{rtnLocDtlAddr}
-		     , #{rtnLocNm}
-		     , #{invoicePrintType}
-		     , #{useYn}
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-		ON DUPLICATE KEY UPDATE
-		       DELV_LOC_NM = #{delvLocNm}
-		     , DELV_LOC_CLSF = #{delvLocClsf}
-		     , DELV_ASSIGN_ORD = CASE WHEN #{delvLocClsf} IN ('G024_10','G024_21') THEN /*물류창고,직송매장*/
-		                                  IFNULL(#{delvAssignOrd},100)
-		                              ELSE
-		                                  #{delvAssignOrd}
-		                         END
-		     , DELV_ASSIGN_GRADE = #{delvAssignGrade}
-		     , STOCK_APPL_RATE = CASE WHEN #{delvLocClsf} IN ('G024_10','G024_21') AND #{stockApplRate} = 0.0 THEN /*물류창고,직송매장*/
-		                                  100
-		                              ELSE
-		                                  #{stockApplRate}
-		                         END
-		     , DELV_FEE_RATE = CASE WHEN #{delvLocClsf} = 'G024_21' THEN /*직송매장*/
-		                                IFNULL(#{delvFeeRate},0.0)
-		                            ELSE
-		                                #{delvFeeRate}
-		                       END
-		     , DELV_LOC_ZIPCODE = #{delvLocZipcode}
-		     , DELV_LOC_BASE_ADDR = #{delvLocBaseAddr}
-		     , DELV_LOC_DTL_ADDR = #{delvLocDtlAddr}
-		     , RTN_LOC_ZIPCODE = #{rtnLocZipcode}
-		     , RTN_LOC_BASE_ADDR = #{rtnLocBaseAddr}
-		     , RTN_LOC_DTL_ADDR = #{rtnLocDtlAddr}
-		     , RTN_LOC_NM = #{rtnLocNm}
-		     , INVOICE_PRINT_TYPE = #{invoicePrintType}
-		     , USE_YN = #{useYn}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-	</insert>
-	
-	<!-- 브랜드 목록 -->
-	<select id="getBrandList" parameterType="Brand" resultType="Brand">
-		/* TsaBusiness.getBrandList */
-		SELECT CASE WHEN A.SELF_YN = 'Y' THEN 'S'
-		            ELSE 'E'
-		       END               AS BRAND_GB /*브랜드구분*/
-		     , A.BRAND_CD                    /*브랜드코드*/
-		     , A.BRAND_ENM                   /*브랜드영문명*/
-		     , A.BRAND_KNM                   /*브랜드한글명*/
-		     , A.DISTRIBUTION_GB             /*유통구분*/
-		     , A.ERP_BRAND_CD                /*ERP브랜드코드*/
-		     , A.SELF_YN                     /*자사여부*/
-		     , A.USE_YN                      /*사용여부*/
-		     , A.PNT_PRATE10                 /*포인트적립율(PC)*/
-		     , A.PNT_MRATE10                 /*포인트적립율(모바일)*/
-		     , A.PNT_PRATE20                 /*포인트적립율(PC)*/
-		     , A.PNT_MRATE20                 /*포인트적립율(모바일)*/
-		     , A.DISP_ORD                    /*표시순서*/
-		     , (CASE WHEN D.DISP_NM_LANG = 'EN' THEN D.BRAND_GROUP_ENM ELSE D.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
-		     , A.BRAND_GROUP_NO
-		FROM   TB_BRAND A
-		INNER JOIN TB_BRAND_GROUP D ON A.BRAND_GROUP_NO = D.BRAND_GROUP_NO
-		                            AND D.USE_YN = 'Y'
-		<if test='supplyCompCd != null and supplyCompCd != ""'>
-		INNER JOIN TB_BRAND_SUPPLY C ON A.BRAND_CD = C.BRAND_CD
-		INNER JOIN TB_SUPPLY_COMPANY B ON C.SUPPLY_COMP_CD = B.SUPPLY_COMP_CD
-		</if>
-		WHERE  1 = 1
-		<if test='supplyCompCd != null and supplyCompCd != ""'>
-		AND    C.SUPPLY_COMP_CD = #{supplyCompCd}
-		</if>
-		<if test='distributionGb != null and distributionGb != ""'>
-		AND    A.DISTRIBUTION_GB = #{distributionGb}
-		</if>
-		<if test='erpBrandCd != null and erpBrandCd != ""'>
-		AND    A.ERP_BRAND_CD =  #{erpBrandCd}
-		</if>
-		<if test='brandCd != null and brandCd != ""'>
-		AND    A.BRAND_CD = #{brandCd}
-		</if>
-		<if test="searchTxt != null and searchTxt != ''">
-		AND    (
-		        UPPER(A.BRAND_ENM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
-		        OR
-		        UPPER(A.BRAND_KNM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
-		        OR
-		        UPPER(A.BRAND_CD) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
-		        OR
-		        UPPER(D.BRAND_GROUP_KNM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
-		        OR
-		        UPPER(D.BRAND_GROUP_ENM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
-		       )
-		</if>
-		<if test="multiBrandCd != null and multiBrandCd.length > 0">
-		AND    A.BRAND_CD IN
-		    <foreach collection="multiBrandCd" item="item" index="index"  open="(" close=")" separator=",">
-		UPPER(#{item})
-		    </foreach>
-		</if>
-		<if test="multiBrandNm != null and multiBrandNm.length > 0">
-		AND (
-		    <foreach collection="multiBrandNm" item="item" index="index" separator="or">
-		    (
-		    UPPER(A.BRAND_ENM) LIKE CONCAT('%',UPPER(#{item}),'%')
-		    OR
-		    UPPER(A.BRAND_KNM) LIKE CONCAT('%',UPPER(#{item}),'%')
-		    )
-		  </foreach>
-		 )
-		</if>
-		<if test='useYn != null and useYn != ""'>
-		AND    A.USE_YN = #{useYn}
-		</if>
-		<if test='selfYn != null and selfYn != ""'>
-		AND    A.SELF_YN = #{selfYn}
-		</if>
-		ORDER  BY A.SELF_YN DESC,  A.DISP_ORD
-	</select>
-	
-	<!-- 담당MD 목록 -->
-	<select id="getMdList" parameterType="String" resultType="BrandMd">
-		/* TsaBusiness.getMdList */
-		SELECT USER_NO AS MD_NO
-		     , USER_NM AS MD_NM
-		     , USER_ID
-		FROM   TB_USER
-		WHERE   1 = 1
-		/* AND ROLE_CD = 'G001_A101'  */  /*MD권한*/
-		<if test="mdNm != null and mdNm != ''">
-		AND    LOWER(USER_NM) LIKE CONCAT('%',LOWER(#{mdNm}),'%')
-		</if>
-		AND    USE_YN  = 'Y'
-		ORDER  BY USER_NM
-	</select>
-	
-	<!-- 브랜드담당MD 목록 -->
-	<select id="getBrandMdList" parameterType="String" resultType="BrandMd">
-		/* TsaBusiness.getBrandMdList */
-		SELECT A.FORMAL_GB           /*정상이월구분*/
-		     , A.MD_NO               /*담당MD번호*/
-		     , B.USER_NM    AS MD_NM /*담당MD명*/
-		FROM   TB_BRAND_MD A
-		     , TB_USER B
-		WHERE  A.MD_NO = B.USER_NO
-		AND    A.BRAND_CD = #{brandCd}
-	</select>
-	
-	<!-- 브랜드담당MD 삭제 -->
-	<delete id="deleteBrandMd" parameterType="String">
-		/* TsaBusiness.deleteBrandMd */
-		DELETE
-		FROM   TB_BRAND_MD
-		WHERE  BRAND_CD = #{brandCd}
-	</delete>
-
-	<!-- 브랜드담당MD 등록 -->
-	<insert id="createBrandMd" parameterType="BrandMd">
-		/* TsaBusiness.createBrandMd */
-		INSERT INTO TB_BRAND_MD (
-		       BRAND_CD
-		     , FORMAL_GB
-		     , MD_NO
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		SELECT #{brandCd}  AS BRAND_CD
-		     , CD          AS FORMAL_GB
-		     , #{mdNo}     AS MD_NO
-		     , #{regNo}    AS REG_NO
-		     , NOW()       AS REG_DT
-		     , #{updNo}    AS UPD_NO
-		     , NOW()       AS UPD_DT
-		FROM   TB_COMMON_CODE
-		WHERE  CD_GB = 'G009' /*정상이월구분*/
-		AND    CD IN ('G009_10','G009_20') /*정상,이월*/
-		AND    USE_YN = 'Y'
-	</insert>
-	
-	<!-- 브랜드 노출사이트 목록 -->
-	<select id="getBrandSiteList" parameterType="String" resultType="SiteBrand">
-		/* TsaBusiness.getBrandSiteList */
-		SELECT BRAND_CD
-		     , SITE_CD
-		     , DISP_ORD
-		     , USE_YN
-		     , CATE1_NO
-		FROM   TB_SITE_BRAND
-		WHERE  BRAND_CD = #{brandCd}
-		AND    USE_YN ='Y'
-	</select>
-	
-	<!-- 브랜드 노출사이트 등록/수정 -->
-	<insert id="saveBrandSite" parameterType="SiteBrand">
-		/* TsaBusiness.saveBrandSite */
-		INSERT INTO TB_SITE_BRAND (
-		       SITE_CD
-		     , BRAND_CD
-		     , DISP_ORD
-		     , USE_YN
-		     , CATE1_NO
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       #{siteCd}
-		     , #{brandCd}
-		     , #{dispOrd}
-		     , #{useYn}
-		     , #{cate1No}
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-		ON DUPLICATE KEY UPDATE
-		       USE_YN = #{useYn}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-	</insert>
-	
-	<!-- 브랜드 공급업체 목록 -->
-	<select id="getBrandSupplyList" parameterType="String" resultType="Brand">
-		/* TsaBusiness.getBrandSupplyList */
-		SELECT A.BRAND_CD
-		     , A.SUPPLY_COMP_CD
-		     , B.SUPPLY_COMP_NM
-		     , A.REG_NO
-		     , FN_GET_USER_NM(A.REG_NO) AS REG_NM
-		     , DATE_FORMAT(A.REG_DT, '%Y%m%d%H%i%S') AS REG_DT
-		FROM   TB_BRAND_SUPPLY A
-		INNER JOIN TB_SUPPLY_COMPANY B ON A.SUPPLY_COMP_CD = B.SUPPLY_COMP_CD
-		WHERE  BRAND_CD = #{brandCd}
-	</select>
-	
-	<!-- 브랜드 등록 -->
-	<insert id="createBrand" parameterType="Brand" >
-		/* TsaBusiness.createBrand */
-		<selectKey keyProperty="brandCd" resultType="String" order="BEFORE">
-			 (SELECT CONCAT(#{brandGb},IFNULL(LPAD(CAST(SUBSTRING(MAX(BRAND_CD),2) AS UNSIGNED) + 1,4,'0'),'0000'))
-		        FROM   TB_BRAND Z
-		        WHERE  BRAND_CD LIKE CONCAT(#{brandGb},'%')
-		       )
-		</selectKey>
-		
-		INSERT INTO TB_BRAND (
-		       BRAND_CD
-		     , BRAND_ENM
-		     , BRAND_KNM
-		     , DISTRIBUTION_GB
-		     , SELF_YN
-		     , ERP_BRAND_CD
-		     , PNT_PRATE10
-		     , PNT_MRATE10
-		     , PNT_PRATE20
-		     , PNT_MRATE20
-		     , DISP_ORD
-		     , USE_YN
-		     , BRAND_NO
-		     , BRAND_GROUP_NO
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       #{brandCd}
-		     , #{brandEnm}
-		     , #{brandKnm}
-		     , #{distributionGb}
-		     , CASE WHEN #{distributionGb} IN ('G065_10','G065_11','G065_12') THEN 'Y'
-		            ELSE 'N'
-		       END
-		     , #{erpBrandCd}
-		     , IFNULL(#{pntPrate10},0)
-		     , IFNULL(#{pntMrate10},0)
-		     , IFNULL(#{pntPrate20},0)
-		     , IFNULL(#{pntMrate20},0)
-		     , #{dispOrd}
-		     , #{useYn}
-		     , (SELECT CASE WHEN MAX(BRAND_NO) IS NULL THEN 30000   /* AS-IS 최대 수보다 크게 설정해야 함 */
-		               ELSE (MAX(BRAND_NO) + 1) END
-		        FROM   TB_BRAND Z
-		        WHERE  1 = 1
-		        AND BRAND_NO > 29999                  /* AS-IS 최대 수보다 크게 크게 설정해야 함*/
-		       ) 
-		     , #{brandGroupNo}
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-	</insert>
-	
-	<!-- 브랜드 수정 -->
-	<insert id="updateBrand" parameterType="Brand">
-		/* TsaBusiness.updateBrand */
-		UPDATE TB_BRAND
-		SET    BRAND_ENM = #{brandEnm}
-		     , BRAND_KNM = #{brandKnm}
-		     , DISTRIBUTION_GB = #{distributionGb}
-		     , SELF_YN = CASE WHEN #{distributionGb} IN ('G065_10','G065_11','G065_12') THEN 'Y'
-		                      ELSE 'N'
-		                 END
-		     , ERP_BRAND_CD = #{erpBrandCd}
-		     , PNT_PRATE10 = IFNULL(#{pntPrate10},0)
-		     , PNT_MRATE10 = IFNULL(#{pntMrate10},0)
-		     , PNT_PRATE20 = IFNULL(#{pntPrate20},0)
-		     , PNT_MRATE20 = IFNULL(#{pntMrate20},0)
-		     , DISP_ORD = #{dispOrd}
-		     , USE_YN = #{useYn}
-		     , BRAND_GROUP_NO = #{brandGroupNo}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-		WHERE  BRAND_CD = #{brandCd}
-	</insert>
-	
-	<!-- 브랜드별 업체 정보 저장 -->
-	<insert id="saveBrandSupply" parameterType="Brand">
-		/* TsaBusiness.saveBrandSupply */
-		INSERT INTO TB_BRAND_SUPPLY ( 
-		    BRAND_CD
-		  , SUPPLY_COMP_CD
-		  , REG_NO
-		  , REG_DT
-		)
-		VALUES
-		(   #{brandCd}
-		  , #{supplyCompCd}
-		  , #{regNo}
-		  , NOW()
-		)
-		ON DUPLICATE KEY UPDATE
-		     SUPPLY_COMP_CD = #{supplyCompCd} -- 무의미한 데이터
-	</insert>
-	
-	<!-- 재고연계관리 - 출고처 목록 -->
-	<select id="getStockSyncDeliveryLocList" parameterType="DeliveryLoc" resultType="DeliveryLoc">
-		/* TsaBusiness.getStockSyncDeliveryLocList */
-		SELECT SUPPLY_COMP_CD
-		     , DELV_LOC_CD
-		     , DELV_LOC_NM
-		     , DELV_LOC_CLSF
-		     , FN_GET_CODE_NM('G024',DELV_LOC_CLSF) AS DELV_LOC_CLSF_NM
-		FROM   TB_DELIVERY_LOC
-		WHERE  SUPPLY_COMP_CD = #{supplyCompCd}
-		AND    DELV_LOC_CLSF IN ('G024_10','G024_21') /*물류창고,직송매장*/
-		<if test="delvLocClsf != null and delvLocClsf != ''">
-		AND    DELV_LOC_CLSF = #{delvLocClsf}
-		</if>
-		<if test="searchTxt != null and searchTxt != ''">
-		    <if test="searchGb == 'CODE'">
-		AND    DELV_LOC_CD = #{delvLocCd}
-		    </if>
-		    <if test="searchGb == 'NAME'">
-		AND    DELV_LOC_NM like CONCAT('%',#{delvLocNm},'%')
-		    </if>
-		</if>
-		AND    USE_YN = 'Y'
-		ORDER  BY DELV_LOC_NM
-	</select>
-
-	<!-- 재고연계관리 - 재고연계기준 목록 -->
-	<select id="getStockSyncBaseList" parameterType="StockSyncBase" resultType="StockSyncBase">
-		/* TsaBusiness.getStockSyncBaseList */
-		SELECT X.DELV_LOC_CD
-		     , X.BRAND_CD
-		     , X.ERP_BRAND_CD
-		     , X.BRAND_KNM
-		     , X.BRAND_ENM
-		     , IFNULL(Y.STOCK_SYNC_YN,'N') AS PREV_STOCK_SYNC_YN /*이전재고연계여부*/
-		     , IFNULL(Y.STOCK_SYNC_YN,'N') AS STOCK_SYNC_YN      /*재고연계여부*/
-		     , IFNULL(Y.DELV_SYNC_YN,'N')  AS PREV_DELV_SYNC_YN  /*이전출고연계여부*/
-		     , IFNULL(Y.DELV_SYNC_YN,'N')  AS DELV_SYNC_YN       /*출고연계여부*/
-		FROM   (
-		        SELECT A.DELV_LOC_CD
-		             , B.BRAND_CD
-		             , B.ERP_BRAND_CD
-		             , B.BRAND_KNM
-		             , B.BRAND_ENM
-		        FROM   TB_DELIVERY_LOC A
-		             , TB_BRAND B
-		             , TB_BRAND_SUPPLY C 
-		        WHERE  A.SUPPLY_COMP_CD  = C.SUPPLY_COMP_CD
-		        AND    B.BRAND_CD = C.BRAND_CD 
-		        AND    A.SUPPLY_COMP_CD = #{supplyCompCd}
-		        AND    A.DELV_LOC_CD = #{delvLocCd}
-		        AND    A.USE_YN = 'Y'
-		       ) X
-		LEFT OUTER JOIN TB_STOCK_SYNC_BASE Y ON X.DELV_LOC_CD = Y.DELV_LOC_CD
-		                                    AND X.BRAND_CD = Y.BRAND_CD
-		ORDER BY X.DELV_LOC_CD, X.BRAND_CD
-	</select>
-
-	<!-- 재고연계관리 - 재고연계기준 저장 -->
-	<insert id="saveStockSyncBase" parameterType="StockSyncBase">
-		/* TsaBusiness.saveStockSyncBase */
-		INSERT INTO TB_STOCK_SYNC_BASE (
-		       DELV_LOC_CD
-		     , BRAND_CD
-		     , FORMAL_GB
-		     , STOCK_SYNC_YN
-		     , DELV_SYNC_YN
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       #{delvLocCd}
-		     , #{brandCd}
-		     , IFNULL(#{formalGb},'G009_10')
-		     , #{stockSyncYn}
-		     , #{delvSyncYn}
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-		ON DUPLICATE KEY UPDATE
-		       STOCK_SYNC_YN = #{stockSyncYn}
-		     , DELV_SYNC_YN = #{delvSyncYn}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-	</insert>
-
-	<!-- 판매매장 목록  -->
-	<select id="getSellStoreList" parameterType="SellStore" resultType="SellStore">
-		/* TsaBusiness.getSellStoreList */
-		SELECT SELL_STORE_CD
-		     , SELL_STORE_NM
-		     , USE_YN
-		FROM   TB_SELL_STORE
-		WHERE  1 = 1
-		<if test="sellStoreNm != null and sellStoreNm != ''">
-		AND    LOWER(SELL_STORE_NM) LIKE CONCAT('%',LOWER(#{sellStoreNm}),'%')
-		</if>
-		<if test="useYn != null and useYn != ''">
-		AND    USE_YN = #{useYn}
-		</if>
-		ORDER  BY SELL_STORE_NM
-	</select>
-
-	<!-- 판매매장 등록/수정 -->
-	<insert id="saveSellStore" parameterType="SellStore">
-		/* TsaBusiness.saveSellStore */
-		INSERT INTO TB_SELL_STORE (
-		       SUPPLY_COMP_CD
-		     , SELL_STORE_CD
-		     , SELL_STORE_NM
-		     , USE_YN
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       #{supplyCompCd}
-		     , #{sellStoreCd}
-		     , #{sellStoreNm}
-		     , #{useYn}
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-		ON DUPLICATE KEY UPDATE
-		       SELL_STORE_CD = #{sellStoreCd}
-		     , SELL_STORE_NM = #{sellStoreNm}
-		     , USE_YN = #{useYn}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-	</insert>
-	
-	<!-- 제휴링크 목록 -->
-	<select id="getAflinkList" parameterType="Aflink" resultType="Aflink">
-		/*  TsaBusiness.getAflinkList */
-		SELECT AF_LINK_CD
-		     , AF_LINK_NM
-		     , AF_CHANNEL
-		     , FEE_RATE
-		     , DISP_ORD
-		     , USE_YN
-		FROM   TB_AF_LINK
-		WHERE  1 = 1
-		<if test="afChannel != null and afChannel != ''">
-		AND    AF_CHANNEL = #{afChannel}
-		</if>
-	</select>
-
-	<!-- 제휴링크 저장 -->
-	<insert id="saveAflink" parameterType="Aflink">
-		/* TsaBusiness.saveAflink */
-		INSERT INTO TB_AF_LINK (
-		       AF_LINK_CD
-		     , AF_LINK_NM
-		     , AF_CHANNEL
-		     , FEE_RATE
-		     , DISP_ORD
-		     , USE_YN
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       #{afLinkCd}
-		     , #{afLinkNm}
-		     , #{afChannel}
-		     , #{feeRate}
-		     , #{dispOrd}
-		     , #{useYn}
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-		ON DUPLICATE KEY UPDATE
-		       AF_LINK_NM = #{afLinkNm}
-		     , AF_CHANNEL = #{afChannel}
-		     , FEE_RATE = #{feeRate}
-		     , DISP_ORD = #{dispOrd}
-		     , USE_YN = #{useYn}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-	</insert>
-
-	<!-- 제휴링크 삭제 -->
-	<update id="deleteAflink" parameterType="Aflink">
-		/* TsaBusiness.deleteAflink */
-		UPDATE TB_AF_LINK
-		SET    USE_YN = 'N'
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-		WHERE  AF_LINK_CD = #{afLinkCd}
-	</update>
-	
-	<!-- 배송업체관리 목록 -->
-	<select id="getShipCompanyList" resultType="ShipCompany">
-		/* TsaBusiness.getShipCompanyList */
-		SELECT SHIP_COMP_CD
-		     , SHIP_COMP_NM
-		     , TRACKING_URL
-		     , USE_YN
-		FROM   TB_SHIP_COMPANY
-		ORDER  BY SHIP_COMP_CD
-	</select>
-
-	<!-- 배송업체관리 저장 -->
-	<insert id="saveShipCompany" parameterType="ShipCompany">
-		/* TsaBusiness.saveShipCompany */
-		INSERT INTO TB_SHIP_COMPANY (
-		       SHIP_COMP_CD
-		     , SHIP_COMP_NM
-		     , TRACKING_URL
-		     , USE_YN
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       #{shipCompCd}
-		     , #{shipCompNm}
-		     , #{trackingUrl}
-		     , #{useYn}
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-		ON DUPLICATE KEY UPDATE
-		       SHIP_COMP_NM = #{shipCompNm}
-		     , TRACKING_URL = #{trackingUrl}
-		     , USE_YN = #{useYn}
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-	</insert>
-	
-	<!-- 배송업체관리 삭제 -->
-	<update id="deleteShipCompany" parameterType="ShipCompany">
-		/* TsaBusiness.updateShipCompany */
-		UPDATE TB_SHIP_COMPANY
-		SET    USE_YN = 'N'
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-		WHERE  SHIP_COMP_CD=  #{shipCompCd}
-	</update>
-	
-	<!-- 브랜드 그룹 목록 -->
-	<select id="getBrandGroupList" parameterType="String" resultType="BrandGroup">
-		/* TsaBusiness.getBrandGroupList */
-		SELECT A.BRAND_GROUP_NO
-		     , A.BRAND_GROUP_ENM
-		     , A.BRAND_GROUP_KNM
-		     , A.DISP_NM_LANG
-		     , A.LOGO_FILE_NM
-		     , A.BW_LOGO_FILE_NM
-		     , A.RGB_CD
-		     , A.DISP_ORD
-		     , A.DEFAULT_CATE_YN
-		     , A.BRAND_CATE_NO
-		     , (CASE WHEN DISP_NM_LANG = 'EN' THEN BRAND_GROUP_ENM ELSE BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
-		FROM   TB_BRAND_GROUP A
-		WHERE 1 = 1
-		<if test="multiBrandGroupNo != null and multiBrandGroupNo.length > 0">
-		AND    A.BRAND_GROUP_NO IN
-		    <foreach collection="multiBrandGroupNo" item="item" index="index"  open="(" close=")" separator=",">
-		UPPER(#{item})
-		    </foreach>
-		</if>
-		<if test="multiBrandGroupNm != null and multiBrandGroupNm.length > 0">
-		AND (
-		    <foreach collection="multiBrandGroupNm" item="item" index="index" separator="or">
-		    (
-		    UPPER(A.BRAND_GROUP_ENM) LIKE CONCAT('%',UPPER(#{item}),'%')
-		    OR
-		    UPPER(A.BRAND_GROUP_KNM) LIKE CONCAT('%',UPPER(#{item}),'%')
-		    )
-		  </foreach>
-		 )
-		</if>
-		ORDER  BY A.BRAND_GROUP_KNM
-	</select>
-	
-	<!-- 브랜드 그룹 등록 -->
-	<insert id="createBrandGroup" parameterType="BrandGroup" >
-		/* TsaBusiness.createBrandGroup */
-		INSERT INTO TB_BRAND_GROUP (
-		       BRAND_GROUP_NO
-		     , BRAND_GROUP_ENM
-		     , BRAND_GROUP_KNM
-		     , DISP_NM_LANG
-		     , RGB_CD
-		     , LOGO_FILE_NM
-		     , BW_LOGO_FILE_NM
-		     , DEFAULT_CATE_YN
-		     , BRAND_CATE_NO
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       (SELECT CASE WHEN MAX(BRAND_GROUP_NO) IS NULL THEN 30000
-		               ELSE (MAX(BRAND_GROUP_NO) + 1) END
-		        FROM   TB_BRAND_GROUP Z
-		        WHERE  1 = 1
-		        AND BRAND_GROUP_NO > 29999
-		       ) 
-		     , #{brandGroupEnm}
-		     , #{brandGroupKnm}
-		     , #{dispNmLang}
-		     , IFNULL(NULLIF(#{rgbCd},''),'222222')
-		     , #{logoFileNm}
-		     , #{bwLogoFileNm}
-		     , #{defaultCateYn}
-		     , #{brandCateNo}
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-	</insert>
-	
-	<!-- 브랜드 그룹 수정 -->
-	<update id="updateBrandGroup" parameterType="BrandGroup">
-		/* TsaBusiness.updateBrandGroup */
-		UPDATE TB_BRAND_GROUP
-		SET    BRAND_GROUP_ENM = #{brandGroupEnm}
-		     , BRAND_GROUP_KNM = #{brandGroupKnm}
-		     , DISP_NM_LANG = #{dispNmLang}
-		     , RGB_CD = IFNULL(NULLIF(#{rgbCd},''),'222222')
-		     , LOGO_FILE_NM = #{logoFileNm}
-		     , BW_LOGO_FILE_NM = #{bwLogoFileNm}
-		     , DEFAULT_CATE_YN = IFNULL(#{defaultCateYn},'Y')
-		     <if test="brandCateNo != null and brandCateNo > 0">
-		     , BRAND_CATE_NO =  #{brandCateNo}
-		     </if>
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-		WHERE  BRAND_GROUP_NO = #{brandGroupNo}
-	</update>
-	
-	<!-- 영업일 목록 -->
-	<select id="getBizdayList" parameterType="Bizday" resultType="Bizday">
-		/* TsaBusiness.getBizdayList */
-		SELECT BIZDAY /*영업일*/
-		     , WEEK_DAY                                 /*요일*/
-		     , BIZDAY_YN                                /*영업일여부*/
-		     , RESTDAY_DESC                             /*휴무일설명*/
-		FROM   TB_BIZDAY
-		WHERE  1= 1
-		AND    BIZDAY <![CDATA[>=]]> #{startDt}
-		AND    BIZDAY <![CDATA[<]]> #{endDt}
-	</select>
-	
-	<!-- 영업일여부 조회 -->
-	<select id="getBizdayYn" parameterType="String" resultType="String">
-		/* TsaBusiness.getBizdayYn */
-		SELECT BIZDAY_YN
-		FROM   TB_BIZDAY
-		WHERE  BIZDAY = #{bizday}
-	</select>
-
-	<!-- 영업일 생성 -->
-	<insert id="createBizday" parameterType="Bizday">
-		/*  TsaBusiness.saveBizday */
-		INSERT INTO TB_BIZDAY (
-		       BIZDAY
-		     , WEEK_DAY
-		     , BIZDAY_YN
-		     , RESTDAY_DESC
-		     , REG_NO
-		     , REG_DT
-		     , UPD_NO
-		     , UPD_DT
-		)
-		VALUES (
-		       #{bizday}
-		     , CASE DAYOFWEEK(#{bizday})
-		            WHEN 1 THEN '일'
-		            WHEN 2 THEN '월'
-		            WHEN 3 THEN '화'
-		            WHEN 4 THEN '수'
-		            WHEN 5 THEN '목'
-		            WHEN 6 THEN '금'
-		            WHEN 7 THEN '토'
-		       END
-		     , CASE DAYOFWEEK(#{bizday})
-		            WHEN 1 THEN 'N'
-		            WHEN 2 THEN 'Y'
-		            WHEN 3 THEN 'Y'
-		            WHEN 4 THEN 'Y'
-		            WHEN 5 THEN 'Y'
-		            WHEN 6 THEN 'Y'
-		            WHEN 7 THEN 'N'
-		       END
-		     , CASE DAYOFWEEK(#{bizday})
-		            WHEN 1 THEN '휴일'
-		            WHEN 2 THEN NULL
-		            WHEN 3 THEN NULL
-		            WHEN 4 THEN NULL
-		            WHEN 5 THEN NULL
-		            WHEN 6 THEN NULL
-		            WHEN 7 THEN '휴일'
-		       END
-		     , #{regNo}
-		     , NOW()
-		     , #{updNo}
-		     , NOW()
-		)
-	</insert>
-	
-	<!-- 영업일 수정 -->
-	<insert id="updateBizday" parameterType="Bizday">
-		/*  TsaBusiness.updateBizday */
-		UPDATE TB_BIZDAY
-		SET    BIZDAY_YN = (CASE WHEN #{bizdayYn} = 'Y' THEN 'N' ELSE 'N' END)
-		     , RESTDAY_DESC = (CASE WHEN #{bizdayYn} = 'Y' THEN NULL ELSE '휴일' END)
-		     , UPD_NO = #{updNo}
-		     , UPD_DT = NOW()
-		WHERE  BIZDAY = #{bizday}
-	</insert>
-	
-	<!-- 총알배송 브랜드 등록 -->
-	<insert id="createShotDelvBrand" parameterType="Brand">
-		/*  TsaBusiness.createShotDelvBrand */
-		INSERT INTO TB_SHOT_DELV_BRAND
-		(
-		    BRAND_GROUP_NO
-		   ,DISP_ORD
-		   ,CORNER_DISP_TYPE
-		   ,REG_DT
-		)
-		SELECT BRAND_GROUP_NO
-		     , IFNULL((SELECT COUNT(*) FROM TB_SHOT_DELV_BRAND),0)+1 AS DISP_ORD
-		     , 'G045_5' AS CORNER_DISP_TYPE
-		     , NOW()
-		FROM TB_BRAND  B
-		WHERE BRAND_CD = #{brandCd}
-		ON DUPLICATE KEY UPDATE
-		    REG_DT = NOW()
-	</insert>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.admin.biz.dao.TsaBusinessDao">
+
+	<!-- 공급벤더 목록 -->
+	<select id="getSupplyVendorList" parameterType="SupplyCompany" resultType="SupplyCompany">
+		/* TsaBusiness.getSupplyVendorList */
+		SELECT SUPPLY_VENDOR_CD /*공급벤더코드*/
+		     , SUPPLY_VENDOR_NM /*공급벤더명*/
+		     , BIZ_GB           /*사업자구분*/
+		     , BIZ_NO           /*사업자등록번호*/
+		     , BIZ_KIND         /*업종*/
+		     , BIZ_TYPE         /*업태*/
+		     , OWNER_NM         /*대표자명*/
+		     , BIZ_ZIPCODE      /*사업장우편번호*/
+		     , BIZ_BASE_ADDR    /*사업장기본주소*/
+		     , BIZ_DTL_ADDR     /*사업장상세주소*/
+		     , MAIN_TELNO       /*대표전화번호*/
+		     , MAIN_FAXNO       /*대표팩스번호*/
+		     , HOMEPAGE_URL     /*홈페이지URL*/
+		     , USE_YN           /*사용여부*/
+		FROM   TB_SUPPLY_VENDOR
+		WHERE  1 = 1
+		<if test="searchTxt != null and searchTxt != ''">
+		    <if test='searchGb == "NAME"'>
+		AND    UPPER(SUPPLY_VENDOR_NM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
+		    </if>
+		    <if test='searchGb == "OWNER"'>
+		AND    UPPER(OWNER_NM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
+		    </if>
+		</if>
+		<if test="supplyVendorNm != null and supplyVendorNm != ''"> <!-- 공급벤더팝업에서 사용 -->
+		AND    UPPER(SUPPLY_VENDOR_NM) LIKE CONCAT('%',UPPER(#{supplyVendorNm}),'%')
+		</if>
+	</select>
+	
+	<!-- 공급벤더 생성 -->
+	<insert id="createSupplyVendor" parameterType="SupplyCompany">
+		/* TsaBusiness.createSupplyVendor */
+		INSERT INTO TB_SUPPLY_VENDOR (
+		       SUPPLY_VENDOR_CD
+		     , SUPPLY_VENDOR_NM
+		     , BIZ_GB
+		     , BIZ_NO
+		     , BIZ_KIND
+		     , BIZ_TYPE
+		     , OWNER_NM
+		     , BIZ_ZIPCODE
+		     , BIZ_BASE_ADDR
+		     , BIZ_DTL_ADDR
+		     , MAIN_TELNO
+		     , MAIN_FAXNO
+		     , HOMEPAGE_URL
+		     , USE_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       (SELECT CONCAT('SV',IFNULL(LPAD(SUBSTRING(MAX(SUPPLY_VENDOR_CD),3) + 1,4,'0'),'0000'))
+		        FROM   TB_SUPPLY_VENDOR Z
+		       )
+		     , #{supplyVendorNm}
+		     , #{bizGb}
+		     , #{bizNo}
+		     , #{bizKind}
+		     , #{bizType}
+		     , #{ownerNm}
+		     , #{bizZipcode}
+		     , #{bizBaseAddr}
+		     , #{bizDtlAddr}
+		     , #{mainTelno}
+		     , #{mainFaxno}
+		     , #{homepageUrl}
+		     , #{useYn}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+	</insert>
+	
+	<!-- 공급벤더 수정 -->
+	<update id="updateSupplyVendor" parameterType="SupplyCompany">
+		/* TsaBusiness.updateSupplyVendor */
+		UPDATE TB_SUPPLY_VENDOR
+		SET    SUPPLY_VENDOR_NM = #{supplyVendorNm}
+		     , BIZ_GB = #{bizGb}
+		     , BIZ_NO = #{bizNo}
+		     , BIZ_KIND = #{bizKind}
+		     , BIZ_TYPE = #{bizType}
+		     , OWNER_NM = #{ownerNm}
+		     , BIZ_ZIPCODE = #{bizZipcode}
+		     , BIZ_BASE_ADDR = #{bizBaseAddr}
+		     , BIZ_DTL_ADDR = #{bizDtlAddr}
+		     , MAIN_TELNO = #{mainTelno}
+		     , MAIN_FAXNO = #{mainFaxno}
+		     , HOMEPAGE_URL = #{homepageUrl}
+		     , USE_YN = #{useYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  SUPPLY_VENDOR_CD = #{supplyVendorCd}
+	</update>
+	
+	<!-- 공급업체 목록 -->
+	<select id="getSupplyCompanyList" parameterType="SupplyCompany" resultType="SupplyCompany">
+		/* TsaBusiness.getSupplyCompanyList */
+		SELECT SC.SUPPLY_COMP_CD                                       /*공급업체코드*/
+		     , SC.SUPPLY_COMP_NM                                       /*공급업체명*/
+		     , SC.SUPPLY_VENDOR_CD                                     /*공급벤더코드*/
+		     , SV.SUPPLY_VENDOR_NM                                     /*공급벤더명*/
+		     , SV.BIZ_GB                                               /*사업자구분*/
+		     , SV.BIZ_NO                                               /*사업자등록번호*/
+		     , SV.BIZ_KIND                                             /*업종*/
+		     , SV.BIZ_TYPE                                             /*업태*/
+		     , SV.OWNER_NM                                             /*대표자명*/
+		     , SV.BIZ_ZIPCODE                                          /*사업장우편번호*/
+		     , SV.BIZ_BASE_ADDR                                        /*사업장기본주소*/
+		     , SV.BIZ_DTL_ADDR                                         /*사업장상세주소*/
+		     , SV.MAIN_TELNO                                           /*대표전화번호*/
+		     , SV.MAIN_FAXNO                                           /*대표팩스번호*/
+		     , SV.HOMEPAGE_URL                                         /*홈페이지URL*/
+		     , SC.DISTRIBUTION_GB                                      /*유통구분*/
+		     , SC.SHOT_DELV_YN                                         /*총알배송여부*/
+		     , SC.SUPPLY_STAT                                          /*입점상태*/
+		     , FN_GET_CODE_NM('G010',SC.SUPPLY_STAT) AS SUPPLY_STAT_NM /*입점상태명*/
+		     , SC.SELL_FEE_RATE                                        /*판매수수료율*/
+		     , SC.SETTLE_DAY                                           /*정산일*/
+		     , SC.BANK_CD                                              /*은행코드*/
+		     , SC.ACCOUNT_NO                                           /*계좌번호*/
+		     , SC.DEPOSITOR_NM                                         /*예금주명*/
+		     , SC.CS_CHARGE_NM                                         /*CS담당자명*/
+		     , SC.CS_CHARGE_TELNO                                      /*CS담당자전화번호*/
+		     , SC.SETTLE_CHARGE_NM                                     /*정산담당자명*/
+		     , SC.SETTLE_CHARGE_TELNO                                  /*정산담당자전화번호*/
+		     , SC.SETTLE_CHARGE_EMAIL                                  /*정산담당자이메일*/
+		     , SC.BILL_EMAIL                                           /*계산서이메일*/
+		     , SC.ECONTRACT_YN                                         /*전자계약여부*/
+		     , SC.REMARKS                                              /*비고*/
+		     , SC.USE_YN                                               /*사용여부*/
+		     , SC.NOTE                                                 /*배송안내*/
+		FROM   TB_SUPPLY_COMPANY SC
+		     , TB_SUPPLY_VENDOR SV
+		WHERE  SC.SUPPLY_VENDOR_CD = SV.SUPPLY_VENDOR_CD
+		<if test="supplyStat != null and supplyStat != ''">
+		AND    SC.SUPPLY_STAT = #{supplyStat}
+		</if>
+		<if test="searchTxt != null and searchTxt != ''">
+		    <if test='searchGb == "NAME"'>
+		AND    (
+		        UPPER(SC.SUPPLY_COMP_NM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
+		        OR
+		        UPPER(SV.SUPPLY_VENDOR_NM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
+		       )
+		    </if>
+		    <if test='searchGb == "OWNER"'>
+		AND    UPPER(SV.OWNER_NM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
+		    </if>
+		</if>
+		<if test="econtractYn != null and econtractYn != ''">
+		AND    SC.ECONTRACT_YN = #{econtractYn}
+		</if>
+		<if test="supplyCompCd != null and supplyCompCd != ''"> <!-- 브랜드관리 화면에서 사용 -->
+		AND    SC.SUPPLY_COMP_CD = #{supplyCompCd}
+		</if>
+		<if test="multiSupplyCompCd != null and multiSupplyCompCd.length > 0">
+		AND    SC.SUPPLY_COMP_CD IN
+		    <foreach collection="multiSupplyCompCd" item="item" index="index"  open="(" close=")" separator=",">
+		UPPER(#{item})
+		    </foreach>
+		</if>
+		<if test="multiSupplyCompNm != null and multiSupplyCompNm.length > 0">
+		AND (
+		    <foreach collection="multiSupplyCompNm" item="item" index="index" separator="or">
+		    UPPER(SC.SUPPLY_COMP_NM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		    </foreach>
+		 )
+		</if>
+		<if test='selfYn != null and (selfYn == "Y" or selfYn == "N")'>
+		<choose>
+		    <when test='selfYn  == "Y"'>
+		AND    SC.DISTRIBUTION_GB IN ('G065_10','G065_11','G065_12') 
+		    </when>
+		    <otherwise>
+		AND    SC.DISTRIBUTION_GB IN ('G065_20')
+		    </otherwise>
+		</choose>
+		</if>
+	</select>
+	
+	<!-- 공급업체 생성 -->
+	<insert id="createSupplyCompany" parameterType="SupplyCompany">
+		/* TsaBusiness.createSupplyCompany */
+		INSERT INTO TB_SUPPLY_COMPANY (
+		       SUPPLY_COMP_CD
+		     , SUPPLY_COMP_NM
+		     , SUPPLY_VENDOR_CD
+		     , PROVIDER_NO
+		     , DISTRIBUTION_GB
+		     , SHOT_DELV_YN
+		     , SUPPLY_STAT
+		     , SELL_FEE_RATE
+		     , SETTLE_DAY
+		     , BANK_CD
+		     , ACCOUNT_NO
+		     , DEPOSITOR_NM
+		     , CS_CHARGE_NM
+		     , CS_CHARGE_TELNO
+		     , SETTLE_CHARGE_NM
+		     , SETTLE_CHARGE_TELNO
+		     , SETTLE_CHARGE_EMAIL
+		     , BILL_EMAIL
+		     , ECONTRACT_YN
+		     , REMARKS
+		     , USE_YN
+		     , NOTE
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       (SELECT IFNULL(MAX(SUPPLY_COMP_CD),0) + 1
+		        FROM   TB_SUPPLY_COMPANY Z
+		       )
+		     , #{supplyCompNm}
+		     , #{supplyVendorCd}
+		     , (SELECT CASE WHEN MAX(PROVIDER_NO) IS NULL THEN
+		                        40000 /* AS-IS 최대 수보다 크게 수정해야함*/
+		                    ELSE
+		                        MAX(PROVIDER_NO) + 1
+		               END
+		        FROM   TB_SUPPLY_COMPANY Z
+		        WHERE  PROVIDER_NO > 40000 /* AS-IS 최대 수보다 크게 크게 수정해야함*/
+		       )
+		     , #{distributionGb}
+		     , #{shotDelvYn}
+		     , #{supplyStat}
+		     , IFNULL(#{sellFeeRate},0.0)
+		     , #{settleDay}
+		     , #{bankCd}
+		     , #{accountNo}
+		     , #{depositorNm}
+		     , #{csChargeNm}
+		     , #{csChargeTelno}
+		     , #{settleChargeNm}
+		     , #{settleChargeTelno}
+		     , #{settleChargeEmail}
+		     , #{billEmail}
+		     , #{econtractYn}
+		     , #{remarks}
+		     , #{useYn}
+		     , #{note}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+	</insert>
+	
+	<!-- 공급업체 수정 -->
+	<update id="updateSupplyCompany" parameterType="SupplyCompany">
+		/* TsaBusiness.updateSupplyCompany */
+		UPDATE TB_SUPPLY_COMPANY
+		SET    SUPPLY_COMP_NM = #{supplyCompNm}
+		     , SUPPLY_VENDOR_CD = #{supplyVendorCd}
+		     , DISTRIBUTION_GB = #{distributionGb}
+		     , SHOT_DELV_YN = #{shotDelvYn}
+		     , SUPPLY_STAT = #{supplyStat}
+		     , SELL_FEE_RATE = IFNULL(#{sellFeeRate},0.0)
+		     , SETTLE_DAY = #{settleDay}
+		     , BANK_CD = #{bankCd}
+		     , ACCOUNT_NO = #{accountNo}
+		     , DEPOSITOR_NM = #{depositorNm}
+		     , CS_CHARGE_NM = #{csChargeNm}
+		     , CS_CHARGE_TELNO = #{csChargeTelno}
+		     , SETTLE_CHARGE_NM = #{settleChargeNm}
+		     , SETTLE_CHARGE_TELNO = #{settleChargeTelno}
+		     , SETTLE_CHARGE_EMAIL = #{settleChargeEmail}
+		     , BILL_EMAIL = #{billEmail}
+		     , ECONTRACT_YN = #{econtractYn}
+		     , REMARKS = #{remarks}
+		     , USE_YN = #{useYn}
+		     , NOTE = #{note}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  SUPPLY_COMP_CD = #{supplyCompCd}
+	</update>
+	
+	<!-- 배송비정책 목록 -->
+	<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}
+		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(IFNULL(SUPPLY_COMP_CD,#{supplyCompCd}),'_',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  1 = 1
+		<choose>
+		    <when test="distributionGb == 'G065_20'"> <!-- 입점-위탁 -->
+		AND    DELV_FEE_CD = #{delvFeeCd}
+		    </when>
+		    <otherwise>
+		AND    SUPPLY_COMP_CD IN (SELECT SUPPLY_COMP_CD
+		                          FROM   TB_SUPPLY_COMPANY
+		                          WHERE  DISTRIBUTION_GB != 'G065_20' /*자사*/
+		                         )
+		    </otherwise>
+		</choose>
+	</update>
+	
+	<!-- 출고처 목록 -->
+	<select id="getDeliveryLocList" parameterType="DeliveryLoc" resultType="DeliveryLoc">
+		/* TsaBusiness.getDeliveryLocList */
+		SELECT DELV_LOC_CD        /*출고처코드*/
+		     , DELV_LOC_NM        /*출고처명*/
+		     , SUPPLY_COMP_CD     /*공급업체코드*/
+		     , DELV_LOC_CLSF      /*출고처분류*/
+		     , DELV_ASSIGN_ORD    /*출고지정순서*/
+		     , DELV_ASSIGN_GRADE  /*출고지정등급*/
+		     , STOCK_APPL_RATE    /*재고적용율*/
+		     , DELV_FEE_RATE      /*출고수수료율*/
+		     , DELV_LOC_ZIPCODE   /*출고처우편번호*/
+		     , DELV_LOC_BASE_ADDR /*출고처기본주소*/
+		     , DELV_LOC_DTL_ADDR  /*출고처상세주소*/
+		     , RTN_LOC_ZIPCODE    /*반품처우편번호*/
+		     , RTN_LOC_BASE_ADDR  /*반품처기본주소*/
+		     , RTN_LOC_DTL_ADDR   /*반품처상세주소*/
+		     , RTN_LOC_NM         /*반품처명*/
+		     , INVOICE_PRINT_TYPE /*송장출력형태*/
+		     , USE_YN             /*사용여부*/
+		FROM   TB_DELIVERY_LOC
+		WHERE  1 = 1
+		<if test="supplyCompCd != null and supplyCompCd != ''">
+		AND    SUPPLY_COMP_CD = #{supplyCompCd}
+		</if>
+		<if test="delvLocNm != null and delvLocNm !=''">
+		AND    LOWER(DELV_LOC_NM) LIKE CONCAT('%',LOWER(#{delvLocNm}),'%')
+		</if>
+		<if test="delvLocClsf != null and delvLocClsf != ''">
+		AND    DELV_LOC_CLSF = #{delvLocClsf}
+		</if>
+		<if test="useYn != null and useYn != ''">
+		AND    USE_YN = #{useYn}
+		</if>
+		ORDER  BY DELV_LOC_CD
+	</select>
+
+	<!-- 출고처 저장 -->
+	<insert id="saveDeliveryLoc" parameterType="DeliveryLoc">
+		/*  TsaBusiness.saveDeliveryInfo */
+		INSERT INTO TB_DELIVERY_LOC (
+		       DELV_LOC_CD
+		     , DELV_LOC_NM
+		     , SUPPLY_COMP_CD
+		     , DELV_LOC_CLSF
+		     , DELV_ASSIGN_ORD
+		     , DELV_ASSIGN_GRADE
+		     , STOCK_APPL_RATE
+		     , DELV_FEE_RATE
+		     , DELV_LOC_ZIPCODE
+		     , DELV_LOC_BASE_ADDR
+		     , DELV_LOC_DTL_ADDR
+		     , RTN_LOC_ZIPCODE
+		     , RTN_LOC_BASE_ADDR
+		     , RTN_LOC_DTL_ADDR
+		     , RTN_LOC_NM
+		     , INVOICE_PRINT_TYPE
+		     , USE_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{delvLocCd}
+		     , #{delvLocNm}
+		     , #{supplyCompCd}
+		     , #{delvLocClsf}
+		     , CASE WHEN #{delvLocClsf} IN ('G024_10','G024_21') THEN /*물류창고,직송매장*/
+		                IFNULL(#{delvAssignOrd},100)
+		            ELSE
+		                #{delvAssignOrd}
+		       END
+		     , #{delvAssignGrade}
+		     , CASE WHEN #{delvLocClsf} IN ('G024_10','G024_21') AND #{stockApplRate} = 0.0 THEN /*물류창고,직송매장*/
+		                IFNULL(#{stockApplRate},100.0)
+		            ELSE
+		                #{stockApplRate}
+		       END
+		     , CASE WHEN #{delvLocClsf} = 'G024_21' THEN /*직송매장*/
+		                IFNULL(#{delvFeeRate},0.0)
+		            ELSE
+		                #{delvFeeRate}
+		       END
+		     , #{delvLocZipcode}
+		     , #{delvLocBaseAddr}
+		     , #{delvLocDtlAddr}
+		     , #{rtnLocZipcode}
+		     , #{rtnLocBaseAddr}
+		     , #{rtnLocDtlAddr}
+		     , #{rtnLocNm}
+		     , #{invoicePrintType}
+		     , #{useYn}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       DELV_LOC_NM = #{delvLocNm}
+		     , DELV_LOC_CLSF = #{delvLocClsf}
+		     , DELV_ASSIGN_ORD = CASE WHEN #{delvLocClsf} IN ('G024_10','G024_21') THEN /*물류창고,직송매장*/
+		                                  IFNULL(#{delvAssignOrd},100)
+		                              ELSE
+		                                  #{delvAssignOrd}
+		                         END
+		     , DELV_ASSIGN_GRADE = #{delvAssignGrade}
+		     , STOCK_APPL_RATE = CASE WHEN #{delvLocClsf} IN ('G024_10','G024_21') AND #{stockApplRate} = 0.0 THEN /*물류창고,직송매장*/
+		                                  100
+		                              ELSE
+		                                  #{stockApplRate}
+		                         END
+		     , DELV_FEE_RATE = CASE WHEN #{delvLocClsf} = 'G024_21' THEN /*직송매장*/
+		                                IFNULL(#{delvFeeRate},0.0)
+		                            ELSE
+		                                #{delvFeeRate}
+		                       END
+		     , DELV_LOC_ZIPCODE = #{delvLocZipcode}
+		     , DELV_LOC_BASE_ADDR = #{delvLocBaseAddr}
+		     , DELV_LOC_DTL_ADDR = #{delvLocDtlAddr}
+		     , RTN_LOC_ZIPCODE = #{rtnLocZipcode}
+		     , RTN_LOC_BASE_ADDR = #{rtnLocBaseAddr}
+		     , RTN_LOC_DTL_ADDR = #{rtnLocDtlAddr}
+		     , RTN_LOC_NM = #{rtnLocNm}
+		     , INVOICE_PRINT_TYPE = #{invoicePrintType}
+		     , USE_YN = #{useYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</insert>
+	
+	<!-- 브랜드 목록 -->
+	<select id="getBrandList" parameterType="Brand" resultType="Brand">
+		/* TsaBusiness.getBrandList */
+		SELECT CASE WHEN A.SELF_YN = 'Y' THEN 'S'
+		            ELSE 'E'
+		       END               AS BRAND_GB /*브랜드구분*/
+		     , A.BRAND_CD                    /*브랜드코드*/
+		     , A.BRAND_ENM                   /*브랜드영문명*/
+		     , A.BRAND_KNM                   /*브랜드한글명*/
+		     , A.DISTRIBUTION_GB             /*유통구분*/
+		     , A.ERP_BRAND_CD                /*ERP브랜드코드*/
+		     , A.SELF_YN                     /*자사여부*/
+		     , A.USE_YN                      /*사용여부*/
+		     , A.PNT_PRATE10                 /*포인트적립율(PC)*/
+		     , A.PNT_MRATE10                 /*포인트적립율(모바일)*/
+		     , A.PNT_PRATE20                 /*포인트적립율(PC)*/
+		     , A.PNT_MRATE20                 /*포인트적립율(모바일)*/
+		     , A.DISP_ORD                    /*표시순서*/
+		     , (CASE WHEN D.DISP_NM_LANG = 'EN' THEN D.BRAND_GROUP_ENM ELSE D.BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
+		     , A.BRAND_GROUP_NO
+		FROM   TB_BRAND A
+		INNER JOIN TB_BRAND_GROUP D ON A.BRAND_GROUP_NO = D.BRAND_GROUP_NO
+		                            AND D.USE_YN = 'Y'
+		<if test='supplyCompCd != null and supplyCompCd != ""'>
+		INNER JOIN TB_BRAND_SUPPLY C ON A.BRAND_CD = C.BRAND_CD
+		INNER JOIN TB_SUPPLY_COMPANY B ON C.SUPPLY_COMP_CD = B.SUPPLY_COMP_CD
+		</if>
+		WHERE  1 = 1
+		<if test='supplyCompCd != null and supplyCompCd != ""'>
+		AND    C.SUPPLY_COMP_CD = #{supplyCompCd}
+		</if>
+		<if test='distributionGb != null and distributionGb != ""'>
+		AND    A.DISTRIBUTION_GB = #{distributionGb}
+		</if>
+		<if test='erpBrandCd != null and erpBrandCd != ""'>
+		AND    A.ERP_BRAND_CD =  #{erpBrandCd}
+		</if>
+		<if test='brandCd != null and brandCd != ""'>
+		AND    A.BRAND_CD = #{brandCd}
+		</if>
+		<if test="searchTxt != null and searchTxt != ''">
+		AND    (
+		        UPPER(A.BRAND_ENM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
+		        OR
+		        UPPER(A.BRAND_KNM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
+		        OR
+		        UPPER(A.BRAND_CD) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
+		        OR
+		        UPPER(D.BRAND_GROUP_KNM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
+		        OR
+		        UPPER(D.BRAND_GROUP_ENM) LIKE CONCAT('%',UPPER(#{searchTxt}),'%')
+		       )
+		</if>
+		<if test="multiBrandCd != null and multiBrandCd.length > 0">
+		AND    A.BRAND_CD IN
+		    <foreach collection="multiBrandCd" item="item" index="index"  open="(" close=")" separator=",">
+		UPPER(#{item})
+		    </foreach>
+		</if>
+		<if test="multiBrandNm != null and multiBrandNm.length > 0">
+		AND (
+		    <foreach collection="multiBrandNm" item="item" index="index" separator="or">
+		    (
+		    UPPER(A.BRAND_ENM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		    OR
+		    UPPER(A.BRAND_KNM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		    )
+		  </foreach>
+		 )
+		</if>
+		<if test='useYn != null and useYn != ""'>
+		AND    A.USE_YN = #{useYn}
+		</if>
+		<if test='selfYn != null and selfYn != ""'>
+		AND    A.SELF_YN = #{selfYn}
+		</if>
+		ORDER  BY A.SELF_YN DESC,  A.DISP_ORD
+	</select>
+	
+	<!-- 담당MD 목록 -->
+	<select id="getMdList" parameterType="String" resultType="BrandMd">
+		/* TsaBusiness.getMdList */
+		SELECT USER_NO AS MD_NO
+		     , USER_NM AS MD_NM
+		     , USER_ID
+		FROM   TB_USER
+		WHERE   1 = 1
+		/* AND ROLE_CD = 'G001_A101'  */  /*MD권한*/
+		<if test="mdNm != null and mdNm != ''">
+		AND    LOWER(USER_NM) LIKE CONCAT('%',LOWER(#{mdNm}),'%')
+		</if>
+		AND    USE_YN  = 'Y'
+		ORDER  BY USER_NM
+	</select>
+	
+	<!-- 브랜드담당MD 목록 -->
+	<select id="getBrandMdList" parameterType="String" resultType="BrandMd">
+		/* TsaBusiness.getBrandMdList */
+		SELECT A.FORMAL_GB           /*정상이월구분*/
+		     , A.MD_NO               /*담당MD번호*/
+		     , B.USER_NM    AS MD_NM /*담당MD명*/
+		FROM   TB_BRAND_MD A
+		     , TB_USER B
+		WHERE  A.MD_NO = B.USER_NO
+		AND    A.BRAND_CD = #{brandCd}
+	</select>
+	
+	<!-- 브랜드담당MD 삭제 -->
+	<delete id="deleteBrandMd" parameterType="String">
+		/* TsaBusiness.deleteBrandMd */
+		DELETE
+		FROM   TB_BRAND_MD
+		WHERE  BRAND_CD = #{brandCd}
+	</delete>
+
+	<!-- 브랜드담당MD 등록 -->
+	<insert id="createBrandMd" parameterType="BrandMd">
+		/* TsaBusiness.createBrandMd */
+		INSERT INTO TB_BRAND_MD (
+		       BRAND_CD
+		     , FORMAL_GB
+		     , MD_NO
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		SELECT #{brandCd}  AS BRAND_CD
+		     , CD          AS FORMAL_GB
+		     , #{mdNo}     AS MD_NO
+		     , #{regNo}    AS REG_NO
+		     , NOW()       AS REG_DT
+		     , #{updNo}    AS UPD_NO
+		     , NOW()       AS UPD_DT
+		FROM   TB_COMMON_CODE
+		WHERE  CD_GB = 'G009' /*정상이월구분*/
+		AND    CD IN ('G009_10','G009_20') /*정상,이월*/
+		AND    USE_YN = 'Y'
+	</insert>
+	
+	<!-- 브랜드 노출사이트 목록 -->
+	<select id="getBrandSiteList" parameterType="String" resultType="SiteBrand">
+		/* TsaBusiness.getBrandSiteList */
+		SELECT BRAND_CD
+		     , SITE_CD
+		     , DISP_ORD
+		     , USE_YN
+		     , CATE1_NO
+		FROM   TB_SITE_BRAND
+		WHERE  BRAND_CD = #{brandCd}
+		AND    USE_YN ='Y'
+	</select>
+	
+	<!-- 브랜드 노출사이트 등록/수정 -->
+	<insert id="saveBrandSite" parameterType="SiteBrand">
+		/* TsaBusiness.saveBrandSite */
+		INSERT INTO TB_SITE_BRAND (
+		       SITE_CD
+		     , BRAND_CD
+		     , DISP_ORD
+		     , USE_YN
+		     , CATE1_NO
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{siteCd}
+		     , #{brandCd}
+		     , #{dispOrd}
+		     , #{useYn}
+		     , #{cate1No}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       USE_YN = #{useYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</insert>
+	
+	<!-- 브랜드 공급업체 목록 -->
+	<select id="getBrandSupplyList" parameterType="String" resultType="Brand">
+		/* TsaBusiness.getBrandSupplyList */
+		SELECT A.BRAND_CD
+		     , A.SUPPLY_COMP_CD
+		     , B.SUPPLY_COMP_NM
+		     , A.REG_NO
+		     , FN_GET_USER_NM(A.REG_NO) AS REG_NM
+		     , DATE_FORMAT(A.REG_DT, '%Y%m%d%H%i%S') AS REG_DT
+		FROM   TB_BRAND_SUPPLY A
+		INNER JOIN TB_SUPPLY_COMPANY B ON A.SUPPLY_COMP_CD = B.SUPPLY_COMP_CD
+		WHERE  BRAND_CD = #{brandCd}
+	</select>
+	
+	<!-- 브랜드 등록 -->
+	<insert id="createBrand" parameterType="Brand" >
+		/* TsaBusiness.createBrand */
+		<selectKey keyProperty="brandCd" resultType="String" order="BEFORE">
+			 (SELECT CONCAT(#{brandGb},IFNULL(LPAD(CAST(SUBSTRING(MAX(BRAND_CD),2) AS UNSIGNED) + 1,4,'0'),'0000'))
+		        FROM   TB_BRAND Z
+		        WHERE  BRAND_CD LIKE CONCAT(#{brandGb},'%')
+		       )
+		</selectKey>
+		
+		INSERT INTO TB_BRAND (
+		       BRAND_CD
+		     , BRAND_ENM
+		     , BRAND_KNM
+		     , DISTRIBUTION_GB
+		     , SELF_YN
+		     , ERP_BRAND_CD
+		     , PNT_PRATE10
+		     , PNT_MRATE10
+		     , PNT_PRATE20
+		     , PNT_MRATE20
+		     , DISP_ORD
+		     , USE_YN
+		     , BRAND_NO
+		     , BRAND_GROUP_NO
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{brandCd}
+		     , #{brandEnm}
+		     , #{brandKnm}
+		     , #{distributionGb}
+		     , CASE WHEN #{distributionGb} IN ('G065_10','G065_11','G065_12') THEN 'Y'
+		            ELSE 'N'
+		       END
+		     , #{erpBrandCd}
+		     , IFNULL(#{pntPrate10},0)
+		     , IFNULL(#{pntMrate10},0)
+		     , IFNULL(#{pntPrate20},0)
+		     , IFNULL(#{pntMrate20},0)
+		     , #{dispOrd}
+		     , #{useYn}
+		     , (SELECT CASE WHEN MAX(BRAND_NO) IS NULL THEN 30000   /* AS-IS 최대 수보다 크게 설정해야 함 */
+		               ELSE (MAX(BRAND_NO) + 1) END
+		        FROM   TB_BRAND Z
+		        WHERE  1 = 1
+		        AND BRAND_NO > 29999                  /* AS-IS 최대 수보다 크게 크게 설정해야 함*/
+		       ) 
+		     , #{brandGroupNo}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+	</insert>
+	
+	<!-- 브랜드 수정 -->
+	<insert id="updateBrand" parameterType="Brand">
+		/* TsaBusiness.updateBrand */
+		UPDATE TB_BRAND
+		SET    BRAND_ENM = #{brandEnm}
+		     , BRAND_KNM = #{brandKnm}
+		     , DISTRIBUTION_GB = #{distributionGb}
+		     , SELF_YN = CASE WHEN #{distributionGb} IN ('G065_10','G065_11','G065_12') THEN 'Y'
+		                      ELSE 'N'
+		                 END
+		     , ERP_BRAND_CD = #{erpBrandCd}
+		     , PNT_PRATE10 = IFNULL(#{pntPrate10},0)
+		     , PNT_MRATE10 = IFNULL(#{pntMrate10},0)
+		     , PNT_PRATE20 = IFNULL(#{pntPrate20},0)
+		     , PNT_MRATE20 = IFNULL(#{pntMrate20},0)
+		     , DISP_ORD = #{dispOrd}
+		     , USE_YN = #{useYn}
+		     , BRAND_GROUP_NO = #{brandGroupNo}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  BRAND_CD = #{brandCd}
+	</insert>
+	
+	<!-- 브랜드별 업체 정보 저장 -->
+	<insert id="saveBrandSupply" parameterType="Brand">
+		/* TsaBusiness.saveBrandSupply */
+		INSERT INTO TB_BRAND_SUPPLY ( 
+		    BRAND_CD
+		  , SUPPLY_COMP_CD
+		  , REG_NO
+		  , REG_DT
+		)
+		VALUES
+		(   #{brandCd}
+		  , #{supplyCompCd}
+		  , #{regNo}
+		  , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		     SUPPLY_COMP_CD = #{supplyCompCd} -- 무의미한 데이터
+	</insert>
+	
+	<!-- 재고연계관리 - 출고처 목록 -->
+	<select id="getStockSyncDeliveryLocList" parameterType="DeliveryLoc" resultType="DeliveryLoc">
+		/* TsaBusiness.getStockSyncDeliveryLocList */
+		SELECT SUPPLY_COMP_CD
+		     , DELV_LOC_CD
+		     , DELV_LOC_NM
+		     , DELV_LOC_CLSF
+		     , FN_GET_CODE_NM('G024',DELV_LOC_CLSF) AS DELV_LOC_CLSF_NM
+		FROM   TB_DELIVERY_LOC
+		WHERE  SUPPLY_COMP_CD = #{supplyCompCd}
+		AND    DELV_LOC_CLSF IN ('G024_10','G024_21') /*물류창고,직송매장*/
+		<if test="delvLocClsf != null and delvLocClsf != ''">
+		AND    DELV_LOC_CLSF = #{delvLocClsf}
+		</if>
+		<if test="searchTxt != null and searchTxt != ''">
+		    <if test="searchGb == 'CODE'">
+		AND    DELV_LOC_CD = #{delvLocCd}
+		    </if>
+		    <if test="searchGb == 'NAME'">
+		AND    DELV_LOC_NM like CONCAT('%',#{delvLocNm},'%')
+		    </if>
+		</if>
+		AND    USE_YN = 'Y'
+		ORDER  BY DELV_LOC_NM
+	</select>
+
+	<!-- 재고연계관리 - 재고연계기준 목록 -->
+	<select id="getStockSyncBaseList" parameterType="StockSyncBase" resultType="StockSyncBase">
+		/* TsaBusiness.getStockSyncBaseList */
+		SELECT X.DELV_LOC_CD
+		     , X.BRAND_CD
+		     , X.ERP_BRAND_CD
+		     , X.BRAND_KNM
+		     , X.BRAND_ENM
+		     , IFNULL(Y.STOCK_SYNC_YN,'N') AS PREV_STOCK_SYNC_YN /*이전재고연계여부*/
+		     , IFNULL(Y.STOCK_SYNC_YN,'N') AS STOCK_SYNC_YN      /*재고연계여부*/
+		     , IFNULL(Y.DELV_SYNC_YN,'N')  AS PREV_DELV_SYNC_YN  /*이전출고연계여부*/
+		     , IFNULL(Y.DELV_SYNC_YN,'N')  AS DELV_SYNC_YN       /*출고연계여부*/
+		FROM   (
+		        SELECT A.DELV_LOC_CD
+		             , B.BRAND_CD
+		             , B.ERP_BRAND_CD
+		             , B.BRAND_KNM
+		             , B.BRAND_ENM
+		        FROM   TB_DELIVERY_LOC A
+		             , TB_BRAND B
+		             , TB_BRAND_SUPPLY C 
+		        WHERE  A.SUPPLY_COMP_CD  = C.SUPPLY_COMP_CD
+		        AND    B.BRAND_CD = C.BRAND_CD 
+		        AND    A.SUPPLY_COMP_CD = #{supplyCompCd}
+		        AND    A.DELV_LOC_CD = #{delvLocCd}
+		        AND    A.USE_YN = 'Y'
+		       ) X
+		LEFT OUTER JOIN TB_STOCK_SYNC_BASE Y ON X.DELV_LOC_CD = Y.DELV_LOC_CD
+		                                    AND X.BRAND_CD = Y.BRAND_CD
+		ORDER BY X.DELV_LOC_CD, X.BRAND_CD
+	</select>
+
+	<!-- 재고연계관리 - 재고연계기준 저장 -->
+	<insert id="saveStockSyncBase" parameterType="StockSyncBase">
+		/* TsaBusiness.saveStockSyncBase */
+		INSERT INTO TB_STOCK_SYNC_BASE (
+		       DELV_LOC_CD
+		     , BRAND_CD
+		     , FORMAL_GB
+		     , STOCK_SYNC_YN
+		     , DELV_SYNC_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{delvLocCd}
+		     , #{brandCd}
+		     , IFNULL(#{formalGb},'G009_10')
+		     , #{stockSyncYn}
+		     , #{delvSyncYn}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       STOCK_SYNC_YN = #{stockSyncYn}
+		     , DELV_SYNC_YN = #{delvSyncYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</insert>
+
+	<!-- 판매매장 목록  -->
+	<select id="getSellStoreList" parameterType="SellStore" resultType="SellStore">
+		/* TsaBusiness.getSellStoreList */
+		SELECT SELL_STORE_CD
+		     , SELL_STORE_NM
+		     , USE_YN
+		FROM   TB_SELL_STORE
+		WHERE  1 = 1
+		<if test="sellStoreNm != null and sellStoreNm != ''">
+		AND    LOWER(SELL_STORE_NM) LIKE CONCAT('%',LOWER(#{sellStoreNm}),'%')
+		</if>
+		<if test="useYn != null and useYn != ''">
+		AND    USE_YN = #{useYn}
+		</if>
+		ORDER  BY SELL_STORE_NM
+	</select>
+
+	<!-- 판매매장 등록/수정 -->
+	<insert id="saveSellStore" parameterType="SellStore">
+		/* TsaBusiness.saveSellStore */
+		INSERT INTO TB_SELL_STORE (
+		       SUPPLY_COMP_CD
+		     , SELL_STORE_CD
+		     , SELL_STORE_NM
+		     , USE_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{supplyCompCd}
+		     , #{sellStoreCd}
+		     , #{sellStoreNm}
+		     , #{useYn}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       SELL_STORE_CD = #{sellStoreCd}
+		     , SELL_STORE_NM = #{sellStoreNm}
+		     , USE_YN = #{useYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</insert>
+	
+	<!-- 제휴링크 목록 -->
+	<select id="getAflinkList" parameterType="Aflink" resultType="Aflink">
+		/*  TsaBusiness.getAflinkList */
+		SELECT AF_LINK_CD
+		     , AF_LINK_NM
+		     , AF_CHANNEL
+		     , FEE_RATE
+		     , DISP_ORD
+		     , USE_YN
+		FROM   TB_AF_LINK
+		WHERE  1 = 1
+		<if test="afChannel != null and afChannel != ''">
+		AND    AF_CHANNEL = #{afChannel}
+		</if>
+	</select>
+
+	<!-- 제휴링크 저장 -->
+	<insert id="saveAflink" parameterType="Aflink">
+		/* TsaBusiness.saveAflink */
+		INSERT INTO TB_AF_LINK (
+		       AF_LINK_CD
+		     , AF_LINK_NM
+		     , AF_CHANNEL
+		     , FEE_RATE
+		     , DISP_ORD
+		     , USE_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{afLinkCd}
+		     , #{afLinkNm}
+		     , #{afChannel}
+		     , #{feeRate}
+		     , #{dispOrd}
+		     , #{useYn}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       AF_LINK_NM = #{afLinkNm}
+		     , AF_CHANNEL = #{afChannel}
+		     , FEE_RATE = #{feeRate}
+		     , DISP_ORD = #{dispOrd}
+		     , USE_YN = #{useYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</insert>
+
+	<!-- 제휴링크 삭제 -->
+	<update id="deleteAflink" parameterType="Aflink">
+		/* TsaBusiness.deleteAflink */
+		UPDATE TB_AF_LINK
+		SET    USE_YN = 'N'
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  AF_LINK_CD = #{afLinkCd}
+	</update>
+	
+	<!-- 배송업체관리 목록 -->
+	<select id="getShipCompanyList" resultType="ShipCompany">
+		/* TsaBusiness.getShipCompanyList */
+		SELECT SHIP_COMP_CD
+		     , SHIP_COMP_NM
+		     , TRACKING_URL
+		     , USE_YN
+		FROM   TB_SHIP_COMPANY
+		ORDER  BY SHIP_COMP_CD
+	</select>
+
+	<!-- 배송업체관리 저장 -->
+	<insert id="saveShipCompany" parameterType="ShipCompany">
+		/* TsaBusiness.saveShipCompany */
+		INSERT INTO TB_SHIP_COMPANY (
+		       SHIP_COMP_CD
+		     , SHIP_COMP_NM
+		     , TRACKING_URL
+		     , USE_YN
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{shipCompCd}
+		     , #{shipCompNm}
+		     , #{trackingUrl}
+		     , #{useYn}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+		ON DUPLICATE KEY UPDATE
+		       SHIP_COMP_NM = #{shipCompNm}
+		     , TRACKING_URL = #{trackingUrl}
+		     , USE_YN = #{useYn}
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+	</insert>
+	
+	<!-- 배송업체관리 삭제 -->
+	<update id="deleteShipCompany" parameterType="ShipCompany">
+		/* TsaBusiness.updateShipCompany */
+		UPDATE TB_SHIP_COMPANY
+		SET    USE_YN = 'N'
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  SHIP_COMP_CD=  #{shipCompCd}
+	</update>
+	
+	<!-- 브랜드 그룹 목록 -->
+	<select id="getBrandGroupList" parameterType="String" resultType="BrandGroup">
+		/* TsaBusiness.getBrandGroupList */
+		SELECT A.BRAND_GROUP_NO
+		     , A.BRAND_GROUP_ENM
+		     , A.BRAND_GROUP_KNM
+		     , A.DISP_NM_LANG
+		     , A.LOGO_FILE_NM
+		     , A.BW_LOGO_FILE_NM
+		     , A.RGB_CD
+		     , A.DISP_ORD
+		     , A.DEFAULT_CATE_YN
+		     , A.BRAND_CATE_NO
+		     , (CASE WHEN DISP_NM_LANG = 'EN' THEN BRAND_GROUP_ENM ELSE BRAND_GROUP_KNM END) AS BRAND_GROUP_NM
+		FROM   TB_BRAND_GROUP A
+		WHERE 1 = 1
+		<if test="multiBrandGroupNo != null and multiBrandGroupNo.length > 0">
+		AND    A.BRAND_GROUP_NO IN
+		    <foreach collection="multiBrandGroupNo" item="item" index="index"  open="(" close=")" separator=",">
+		UPPER(#{item})
+		    </foreach>
+		</if>
+		<if test="multiBrandGroupNm != null and multiBrandGroupNm.length > 0">
+		AND (
+		    <foreach collection="multiBrandGroupNm" item="item" index="index" separator="or">
+		    (
+		    UPPER(A.BRAND_GROUP_ENM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		    OR
+		    UPPER(A.BRAND_GROUP_KNM) LIKE CONCAT('%',UPPER(#{item}),'%')
+		    )
+		  </foreach>
+		 )
+		</if>
+		ORDER  BY A.BRAND_GROUP_KNM
+	</select>
+	
+	<!-- 브랜드 그룹 등록 -->
+	<insert id="createBrandGroup" parameterType="BrandGroup" >
+		/* TsaBusiness.createBrandGroup */
+		INSERT INTO TB_BRAND_GROUP (
+		       BRAND_GROUP_NO
+		     , BRAND_GROUP_ENM
+		     , BRAND_GROUP_KNM
+		     , DISP_NM_LANG
+		     , RGB_CD
+		     , LOGO_FILE_NM
+		     , BW_LOGO_FILE_NM
+		     , DEFAULT_CATE_YN
+		     , BRAND_CATE_NO
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       (SELECT CASE WHEN MAX(BRAND_GROUP_NO) IS NULL THEN 30000
+		               ELSE (MAX(BRAND_GROUP_NO) + 1) END
+		        FROM   TB_BRAND_GROUP Z
+		        WHERE  1 = 1
+		        AND BRAND_GROUP_NO > 29999
+		       ) 
+		     , #{brandGroupEnm}
+		     , #{brandGroupKnm}
+		     , #{dispNmLang}
+		     , IFNULL(NULLIF(#{rgbCd},''),'222222')
+		     , #{logoFileNm}
+		     , #{bwLogoFileNm}
+		     , #{defaultCateYn}
+		     , #{brandCateNo}
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+	</insert>
+	
+	<!-- 브랜드 그룹 수정 -->
+	<update id="updateBrandGroup" parameterType="BrandGroup">
+		/* TsaBusiness.updateBrandGroup */
+		UPDATE TB_BRAND_GROUP
+		SET    BRAND_GROUP_ENM = #{brandGroupEnm}
+		     , BRAND_GROUP_KNM = #{brandGroupKnm}
+		     , DISP_NM_LANG = #{dispNmLang}
+		     , RGB_CD = IFNULL(NULLIF(#{rgbCd},''),'222222')
+		     , LOGO_FILE_NM = #{logoFileNm}
+		     , BW_LOGO_FILE_NM = #{bwLogoFileNm}
+		     , DEFAULT_CATE_YN = IFNULL(#{defaultCateYn},'Y')
+		     <if test="brandCateNo != null and brandCateNo > 0">
+		     , BRAND_CATE_NO =  #{brandCateNo}
+		     </if>
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  BRAND_GROUP_NO = #{brandGroupNo}
+	</update>
+	
+	<!-- 휴무일 목록 -->
+	<select id="getHolidayList" parameterType="Bizday" resultType="Bizday">
+		/* TsaBusiness.getHolidayList */
+		SELECT DATE_FORMAT(BIZDAY,'%Y-%m-%d') AS BIZDAY /*영업일*/
+		     , WEEK_DAY                                 /*요일*/
+		     , BIZDAY_YN                                /*영업일여부*/
+		     , RESTDAY_DESC                             /*휴무일설명*/
+		FROM   TB_BIZDAY
+		WHERE  1= 1
+		AND    BIZDAY <![CDATA[>=]]> #{startDt}
+		AND    BIZDAY <![CDATA[<]]> #{endDt}
+		AND    BIZDAY_YN = 'N' /*영업일이 아닌 넘만*/
+	</select>
+	
+	<!-- 영업일여부 조회 -->
+	<select id="getBizdayYn" parameterType="String" resultType="String">
+		/* TsaBusiness.getBizdayYn */
+		SELECT BIZDAY_YN
+		FROM   TB_BIZDAY
+		WHERE  BIZDAY = #{bizday}
+	</select>
+
+	<!-- 영업일 생성 -->
+	<insert id="createBizday" parameterType="Bizday">
+		/*  TsaBusiness.saveBizday */
+		INSERT INTO TB_BIZDAY (
+		       BIZDAY
+		     , WEEK_DAY
+		     , BIZDAY_YN
+		     , RESTDAY_DESC
+		     , REG_NO
+		     , REG_DT
+		     , UPD_NO
+		     , UPD_DT
+		)
+		VALUES (
+		       #{bizday}
+		     , CASE DAYOFWEEK(#{bizday})
+		            WHEN 1 THEN '일'
+		            WHEN 2 THEN '월'
+		            WHEN 3 THEN '화'
+		            WHEN 4 THEN '수'
+		            WHEN 5 THEN '목'
+		            WHEN 6 THEN '금'
+		            WHEN 7 THEN '토'
+		       END
+		     , CASE DAYOFWEEK(#{bizday})
+		            WHEN 1 THEN 'N'
+		            WHEN 2 THEN 'Y'
+		            WHEN 3 THEN 'Y'
+		            WHEN 4 THEN 'Y'
+		            WHEN 5 THEN 'Y'
+		            WHEN 6 THEN 'Y'
+		            WHEN 7 THEN 'N'
+		       END
+		     , CASE DAYOFWEEK(#{bizday})
+		            WHEN 1 THEN '휴일'
+		            WHEN 2 THEN NULL
+		            WHEN 3 THEN NULL
+		            WHEN 4 THEN NULL
+		            WHEN 5 THEN NULL
+		            WHEN 6 THEN NULL
+		            WHEN 7 THEN '휴일'
+		       END
+		     , #{regNo}
+		     , NOW()
+		     , #{updNo}
+		     , NOW()
+		)
+	</insert>
+	
+	<!-- 영업일 수정 -->
+	<insert id="updateBizday" parameterType="Bizday">
+		/*  TsaBusiness.updateBizday */
+		UPDATE TB_BIZDAY
+		SET    BIZDAY_YN = (CASE WHEN #{bizdayYn} = 'Y' THEN 'N' ELSE 'Y' END)
+		     , RESTDAY_DESC = (CASE WHEN #{bizdayYn} = 'Y' THEN '휴일' ELSE NULL END)
+		     , UPD_NO = #{updNo}
+		     , UPD_DT = NOW()
+		WHERE  BIZDAY = #{bizday}
+	</insert>
+	
+	<!-- 총알배송 브랜드 등록 -->
+	<insert id="createShotDelvBrand" parameterType="Brand">
+		/*  TsaBusiness.createShotDelvBrand */
+		INSERT INTO TB_SHOT_DELV_BRAND
+		(
+		    BRAND_GROUP_NO
+		   ,DISP_ORD
+		   ,CORNER_DISP_TYPE
+		   ,REG_DT
+		)
+		SELECT BRAND_GROUP_NO
+		     , IFNULL((SELECT COUNT(*) FROM TB_SHOT_DELV_BRAND),0)+1 AS DISP_ORD
+		     , 'G045_5' AS CORNER_DISP_TYPE
+		     , NOW()
+		FROM TB_BRAND  B
+		WHERE BRAND_CD = #{brandCd}
+		ON DUPLICATE KEY UPDATE
+		    REG_DT = NOW()
+	</insert>
+
 </mapper>

+ 4 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaCardPromotion.xml

@@ -316,6 +316,10 @@
 		         , B.MIN_PAY_AMT
 		         , B.DC_WAY
 		         , B.DC_VAL
+		         , (CASE WHEN B.DC_WAY = 'G240_10' THEN CONCAT(B.DC_VAL, '원')
+		                 WHEN B.DC_WAY = 'G240_11' THEN CONCAT(B.DC_VAL, '%')
+		                 ELSE '' END
+		            ) DC_VAL_NM
 		         , B.MAX_DC_AMT
 		         , B.MIN_NO_ITRT
 		         , B.MAX_NO_ITRT

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

@@ -4784,7 +4784,7 @@
 		                ,B.TOTALQTY
 		                ,B.SKUMODELNO
 		                , (CASE WHEN INSTR(REPLACE(B.SKUMODELNO, ' ' , ''), 'F20') = 1 THEN LEFT(REPLACE(B.SKUMODELNO, ' ' , ''),12)
-		                        WHEN INSTR(REPLACE(B.SKUMODELNO, ' ' , ''), '-') > 0 AND INSTR(REPLACE(B.SKUMODELNO, ' ' , ''), '-') <![CDATA[<]]> 10THEN LEFT(REPLACE(B.SKUMODELNO, ' ' , ''),11)
+		                        WHEN INSTR(REPLACE(B.SKUMODELNO, ' ' , ''), '-') > 0 AND INSTR(REPLACE(B.SKUMODELNO, ' ' , ''), '-') <![CDATA[<]]> 10 THEN LEFT(REPLACE(B.SKUMODELNO, ' ' , ''),11)
 		                        ELSE LEFT(REPLACE(B.SKUMODELNO, ' ' , ''),10) END) AS GOODS_CD
 		                FROM TB_IF_INCOMELOT A
 		                INNER JOIN TB_IF_INCOMELOTITEM B ON A.LOTNO = B.LOTNO

+ 46 - 47
src/main/webapp/WEB-INF/views/business/BizdayForm.html

@@ -14,6 +14,8 @@
  * 1.0  2021.03.16   gagamel     최초 작성
  *******************************************************************************
  -->
+	<link rel="stylesheet" href="/ux/plugins/fullcalendar/fullcalendar-4.2.0.css"/>
+	
 	<div id="main">
 		<!-- 메인타이틀 영역 -->
 		<div class="main-title">
@@ -27,8 +29,8 @@
 		
 		<div class="panelStyle">
 			<ul class="notice">
-				<li><strong class="cBlue">영업일 : </strong>휴일을 Click 하시면 영업일로 변경 가능 합니다.</li>
-				<li><strong class="cRed">휴무일 : </strong>영업일을 Click 하시면 휴무일로 변경 가능 합니다.</li>
+				<li><strong class="cBlue">영업일 : </strong>휴일을 클릭하시면 영업일로 변경됩니다.</li>
+				<li><strong class="cRed">휴무일 : </strong>영업일을 클릭하시면 휴무일로 변경됩니다.</li>
 			</ul>
 			
 			<!-- FULLCALENDAR -->
@@ -43,27 +45,60 @@
 		<input type="hidden" name="bizday" id="bizday"/>
 	</form>
 
-<!-- <script class="cssdesk" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.0/moment.min.js" type="text/javascript"></script> -->
-<link rel="stylesheet" href="/ux/plugins/fullcalendar/fullcalendar-4.2.0.css"/>
-<script src="/ux/plugins/fullcalendar/fullcalendar-4.2.0.js"></script>
+<script type="text/javascript" src="/ux/plugins/fullcalendar/fullcalendar-4.2.0.js"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
+	// 해당월의 시작일, 마지막일 설정
+	var setViewDate = function(date) {
+		var dt = [];
+		dt[0] = (new Date(date.startStr)).format('YYYYMMDD');
+		dt[1] = (new Date(date.endStr)).format('YYYYMMDD');
+		return dt;
+	}
+	
+	// 휴일,영업일 업데이트(저장)
+	var fnUpdateBizday = function(day ,arg) {
+		var start = "";
+		var end = "";
+		$('#calendarForm input[name=bizday]').val("");
+		
+		if (day == 'Holiday') {
+			var bizday = (new Date(arg.start)).format('YYYYMMDD');
+			$('#calendarForm input[name=bizday]').val(bizday);
+			
+			gagajf.ajaxFormSubmit('/business/bizday/save', '#calendarForm', function() {
+				calendar.addEvent({
+					title: '휴일',
+					start: arg.start,
+					end: arg.end,
+					allDay: arg.allDay
+				});
+			});
+		} else {
+			var bizday = (new Date(arg.event.start)).format('YYYYMMDD');
+			$('#calendarForm input[name=bizday]').val(bizday);
+			
+			gagajf.ajaxFormSubmit('/business/bizday/save', '#calendarForm', function() {
+				arg.event.remove();
+			});
+		}
+	}
+	
 	// 캘린더 생성
+	var calendar;
 	var fnCreateCalendar = function() {
 		var calendarEl = document.getElementById('calendar');
 		
 		calendar = new FullCalendar.Calendar(calendarEl, {
 			plugins: [ 'interaction', 'dayGrid' ],
-
 			locale: 'ko', // 한글화
-			weekNumberCalculation: 'ISO', //월~일 순서로
-
+// 			weekNumberCalculation: 'ISO', //월~일 순서로
 			selectable: true,
 			editable: true,
 			eventLimit: true, // allow "more" link when too many events
 
 			select: function(arg) {
-				if ((new Date(arg.end)).format('YYYYMMDD') - (new Date(arg.start)).format('YYYYMMDD') > 1 ) return;
+				if ((new Date(arg.end)).format('YYYYMMDD') - (new Date(arg.start)).format('YYYYMMDD') > 1) return;
 				var title ='휴일';
 				
 				mcxDialog.confirm("휴일로 변경하시겠습니까?", {
@@ -91,12 +126,12 @@
 				var dt = setViewDate(info);
 				$('#calendarForm input[name=startDt]').val(dt[0]);
 				$('#calendarForm input[name=endDt]').val(dt[1]);
-				$.get('/business/bizday/list' + '?' + $('#calendarForm').serialize()
+				$.get('/business/holiday/list' + '?' + $('#calendarForm').serialize()
 					, function(data) {
 						var events = [];
 						for (var i = 0 ; i < data.length ; i++) {
 							events.push({
-								title : data[i].restdayDesc,
+								title : (gagajf.isNull(data[i].restdayDesc) ? '' : data[i].restdayDesc),
 								start : data[i].bizday
 							});
 						}
@@ -108,42 +143,6 @@
 		calendar.render();
 	}
 
-	// 해당월의 시작일, 마지막일 설정
-	var setViewDate = function(date) {
-		var dt = [];
-		dt[0] = (new Date(date.startStr)).format('YYYYMMDD');
-		dt[1] = (new Date(date.endStr)).format('YYYYMMDD');
-		return dt;
-	}
-	
-	// 휴일,영업일 업데이트(저장)
-	var fnUpdateBizday = function(day ,arg) {
-		var start = "";
-		var end = "";
-		$('#calendarForm input[name=bizday]').val("");
-		
-		if (day == 'Holiday') {
-			var bizday = (new Date(arg.start)).format('YYYYMMDD');
-			$('#calendarForm input[name=bizday]').val(bizday);
-			
-			gagajf.ajaxFormSubmit('/business/bizday/save', '#calendarForm', function() {
-				calendar.addEvent({
-					title: '휴일',
-					start: arg.start,
-					end: arg.end,
-					allDay: arg.allDay
-				});
-			});
-		} else {
-			var bizday = (new Date(arg.event.start)).format('YYYYMMDD');
-			$('#calendarForm input[name=bizday]').val(bizday);
-			
-			gagajf.ajaxFormSubmit('/business/bizday/save', '#calendarForm', function() {
-				arg.event.remove();
-			});
-		}
-	}
-
 	$(document).ready(function() {
 		fnCreateCalendar();
 	});

+ 1 - 1
src/main/webapp/WEB-INF/views/common/fragments/header.html

@@ -35,7 +35,7 @@
 	<!-- Custom Common CSS -->
 	<link rel="stylesheet" th:href="@{'/ux/css/admin.ui.css?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" href="/ux/css/admin.ui.css"/>
 	<link rel="stylesheet" href="/ux/plugins/gaga/gaga.agGrid.css"/>
-
+	
 	<!-- Include JS library -->
 	<script type="text/javascript" src="/ux/plugins/jquery/jquery-1.12.4.min.js"></script>
 	<script type="text/javascript" src="/ux/plugins/jquery/jquery-ui.min.js"></script>

+ 10 - 2
src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html

@@ -248,6 +248,9 @@
 		// 입력 값 체크
 		const $searchGb = $('#custActiveForm select[name=searchGb]');	// 검색구분
 		const $searchTxt = $('#custActiveForm input[name=searchTxt]');	// 검색내용
+		const $stDate = $('#custActiveForm input[name=stDate]');
+		const $edDate = $('#custActiveForm input[name=edDate]');
+
 		let isSearchVaild = true;
 		let validationMessage;
 
@@ -265,7 +268,13 @@
 				validationMessage = '검색구분을 선택해주세요';
 				isSearchVaild = false;
 			}
+		}
 
+		if (gagajf.isNull($stDate.val()) && gagajf.isNull($edDate.val())) {
+			if (gagajf.isNull($searchTxt.val()) && gagajf.isNull($searchGb.val())) {
+				validationMessage = '일자 없이 조회시 <br> 검색구분 선택 및 내용을 입력해주세요';
+				isSearchVaild = false;
+			}
 		}
 
 		if (!isSearchVaild) {
@@ -276,11 +285,10 @@
 				}
 			});
 		}
-
 		return isSearchVaild;
-
 	}
 
+
 	// 검색
 	var fnSearch = function() {
 		// 유효성 체크

+ 3 - 2
src/main/webapp/WEB-INF/views/display/MainContentsPopupForm.html

@@ -297,7 +297,7 @@
 					html += 'style="display:none;"';
 				}
 				html += ' >';
-				html += '		<th>닫기 버튼<br>노출여부</th>';
+				html += '		<th>확장형 배너<br>닫기 버튼<br>노출여부</th>';
 				html += '		<td>';
 				if(result[i].strVar8=='Y'){
 					html += '			<label class="rdoBtn"><input type="radio" name="todayYn'+i+'" value="Y" checked="checked"/>노출</label>';
@@ -748,7 +748,7 @@
 			html += '		<td><input name="gnbBgColor'+dataIdx+'" type="text" maxlength="200" data-valid-name="배경 RGB코드" value=""/></td>';
 			html += '	</tr>';
 			html += '	<tr name="tabShowYnRow'+dataIdx+'">';
-			html += '		<th>오늘하루 보지않기<br>노출여부</th>';
+			html += '		<th>확장형 배너<br>닫기 버튼<br>노출여부</th>';
 			html += '		<td>';
 			html += '			<label class="rdoBtn"><input type="radio" name="todayYn'+dataIdx+'" value="Y" checked="checked"/>노출</label>';
 			html += '			<label class="rdoBtn"><input type="radio" name="todayYn'+dataIdx+'" value="N" />비노출</label>';
@@ -833,6 +833,7 @@
 		}
 
 		if(contentsLoc=='SGNB001'){
+			$("#addLink"+dataIdx).click();
 			gagaSn.setContents('#openBannerDesc'+dataIdx, '');
 		}
 		fnResetDispOrd();

+ 82 - 13
src/main/webapp/WEB-INF/views/display/MainGnbContentsPopupForm.html

@@ -221,7 +221,7 @@
 			html += '	<li class="cont">';
 			html += '		<ul>';
 			html += '			<li class="no" name="brandCdLi"><span>' + result[i].brandGroupNo + '</span>';
-			html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,' + brandCdIdx + ');">X</a></span>';
+			html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,'+tabTableRow+','+callbackBrandTr+',' + brandCdIdx + ');">X</a></span>';
 			html += '			</li>';
 			html += '			<li class="title">' + result[i].brandGroupNm + '</li>';
 			html += '		</ul>';
@@ -232,9 +232,10 @@
 		brandCdIdx++;
 	}
 
-	var fnRemoveBrand = function (obj , idx){
-		var divId = $(obj).closest('div').attr('id');
-		$("#"+divId+" #brandUl"+idx).remove();
+	var fnRemoveBrand = function (obj ,tableRow, brandTr, idx){
+		$("#tabTable" + tableRow + " #brandListTd" + brandTr+ " #brandUl" + idx).remove();
+		// var divId = $(obj).closest('div').attr('id');
+		// $("#"+divId+" #brandUl"+idx).remove();
 		//fnReloadGoodsListIdx(divId);
 	}
 
@@ -298,6 +299,45 @@
 		}
 	}
 
+	// 데이터 체크
+	function groupDataValidation(){
+		var dataBool = true;
+		$(".tabTable").each(function (i){
+			var thisIdx = $(this).find("input[name=tableIdx]").val();
+			$(this).find("input[name=brandGroup"+thisIdx+"]").each(function (idx2){
+				if(gagajf.isNull($(this).val())){
+					mcxDialog.alert((i+1)+"번째 컨텐츠영역의 "+(idx2+1)+"번째 GROUP명을 입력해주세요.");
+					$(this).focus();
+					dataBool = false;
+				}
+			});
+
+			if($("#tabTable"+thisIdx+" #tabBrand1 #brandListTd1").find('ul').find('input[name=brandGroupNo]').length < 1){
+				mcxDialog.alert((i+1)+"번째 컨텐츠영역의 1번째 브랜드 정보가 없습니다.");
+				$(this).focus();
+				dataBool = false;
+			}
+
+			if($("#tabTable"+thisIdx+" #tabBrand2 #brandListTd2").find('ul').find('input[name=brandGroupNo]').length < 1){
+				mcxDialog.alert((i+1)+"번째 컨텐츠영역의 2번째 브랜드 정보가 없습니다.");
+				$(this).focus();
+				dataBool = false;
+			}
+
+			if($("#tabTable"+thisIdx+" #tabBrand3 #brandListTd3").find('ul').find('input[name=brandGroupNo]').length < 1){
+				mcxDialog.alert((i+1)+"번째 컨텐츠영역의 3번째 브랜드 정보가 없습니다.");
+				$(this).focus();
+				dataBool = false;
+			}
+		});
+
+		if(!dataBool){
+			return false;
+		}else{
+			return true;
+		}
+	}
+
 	/**
 	 * 임시저장
 	 */
@@ -312,6 +352,11 @@
 			return false;
 		}
 
+		// 데이터 체크
+		if(!groupDataValidation()){
+			return false;
+		}
+
 		dataArr = [];
 		$("#gnbTabList .tabTable").each(function (){
 			var newImgFileArr = [];
@@ -336,22 +381,24 @@
 			var subText3 = '';
 			var subText4 = '';
 			var i=1;
+			var tableidx;
 
 			if(contentsLoc=='STAB001'){
-				strTitle3 = $(".tabTable").find("input[name=tableIdx]").val();
-				console.log('dispStdt::'+$(this).find("input[name=dispStdt]").val());
+				tableidx = $(this).find("input[name=tableIdx]").val();
+				strTitle3 = $(this).find("input[name=dispOrd]").val();
+				// console.log('strTitle3???'+strTitle3);
+				strTitle4 = $(this).find("input[name=tableIdx]").val();
 				var dispStdt = $(this).find("input[name=dispStdt]").val().replace(/[^0-9]/g, '')+$(this).find("[name=stTimeHour]").val().replace('시', '')+$(this).find("[name=stTimeMin]").val().replace('분', '')+'00';
 				var dispEddt = $(this).find("input[name=dispEddt]").val().replace(/[^0-9]/g, '')+$(this).find("[name=edTimeHour]").val().replace('시', '')+$(this).find("[name=edTimeMin]").val().replace('분', '')+'59';
 
 				$(this).find(".brandClass").each(function (){
 					var idx = $(this).closest('div').attr('data-id');
-					strTitle1 = $(".groupTr").find("input[id=bTitle"+idx+"]").val();
-
+					strTitle1 = $("#tabTable"+tableidx+" .groupTr").find("input[id=bTitle"+idx+"]").val();
 					var dispOrd = $(this).find("[name=dispOrd]").val();
 					strVar1 = $(this).find("input[name=brandGroupNo]").val();
 					imgPath1 = $(this).find("input[name=imgPath1]").val();
 					strTitle2 = idx;
-
+					// console.log('strTitle3>>>>>>>>'+strTitle3);
 					var data = {
 						cateNo : cateNo
 						, contentsLoc : contentsLoc
@@ -383,6 +430,8 @@
 					};
 					dataArr.push(data);
 				});
+				// console.log('======0=====');
+				// console.log(dataArr);
 			}else{
 				var gtabGb = '';
 				if(contentsLoc=='STAB002'){
@@ -432,6 +481,26 @@
 			}
 		});
 
+		// if(contentsLoc=='STAB001'){
+		// 	if(dataArr.length>0){
+		// 		var dataArrSort = [];
+		// 		console.log('=======1======');
+		// 		console.log(dataArr);
+		// 		dataArr.forEach(function(item, index){
+		// 			for(var i=1; i<dataArr.length; i++){
+		// 				if(i>index){
+		// 					if(dataArr[index].strTitle4!=dataArr[i].strTitle4){
+		// 						console.log(dataArr[i].strTitle3);
+		// 						dataArr[i].strTitle3 = Number(dataArr[i].strTitle3) + 1;
+		// 					}
+		// 				}
+		// 			}
+		// 			dataArrSort.push(item);
+		// 		});
+		// 		dataArr = dataArrSort;
+		// 	}
+		// }
+
 		var jsonData = JSON.stringify(dataArr);
 		mcxDialog.confirm('저장하시겠습니까?', {
 			cancelBtnText: "취소",
@@ -523,7 +592,7 @@
 			html += '			<select name="edTimeMin" required="required" data-valid-name="노출기간 종료시간">';
 			html += fnCreateTimeOption(60, dispEddt[1].split(":")[1]);
 			html += '			</select>';
-			html += '			<input name="dispOrd" type="text" class="w80"placeholder="전시순서" style="margin-left:5px; text-align:center" value="'+result[i].dispOrd+'"/>';
+			html += '			<input name="dispOrd" type="text" class="w80"placeholder="전시순서" style="margin-left:5px; text-align:center" value="'+result[i].strTitle3+'"/>';
 			html += '		</td>';
 			html += '		<td class="aL cateTypeBtnArea">';
 			html += '		<button type="button" class="btn btn-danger btn-lg" onclick="fnDeleteContentsRow(this);">삭제</button></td>';
@@ -550,7 +619,7 @@
 				html += '	<li class="cont">';
 				html += '		<ul>';
 				html += '			<li class="no" name="brandCdLi"><span>' + g1cdArr[k] + '</span>';
-				html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,' + k + ');">X</a></span>';
+				html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,'+i+',1,' + k + ');">X</a></span>';
 				html += '			</li>';
 				html += '			<li class="title">' + g1nmArr[k] + '</li>';
 				html += '		</ul>';
@@ -581,7 +650,7 @@
 				html += '	<li class="cont">';
 				html += '		<ul>';
 				html += '			<li class="no" name="brandCdLi"><span>' + g2cdArr[m] + '</span>';
-				html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,' + m + ');">X</a></span>';
+				html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,' + i + ',2,' + m + ');">X</a></span>';
 				html += '			</li>';
 				html += '			<li class="title">' + g2nmArr[m] + '</li>';
 				html += '		</ul>';
@@ -612,7 +681,7 @@
 				html += '	<li class="cont">';
 				html += '		<ul>';
 				html += '			<li class="no" name="brandCdLi"><span>' + g3cdArr[n] + '</span>';
-				html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,' + n + ');">X</a></span>';
+				html += '				<span style="margin-left:5px;"><a href="javascript:void(0);" onclick="fnRemoveBrand(this,' + i + ',3,' + n + ');">X</a></span>';
 				html += '			</li>';
 				html += '			<li class="title">' + g3nmArr[n] + '</li>';
 				html += '		</ul>';

+ 66 - 3
src/main/webapp/WEB-INF/views/display/PopupListForm.html

@@ -98,10 +98,10 @@
 			<!-- 상단영역 START -->
 			<ul class="panelBar">
 				<li>
-					<span style="padding:5.5px 15px; background:#e9ecfb !important; border-top:1px solid #ddd; border-bottom:0.5px solid #dae0fd; font-weight: bold;">미리보기위치</span>
-					<select name="viewPage" id="viewPageView" onchange="fnChangeViewPage('View')" >
+					<span style="padding:5.5px 15px; background:#e9ecfb !important; border-top:1px solid #ddd; border-bottom:0.5px solid #dae0fd; font-weight: bold;">미리보기</span>
+					<!-- <select name="viewPage" id="viewPageView" onchange="fnChangeViewPage('View')" >
 						<option th:if="${viewPageList}" th:each="oneData, status : ${viewPageList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
-					</select>
+					</select> -->
 					<select name="cateNo" id="cateNoView" class='off' data-valid-name="대카테고리">
 						<option value="">[선택]</option>
 						<option th:if="${cateNoList}" th:each="oneData, status : ${cateNoList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
@@ -405,6 +405,35 @@
 	 * 조회
 	 */
 	$('#btnSearch').on('click', function (){
+		
+		if (!gagajf.isNull($("#searchForm input[name=dispStdt]").val()) || !gagajf.isNull($("#searchForm input[name=dispEddt]").val())){
+			
+			if (gagajf.isNull($("#searchForm input[name=dispStdt]").val()) || gagajf.isNull($("#searchForm input[name=dispEddt]").val())){
+				mcxDialog.alertC("전시기간 조회시 시작일자와 종료일자를 입력하세요.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#searchForm input[name=dispStdt]').focus();
+					}
+				});
+				return false;
+			}
+			
+		
+			var fromDate = $("#searchForm input[name=dispStdt]").val().replaceAll('-', '')+ $("#searchForm select[name=schStTimeHour]").val()+ $("#searchForm select[name=schStTimeMin]").val();
+			var toDate = $("#searchForm input[name=dispEddt]").val().replaceAll('-', '')+ $("#searchForm select[name=schEdTimeHour]").val()+ $("#searchForm select[name=schEdTimeMin]").val();
+	
+			if (fromDate > toDate) {
+				mcxDialog.alertC("전시기간의 시작일시는 종료일시 보다 클 수 없습니다.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$('#searchForm input[name=dispStdt]').focus();
+					}
+				});
+				return false;
+			}
+		}
+		
+		
 		$("#searchForm input[name=dispStTime]").val($('#searchForm #schStTimeHour').val()+$('#searchForm #schStTimeMin').val()+'00');
 		$("#searchForm input[name=dispEdTime]").val($('#searchForm #schEdTimeHour').val()+$('#searchForm #schEdTimeMin').val()+'59');
 		fnSearch();
@@ -483,6 +512,40 @@
 		imgDivLen = 1;
 	});
 
+	// 미리보기
+	$("#btnView").on("click", function(){
+		if($("#viewDate").val()==""){
+			mcxDialog.alert("미리보기 일시를 입력해 주세요")
+			return;
+		}
+		
+		var selectRowData = gagaAgGrid.selectedRowData(gridOptions);
+		
+		if (selectRowData.length == 0) {
+			mcxDialog.alert('미리보기 할 팝업을 선택하세에요.');
+			return;
+		}else if (selectRowData.length > 1) {
+			mcxDialog.alert('미리보기 할 팝업만 선택하세에요.');
+			return;
+		}
+		
+		var viewPage = selectRowData[0].viewPage;
+		var cateNo = selectRowData[0].cateNo;
+		var brandCd = selectRowData[0].brandCd;
+		var planSq = selectRowData[0].planSq;
+		
+		var uriMap = new Map();
+		uriMap.set("G037_10", "/display/mall/main/form?");
+		uriMap.set("G037_20", "/display/mall/main/form?");
+		uriMap.set("G037_30", "/display/category/main/form?cateGb=G032_101&cate1No="+cateNo);
+		uriMap.set("G037_31", "/display/brand/main/form?brandGroupNo="+brandCd);
+		uriMap.set("G037_32", "/display/outlet/main/form?cateGb=G032_103");
+		uriMap.set("G037_40", "/planning/detail/form?planSq="+planSq);
+		_mall = [[${@environment.getProperty('domain.front')}]];
+		window.open("about:blank").location.href= _mall + uriMap.get(viewPage) + "&viewPage=" + viewPage + "&preview=Y&viewDt="+$("#viewDate").val().replace(/-/gi, '')+$("#viewTimeHour").val()+$("#viewTimeMin").val()+"00";
+	});
+	
+	
 	// 데이터 validation 체크
 	function dataValidation(){
 		// 날짜체크

+ 0 - 1
src/main/webapp/WEB-INF/views/goods/GoodsReserveSellForm.html

@@ -55,7 +55,6 @@
 								<option value="searchGoodsNm">상품명</option>
 								<option value="searchGoodsNum">품번</option>
 								<option value="searchSupplyGoodsCd">업체상품코드</option>
-								<option value="searchRegId">등록자</option>
 							</select>
 							<input type="text" class="w50p" name="condition" id="condition" maxlength="50"/>
 						</td>

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

@@ -33,9 +33,12 @@
 				<li class="boxContentBtnT">
 					<span style="padding:5.5px 15px; background:#e9ecfb; border-top:1px solid #dae0fd; border-bottom:0.5px solid #dae0fd;">업체</span>
 					<select name="supplyCompCd" id="supplyCompCd">
-						<option value="1003" selected="selected">한세드림</option>
+						<!-- <option value="1003" selected="selected">한세드림</option>
 						<option value="1004">(주)에프알제이</option>
-						<option value="1005">(주)엠케이트렌드</option>
+						<option value="1005">(주)엠케이트렌드</option> -->
+						<option value="3" selected="selected">한세드림</option>
+						<option value="4">(주)에프알제이</option>
+						<option value="5">(주)엠케이트렌드</option>
 						<option value="E" >입점</option>
 					</select>
 				</li>

+ 6 - 6
src/main/webapp/WEB-INF/views/marketing/CardInterestForm.html

@@ -26,9 +26,9 @@
 		<input type="hidden" id="prmtGb" name="prmtGb" value="B" /> <!-- 무이자 -->
  		<!-- 패널 영역1 -->
 		<div class="panelStyle" >
-			<div class="panelTitle">
+			<!-- <div class="panelTitle">
 				<h3><i class="fa fa-info-circle"></i>아래 검색조건 중 하나를 꼭 입력해 주세요.</h3>
-			</div>
+			</div> -->
 			<div class="panelContent">
 				<table class="frmStyle">
 					<colgroup>
@@ -169,7 +169,7 @@
 		var searchFlag = false;
 		var cnt = 0;
 		
-		for (i = 0; i < form.elements.length; i++ ) {
+		/* for (i = 0; i < form.elements.length; i++ ) {
 			var el = form.elements[i];
 			if ($(el).prop("type") == "text" || $(el).prop("type") == "textarea" || ($(el).prop("type") == "select-one" && 
 					el.name != "search" && el.name != "pageSize" && el.name != "beforSkipFlag")) {
@@ -179,13 +179,13 @@
 			}
 		}
 		
-		if(cnt > 0) searchFlag = true;
+		if(cnt > 0) searchFlag = true; 
 		
 		if(searchFlag == false){
 			mcxDialog.alert("검색조건을 입력하세요.");
 			return false;
 		}
-		
+		*/
 		var fromDate = $('#cardInterestSearchForm input[name=stDate]').val();
 		var toDate = $('#cardInterestSearchForm input[name=edDate]').val();
 		
@@ -345,7 +345,7 @@
 		cfnCreateCalendar('#sellTerms', 'stDate', 'edDate', true, '기간', 'X');
 		var chkBeforSkipFlag = '&nbsp;&nbsp;<label class="chkBox"><input type="checkbox" name="beforSkipFlag" value="Y" >이전데이터 제외</label>';
 		$("#cardInterestSearchForm").find('#sellTerms').append(chkBeforSkipFlag);
-		gagajf.setDate('#sellTerms','stDate', 'edDate', '7d');
+		//gagajf.setDate('#sellTerms','stDate', 'edDate', '7d');
 		
 		// Create a agGrid
 		gagaAgGrid.createGrid('gridList', gridOptions);

+ 24 - 0
src/main/webapp/WEB-INF/views/marketing/CardInterestPopupForm.html

@@ -206,6 +206,30 @@
 		if (!gagajf.validation('#cardInterestForm'))
 			return false;
 		
+		if (gagajf.isNull($("#cardInterestForm input[name=prmtStd]").val()) || gagajf.isNull($("#cardInterestForm input[name=prmtEdd]").val())){
+			mcxDialog.alertC("행사기간의 시작일자와 종료일자를 바르게 입력하세요.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#cardInterestForm input[name=prmtStd]').focus();
+				}
+			});
+			return false;
+		}
+		
+	
+		var fromDate = $("#cardInterestForm input[name=prmtStd]").val().replaceAll('-', '');
+		var toDate = $("#cardInterestForm input[name=prmtEdd]").val().replaceAll('-', '');
+
+		if (fromDate > toDate) {
+			mcxDialog.alertC("전시기간의 시작일시는 종료일시 보다 클 수 없습니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#cardInterestForm input[name=prmtStd]').focus();
+				}
+			});
+			return false;
+		}
+		
 		var idx = 0;
 		$('#cardInterestForm').find('#cardContionList tr').each(function() {
 			var minNoItrt = $(this).find("input[name=arrMinNoItrt]").val();

+ 6 - 6
src/main/webapp/WEB-INF/views/marketing/CardPromotionForm.html

@@ -26,9 +26,9 @@
 		<input type="hidden" id="prmtGb" name="prmtGb" value="B" /> <!-- 무이자 -->
  		<!-- 패널 영역1 -->
 		<div class="panelStyle" >
-			<div class="panelTitle">
+			<!-- <div class="panelTitle">
 				<h3><i class="fa fa-info-circle"></i>아래 검색조건 중 하나를 꼭 입력해 주세요.</h3>
-			</div>
+			</div> -->
 			<div class="panelContent">
 				<table class="frmStyle">
 					<colgroup>
@@ -112,7 +112,7 @@
 			valueFormatter: function (params) { return gagaAgGrid.lookupValue(dcGbList, params.value); }
 		},
 		{headerName: "할인조건", field: "minPayAmt", width: 150, cellClass: 'text-center'},
-		{headerName: "할인액", field: "dcVal", width: 150, cellClass: 'text-center'},
+		{headerName: "할인(원, %)", field: "dcValNm", width: 150, cellClass: 'text-center'},
 		{headerName: "노출여부", field: "dispYn", width: 100, cellClass: 'text-center'},
 		{headerName: "시작일", field: "prmtStd", width: 120, cellClass: 'text-center'},
 		{headerName: "종료일", field: "prmtEdd", width: 120, cellClass: 'text-center'},
@@ -176,7 +176,7 @@
 		var searchFlag = false;
 		var cnt = 0;
 		
-		for (i = 0; i < form.elements.length; i++ ) {
+		/* for (i = 0; i < form.elements.length; i++ ) {
 			var el = form.elements[i];
 			if ($(el).prop("type") == "text" || $(el).prop("type") == "textarea" || ($(el).prop("type") == "select-one" && 
 					el.name != "search" && el.name != "pageSize" && el.name != "beforSkipFlag")) {
@@ -192,7 +192,7 @@
 			mcxDialog.alert("검색조건을 입력하세요.");
 			return false;
 		}
-		
+		 */
 		var fromDate = $('#cardPromotionSearchForm input[name=stDate]').val();
 		var toDate = $('#cardPromotionSearchForm input[name=edDate]').val();
 		
@@ -352,7 +352,7 @@
 		cfnCreateCalendar('#sellTerms', 'stDate', 'edDate', true, '기간', 'X');
 		var chkBeforSkipFlag = '&nbsp;&nbsp;<label class="chkBox"><input type="checkbox" name="beforSkipFlag" value="Y" >이전데이터 제외</label>';
 		$("#cardPromotionSearchForm").find('#sellTerms').append(chkBeforSkipFlag);
-		gagajf.setDate('#sellTerms','stDate', 'edDate', '7d');
+		//gagajf.setDate('#sellTerms','stDate', 'edDate', '7d');
 		
 		// Create a agGrid
 		gagaAgGrid.createGrid('gridList', gridOptions);

+ 24 - 0
src/main/webapp/WEB-INF/views/marketing/CardPromotionPopupForm.html

@@ -203,6 +203,30 @@
 		// 입력 값 체크
 		if (!gagajf.validation('#cardPromotionForm'))
 			return false;
+			
+		if (gagajf.isNull($("#cardPromotionForm input[name=prmtStd]").val()) || gagajf.isNull($("#cardPromotionForm input[name=prmtEdd]").val())){
+			mcxDialog.alertC("행사기간의 시작일자와 종료일자를 바르게 입력하세요.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#cardPromotionForm input[name=prmtStd]').focus();
+				}
+			});
+			return false;
+		}
+		
+	
+		var fromDate = $("#cardPromotionForm input[name=prmtStd]").val().replaceAll('-', '');
+		var toDate = $("#cardPromotionForm input[name=prmtEdd]").val().replaceAll('-', '');
+
+		if (fromDate > toDate) {
+			mcxDialog.alertC("전시기간의 시작일시는 종료일시 보다 클 수 없습니다.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$('#cardPromotionForm input[name=prmtStd]').focus();
+				}
+			});
+			return false;
+		}
 		
 		var idx = 0;
 		$('#cardPromotionForm').find('#cardContionList tr').each(function() {

+ 5 - 0
src/main/webapp/WEB-INF/views/marketing/PointGrantPopupForm.html

@@ -129,6 +129,11 @@
 				mcxDialog.alert("지급가능한 포인트를 초과하였습니다.");
 				return;
 			}
+			let today = new Date().format("YYYY-MM-DD");
+			if (grantPoint.expBeDt < today) {
+				mcxDialog.alert("만료일자는 오늘일자 보다 크거나 같아야 합니다.");
+				return;
+			}
 		}
 
 		// (+ + 1) -> 1, (- + 1) -> -1

+ 13 - 22
src/main/webapp/WEB-INF/views/order/OrderDetailForm.html

@@ -840,34 +840,25 @@ var columnDefsOrderChangeInfo = [
 			return (params.value == 'N') ? '미전송' : '전송';
 		}
 	},
-	/*
-	{
-		headerName		: "요청취소"
-		, field			: "ordDtlNo"
-		, width			: 100
-		, cellClass		: 'text-center'
-		, cellRenderer	: function (params) {
-			var retStr = "";
-			
-			if (params.data.chgGb == "G680_30" && params.data.chgStat == "G685_40") {
-				retStr = ' <button type="button" class="btn btn-success" onclick="fnReturnReqeustCancel(\'' + params.data.ordChgSq + '\',\'' + params.value + '\',\'' + params.node.rowIndex + '\');">반품취소</button>';
-			} else if (params.data.chgGb == "G680_40" && params.data.chgStat == "G685_30") {
-				retStr = ' <button type="button" class="btn btn-success" onclick="fnExchangeReqeustCancel(\'' + params.data.ordChgSq + '\',\'' + ordNo + '\',\'' + params.value + '\',\'' + params.node.rowIndex + '\');">교환취소</button>';
-			} else if (params.data.chgGb == "G680_20" && params.data.chgStat == "G685_20") {
-				retStr = '<button type="button" class="btn btn-success" onclick="fnCancelConfirmRequestCancel(\'' + params.data.ordChgSq + '\')">요청철회</button>';
-			}
-
-			return retStr;
-		}
-	},
-	*/
 	{
 		headerName		: "회수지시전송"
 		, field			: "wdInvoiceSendYn"
 		, width			: 120
 		, cellClass		: 'text-center'
 	},
-	{headerName: "회수송장번호", field: "wdInvoiceNo", width: 90, cellClass: 'text-center'}
+	{
+		headerName		: "회수송장번호"
+		, field			: "wdInvoiceNo"
+		, width			: 150
+		, cellClass		: 'text-center'
+		, cellRenderer	: function (params) {
+			var retStr = '';
+			if (!gagajf.isNull(params.value)) {
+				retStr = '<a href="javascript:void(0);" onclick="fnSweetTracker(\'' + params.data.shipCompCd + '\',\'' + params.data.wdInvoiceNo + '\');">' + params.value + '</a>';
+			}
+			return retStr;
+		}
+	}
 ];
 var gridOptionsOrderChangeInfo = gagaAgGrid.getGridOptions(columnDefsOrderChangeInfo);
 

+ 1 - 9
src/main/webapp/WEB-INF/views/order/OrderListForm.html

@@ -363,15 +363,7 @@ var columnDefsOrderList = [
 			return gagaAgGrid.lookupValue(payMeansList, params.data.payMeans); 
 		}
 	},
-	{
-		headerName		: "신규/교환"
-		, field			: "ordExchGb"
-		, width			: 100
-		, cellClass		: 'text-center',
-		valueGetter 	: function (params) {
-			return params.data.ordExchGb === 'O' ? '신규' : '교환';
-		}
-	},
+	{headerName: "원주문/교환"	, field: "exchGbNm"		, width: 100	, cellClass: 'text-center'	, sortable: true},
 	{
 		headerName		: "주문상태"
 		, field			: "ordDtlStatNm"

+ 1 - 1
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerGoodsSendForm.html

@@ -367,7 +367,7 @@
 				cfnExcelUploadPopup('shoplinkerUploadGoods', 'shoplinkerUploadGoods');
 
 			}else{
-				mcxDialog.alert(result.runStdt+"에 호출한 건이 현재 실행중입니다.<br>"+result.txt);
+				mcxDialog.alert(result.runStdt+"에 호출한 건이 현재 실행중입니다.");
 			}
 		});
 	});

+ 1 - 1
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerInvoiceSendForm.html

@@ -313,7 +313,7 @@
 						$.post(actionUrl, null, null, 'json');
 
 					}else{
-						mcxDialog.alert(result.runStdt+"에 호출한 건이 현재 실행중입니다.<br>"+result.txt);
+						mcxDialog.alert(result.runStdt+"에 호출한 건이 현재 실행중입니다.");
 					}
 
 				});

+ 1 - 1
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderForm.html

@@ -29,7 +29,7 @@
 
 			<div class="panelStyle">
 				<div class="panelTitle">
-					<h3><i class="fa fa-info-circle"></i>[배치주기] 평일: 7시~15시 한시간 단위 / 7시: 전날 15 ~ 금일 6시 / 월요일 7시: 전주 금요일 15 ~ 금일 6시 T3</h3>
+					<h3><i class="fa fa-info-circle"></i>[배치주기] 평일: 5시~15시 한시간 단위 | (월) 5시: 전주 금요일 15 ~ 금일 5시 / (화~금) 5시: 전날 15 ~ 금일 5시 //T0</h3>
 					<span class="panelControl">
 						<i class="fa fa-chevron-up"></i>
 					</span>