package com.style24.batch.biz.dao;

import java.util.Collection;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.Coupon;
import com.style24.persistence.domain.Goods;
import com.style24.persistence.domain.GoodsIfIncomelot;
import com.style24.persistence.domain.GoodsIfIncomelotitem;
import com.style24.persistence.domain.GoodsIfMeasurement;
import com.style24.persistence.domain.GoodsSafeNo;
import com.style24.persistence.domain.GoodsSummary;
import com.style24.persistence.domain.IfBrand;
import com.style24.persistence.domain.IfProduct;
import com.style24.persistence.domain.IfProvider;
import com.style24.persistence.domain.Option;
import com.style24.persistence.domain.ReinboundInform;
import com.style24.persistence.domain.WmsStock;

import com.gagaframework.web.parameter.GagaMap;

/**
 * 상품 Dao
 *
 * @author eskim
 * @since 2020. 11. 27
 */
@ShopDs
public interface TsbGoodsDao {

	/**
	 * 상품 기본정보 이력 생성
	 *
	 * @param goods
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void createGoodsHst(Goods goods);

	/**
	 * 상품 타이틀 예약건 초기화
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodTnmInit();

	/**
	 * 상품 타이틀예약 종료처리
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsTnmRes();

	/**
	 * 상품 타이틀예약 작업
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsTnm();

	/**
	 * 상품 가격 예약건 초기화
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodPriceInit();

	/**
	 * 상품 가격예약 종료처리
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsPriceRes();

	/**
	 * 상품 가격예약 작업
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsPrice();

	/**
	 * 상품 검색어 작업
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsSnmByGoodsSnm1Null();

	/**
	 * 상품 자동 검색어 조회
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	Collection<Goods> getGoodsByGooodsSnm1List();

	/**
	 * 상품 검색어 작업
	 *
	 * @author eskim
	 * @since 2020. 11. 27
	 */
	void updateGoodsSnm(Goods goods);

	/**
	 * 상품즉시할인가 temp 테이블 삭제
	 *
	 * @param
	 * @author eskim
	 * @since 2020. 12. 02
	 */
	void deleteGoodsBenefitPriceTemp();

	/**
	 * 상품즉시할인가 temp 적용 변경
	 *
	 * @param
	 * @author eskim
	 * @since 2020. 12. 02
	 */
	void crteateGoodsBenefitPriceTemp(Coupon coupon);

	/**
	 * 상품즉시할인가 temp 적용 변경
	 *
	 * @param
	 * @author eskim
	 * @since 2020. 12. 02
	 */
	void updateGoodsBenefitPriceTemp(Coupon coupon);

	/**
	 * 상품즉시할인가 테이블 삭제
	 *
	 * @param
	 * @author eskim
	 * @since 2020. 12. 02
	 */
	void deleteGoodsBenefitPrice();

	/**
	 * 상품즉시할인가 생성
	 *
	 * @param
	 * @author eskim
	 * @since 2020. 12. 02
	 */
	void createGoodsBenefitPrice();

