package com.style24.core.biz.dao;

import java.util.Collection;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.GiftCard;
import com.style24.persistence.domain.Order;
import com.style24.persistence.domain.Payment;

/**
 * 주문관리 Dao
 *
 * @author card007
 * @since 2021. 01. 25
 */
@ShopDs
public interface TscOrderDao {

	/**
	 * 주문 목록 카운트
	 * @param Order
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	int getOrderListCount(Order order);

	/**
	 * 주문 목록
	 * @param Order
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	Collection<Order> getOrderList(Order order);

	/**
	 * 주문기본정보
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	Collection<Order> getOrderInfoList(Order order);

	/**
	 * 주문상품정보 목록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	Collection<Order> getOrderDetailList(Order order);

	/**
	 * 주문상세 > 사은품목록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	Collection<Order> getOrderFreeGiftList(Order order);

	/**
	 * 배송정보
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	Collection<Order> getDeliveryAddrList(Order order);

	/**
	 * 결제내역 > 결제 기본정보
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	Collection<Order> getOrderPaymentBasicInfoList(Order order);

	/**
	 * 배송비 정보
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	Collection<Order> getDeliveryFeeList(Order order);

	/**
	 * 반품/교환 > 반품/교환 정보
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	Collection<Order> getOrderChangeList(Order order);

	/**
	 * 환불정보
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	Collection<Order> getOrderRefundInfo(Order order);

	/**
	 * 상담내역
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	Collection<Order> getOrderCounselInfo(Order order);

	/**
	 * 변경내역 > 주문요청 관리자 메모
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 18
	 */
	Collection<Order> getOrderMemoList(Order order);





	/**
	 * 주문상세 이력 등록
	 *
	 * @param Order
	 * @return
	 * @author jsh77b
	 * @since 2020. 11. 30
	 */
	int createOrderDetailHst(Order order);

	/**
	 * 주문상세 > 주문메오 > 주문메모정보조회
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 16
	 */
	Order getOrderMemoInfo(Order order);

	/**
	 * 주문상세 > 주문요청 관리자 메모 > 메모등록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 16
	 */
	int createOrderMemo(Order order);

	/**
	 * 주문상세 > 주문요청 관리자 메모 > 메모수정
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 16
	 */
	int updateOrderMemo(Order order);

	/**
	 * 주문상세 > 주문요청 관리자 메모 > 메모삭제
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 16
	 */
	int deleteOrderMemo(Order order);

	/**
	 * 주문상품 상세 변경 이력 화면
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 16
	 */
	Collection<Order> getOrderDetailHistoryList(Order order);

	/**
	 * 쿠폰사용 내역 팝업 화면
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 16
	 */
	Collection<Order> getOrderDiscountCouponList(Order order);

	/**
	 * 포인트사용 내역 팝업 화면
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 16
	 */
	Collection<Order> getOrderDiscountPointList(Order order);

	/**
	 * 상품권사용 내역 팝업 화면
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 16
	 */
	Collection<Order> getOrderGiftcardHstList(Order order);

	/**
	 * 다다익선적용 내역 팝업 화면
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 16
	 */
	Collection<Order> getOrderTmtbHstList(Order order);

	/**
	 * 주문상세상태를 변경
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 22
	 */
	int changedOrdDtlStat(Order order);
	
	/**
	 * 주문상세상태를 변경(ITEM)
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 22
	 */
	int changedOrdDtlStat2(Order order);
	
	/**
	 * 주문상세상태를 변경 (TB_PAYMENT)
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2020. 12. 22
	 */
	int changedPayStat(Order order);

	/**
	 * 배송 > 배송지 정보 수정
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 01. 15
	 */
	void updateOrderAddr(Order order);

	/**
	 * 반품/교환 > 회수지 정보 수정
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 01. 18
	 */
	void updateOrderChange(Order order);
	
	
	
