/**
*
*/
package com.ycsoft.business.service;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.ycsoft.beans.config.TBusiFee;
import com.ycsoft.beans.core.fee.CFee;
import com.ycsoft.beans.core.fee.CFeeUnitpre;
import com.ycsoft.beans.invoice.RInvoice;
import com.ycsoft.beans.system.SOptr;
import com.ycsoft.business.commons.abstracts.IBaseService;
import com.ycsoft.business.dto.core.acct.PayDto;
import com.ycsoft.business.dto.core.fee.CFeePayDto;
import com.ycsoft.business.dto.core.fee.FeeBusiFormDto;
import com.ycsoft.business.dto.core.fee.FeeDto;
import com.ycsoft.business.dto.core.fee.MergeFeeDto;
import com.ycsoft.business.dto.core.print.CInvoiceDto;
import com.ycsoft.commons.exception.ServicesException;
/**
*
* 营业业务保存服务
* @author YC-SOFT
*
*/
public interface IPayService extends IBaseService{
public Map<String, Integer> queryUnPaySum(String cust_id) throws Exception;
public List<FeeDto> queryUnPayDetail(String cust_id)throws Exception;
public String saveCancelUnPayFee(String fee_sn,String fee_type,boolean onlyShowInfo) throws Exception;
public Integer queryExchage() throws Exception;
/**
* 根据用户类型查询一次性费用信息
* @param feeType 预收费
* @return
* @throws Exception
*/
public List<TBusiFee> queryUnitpreBusiFee() throws Exception;
/**
* 预付款
* @param dto
* @param optr
* @throws Exception
*/
public void saveFeeUnitpre(CFeeUnitpre cFeeUnitpre,SOptr optr) throws Exception;
/**
* 查询同一地区类的所有预付款
* @param countyId
* @return
* @throws Exception
*/
public List<CFeeUnitpre> queryFeeUnitpre(String countyId) throws Exception;
/**
* 查询支付记录的取消信息(发票信息)
* @param paySn
* @throws Exception
*/
public Set<String> queryPayToCancel(String paySn) throws Exception;
/**
* 回退支付记录(含处理缴费记录、发票、订单支付状态和订单费用明细)
*/
public void saveCanclePay(String paySn,String[] invoiceIds)throws Exception;
/**
* 保存支付信息
* @param pay 支付信息
* @param feeSn 支付的费用项
*/
public void savePay(CFeePayDto pay, String[] feeSn)throws Exception;
/**
* 冲正缴费记录
* @param feeSn 费用编号
* @param feeType 费用类型
* @throws Exception
*/
public void saveCancelFee(String feeSn)throws Exception;
/**
* 修改业务收费
* @param doneCode
* @param feeList FeeBusiFormDto:fee_type,fee_id,real_pay必须有值
* @throws Exception
*/
public void editFee(int doneCode,List<FeeBusiFormDto> feeList)throws Exception;
/**
* 修改流水备注
* @param doneCode
* @param remark
* @throws Exception
*/
public void editRemark(int doneCode,String remark) throws Exception;
/**
* 保存支付信息并合并发票项
* @param pay 支付信息
* @param feeSn 支付的费用项
*/
public void savePayAndMerge(CFeePayDto pay, String[] feeSn)throws Exception;
/**
* 根据费用编号及费用类型查询费用项信息
* @param feeSn
* @param feeType
* @return
* @throws Exception
*/
public CFee queryFeeInfo(String feeSn) throws Exception ;
/**
* 查询指定客户下未支付的费用项
* @throws Excetpion
*/
public List<FeeDto> queryUnPayFees(String custId)throws Exception;
/**
* 查询指定客户下未合并的费用项
* @param custId 客户编号
*/
public List<MergeFeeDto> queryUnMergeFees(String custId)throws Exception ;
/**
* 根据客户编号,查询客户为支付的费用记录数
* @param custId
* @return
*/
public Map<String, Object> queryFeeView(String custId)throws Exception;
/**
* 验证发票
* @param invoiceCode
* @param invoiceId
* @param invoiceMode
* @return
* @throws Exception
*/
public List<RInvoice> checkInvoice(String invoiceId,String docType,String invoiceMode)throws Exception;
/**
* 根据发票号码和Id查询相应记录
* @param invoiceCode
* @param invoiceId
* @return
* @throws Exception
*/
public List<CFee> queryFeeByInvoice(String invoiceCode, String invoiceId,String custId)throws Exception;
/**
* 退押金
* @param feeSn
* @return
*/
public void saveDepositUnPay(String feeSn) throws Exception;
/**
* 修改发票出票方式
* @param feeSn
* @param invoiceMode
* @param invoice_code
* @param invoice_book_id
* @param invoice_id
* @throws Exception
*/
public void editInvoiceMode(String feeSn, String invoiceMode,CInvoiceDto oldInvoice,CInvoiceDto newInvoice,Integer realPay) throws Exception;
public void editAcctDate(String feeSn, String newAcctDate, String oldAcctDate, String contractId, String leftAmount) throws Exception;
/**
* 批量修改账目日期
* @param feeSns
* @param acctDate
* @throws Exception
*/
public void batchEditAcctDate(List<CFee> feeList, String acctDate) throws Exception;
public void queryValidFeeList(List<PayDto> feeList) throws Exception;
/**
* 银行缴费日终扎账查询缴费信息
* @param startTransCode
* @param endTransCode
* @param countyId
* @return
* @throws JDBCException
*/
public List<CFee> queryFeeByBankTransCode(String startTransCode, String endTransCode,String countyId) throws Exception;
/**
* 修改业务员
* @param feeSn
* @param busiOptrId
* @return
* @throws Exception
*/
public CFee editBusiOptr(String feeSn,String busiOptrId,String oldBusiOptrId) throws Exception ;
/**
* 移动结帐
* @param payList
*/
public int saveCheckMobileBill(List<PayDto> payList) throws Exception;
/**
* @param feeSn
* @param newInvoiceFee
* @param remark
*/
public void editInvoiceFee(String feeSn, int newInvoiceFee, String remark) throws Exception;
/**
* 收费清单更换发票
* @param custId
* @param feelistId
* @param feelistCode
* @param feelistBookId
* @param invoiceId
* @param invoiceCode
* @param remark
* @throws Exception
*/
public void changeFeelistInvoice(String custId, String feelistId, String feelistCode,
String feelistBookId, String invoiceId, String invoiceCode, String remark) throws Exception;
/**
* 正式发票作废
* @param doneCode
* @throws Exception
*/
public void invalidFeeListInvoice(Integer doneCode) throws Exception;
/**
* @param fee_sn
*/
public void savePrintStatus(String fee_sn) throws Exception;
/**
* @param fee_sn
*/
public void saveCancelPrintStatus(String fee_sn) throws Exception;
/**
* @param invoice_id
* @param invoice_code
* @param invoice_book_id
*/
public void invalidInvoice(String invoice_id, String invoice_code,
String invoice_book_id)throws Exception;
}