package com.opentravelsoft.providers;
import java.util.Date;
import java.util.List;
import java.util.Set;
import com.opentravelsoft.EbizException;
import com.opentravelsoft.entity.Booking;
import com.opentravelsoft.entity.Tourist;
public interface BookingDao extends GenericDao<Booking, String> {
/**
* 预订旅游产品<br>
* 内部和门市预订
*
* @param book
* @param customers
* @param isHold
* @return 0:成功
*/
public int saveBooking(Booking book, List<Tourist> customers, boolean isHold);
/**
*
* @param book
* @param customerList
* @param userId
* @return
*/
public String addBooking(Booking book, List<Tourist> customerList);
/**
* 取得订单
*
* @param bookingNo
* @return
*/
public Booking getBooking(String bookingNo);
/**
* 取消订单
*
* @param book
* @return
*/
public int cancelBook(Booking book, String note);
/**
* 取消订单
*
* @param book
* @return
*/
public int cancelCustomers(Booking book, Set<String> list, String note);
/**
*
* @param book
* @param customerList
* @return
* @throws EbizException
*/
public int updateBooking(Booking book, List<Tourist> customerList, String note)
throws EbizException;
/**
* 阅读订单后更新标记
*
* @param booking
* @return
*/
public int readBooking(Booking booking);
/**
* 确认订单后占位
*
* @param book
* @return
*/
public int confirm(Booking book);
/**
* 拆分订单
*
* @param book
* @param set
* @param reserveNo
* @param note
* @return
*/
public int splitBooking(Booking book, Set<String> set, String reserveNo,
String note);
/**
*
* @param book
* @param customers
* @return
*/
public int resumeCustomers(Booking book, Set<String> customers, String note);
/**
* 取得未确认的订单
*
* @param groupCd
* @param uid
* @return
*/
public List<Booking> findUndetermined(int teamId, int userId);
/**
* 取得会员的订单
*
* @param memberId
* @return
*/
public List<Booking> getBookings(long memberId);
/**
* 取得已确认的订单(分销)
*
* @param accountId
* @return
*/
public List<Booking> getConfirmBookings(int accountId);
/**
* 取得未确认的订单(分销)
*
* @param accountId
* @return
*/
public List<Booking> getUnconfirmBookings(int accountId);
public List<Booking> find(String lineName, Date startDatePeriod,
Date endDatePeriod, Date orderStartDatePeriod,
Date orderStartDatePeriod2, String contractNo, String invoiceNo,
String touristName, String bookState, String cancelFlag);
public List<Booking> find(String lineName, int teamId, int userId,
Date startDatePeriod, Date endDatePeriod, Date reserveStart,
Date reserveEnd, String tourist, String agentId, String salesman,
String cfmKey, String readKey, String delKey, String reserveNo);
/**
* 取得未阅读的订单
*
* @param uid
* @return
*/
public List<Booking> getUnreadBookings(int uid);
/**
* 取得出团计划的所有订单
*
* @param planNo
* @return
*/
public List<Booking> getPlanBookings(String planNo);
/**
* 按照客户地区统计
*
* @param provinceId 省份
* @param kenSales 销售员
* @param startDate 开始日期
* @param endDate 结束如期
* @param payment 结算方式
* @param kenCity 城市
* @return
*/
public List<Booking> findCustomerDbamt(String provinceId, String kenSales,
Date startDate, Date endDate, String payment, String kenCity);
/**
*
* @param customerId
* @param kenSales
* @param startDate
* @param endDate
* @return
*/
public List<Booking> getBooksByCustomer(int customerId, String kenSales,
Date startDate, Date endDate);
/**
*
* @param startDate
* @param endDate
* @param country
* @return
*/
public List<Booking> districtStat(Date startDate, Date endDate, String country);
/**
*
* @param lineNo
* @param startDate
* @param endDate
* @return
*/
public List<Booking> getBookByLineNo(String lineNo, Date startDate,
Date endDate);
/**
*
* @param bookingNo
* @param tourist
* @param account
* @return
*/
public List<Booking> findBookings(String bookingNo, String tourist,
double account);
}