/**
*
*/
package com.ycsoft.business.component.resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Component;
import com.ycsoft.beans.core.cust.CCust;
import com.ycsoft.beans.core.fee.CFee;
import com.ycsoft.beans.core.print.CInvoicePropChange;
import com.ycsoft.beans.core.prod.CProd;
import com.ycsoft.beans.core.user.CUser;
import com.ycsoft.beans.invoice.RInvoice;
import com.ycsoft.beans.invoice.RInvoiceDetail;
import com.ycsoft.beans.invoice.RInvoiceFeelist;
import com.ycsoft.beans.invoice.RInvoiceOptr;
import com.ycsoft.business.commons.abstracts.BaseBusiComponent;
import com.ycsoft.business.dao.core.cust.CCustDao;
import com.ycsoft.business.dao.core.fee.CFeeDao;
import com.ycsoft.business.dao.core.print.CDocDao;
import com.ycsoft.business.dao.core.print.CInvoiceDao;
import com.ycsoft.business.dao.core.print.CInvoicePropChangeDao;
import com.ycsoft.business.dao.core.user.CUserDao;
import com.ycsoft.business.dao.resource.invoice.RInvoiceDao;
import com.ycsoft.business.dao.resource.invoice.RInvoiceDetailDao;
import com.ycsoft.business.dao.resource.invoice.RInvoiceFeelistDao;
import com.ycsoft.business.dao.resource.invoice.RInvoiceOptrDao;
import com.ycsoft.business.dao.system.SDeptDao;
import com.ycsoft.business.dto.config.TemplateConfigDto;
import com.ycsoft.business.dto.core.acct.PayDto;
import com.ycsoft.business.dto.core.fee.FeeDto;
import com.ycsoft.business.dto.core.print.CInvoiceDto;
import com.ycsoft.commons.constants.DictKey;
import com.ycsoft.commons.constants.InvoiceOptrType;
import com.ycsoft.commons.constants.StatusConstants;
import com.ycsoft.commons.constants.SystemConstants;
import com.ycsoft.commons.exception.ComponentException;
import com.ycsoft.commons.exception.ErrorCode;
import com.ycsoft.commons.exception.ServicesException;
import com.ycsoft.commons.helper.CollectionHelper;
import com.ycsoft.commons.helper.DateHelper;
import com.ycsoft.commons.helper.StringHelper;
import com.ycsoft.commons.store.MemoryDict;
import com.ycsoft.daos.core.JDBCException;
import com.ycsoft.sysmanager.dto.resource.invoice.InvoiceDetailDto;
import com.ycsoft.sysmanager.dto.resource.invoice.InvoiceDto;
/**
* @author liujiaqi
*
*/
@Component
public class InvoiceComponent extends BaseBusiComponent {
private CInvoiceDao cInvoiceDao;
private CFeeDao cFeeDao;
private RInvoiceDao rInvoiceDao;
private RInvoiceOptrDao rInvoiceOptrDao;
private RInvoiceDetailDao rInvoiceDetailDao;
private RInvoiceFeelistDao rInvoiceFeelistDao;
private CCustDao cCustDao;
private CUserDao cUserDao;
private CInvoicePropChangeDao cInvoicePropChangeDao;
private CDocDao cDocDao;
private SDeptDao sDeptDao;
/**
* 根据发票id查询发票详细信息
* @param invoiceId
* @return
* @throws Exception
*/
public InvoiceDto queryInvoiceByInvoiceId(String invoiceId,String invoiceCode) throws Exception {
boolean flag = rInvoiceDao.isExistsInvoice(invoiceId, invoiceCode);
if(!flag){
throw new ComponentException(ErrorCode.InvoiceNotExists);
}
InvoiceDto invoice = rInvoiceDao.queryInvoiceByInvoiceId(invoiceId,invoiceCode);
List<InvoiceDetailDto> detail = rInvoiceDao.queryDetail(invoiceId,invoice.getInvoice_book_id(),invoice.getInvoice_code());
invoice.setInvoiceDetailList(detail);
return invoice;
}
/**
* 根据发票ID 和发票 CODE 修改发票状态.
* @param invoiceId
* @param invoiceCode
*/
public void editInvoiceStatus(String invoiceId, String invoiceCode,String newStatus) throws Exception{
rInvoiceDao.updateStatusByIdAndCode(invoiceId, invoiceCode,newStatus);
}
/**
* 根据发票号查询发票信息
* @param invoiceId
* @return
* @throws Exception
*/
public List<RInvoice> queryInvoiceById(String invoiceId) throws Exception {
return rInvoiceDao.queryInvoiceByCountyId(invoiceId,getOptr().getCounty_id());
}
/**
* 使用发票
*
* @param invoiceCode
* @param invoiceId
* @param invoiceMode
* 开具方式
*/
public void useInvoice(String invoiceCode, String invoiceId,
String invoiceMode,int amount) throws JDBCException, ComponentException {
rInvoiceDao.useInvoice(invoiceCode, invoiceId, invoiceMode,amount);
}
public void updateInvoiceInfo(String invoiceCode, String invoiceId, String invoiceMode, int amount) throws Exception {
rInvoiceDao.updateInvoiceInfo(invoiceCode, invoiceId, invoiceMode,amount, getOptr().getOptr_id());
}
public void updateDocType(String docSn, String docType) throws JDBCException {
cDocDao.updateDocType(docSn, docType);
}
/**
* 更换发票,记录异动
* @param doneCode
* @param oldInvoiceId
* @param oldInvoiceCode
* @param newInvoiceId
* @param newInvoiceCode
* @throws Exception
*/
public void saveInvoicePropChange(Integer doneCode, String oldInvoiceId,
String oldInvoiceCode, String newInvoiceId, String newInvoiceCode)
throws Exception {
RInvoice oldInvoice = rInvoiceDao.queryInvoice(oldInvoiceCode, oldInvoiceId);
RInvoice newInvoice = rInvoiceDao.queryInvoice(newInvoiceCode, newInvoiceId);
CInvoicePropChange prop = new CInvoicePropChange();
prop.setDone_code(doneCode);
prop.setOld_invoice_id(oldInvoice.getInvoice_id());
prop.setOld_invoice_code(oldInvoice.getInvoice_code());
prop.setOld_invoice_book_id(oldInvoice.getInvoice_book_id());
prop.setOld_invoice_type(oldInvoice.getInvoice_type());
prop.setNew_invoice_id(newInvoice.getInvoice_id());
prop.setNew_invoice_code(newInvoice.getInvoice_code());
prop.setNew_invoice_book_id(newInvoice.getInvoice_book_id());
prop.setNew_invoice_type(newInvoice.getInvoice_type());
setBaseInfo(prop);
cInvoicePropChangeDao.save(prop);
}
/**
* 取消使用发票
* @param invoiceCode
* @param invoiceId
* @throws JDBCException
* @throws ComponentException
*/
public void cancelUseInvoice(CInvoiceDto oldInvoice) throws JDBCException, ComponentException {
rInvoiceDao.cancelUseInvoice(oldInvoice.getStatus(),oldInvoice.getInvoice_code(),oldInvoice.getInvoice_id());
}
/**
* 使用发票
* @param fees
*/
public void useInvoice(List<FeeDto> fees) throws JDBCException {
for (FeeDto fee:fees)
rInvoiceDao.useInvoice(fee.getNew_invoice_code(),
fee.getNew_invoice_id(), SystemConstants.INVOICE_MODE_MANUAL, fee
.getReal_pay());
}
/**
* 取消使用发票
* @param fees
*/
public void cancelUseInvoice(List<FeeDto> fees) throws JDBCException {
for (FeeDto fee:fees)
rInvoiceDao.cancelUseInvoice(fee.getReal_pay(),fee.getInvoice_code(),fee.getInvoice_id());
}
/**
* 作废发票,并且清除c_fee里发票相关内容.
* @param doneCode
* @param invoiceId
* @param invoiceCode
* @throws Exception
*/
public void invalidInvoiceAndClearFeeInfo(Integer doneCode,String invoiceId, String invoiceCode) throws Exception {
cInvoiceDao.invalidInvoiceAndClearFeeInfo(invoiceId, invoiceCode);
RInvoiceOptr invoiceOptr = new RInvoiceOptr();
invoiceOptr.setDone_code(doneCode);
invoiceOptr.setOptr_type(InvoiceOptrType.EDITSTATUS.toString());
invoiceOptr.setInvoice_count(1);
invoiceOptr.setOptr_id(getOptr().getOptr_id());
invoiceOptr.setDept_id(getOptr().getDept_id());
invoiceOptr.setCounty_id(getOptr().getCounty_id());
invoiceOptr.setCreate_time(DateHelper.now());
rInvoiceOptrDao.save(invoiceOptr);
RInvoiceDetail invoiceDetail = new RInvoiceDetail();
invoiceDetail.setDone_code(doneCode);
invoiceDetail.setInvoice_code(invoiceCode);
invoiceDetail.setInvoice_id(invoiceId);
rInvoiceDetailDao.save(invoiceDetail);
}
/**
* 作废发票
* @param invoiceCode
* @param invoiceId
* @throws JDBCException
* @throws ComponentException
*/
public void invalidInvoice(Integer doneCode,String invoiceId, String invoiceCode) throws Exception {
cInvoiceDao.invalidInvoice(invoiceId, invoiceCode);
RInvoiceOptr invoiceOptr = new RInvoiceOptr();
invoiceOptr.setDone_code(doneCode);
invoiceOptr.setOptr_type(InvoiceOptrType.EDITSTATUS.toString());
invoiceOptr.setInvoice_count(1);
invoiceOptr.setOptr_id(getOptr().getOptr_id());
invoiceOptr.setDept_id(getOptr().getDept_id());
invoiceOptr.setCounty_id(getOptr().getCounty_id());
invoiceOptr.setCreate_time(DateHelper.now());
rInvoiceOptrDao.save(invoiceOptr);
RInvoiceDetail invoiceDetail = new RInvoiceDetail();
invoiceDetail.setDone_code(doneCode);
invoiceDetail.setInvoice_code(invoiceCode);
invoiceDetail.setInvoice_id(invoiceId);
rInvoiceDetailDao.save(invoiceDetail);
//定额发票不涉及前台操作
rInvoiceDao.saveEditStatus(doneCode,StatusConstants.INVALID,"");
}
/**
* @param invoiceId
* @param invoiceMode
* @return
* @throws JDBCException
* @throws ComponentException
*/
public List<RInvoice> checkInvoice(String invoiceId,String docType,String invoiceMode) throws Exception {
String scopeInvoice = queryTemplateConfig(TemplateConfigDto.Config.SCOPE_INVOICE.toString());
String[] depts = null;
if (SystemConstants.SYS_LEVEL_OPTR.equals(scopeInvoice) || SystemConstants.SYS_LEVEL_DEPT.equals(scopeInvoice)) {
depts = getOptr().getDept_id().split(",");
}else if (SystemConstants.SYS_LEVEL_COUNTY.equals(scopeInvoice)) {
depts = CollectionHelper.converValueToArray(sDeptDao.queryByCountyId(getOptr().getCounty_id()), "dept_id");
}
List<String> errorMsgList = new ArrayList<String>();
String errorMeg = "";
List<RInvoice> invoices = new ArrayList<RInvoice>();
//查找在当前库的发票
if (SystemConstants.INVOICE_MODE_MANUAL.equals(invoiceMode)){
//手票不限制发票类型
List<RInvoice> invoiceList = new ArrayList<RInvoice>();
invoiceList = rInvoiceDao.queryInvoiceByDepot(invoiceId,depts);
for(RInvoice invoice : invoiceList){
//收费清单不能开手工票
if(!invoice.getInvoice_type().equals(SystemConstants.DOC_TYPE_FEELIST)){
invoices.add(invoice);
}
}
}else if (SystemConstants.INVOICE_MODE_AUTO.equals(invoiceMode)){
if (StringHelper.isEmpty(docType)){
errorMeg = "请确定机打票的发票类型";
errorMsgList.add(errorMeg);
}else{
invoices = rInvoiceDao.queryInvoiceByDepot(invoiceId,depts);
}
}else{
errorMeg = "没有指定出票方式";
errorMsgList.add(errorMeg);
}
//符合条件发票记录
//有可能发票号相同,发票本号不同的发票修改
List<RInvoice> list = new ArrayList<RInvoice>();
if(invoices!=null){
if (invoices.size()==0){
throw new ServicesException(ErrorCode.ReceiptNotExists);
}else{
for (int i=invoices.size()-1;i>=0;i--){
RInvoice invoice = invoices.get(i);
if(SystemConstants.SYS_LEVEL_OPTR.equals(scopeInvoice)){
/*if(!getOptr().getOptr_id().equals(invoice.getOptr_id())){
errorMeg = "发票["+ invoice.getInvoice_id() +"]未领用";
errorMsgList.add(errorMeg);
continue;
}*/
if(StringHelper.isEmpty(invoice.getOptr_id())){
/*errorMeg = "发票["+ invoice.getInvoice_id() +"]未领用";
errorMsgList.add(errorMeg);
continue;*/
throw new ServicesException(ErrorCode.ReceiptNotRecipients, invoice.getInvoice_id());
}
}
if(!docType.equals(invoice.getInvoice_type())){
errorMeg = "发票类型不符,需要【" + MemoryDict.getDictName(DictKey.INVOICE_TYPE, docType) + "】 ";
errorMsgList.add(errorMeg);
continue;
}
if(!invoice.getFinance_status().equals(SystemConstants.INVOICE_STATUS_IDLE)){
/*errorMeg = "发票已结账";
errorMsgList.add(errorMeg);
continue;*/
throw new ServicesException(ErrorCode.ReceiptAlreadyCheckout);
}else if (!invoice.getStatus().equals(SystemConstants.INVOICE_STATUS_IDLE)
&&!SystemConstants.INVOICE_MODE_MANUAL.equals(invoice.getInvoice_mode())){
//打印的发票状态必须为空闲
/*errorMeg = "发票["+ invoice.getInvoice_id() +"]已使用";
errorMsgList.add(errorMeg);
continue;*/
throw new ServicesException(ErrorCode.ReceiptIsUsed, invoice.getInvoice_id());
}else if (SystemConstants.INVOICE_MODE_AUTO.equals(invoiceMode)){
//如果机打票,不允许原先被手工开票过
if (SystemConstants.INVOICE_MODE_MANUAL.equals(invoice.getInvoice_mode())){
errorMeg = "发票已经用于手工票,不能进行打印";
errorMsgList.add(errorMeg);
continue;
}else{
list.add(invoice);
}
}else if (SystemConstants.INVOICE_MODE_MANUAL.equals(invoice.getInvoice_mode())){
//开手工票,开票人必须是同一个操作员
List<CFee> invices = cFeeDao.queryFeeByInvoice(invoice.getInvoice_code(),invoice.getInvoice_id());
if (invices.size()>0&&!invices.get(0).getOptr_id().equals(getOptr().getOptr_id())){
errorMeg = "已被操作员 "+invices.get(0).getOptr_name()+" 开手工票";
errorMsgList.add(errorMeg);
continue;
}else{
list.add(invoice);
}
}else{
errorMeg = null;
list.add(invoice);
}
}
}
}
if(!errorMsgList.isEmpty() && list.size()==0){
errorMeg = errorMsgList.size()>1 ? "发票不可用":errorMsgList.toArray()[0].toString();
throw new ComponentException(errorMeg);
}
return list;
}
/**
* @param feeList
*/
public void queryValidFeeList(List<PayDto> feeList) throws Exception{
String scopeInvoice = queryTemplateConfig(TemplateConfigDto.Config.SCOPE_INVOICE.toString());
String depotId = "";
if (SystemConstants.SYS_LEVEL_OPTR.equals(scopeInvoice)) {
depotId = getOptr().getOptr_id();
}else if (SystemConstants.SYS_LEVEL_DEPT.equals(scopeInvoice)) {
depotId = getOptr().getDept_id();
}else if (SystemConstants.SYS_LEVEL_COUNTY.equals(scopeInvoice)) {
depotId = getOptr().getCounty_id();
}
//查找在当前库的发票
List<RInvoice> invoices = rInvoiceDao.queryInvoiceByIdAndCode(feeList,depotId);
Map<String,RInvoice> map = CollectionHelper.converToMapSingle(invoices, "invoice_id","invoice_code");
String optrCounty = getOptr().getCounty_id();
for(PayDto pay : feeList){
CCust cust = cCustDao.queryCustByCustNo(pay.getCust_no());
if(cust == null){
throw new ComponentException("客户编号: "+pay.getCust_no()+" 对应客户不存在");
}
if(!cust.getCounty_id().equals(optrCounty)){
throw new ComponentException("客户名: "
+ pay.getCust_name() + " 所在县市 " + cust.getCounty_name()
+ " 和操作员县市不一致,请检查数据或切换县市!");
}
CUser user = cUserDao.findByKey(pay.getUser_id());
if(user == null){
throw new ComponentException("用户ID: "+pay.getUser_id()+" 对应用户不存在");
}
if(!user.getCust_id().equals(cust.getCust_id())){
throw new ComponentException("用户对应客户ID和文件中客户ID: "+cust.getCust_id()+" 不相同");
}
CProd prod = cProdDao.findByKey(pay.getProd_sn());
if(prod == null){
throw new ComponentException("产品ID: "+pay.getProd_sn()+" 对应产品不存在");
}else{
pay.setInvalid_date(DateHelper.dateToStr(prod.getInvalid_date()));
}
if(!prod.getUser_id().equals(user.getUser_id())){
throw new ComponentException("用户订购产品ID和文件中产品ID: "+pay.getProd_sn()+" 不相同");
}
int fee = pay.getFee().intValue();
if(fee == 0 && pay.getPresent_fee().intValue() == 0){
throw new ComponentException("上传的文件中,请填入缴费金额,客户名为: "+pay.getCust_name());
}
if(fee == 0) continue; //缴费金额为0,不用填发票
if( StringHelper.isEmpty(pay.getInvoice_id()) || StringHelper.isEmpty(pay.getInvoice_code()) ){
throw new ComponentException("上传的文件中,存在数据发票为空");
}
String key = pay.getInvoice_id() + "_" + pay.getInvoice_code();
RInvoice invoice = map.get(key);
if(null == invoice){
throw new ComponentException("上传的文件中,发票号"+pay.getInvoice_id()+",发票代码"+pay.getInvoice_code()+"的数据,它的发票号不能用或不存在");
}else{
pay.setInvoice_code(invoice.getInvoice_code());
}
}
}
/**
* 查询发票
* @param invoiceCode
* @param invoiceId
* @return
* @throws Exception
*/
public RInvoice queryById(String oldInvoiceId,String oldInvoiceCode) throws JDBCException {
return rInvoiceDao.queryInvoice(oldInvoiceCode, oldInvoiceId);
}
public void changeFeelistInvoice(Integer doneCode,String custId,String feelistId, String feelistCode,
String feelistBookId, String invoiceId, String invoiceCode, String remark) throws Exception {
RInvoice invoice = rInvoiceDao.queryInvoice(feelistCode, feelistId);
RInvoiceFeelist feelist = new RInvoiceFeelist();
feelist.setDone_code(doneCode);
feelist.setFeelist_id(feelistId);
feelist.setFeelist_code(feelistCode);
feelist.setFeelist_book_id(feelistBookId);
feelist.setFeelist_type(invoice.getInvoice_type());
feelist.setInvoice_id(invoiceId);
feelist.setInvoice_code(invoiceCode);
feelist.setAmount(invoice.getAmount());
feelist.setCust_id(custId);
feelist.setStatus(StatusConstants.ACTIVE);
feelist.setStatus_time(DateHelper.now());
feelist.setOptr_id(getOptr().getOptr_id());
feelist.setCounty_id(invoice.getDepot_id());
feelist.setRemark(remark);
rInvoiceFeelistDao.save(feelist);
}
public void invalidFeeListInvoice(Integer feeDoneCode) throws Exception {
rInvoiceFeelistDao.updateStatus(feeDoneCode,StatusConstants.INVALID);
}
/**
* 修改发票出票方式
* @param feeSn
* @param invoiceMode
*/
public void editInvoiceMode(String feeSn, String invoiceMode, CInvoiceDto oldInvoice,CInvoiceDto newInvoice,Integer realPay, Integer doneCode) throws Exception {
CFee fee = new CFee();
fee.setFee_sn(feeSn);
if (invoiceMode.equals(SystemConstants.INVOICE_MODE_MANUAL)){//手开
fee.setIs_doc(SystemConstants.BOOLEAN_TRUE);
fee.setInvoice_mode(invoiceMode);
String mId = "xs"+doneCode;//xs + donecode
fee.setInvoice_id(mId);
fee.setInvoice_code(mId);
fee.setInvoice_book_id(mId);
fee.setInvoice_fee(0);
fee.setInvoice_mode(invoiceMode);
// rInvoiceDao.useInvoice(newInvoice.getInvoice_code(),
// newInvoice.getInvoice_id(), SystemConstants.INVOICE_MODE_MANUAL, realPay);
if(oldInvoice!=null){
List<CFee> cfList = new ArrayList<CFee>();
List<CFee> feeList = cFeeDao.queryByInvoiceId(feeSn,oldInvoice,getOptr().getCounty_id());
for(CFee dto: feeList){
CFee cf = new CFee();
cf.setFee_sn(dto.getFee_sn());
cf.setIs_doc(SystemConstants.BOOLEAN_FALSE);
cf.setInvoice_mode("");
cf.setInvoice_id("");
cf.setInvoice_code("");
cf.setInvoice_book_id("");
cfList.add(cf);
}
cFeeDao.update(cfList.toArray(new CFee[cfList.size()]));
cancelUseInvoice(oldInvoice);
cInvoiceDao.invalidInvoice(oldInvoice.getInvoice_id(), oldInvoice.getInvoice_code());
}
}else{//机打或定额
CFee oldFee = cFeeDao.findByKey(feeSn);
if(StringHelper.isNotEmpty(oldFee.getInvoice_id())){
rInvoiceDao.cancelUseInvoice(realPay,oldFee.getInvoice_code(),oldFee.getInvoice_id());
}
fee.setInvoice_mode("");
fee.setInvoice_id("");
fee.setInvoice_code("");
fee.setInvoice_book_id("");
if(SystemConstants.INVOICE_MODE_QUOTA.equals(invoiceMode)){//定额
fee.setInvoice_fee(oldFee.getReal_pay());
fee.setIs_doc(SystemConstants.BOOLEAN_TRUE);
}else{
fee.setInvoice_fee(0);
fee.setIs_doc(SystemConstants.BOOLEAN_FALSE);
}
//旧发票为机打
if(oldInvoice!=null && SystemConstants.INVOICE_MODE_AUTO.equals(oldInvoice.getInvoice_mode())){
List<CFee> cfList = new ArrayList<CFee>();
List<CFee> feeList = cFeeDao.queryByInvoiceId(feeSn,oldInvoice,getOptr().getCounty_id());
for(CFee dto: feeList){
CFee cf = new CFee();
cf.setFee_sn(dto.getFee_sn());
cf.setIs_doc(SystemConstants.BOOLEAN_FALSE);
cf.setInvoice_mode("");
cf.setInvoice_id("");
cf.setInvoice_code("");
cf.setInvoice_book_id("");
cfList.add(cf);
}
cFeeDao.update(cfList.toArray(new CFee[cfList.size()]));
cancelUseInvoice(oldInvoice);
cInvoiceDao.invalidInvoice(oldInvoice.getInvoice_id(), oldInvoice.getInvoice_code());
}
}
cFeeDao.update(fee);
}
/**
* @param feeSn
* @param acctDate
*/
public void editAcctDate(String feeSn, String acctDate) throws JDBCException {
CFee fee = cFeeDao.findByKey(feeSn);
fee.setAcct_date(DateHelper.strToDate(acctDate));
cFeeDao.update(fee);
}
/**
* 直接录入新的手工发票入库.
* @param newInvoice
*/
public void saveManuallyEditMInvoice(RInvoice newRin,RInvoice oldRin,String feeSN, boolean isNewInvoice) throws Exception{
if(isNewInvoice){
rInvoiceDao.save(newRin);
}
if(oldRin!=null){
//TODO 不要处理这个如果有需要以后再改
// editInvoiceStatus(oldRin.getInvoice_id(),oldRin.getInvoice_code(),SystemConstants.INVOICE_STATUS_INVALID);
}
String invoiceCode = newRin.getInvoice_code();
CFee fee = cFeeDao.findByKey(feeSN);
fee.setInvoice_book_id(invoiceCode);
fee.setInvoice_code(invoiceCode);
fee.setInvoice_id(newRin.getInvoice_id());
cFeeDao.update(fee);
}
/**
* @param invoiceDao
* the rInvoiceDao to set
*/
public void setRInvoiceDao(RInvoiceDao invoiceDao) {
rInvoiceDao = invoiceDao;
}
/**
* @param invoiceOptrDao the rInvoiceOptrDao to set
*/
public void setRInvoiceOptrDao(RInvoiceOptrDao invoiceOptrDao) {
rInvoiceOptrDao = invoiceOptrDao;
}
/**
* @param invoiceDetailDao the rInvoiceDetailDao to set
*/
public void setRInvoiceDetailDao(RInvoiceDetailDao invoiceDetailDao) {
rInvoiceDetailDao = invoiceDetailDao;
}
/**
* @param invoiceDao the cInvoiceDao to set
*/
public void setCInvoiceDao(CInvoiceDao invoiceDao) {
cInvoiceDao = invoiceDao;
}
/**
* @param feeDao the cFeeDao to set
*/
public void setCFeeDao(CFeeDao feeDao) {
cFeeDao = feeDao;
}
public void setRInvoiceFeelistDao(RInvoiceFeelistDao invoiceFeelistDao) {
rInvoiceFeelistDao = invoiceFeelistDao;
}
public void setCCustDao(CCustDao custDao) {
cCustDao = custDao;
}
public void setCUserDao(CUserDao userDao) {
cUserDao = userDao;
}
public void setCInvoicePropChangeDao(CInvoicePropChangeDao invoicePropChangeDao) {
cInvoicePropChangeDao = invoicePropChangeDao;
}
public void setCDocDao(CDocDao docDao) {
cDocDao = docDao;
}
public void setSDeptDao(SDeptDao deptDao) {
sDeptDao = deptDao;
}
public boolean checkInvoiceOptr(List<String> invoiceIdList,String optrId) throws Exception{
if(invoiceIdList == null || invoiceIdList.size()==0){
return false;
}
for(String str : invoiceIdList){
RInvoice r = rInvoiceDao.queryInvoice(SystemConstants.BASE_INVOICE_CODE,str);
if(r == null ||StringHelper.isEmpty(r.getOptr_id()) || !r.getOptr_id().equals(optrId)){
return false;
}
}
return true;
}
}