package com.style24.admin.biz.dao;

import java.util.Collection;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.AflinkFee;
import com.style24.persistence.domain.DelvFeeSettle;
import com.style24.persistence.domain.GiftcardSettle;
import com.style24.persistence.domain.GoodsSettle;
import com.style24.persistence.domain.SettleConfirm;

/**
 * 정산 Dao
 *
 * @author gagamel
 * @since 2021. 1. 20
 */
@ShopDs
public interface TsaSettleDao {

	/**
	 * 상품정산 목록
	 * @param goodsSettle - 상품정산 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 7. 5
	 */
	Collection<GoodsSettle> getGoodsSettleList(GoodsSettle goodsSettle);

	/**
	 * 정산확정 데이터 삭제
	 * @param settleYm - 정산기준월
	 * @author gagamel
	 * @since 2021. 7. 30
	 */
	void deleteSettleConfirm(String settleYm);

	/**
	 * 정산확정 데이터 생성
	 * @param settleConfirm - 정산확정 정보
	 * @author gagamel
	 * @since 2021. 7. 30
	 */
	void createSettleConfirm(SettleConfirm settleConfirm);

	/**
	 * 배송비정산 목록
	 * @param delvFeeSettle - 배송비정산 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 7. 6
	 */
	Collection<DelvFeeSettle> getDeliveryFeeSettleList(DelvFeeSettle delvFeeSettle);

	/**
	 * 정산확정 목록
	 * @param settleConfirm - 정산확정 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 7. 26
	 */
	Collection<SettleConfirm> getSettleConfirmList(SettleConfirm settleConfirm);

	/**
	 * 정산확정 기타차감금액 생성
	 * @param settleConfirm - 정산확정 정보
	 * @author gagamel
	 * @since 2021. 8. 16
	 */
	void createEtcDeductAmt(SettleConfirm settleConfirm);

	/**
	 * 정산확정 미수금 저장 처리
	 * @param settleConfirm - 정산확정 정보
	 * @author gagamel
	 * @since 2021. 8. 16
	 */
	void createReceivableAmt(SettleConfirm settleConfirm);

	/**
	 * 세금계산서용 정산 목록
	 * @param settleConfirm - 정산확정 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 8. 16
	 */
	Collection<SettleConfirm> getTaxBillSettleList(SettleConfirm settleConfirm);

	/**
	 * 상품권현황 목록
	 * @param giftcardSettle - 상품권정산 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 8. 16
	 */
	Collection<GiftcardSettle> getGiftcardStatusList(GiftcardSettle giftcardSettle);

	/**
	 * 상품권정산 목록
	 * @param giftcardSettle - 상품권정산 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 8. 16
	 */
	Collection<GiftcardSettle> getGiftcardSettleList(GiftcardSettle giftcardSettle);

	/**
	 * 제휴채널정산 목록
	 * @param afLinkFee - 제휴채널정산 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 1. 20
	 */
	Collection<AflinkFee> getAfLinkFeeList(AflinkFee afLinkFee);

}