	/**
	 * 장바구니 상품 목록 조회 (업체별 배송단위)
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	Collection<Order> getCartGoodsList(Order order);
	
	/**
	 * 고객정보 조회
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	Order getCustemerInfo(Order order);
	
	/**
	 * 배송지정보 조회
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	Collection<Order> getDeliveryAddrInfo(Order order);	
	
	/**
	 * 회원 배송지정보 기본배송지 정보 수정
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	int updateCustDeliveryAddrDefaultYn(Order order);
	
	/**
	 * 회원 배송지정보 수정
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	int updateCustDeliveryAddr(Order order);
	
	/**
	 * 회원 배송지정보 등록
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	int createCustDeliveryAddr(Order order);

	/**
	 * 포인트정보 조회
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	int getCustPointInfo(Order order);
	
	/**
	 * 상품권정보 조회
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	int getGiftcardInfo(Order order);
	
	/**
	 * 포인트사용 기준정보 조회
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 04. 29
	 */	
	Order getPointUseEnvset();

	/**
	 * 쿠폰정보 조회
	 *
	 * @param Order
	 * @author card007
	 * @since 2021. 02. 09
	 */
	int getCouponInfo(Order order);
	
	/**
	 * 상품쿠폰, 장바구니쿠폰 적용 상품 조회
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	Collection<Order> getGoodsCartCpnApplyGoodsList(Order order);
	
	/**
	 * 배송비쿠폰 조회
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	Collection<Order> getDelvCpnList(Order order);
	
	/**
	 * 장바구니쿠폰 결제가능수단목록조회
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	String[] getCartCpnPaytypeList(Order order);

	/**
	 * 결제 정보 조회
	 * @param param
	 * @author xodud1202
	 * @since 2021. 03. 18
	 */
	Payment getKcpOrderPaymentInfo(Payment param);

	/**
	 * 결제 취소 정보 생성
	 * @param param
	 * @return
	 */
	void insertPaymentCancel(Payment param);

	/**
	 * 주문 상세 상품 이력 정보 저장(ordDtlNo)
	 * @param param
	 * @author xodud1202
	 * @since 2021. 06. 18
	 */
	void createOrderDetailItemHstFromDtlNo(Order param);

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

	/**
	 * 클레임NO > 주문번호 조회
	 * @param param
	 * @return Order
	 * @author xodud1202
	 * @since 2021. 05. 20
	 */
	Order getOrdChgSqToOrdNo(Order param);

	/**
	 * TB_PAYMENT 결제승인 데이터
	 * @param param
	 * @return
	 * @author xodud1202
	 * @since 2021. 05. 20
	 */
	int updatePaymentOrderComplete(Payment param);

	/**
	 * 결제 상태 정보 수정
	 * @param Order
	 * @author xodud1202
	 * @since 2021. 04. 19
	 */
	int updatePaymentStat(Order order);
	
	/**
	 * 총알배송 가능 시간 체크
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	int getDailyDeliveryTimeInfo();
	
	/**
	 * 총알배송 가능 지역 체크
	 *
	 * @param Order
	 * @author jsh77b
	 * @since 2021. 02. 02
	 */	
	int getDailyDeliveryZoneInfo(Order order);
	
	/**
	 * 1. 주문기본정보 등록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createOrder(Order order);

	/**
	 * 보증보험 신청 완료 수정
	 * @param order
	 * @author xodud1202
	 * @since 2021. 05. 10
	 */
	void updateInsurance(Order order);

	/**
	 * 네이버페이 주문번호 저장
	 * @param order
	 * @author xodud1202
	 * @since 2021. 05. 11
	 */
	void updateNaverPayOrderNo(Order order);
	
	/**
	 * 2. 주문배송지정보 등록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createDeliveryAddr(Order order);
	
	/**
	 * 3. 주문배송비정보등록 등록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createDeliveryFee(Order order);
	
	/**
	 * 4. 주문상세정보등록 등록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createOrderDetail(Order order);
	
	/**
	 * 5. 주문상세단품정보등록 등록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	Collection<Order> getOrderDetailItem(Order order);
	
	/**
	 * 6. 주문상세단품정보등록 등록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createOrderDetailItem(Order order);
	
	/**
	 * 7. 주문상세단품이력정보등록 등록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createOrderDetailItemHst(Order order);
	
	/**
	 * 8. 주문사은품 마스터 정보 등록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createOrdFreegift(Order order);
	
	/**
	 * 9. 주문사은품 상품 정보 등록
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createOrdFreegiftVal(Order order);
	
	/**
	 * 10. 주문사은품 주문상세 정보 등록
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createOrdFreegiftDtl(Order order);
	
	/**
	 * 31. 주문정보 결제완료 상태 업데이트
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int updateOrder(Order order);

	/**
	 * 31. 주문정보 결제완료 상태 업데이트 (무통장입금 입금 전 PAY_DT NULL로 변경
	 * @param Order - 주문 정보
	 * @return
	 * @author xodud1202
	 * @since 2021. 06. 24
	 */
	int updateOrderPayDtNull(Order order);
	
