package com.style24.admin.biz.dao;

import java.util.Collection;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.Aflink;
import com.style24.persistence.domain.Bizday;
import com.style24.persistence.domain.Brand;
import com.style24.persistence.domain.BrandGroup;
import com.style24.persistence.domain.BrandMd;
import com.style24.persistence.domain.DeliveryLoc;
import com.style24.persistence.domain.DelvFeePolicy;
import com.style24.persistence.domain.SellStore;
import com.style24.persistence.domain.ShipCompany;
import com.style24.persistence.domain.SiteBrand;
import com.style24.persistence.domain.StockSyncBase;
import com.style24.persistence.domain.SupplyCompany;

/**
 * 영업관리 Dao
 *
 * @author gagamel
 * @since 2020. 10. 14
 */
@ShopDs
public interface TsaBusinessDao {

	/**
	 * 공급벤더 목록
	 * @param supplyComp - 공급업체 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 1. 18
	 */
	Collection<SupplyCompany> getSupplyVendorList(SupplyCompany supplyComp);

	/**
	 * 공급벤더 생성
	 * @param supplyComp - 공급업체 정보
	 * @author gagamel
	 * @since 2021. 1. 18
	 */
	void createSupplyVendor(SupplyCompany supplyComp);

	/**
	 * 공급벤더 수정
	 * @param supplyComp - 공급업체 정보
	 * @author gagamel
	 * @since 2021. 1. 18
	 */
	void updateSupplyVendor(SupplyCompany supplyComp);

	/**
	 * 공급업체 목록
	 * @param supplyComp - 공급업체 정보
	 * @return
	 * @author gagamel
	 * @since 2020. 10. 14
	 */
	Collection<SupplyCompany> getSupplyCompanyList(SupplyCompany supplyComp);

	/**
	 * 공급업체 생성
	 * @param supplyComp - 공급업체 정보
	 * @author gagamel
	 * @since 2020. 10. 14
	 */
	void createSupplyCompany(SupplyCompany supplyComp);

	/**
	 * 공급업체 수정
	 * @param supplyComp - 공급업체 정보
	 * @author gagamel
	 * @since 2020. 10. 14
	 */
	void updateSupplyCompany(SupplyCompany supplyComp);

	/**
	 * 배송비정책 목록
	 * @param supplyCompCd - 공급업체코드
	 * @return
	 * @author gagamel
	 * @since 2020. 11. 24
	 */
	Collection<DelvFeePolicy> getDeliveryFeePolicyList(DelvFeePolicy delvFeePolicy);

	/**
	 * 배송비정책 생성
	 * @param delvFeePolicy - 배송비정책 정보
	 * @author gagamel
	 * @since 2020. 11. 24
	 */
	void createDeliveryFeePolicy(DelvFeePolicy delvFeePolicy);

	/**
	 * 배송비정책 수정
	 * @param delvFeePolicy - 배송비정책 정보
	 * @author gagamel
	 * @since 2020. 11. 24
	 */
	void updateDeliveryFeePolicy(DelvFeePolicy delvFeePolicy);

	/**
	 * 출고처관리 목록
	 * @param delvLoc - 출고처 정보
	 * @return
	 * @author gagamel
	 * @since 2020. 10. 16
	 */
	Collection<DeliveryLoc> getDeliveryLocList(DeliveryLoc delvLoc);

	/**
	 * 브랜드 목록
	 * @param brand - 브랜드 정보
	 * @return
	 * @author eskim
	 * @since 2020. 10. 22
	 */
	Collection<Brand> getBrandList(Brand brand);

	/**
	 * 담당MD 목록
	 * @param brandMd - 담당MD 정보
	 * @return
	 * @author gagamel
	 * @since 2020. 11. 4
	 */
	Collection<BrandMd> getMdList(BrandMd brandMd);

	/**
	 * 브랜드담당MD 목록
	 * @param brandCd - 브랜드코드
	 * @return
	 * @author gagamel
	 * @since 2020. 11. 4
	 */
	Collection<BrandMd> getBrandMdList(String brandCd);

	/**
	 * 브랜드담당MD 삭제
	 * @param brandCd - 브랜드코드
	 * @author gagamel
	 * @since 2020. 11. 4
	 */
	void deleteBrandMd(String brandCd);

	/**
	 * 브랜드담당MD 등록
	 * @param brandMd - 브랜드담당MD 정보
	 * @author gagamel
	 * @since 2020. 11. 4
	 */
	void createBrandMd(BrandMd brandMd);

	/**
	 * 브랜드 노출사이트 목록
	 * @param brandCd - 브랜드코드
	 * @author gagamel
	 * @since 2020. 11. 4
	 */
	Collection<SiteBrand> getBrandSiteList(String brandCd);

	/**
	 * 브랜드 노출사이트 등록/수정
	 * @param siteBrand - 사이트브랜드 정보
	 * @author gagamel
	 * @since 2020. 11. 4
	 */
	void saveBrandSite(SiteBrand siteBrand);

	/**
	 * 브랜드 공급업체 목록
	 * @param brandCd - 브랜드코드
	 * @author eskim
	 * @since 2021. 01. 21
	 */
	Collection<Brand> getBrandSupplyList(String brandCd);

