--青海电信 同步凭证 M8InterfaceAction bcdl_m8.log
1. AccountantToUser accounts=serviceFactory.getTransferPayeeService().loadAuditedAccountantsByUser(this.getCurrentUser(request).getUserID());
--对应的SQL
select a from AccountantToUser a where a.user.userID = :userID and a.isAuditing is true
得到该用户下面能够同步的帐套,在我们系统里面可以配置用户对应的帐套
--电信的是根据voucherID + 来确定唯一的
--移动是根据voucherno + invoiceNo来确定唯一的
String sql = "select distinct v.VOUCHER_ID,v.UNIT_CODE,v.CHECKDATE from CM_M8_VOUCHER v,CM_M8_VOUCHER_DETAIL vd,CM_M8_VOUCHER_SOURCE_TYPE t, CM_M8_ACCOUNT cma where "
+ "v.VOUCHER_ID=vd.VOUCHER_ID and v.SOURCE_ID=t.SOURCEID and v.UNIT_CODE=cma.UNIT_CODE and cma.ACC_CODE in"+zhangTaos+" order by v.CHECKDATE desc";
--if (getAndWriteBackVoucher.size() == voucherNum) { //界面上抽取到多少条
将界面上抽到的凭证信息组成一个 Map<凭证ID,单位编号> ,只为了得到VOUCHER_ID,单位编码是无效的
2. --根据凭证ID判断该凭证是否已经存在,如果已经存在且整个凭证都没支付,则删除整个凭证,如果存在,但是整个凭证中,部分支付了,则不能插入该凭证ID的凭证信息
--查这个凭证ID被制单没有
select p from PaymentList p where p.voucherID='"+voucherID+"' and p.isUsed = 1
serviceFactory.getM8VoucherService().isExistUsed(voucherID) //是否存在已经支付的凭证
然后CM_TMS_VOUCHERLIST 表中回写数据给一个标志-1 同时给出信息 该单据已办理支付
--查这个凭证被其他出纳抽取没有
select p from PaymentList p where p.voucherID='"+voucherID+"' and p.user.userID !=" + userID
--然后CM_TMS_VOUCHERLIST 表中回写数据给一个标志-1 同时给出信息,该单据已被出
纳"+otherUsername+"同步!
--获取到voucherMap ,然后要根据各种条件过滤掉不符需求的凭证
//贷方,且付款金额小于0 就过滤掉
if (p.getCheck_flag() != null && p.getCheck_flag() == 1 && subCode.containsKey(p.getCheck_sequence_sub_code() + p.getAccountSet())) { 其他的就保存进来
保存paymentList 和 VoucherNo List
然后查String bpd = "SELECT * FROM V_BCDL_PAY_DETAIL_DY DY,BCDL_PAY_DETAIL D WHERE DY.PAY_ID = D.PAY_LIST_NUM AND DY.ID = ?";
获取 VouchernoInfo 清单的信息
// 写到本地CMCS3_FARE
// 写到本地CMCS3_FARE_DETAIL
// 写到本地CMCS3_M8_VOUCHER 相当于像通过来的凭证做个备份,但现在实际上没有什么意义
// begin 先根据凭证ID删除数据库中已存在的凭证,写到本地CMCS3_PAYMENT_LIST
然后最后一次先删除后插入给M8反馈消息
delete from CM_"+tableName+"_VOUCHERLIST v where v.VOUCHER_ID=?
insert into CM_"+tableName+"_VOUCHERLIST (VOUCHER_ID,UNIT_CODE,OP_TYPE,OP_DESC)
最后调用一个储存过程
{ call CM_TMS_VOUCHER_READ.updatestatus(?,?) }