	/**
	 * 연관상품보기 스코어링 삭제
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void deleteGoodsRelate(String workDt);

	/**
	 * 연관상품보기 스코어링 생성
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsRelate(String work7agoDt);

	/**
	 * 전시상품 통계정보작업 - temp 테이블 삭제
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void deleteGoodsSummaryTemp();

	/**
	 * 전시상품 통계정보작업 - 상품 판매수량
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryBySale(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 -상품 조회수
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryByView(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 상품평 건수
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryByReviewCount(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 딜상품 상품평 건수
	 *
	 * @author eskim
	 * @since 2021. 04. 28
	 */
	void createDealGoodsSummaryByReviewCount(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 상품평 점수합계
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryByReviewSum(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 상품평 스코어합계
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryByReviewScore(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 상품문의
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createGoodsSummaryByCounsel(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 딜상품 상품문의
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void createDealGoodsSummaryByCounsel(GoodsSummary goodsSummary);

	/**
	 * 전시상품 통계정보작업 - 통계정보 저장
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void saveGoodsSummary();

	/**
	 * 안전인증대상 상품 조회
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	Collection<GoodsSafeNo> getGoodsSafeNoList();

	/**
	 * 안전인증대상 상품 저장
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void saveGoodsSafeNo(GoodsSafeNo goodsSafeNo);

	/**
	 * 안전인증대상 상품 저장
	 *
	 * @author eskim
	 * @since 2020. 12. 04
	 */
	void updateGoodsSafeNo(GoodsSafeNo goodsSafeNo);

	/**
	 * 실측사이즈 저장
	 *
	 * @author eskim
	 * @since 2021. 01. 01
	 */
	void saveGoodsIfMeasurement(GoodsIfMeasurement goodsMeasurement);

	/**
	 * 입고 저장
	 *
	 * @author eskim
	 * @since 2021. 01. 01
	 */
	void saveGoodsIfIncomelot(GoodsIfIncomelot ㅎoodsIfIncomelot);

	/**
	 * 입고상품 저장
	 *
	 * @author eskim
	 * @since 2021. 01. 01
	 */
	void saveGoodsIfIncomelotitem(GoodsIfIncomelotitem goodsIfIncomelotitem);

	/**
	 * 온라인 입고 상품 처리
	 *
	 * @author eskim
	 * @since 2021. 01. 04
	 */
	void saveWmsGoods(GoodsIfIncomelot goodsIfIncomelot);

	/**
	 * 공급업체 정보 조회
	 *
	 * @author eskim
	 * @since 2021. 01. 05
	 */
	Collection<IfProvider> getSupplyCompanyList();

	/**
	 * 브랜드 정보 조회
	 *
	 * @author eskim
	 * @since 2021. 01. 05
	 */
	Collection<IfBrand> getBrandList();

	/**
	 * 브랜드 업체 정보 조회
	 *
	 * @author eskim
	 * @since 2021. 01. 05
	 */
	Collection<IfBrand> getBrandProviderXrefList();

	/**
	 * 상품 정보 조회
	 *
	 * @author eskim
	 * @since 2021. 01. 06
	 */
	Collection<IfProduct> getGoodsList(String jobdate);

//	/**
//	 * TB_IF_PRODUCTSKU 삭제
//	 *
//	 * @author eskim
//	 * @since 2021. 01. 06
//	 */
//	void deleteIfProductSku();
//
//	/**
//	 * TB_IF_PRODUCTSKU 저장
//	 *
//	 * @author eskim
//	 * @since 2021. 01. 06
//	 */
//	//void createIfProductSku(IfProductSku ifProductSku);
//	void createIfProductSku(GagaMap dataMap);
//
//	/**
//	 * TB_IF_PRODUCTSKU 저장
//	 *
//	 * @author eskim
//	 * @since 2021. 01. 06
//	 */
//	void createIfProductSkuByRow(IfProductSku ifProductSku);
//
//	/**
//	 * TB_IF_PRODUCTSKU_HST 삭제
//	 *
//	 * @author eskim
//	 * @since 2021. 01. 06
//	 */
//	void deleteWmsProductSkuHst(String jobdate);
//
//	/**
//	 * TB_IF_PRODUCTSKU_HST 저장
//	 *
//	 * @author eskim
//	 * @since 2021. 01. 06
//	 */
//	void createWmsProductSkuHst(String jobdate);

	/**
	 * TB_WMS_STOCK 삭제
	 *
	 * @author eskim
	 * @since 2021. 05. 26
	 */
	void deleteWmsStock();

	/**
	 * TB_WMS_STOCK 저장
	 *
	 * @author eskim
	 * @since 2021. 05. 26
	 */
	void createWmsStock(GagaMap dataMap);

	/**
	 * TB_WMS_STOCK 저장
	 *
	 * @author eskim
	 * @since 2021. 05. 26
	 */
	void createWmsStockByRow(WmsStock wmsStock);

	/**
	 * TB_WMS_STOCK_HST 삭제
	 *
	 * @author eskim
	 * @since 2021. 05. 26
	 */
	void deleteWmsStockHst(String jobdate);

	/**
	 * TB_WMS_STOCK_HST 저장
	 *
	 * @author eskim
	 * @since 2021. 05. 26
	 */
	void createWmsStockHst(String jobdate);

	/**
	 * TB_SHOP_STOCK 삭제
	 *
	 * @author eskim
	 * @since 2021. 05. 27
	 */
	void deleteShopStock();

	/**
	 * TB_SHOP_STOCK 저장
	 *
	 * @author eskim
	 * @since 2021. 05. 27
	 */
	int createShopStock();

	/**
	 * TB_SHOP_STOCK_HST 삭제
	 *
	 * @author eskim
	 * @since 2021. 05. 27
	 */
	void deleteShopStockHst(String jobdate);

	/**
	 * TB_SHOP_STOCK_HST 저장
	 *
	 * @author eskim
	 * @since 2021. 05. 27
	 */
	void createShopStockHst(String jobdate);

	/**
	 *  상품 전시재고 삭제
	 *
	 * @author eskim
	 * @since 2021. 01. 06
	 */
	void deleteGoodsDispStock();

	/**
	 * 상품 전시재고 생성
	 *
	 * @author eskim
	 * @since 2021. 01. 06
	 */
	void createGoodsDispStock();

	/**
	 * TB_STOCK = > TB_STOCK_SYNC 적용
	 *
	 * @author eskim
	 * @since 2020. 08. 24
	 */
	void deleteTbOptionSyncTemp();

	/**
	 * wms 재고 임시 테이블 이관
	 *
	 * @author eskim
	 * @since 2020. 08. 24
	 */
	void createTbOptionSyncTemp();

	/**
	 * 매장 재고 임시 테이블 이관
	 *
	 * @author eskim
	 * @since 2021. 05. 27
	 */
	void saveTbOptionSyncTemp();

	/**
	 * 입점상품 SELL_QTY 목록 조회
	 *
	 * @author eskim
	 * @since 2021. 01. 08
	 */
	Collection<Option> getGoodsSelfNoStockList();

	/**
	 * 상품 옵션/재고 정보 이력생성
	 *
	 * @param option
	 * @author eskim
	 * @since 2021. 01. 08
	 */
	void createStockHst(Option option);

	/**
	 * 상품 옵션/재고 변경
	 *
	 * @param option
	 * @author eskim
	 * @since 2021. 01. 08
	 */
	void updateStock(Option option);

	/**
	 * WMS 재고 임시 테이블 삭제
	 *
	 * @param
	 * @author eskim
	 * @since 2021. 01. 08
	 */
	void deleteGoodsOptionSync();

	/**
	 * TB_OPTION = > TB_OPTION_SYNC 적용
	 *
	 * @param
	 * @author eskim
	 * @since 2021. 01. 08
	 */
	void createGoodsOptionSync();

	/**
	 * TB_OPTION_SYNC_TEMP => TB_OPTION_SYNC 변경적용
	 *
	 * @author eskim
	 * @since 2021. 05. 27
	 */
	void saveGoodsOptionSyncSync();

	/**
	 * TB_OPTION_SYNC 매장별 최대구매수량 적용-
	 *
	 * @author eskim
	 * @since 2021. 05. 28
	 */
	void updateGoodsOptionSyncSync();

	/**
	 * WMS 임시 테이블에서 실테이블로 이관(재고가 상이한것만 수정)
	 *
	 * @author eskim
	 * @since 2021. 01. 08
	 */
	void saveGoodsOptionNew();

	/**
	 * TB_SELL_QTY_TEMP 테이블 삭제
	 *
	 * @author eskim
	 * @since 2021. 01. 08
	 */
	void deleteTtbSellQtyTemp();

	/**
	 * TB_SELL_QTY_TEMP 생성
	 *
	 * @author eskim
	 * @since 2021. 01. 08
	 */
	void createTtbSellQtyTemp();

	/**
	 * WMS 재고 테이블 이관 후 TB_SELL_QTY 데이터 삭제
	 *
	 * @author eskim
	 * @since 2021. 01. 08
	 */
	void deleteSellQty();

	/**
	 * TB_SELL_QTY_TEMP => TB_SELL_QTY 생성
	 *
	 * @author eskim
	 * @since 2021. 01. 08
	 */
	void createTtbSellQty();

	/**
	 * TB_ORDER_DETAIL => TB_SELL_QTY 생성
	 *
	 * @author eskim
	 * @since 2021. 01. 08
	 */
	void createTtbSellQtyByOrderDetail();

	/**
	 * 입고상품중 온라인 옵션이 없는 상품옵션 추가
	 *
	 * @author eskim
	 * @since 2021. 01. 18
	 */
	void createGoodsOptionList(String jobdate);

	/**
	 * 상품혜택임시 truncate
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	void truncateTemporaryGoodsBenefit();

	/**
	 * 상품혜택임시-쿠폰할인 생성(적용범위 개별)
	 * @return 생성건수
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	int createTemporaryGoodsBenefitScopeCouponDiscount();

	/**
	 * 상품혜택임시-쿠폰할인 생성(적용범위 전체)
	 * @return 생성건수
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	int createTemporaryGoodsBenefitAllCouponDiscount();

	/**
	 * 상품혜택임시-무료배송 생성
	 * @return 생성건수
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	int createTemporaryGoodsBenefitFreeDelivery();

	/**
	 * 상품혜택임시-사은품 생성
	 * @return 생성건수
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	int createTemporaryGoodsBenefitFreegift();

	/**
	 * 상품혜택임시-신상(=정상상품) 생성
	 * @return 생성건수
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	int createTemporaryGoodsBenefitNew();

	/**
	 * 상품혜택임시-총알배송 생성
	 * @return 생성건수
	 * @author gagamel
	 * @since 2021. 4. 29
	 */
	int createTemporaryGoodsShotDelivery();

	/**
	 * 상품혜택 삭제
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	void deleteGoodsBenefit();

	/**
	 * 상품혜택 생성
	 * @return 생성건수
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	int createGoodsBenefit();

	/**
	 * 재입고알림 목록
	 *
	 * @author eskim
	 * @since 2021. 07. 01
	 */
	Collection<ReinboundInform> getReinboundInformList();

	/**
	 * 재입고 알림톡 발송처리
	 * 
	 * @author eskim
	 * @since 2021. 7. 1
	 */
	int updateReinboundInform(ReinboundInform reinboundInform);

	/**
	 * VW_STOCK임시 테이블 Truncate
	 * @author gagamel
	 * @since 2021. 8. 30
	 */
	void truncateVwStockTemporary();

	/**
	 * VW_STOCK임시 테이블 생성
	 * @return
	 * @author gagamel
	 * @since 2021. 8. 30
	 */
	int createVwStockTemporary();

	/**
	 * VW_STOCK 테이블 삭제
	 * @author gagamel
	 * @since 2021. 8. 30
	 */
	void deleteVwStock();

	/**
	 * VW_STOCK 테이블 생성
	 * @return
	 * @author gagamel
	 * @since 2021. 8. 30
	 */
	int createVwStock();

}