	/**
	 * 브랜드 등록
	 * @param brand - 브랜드 정보
	 * @author gagamel
	 * @since 2020. 11. 5
	 */
	void createBrand(Brand brand);

	/**
	 * 브랜드 수정
	 * @param brand - 브랜드 정보
	 * @author gagamel
	 * @since 2020. 11. 5
	 */
	void updateBrand(Brand brand);

	/**
	 * 브랜드별 업체 정보 저장
	 * @param brand - 브랜드 정보
	 * @author eskim
	 * @since 2021. 01. 22
	 */
	void saveBrandSupply(Brand brandSupply);

	/**
	 * 출고처관리 저장
	 * @param delvLoc - 출고처 정보
	 * @author gagamel
	 * @since 2020. 10. 16
	 */
	void saveDeliveryLoc(DeliveryLoc delvLoc);

	/**
	 * 재고연계관리 - 출고처 목록
	 * @param delvLoc - 출고처 정보
	 * @return
	 * @author gagamel
	 * @since 2020. 11. 7
	 */
	Collection<DeliveryLoc> getStockSyncDeliveryLocList(DeliveryLoc delvLoc);

	/**
	 * 재고연계관리 - 재고연계기준 목록
	 * @param stockSyncBase - 재고연계기준 정보
	 * @return
	 * @author gagamel
	 * @since 2020. 11. 7
	 */
	Collection<StockSyncBase> getStockSyncBaseList(StockSyncBase stockSyncBase);

	/**
	 * 재고연계관리 - 재고연계기준 저장
	 * @param stockSyncBase - 재고연계기준 정보
	 * @author gagamel
	 * @since 2020. 11. 7
	 */
	void saveStockSyncBase(StockSyncBase stockSyncBase);

	/**
	 * 판매매장 목록
	 * @param sellStore - 판매매장 정보
	 * @return
	 * @author gagamel
	 * @since 2020. 10. 20
	 */
	Collection<SellStore> getSellStoreList(SellStore sellStore);

	/**
	 * 판매매장 정보 수정
	 * @param sellStore - 판매매장 정보
	 * @author gagamel
	 * @since 2020. 10. 20
	 */
	void saveSellStore(SellStore sellStore);

	/**
	 * 제휴링크 목록
	 * @param aflink - 제휴링크 정보
	 * @return
	 * @author gagamel
	 * @since 2020. 10. 20
	 */
	Collection<Aflink> getAflinkList(Aflink aflink);

	/**
	 * 제휴링크 저장
	 * @param aflink - 제휴링크 정보
	 * @author gagamel
	 * @since 2020. 10. 20
	 */
	void saveAflink(Aflink aflink);

	/**
	 * 제휴링크 삭제
	 * @param aflink - 제휴링크 정보
	 * @author gagamel
	 * @since 2020. 10. 20
	 */
	void deleteAflink(Aflink aflink);

	/**
	 * 배송업체 목록
	 * @return
	 * @author gagamel
	 * @since 2020. 10. 20
	 */
	Collection<ShipCompany> getShipCompanyList();

	/**
	 * 배송업체 저장
	 * @param shipComp - 배송업체 정보
	 * @author gagamel
	 * @since 2020. 10. 20
	 */
	void saveShipCompany(ShipCompany shipComp);

	/**
	 * 배송업체 삭제
	 * @param shipComp - 배송업체 정보
	 * @author gagamel
	 * @since 2020. 10. 20
	 */
	void deleteShipCompany(ShipCompany shipComp);

	/**
	 * 브랜드 그룹 목록
	 * @param brandGroup
	 * @return
	 * @author eskim
	 * @since 2021. 02. 19
	 */
	Collection<BrandGroup> getBrandGroupList(BrandGroup brandGroup);

	/**
	 * 브랜드그룹 등록
	 * @param brandGroup
	 * @author geskim
	 * @since 2021. 02. 19
	 */
	void createBrandGroup(BrandGroup brandGroup);

	/**
	 * 브랜드그룹 수정
	 * @param brandGroup
	 * @author eskim
	 * @since 2021. 02. 19
	 */
	void updateBrandGroup(BrandGroup brandGroup);

	/**
	 * 휴무일 목록
	 * @param bizday - 영업일 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 3. 16
	 */
	Collection<Bizday> getHolidayList(Bizday bizday);

	/**
	 * 영업일여부 조회
	 * @param bizday - 영업일
	 * @return
	 * @author gagamel
	 * @since 2021. 3. 16
	 */
	String getBizdayYn(String bizday);

	/**
	 * 영업일 생성
	 * @param bizday - 영업일 정보
	 * @author gagamel
	 * @since 2021. 3. 16
	 */
	void createBizday(Bizday bizday);

	/**
	 * 영업일 수정 처리
	 * @param bizday - 영업일 정보
	 * @author gagamel
	 * @since 2021. 3. 16
	 */
	void updateBizday(Bizday bizday);

	/**
	 * 총알배송 브랜드 등록
	 * @param brand - 브랜드 정보
	 * @author eskim
	 * @since 2021. 6. 22
	 */
	void createShotDelvBrand(Brand brand);

	/**
	 * 브랜드그룹 메인레이아웃 등록
	 * @param brandGroup
	 * @author bin2107
	 * @since 2021. 07. 29
	 */
	void createBrandGroupMainLayout(BrandGroup brandGroup);
}