	/**
	 * 32. 주문상세정보 결제완료 상태 업데이트 
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int updateOrderDetail(Order order);
	
	/**
	 * 32.1 주문상세정보이력 결제완료 상태 업데이트 
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createOrderDetailAllHst(Order order);
	
	/**
	 * 33. 주문상세아이템정보 결제완료 상태 업데이트 
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int updateOrderDetailItem(Order order);
	
	/**
	 * 33.1 주문상세정보이력 결제완료 상태 업데이트 
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createOrderDetailItemAllHst(Order order);
	
	/**
	 * 34. 재고정보등록 
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createSellQty(Order order);
	
	/**
	 * 35. 주문상세 할인정보 조회 
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	Collection<Order> getOrderDetailDcInfo(Order order);
	
	/**
	 * 36. 회원포인트정보조회
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	Collection<Order> getCustPointInfoList(Order order);
	
	/**
	 * 37. 회원포인트정보조회
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	Collection<Order> getCustGiftcardInfoList(Order order);
	
	/**
	 * 38. 회원포인트정보수정 
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int updateCustPoint(Order order);
	
	/**
	 * 39. 회원포인트이력등록
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createCustPointHst(Order order);
	
	/**
	 * 40. 회원상품권정보수정
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int updateCustGiftcard(Order order);
	
	/**
	 * 41. 회원상품권정보이력 등록
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int createCustGiftcardHst(Order order);
	
	/**
	 * 42. 회원쿠폰 사용처리
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int updateCustCouponUsedDt(Order order);
	
	/**
	 * 43. 사은품 상태값 업데이트
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	int updateOrdFreegiftValOrdDtlStat(Order order);
	
	/**
	 * 43.1 사은품 남은수량 업데이트
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 04. 13
	 */
	int updateFreegiftValLeftQty(Order order);
	
	/**
	 * 44. 주문상세 결제금액 목록 조회
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	Collection<Order> getOrderDetailOrdAmtList(Order order);
	
	/**
	 * 44.1 주문상세 결제금액 목록 배송그룹 조회
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 03. 09
	 */
	Collection<Order> getOrderDetailDelvFeeCdGrp(Order order);

	/**
	 * 주문 상태 별 수량 조회
	 *
	 * @param Order
	 * @return Order
	 * @author card007
	 * @since 2021. 02. 08
	 */
	Order getOrderStatCount(Order order);
	
	/**
	 * 장바구니 구분의 선물하기 여부 판단
	 * @param Order
	 * @return
	 * @author jsh77b
	 * @since 2021. 04. 13
	 */
	int getGiftOrderCheck(Order order);
	
	/**
	 * 선물받기 주문상품 목록 조회
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 04. 15
	 */
	Collection<Order> getOrderGiftGoodsList(Order order);
	
	/**
	 * 선물주문배송신청완료
	 * @param Order
	 * @return
	 * @author jsh77b
	 * @since 2021. 04. 15
	 */
	int updateOrderDetailGiftAddrInpYn(Order order);
	
	/**
	 * 추가결제 취소,반품,교환 대상 상품목록 조회
	 * @param Order
	 * @return
	 * @author jsh77b
	 * @since 2021. 04. 16
	 */
	Collection<Order> getAddPayGoodsList(Order order);
	
	/**
	 * 추가결제 반품,교환 상태값 업데이트
	 * @param Order
	 * @return
	 * @author jsh77b
	 * @since 2021. 04. 15
	 */
	int updateOrderChangeDetailChgStat(Order order);

	/**
	 * 추가결제 반품,교환 변경 이력 생성
	 * 
	 * @param Order
	 * @return int
	 * @author card007
	 * @since 2021. 04. 20
	 */
	int createOrderChangeDetailHstChgStat(Order order);

