package com.opentravelsoft.service.order;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Hashtable;
import java.util.List;
import java.util.Set;
import com.opentravelsoft.util.LabelValueBean;
import com.opentravelsoft.EbizException;
import com.opentravelsoft.entity.Booking;
import com.opentravelsoft.entity.Country;
import com.opentravelsoft.entity.Express;
import com.opentravelsoft.entity.LinePrice;
import com.opentravelsoft.entity.Plan;
import com.opentravelsoft.entity.Team;
import com.opentravelsoft.entity.Tourist;
import com.opentravelsoft.entity.finance.Income;
public interface BookingService {
List<Team> getOperatorTeamList();
/**
*
* @param routeName
* @param teamId
* @param userId
* @param startDatePeriod
* @param endDatePeriod
* @param reserveStart
* @param reserveEnd
* @param tourist
* @param agentId
* @param salesman
* @param cfmKey
* @param readKey
* @param delKey
* @param reserveNo
* @return
*/
List<Booking> roFind(String routeName, Integer teamId, Integer userId,
Date startDatePeriod, Date endDatePeriod, Date reserveStart,
Date reserveEnd, String tourist, String agentId, String salesman,
String cfmKey, String readKey, String delKey, String reserveNo);
public Plan roGetPlanDetail(String recordNo);
/**
* 取得区域代理商列表
*
* @param userId 销售员ID
* @param area 区域ID
* @return
*/
public List<LabelValueBean> getAgentBySales(int userId, String area);
/**
* 取得客户列表
*
* @param area 按地区过滤
* @param payment 按照付款方式过滤
* @return
*/
public List<LabelValueBean> roGetAgentByArea(String area, String payment);
/**
* 增加预订
*
* @param book 订单
* @param customers 游客信息
* @param userId 操作员
* @param ishold 是否占位
* @return 订单号 如果为null则增加失败,不为null则增加成功
*/
public Hashtable<String, String> txAddBook(Booking book,
List<Tourist> customers, int userId, boolean ishold);
public List<LabelValueBean> roGetBirthplaceList();
public List<LabelValueBean> roGetPassportPlaceList();
public List<LabelValueBean> roGetRoomTypeList();
/**
* 取得订单详细(包含付款记录)
*
* @param bookingNo 订单号
* @return
*/
public Booking roGetReserve(String bookingNo);
List<LabelValueBean> getStateByCountry(String country);
public String roGetBirthplaces(String place);
List<Tourist> roFindCustomer(String[] nmno);
String txSplitBooking(Booking book, Set<String> set, String note);
public int txResumeCustomers(Booking book, Set<String> customers, String note);
/**
* 按照客户地区统计
*
* @param provinceId 省份
* @param sales 销售员
* @param startDate 开始日期
* @param endDate 结束如期
* @param payment 结算方式
* @param kenCity 城市
* @return
*/
public List<Booking> roFindCustomerDbamt(String provinceId, String sales,
Date startDate, Date endDate, String payment, String kenCity);
/**
*
* @param customerId
* @param kenSales
* @param startDate
* @param endDate
* @return
*/
public List<Booking> roGetBooksByCustomer(int customerId, String kenSales,
Date startDate, Date endDate);
public List<Booking> roDistrictStat(Date startDate, Date endDate,
String country);
public List<Plan> roGetRouteByDis(String districtNo, Date startDate,
Date endDate);
public List<Booking> getBookByLineNo(String lineNo, Date startDate,
Date endDate);
public List<Country> roGetCountry();
/**
*
* @param orderNo
* @param tourist
* @param account
* @return
*/
List<Booking> roSearch(String orderNo, String tourist, double account);
/**
* 网上支付
*
* @param orderId 订单号
* @param paymentMode 付款方式
* @param amount 金额
* @param moneyType 币种
* @return
*/
int txNetPay(String orderId, String paymentMode, BigDecimal amount,
String moneyType) throws EbizException;
/**
* 付款记录
*
* @param bookingNo
* @return
*/
List<Income> roGetPayments(String bookingNo);
/**
* 取得订单配送列表
*
* @param bookingNo
* @return
*/
List<Express> rogetExpressList(String bookingNo);
/**
*
* @param book
* @param customerList
* @param note
* @return
* @throws EbizException
*/
public int txUpdateBooking(Booking book, List<Tourist> customerList,
String note) throws EbizException;
public int txCancelBooking(Booking book, String note);
public int txCancelCustomers(Booking book, Set<String> set, String note);
public List<LabelValueBean> roGetPaymentTypes();
/**
* 客户交团款[分销系统]
*
* @param payment 付款信息
* @param userId 操作员
* @return
*/
public int txGathering(Income payment, int userId);
public List<LinePrice> roGetPrices(String planNo);
List<LabelValueBean> roGetCertifTypes();
String txAddBooking(Booking book, List<Tourist> customerList);
/**
*
* @param memberId
* @return
*/
List<Booking> roGetBookings(long memberId);
public List<Booking> roFind(String routeName, Date startDatePeriod,
Date endDatePeriod, Date orderStartDatePeriod,
Date orderStartDatePeriod2, String contractNo, String invoiceNo,
String touristName, String bookState, String cancelFlag);
List<Booking> roGetNewBooking(int uid);
int txReadBooking(Booking booking);
public List<Booking> roGetBooks(int teamId, int userId);
public Booking roGetReserveBook(String reserveNo);
/**
* 审核订单(占位)
*
* @param book
* @return
*/
public int txConfirm(Booking book);
/**
* 设置为已读
*
* @param booking
* @return
*/
public int txRead(Booking booking);
List<Booking> roGetBookings(int userId);
/**
* 已确认订单
*
* @param accountId
* @return
*/
public List<Booking> roGetConfirmBookings(int accountId);
/**
* 未确认订单
*
* @param accountId
* @return
*/
public List<Booking> roGetUnconfirmBookings(int accountId);
}