package com.style24.core.biz.dao;

import java.util.Collection;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.ExtmallOrder;
import com.style24.persistence.domain.Payment;
import com.style24.persistence.domain.ShoplinkerStock;

/**
 * 영업망관리 Dao
 *
 * @author jmh
 * @since 2021. 06. 25
 */
@ShopDs
public interface TscOrderOcmDao {

	/**
	 * 제휴몰주문등록 - 주문업로드 그룹별 등록목록
	 *
	 * @param extmallOrder
	 * @return
	 * @author jmh
	 * @since 2021. 5. 31
	 */
	Collection<ExtmallOrder> getRegExtmallMasterOrderList(ExtmallOrder extmallOrder);

	/**
	 * 제휴몰주문등록 - 주문업로드 전체 등록 목록
	 *
	 * @param extmallOrder
	 * @return
	 * @author jmh
	 * @since 2021. 5. 31
	 */
	Collection<ExtmallOrder> getRegExtmallOrderList(ExtmallOrder extmallOrder);

	/**
	 * 제휴몰주문등록 - 주문업로드 전체 목록
	 *
	 * @param extmallOrder
	 * @return
	 * @author jmh
	 * @since 2021. 5. 31
	 */
	Collection<ExtmallOrder> getExtmallOrderList(ExtmallOrder extmallOrder);

	/**
	 * 제휴몰주문등록 - 주문등록
	 *
	 * @param extmallOrder
	 * @return
	 * @author jmh
	 * @since 2021. 5. 31
	 */
	void insertExtmallOrder(ExtmallOrder extmallOrder);

	/**
	 * 제휴몰주문등록 - 주문등록 상태값 업데이트
	 * @param extmallOrder
	 * @return
	 * @author xodud1202
	 * @since 2021. 01. 28
	 */
	void updateExtmallOrder(ExtmallOrder extmallOrder);

	/**
	 * 제휴몰주문등록 - 주문등록체크정보
	 * @param extmallOrder
	 * @return
	 * @author jmh
	 * @since 2021. 5. 31
	 */
	ExtmallOrder getExtmallOrderInfo(ExtmallOrder extmallOrder);


	// ------------------------- 주문등록 소스 -------------------------------------------//
	// ------------------------- 주문등록 소스 -------------------------------------------//
	/**
	 * 1. 주문기본정보 등록
	 *
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 03. 09
	 */
	int createOrder(ExtmallOrder extmallOrder);

	/**
	 * 2. 주문배송지정보 등록
	 *
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 03. 09
	 */
	int createDeliveryAddr(ExtmallOrder extmallOrder);

	/**
	 * 3. 주문배송비정보등록 등록
	 *
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 03. 09
	 */
	int createDeliveryFee(ExtmallOrder extmallOrder);

	/**
	 * 4. 주문상세정보등록 등록
	 *
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 03. 09
	 */
	int createOrderDetail(ExtmallOrder extmallOrder);

	/**
	 * 4-2 주문상세 이력 등록
	 *
	 * @param extmallOrder
	 * @return
	 * @author jmh
	 * @since 2020. 11. 30
	 */
	int createOrderDetailHst(ExtmallOrder extmallOrder);

	/**
	 * 5. 주문상세단품정보등록 등록
	 *
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 03. 09
	 */
	Collection<ExtmallOrder> getOrderDetailItem(ExtmallOrder extmallOrder);

	/**
	 * 6. 주문상세단품정보등록 등록
	 *
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 03. 09
	 */
	int createOrderDetailItem(ExtmallOrder extmallOrder);

	/**
	 * 7. 주문상세단품이력정보등록 등록
	 *
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 03. 09
	 */
	int createOrderDetailItemHst(ExtmallOrder extmallOrder);

	/**
	 * 8. 주문사은품 마스터 정보 등록
	 *
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 03. 09
	 */
	int createOrdFreegift(ExtmallOrder extmallOrder);

	/**
	 * 9. 주문사은품 상품 정보 등록
	 *
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 03. 09
	 */
	int createOrdFreegiftVal(ExtmallOrder extmallOrder);

	/**
	 * 10. 주문사은품 주문상세 정보 등록
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 03. 09
	 */
	int createOrdFreegiftDtl(ExtmallOrder extmallOrder);

	/**
	 * 11. PAYMENT INSERT
	 * @param param
	 * @return
	 */
	int insertPayment(Payment param);

	/**
	 * 12. 재고정보등록
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 03. 09
	 */
	int createSellQty(ExtmallOrder extmallOrder);

	/**
	 * 13. 사은품 남은수량 업데이트
	 * @param extmallOrder - 주문 정보
	 * @return
	 * @author jmh
	 * @since 2021. 04. 13
	 */
	int updateFreegiftValLeftQty(ExtmallOrder extmallOrder);