	/**
	 * 주문상세단품 상태값 변경
	 *
	 * @param order
	 * @return int
	 * @author jsshin
	 * @since 2021. 04. 22
	 */
	int updateOrderDetailItemStat(Order order);
	
	/**
	 * 보증보험신청정보등록
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 04. 25
	 */
	int createInsurance(Order order);

	/**
	 * 상품권 현금영수증 API 연동 결과 등록
	 * @param param
	 * @author xodud1202
	 * @since 2021.04.23
	 */
	void createGiftcartReceiptApi(GiftCard param);

	/**
	 * 상품권 현금영수증 금액 수정
	 * @param param
	 * @author xodud1202
	 * @since 2021.04.23
	 */
	void updateGiftCardReceipt(GiftCard param);

	/**
	 * 상품권 현금영수증 정보 조회
	 * @param param
	 * @author xodud1202
	 * @since 2021.04.23
	 */
	GiftCard getGiftCardReceiptInfo(Integer ordNo);

	/**
	 * 주문 현금영수증 정보 조회
	 * 
	 * @param GiftCard
	 * @author card007
	 * @since 2021. 05. 10
	 */
	GiftCard getOrderCashReceiptsInfo(Integer ordNo);

	/**
	 * 보증보험 정보 조회
	 * @param param
	 * @author xodud1202
	 * @since 2021.04.27
	 */
	Order getInsuranceInfo(Order param);

	void updateInsuranceInfo(Order param);
	
	/**
	 * 최근사용한결제수단
	 *
	 * @param Order
	 * @return Order
	 * @author card007
	 * @since 2021. 05. 26
	 */
	Order getCustPaymeans(Order order);
	
	/**
	 * 추가결제시 업체명 목록 조회
	 * @param Order
	 * @return
	 * @author jsh77b
	 * @since 2021. 05. 27
	 */
	Collection<Order> getDelvFeeCdSupplyCompNmList(Order order);

	/**
	 * 배송비 테이블 결제시퀀스 등록
	 * @param Payment
	 * @return
	 * @author xodud1202
	 * @since 2021. 06. 03
	 */
	void updateDeliveryFeePaySq(Payment param);

	/**
	 *  주문 상세 정보 조회
	 *
	 * @param
	 * @return Collection<Order>
	 * @author xodud1202
	 * @since  2021. 06. 14
	 */
	Order getOrdDtlInfo(Order order);

	/**
	 * 네이버페이 연동 실패 로그 생성
	 * @param param
	 * @author xodud1202
	 * @since  2021. 05. 28
	 */
	void createNaverPayErrorLog(Order param);
	
	/**
	 * 스윗트래커 정보 조회
	 * @param Order
	 * @return
	 * @author jsh77b
	 * @since 2021. 06. 17
	 */
	Collection<Order> getSweetTrackerDeliveryInfo(Order order);
	
	/**
	 * 선물받기 옵션변경
	 * @param Order
	 * @return
	 * @author jsh77b
	 * @since 2021. 06. 18
	 */
	void updateOrderDetailItemOpt2(Order order);

	/**
	 * 추가배송비 결제금액 환불배송비 수정 처리
	 * 
	 * @param Payment
	 * @return int
	 * @author card007
	 * @since 2021. 06. 18
	 */
	int updateRefundDeliveryFee(Payment payment);
	
	/**
	 * 추가결제정보
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 07. 05
	 */
	Order getAddPaymentInfo(Order order);
	
	/**
	 * 개인통관부호 정보 가져오기
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author jsh77b
	 * @since 2021. 07. 05
	 */
	Order getEntryNo(Order order);

	/**
	 * 주문상세배송중상태변경
	 *
	 * @param Order - 주문 정보
	 * @return
	 * @author xodud1202
	 * @since 2021. 07. 26
	 */
	int changedOrdDtlStatDelvStart(Order order);
	
	
	/**
	 * 외부몰 결제 여부 정보 체크
	 * @param param
	 * @author jsh77b
	 * @since 2021. 09. 02
	 */
	int getExtmallOrderChk(Payment param);
	
	/**
	 * 자동품절취소실패목록
	 * @param Order
	 * @return
	 * @author jsh77b
	 * @since 2021. 09. 11
	 */
	Collection<Order> getSoldOutCnclFailList(Order order);
}