	/**
	 * 상품 재고 조회
	 * @param shoplinkerStock
	 * @return
	 * @author xodud1202
	 * @since 2021. 01. 28
	 */
	ShoplinkerStock getGoodsStockInfo(ShoplinkerStock shoplinkerStock);

	/**
	 * 사은품 : 1차조건 적용된 사음품 정보, 상품 금액 조회
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */
	Collection<ExtmallOrder> getFreeGiftGoodsApplyAmt(ExtmallOrder extmallOrder);

	/**
	 * 사은품 : 2차조건 적용된 사은품상품금액 구간정보조회
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */
	Collection<ExtmallOrder> getFreeGiftGoodsApplySection(ExtmallOrder extmallOrder);

	/**
	 * 사은품 : 3차조건 적용된 구간정보의 사은품정보조회
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */
	Collection<ExtmallOrder> getFreeGiftGoodsApplyVal(ExtmallOrder extmallOrder);
	// ------------------------- 주문등록 소스 끝 -------------------------------------------//
	// ------------------------- 주문등록 소스 끝 -------------------------------------------//

	/**
	 * 제휴몰주문등록 엑셀 업로드 대기건 수(본인)
	 *
	 * @param userNo - 사용자아이디
	 * @return int
	 * @author jmh
	 * @since 2021. 06. 17
	 */
	int getExtmallOrderExceluploadWateCnt(int userNo);

	/**
	 * 제휴몰주문 임시 테이블 삭제
	 *
	 * @param userNo - 사용자아이디
	 * @return int
	 * @author jmh
	 * @since 2021. 06. 17
	 */
	int deleteExtmallOrderUploadTmp(int userNo);

	/**
	 * 외부몰주문등록 테이블 실패목록 데이터 삭제
	 *
	 * @param userNo - 사용자아이디
	 * @return int
	 * @author jmh
	 * @since 2021. 06. 17
	 */
	int deleteExtmallOrderUploadFail(int userNo);

	/**
	 * 제휴몰주문등록 (TB_EXTMALL_ORDER_UPLOAD_TMP)
	 *
	 * @param extmallOrderUpload - 제휴몰주문업로드정보
	 * @return int
	 * @author jmh
	 * @since 2021. 06. 17
	 */
	int createExtmallOrderUploadTmp(ExtmallOrder extmallOrder);

	/**
	 * 제휴몰주문등록 업로드 후 목록
	 *
	 * @param extmallOrder - 제휴몰주문업로드정보
	 * @return Collection<ExtmallOrder>
	 * @author jmh
	 * @since 2021. 06. 17
	 */
	Collection<ExtmallOrder> getExtmallOrderUploadTmpList(ExtmallOrder extmallOrder);

	/**
	 * 제휴몰주문업로드 생성 - 제휴몰 벤더ID 가져오기
	 *
	 * @param regId -
	 * @return String
	 * @author jmh
	 * @since 2021. 06. 17
	 */
	String getVendorId(String regId);

	/**
	 * 제휴몰주문등록 업로드 후 주문업로드 생성
	 *
	 * @param extmallOrderUpload - 제휴몰주문업로드정보
	 * @return int
	 * @author jmh
	 * @since 2021. 06. 17
	 */
	int createExtmallOrderUploadSecond(ExtmallOrder extmallOrder);

	/**
	 * 제휴몰주문등록 주문업로드 후 목록
	 *
	 * @param extmallOrder - 제휴몰주문업로드정보
	 * @return Collection<ExtmallOrder>
	 * @author jmh
	 * @since 2021. 06. 17
	 */
	Collection<ExtmallOrder> getExtmallOrderUploadSecondList(ExtmallOrder extmallOrder);

	/**
	 * 제휴몰 주문 업로드 목록
	 *
	 * @param extmallOrder - 외부몰주문업로드 정보
	 * @return Collection<ExtmallOrder>
	 * @author jmh
	 * @since 2021. 06. 17
	 */
	Collection<ExtmallOrder> getExtmallOrderUploadList(ExtmallOrder extmallOrder);

	/**
	 * 제휴몰 주문 업로드 결과정보
	 *
	 * @param extmallOrder - 외부몰주문업로드 정보
	 * @return Collection<ExtmallOrder>
	 * @author jmh
	 * @since 2021. 06. 17
	 */
	ExtmallOrder getExtmallOrderUploadResultInfo(ExtmallOrder extmallOrder);
	
	/**
	 * 제휴몰 주문 등록 실패 내용-관리자메모 등록
	 *
	 * @param extmallOrder - 외부몰주문업로드 정보
	 * @return Collection<ExtmallOrder>
	 * @author jmh
	 * @since 2021. 09. 09
	 */
	void createOrderMemo(ExtmallOrder extmallOrder);

}
