def SubModuledoSnd(): #在退付信息写到本地数据库里面 sqlstr = "insert into FS_FC75(AAA010,AFC060,AFC041,AFA050,AFC061,AFC062,AFC063,AFC064,FBLRQ,AFA101,BUSINO,TELLER,BRNO,FLAG,DATE,TIME) values(" FLAG = '0' sqlstr = sqlstr + "'" + TradeContext.AAA010 + "'," sqlstr = sqlstr + "'" + TradeContext.AFC060 + "'," sqlstr = sqlstr + "'" + TradeContext.AFC041 + "'," sqlstr = sqlstr + "'" + TradeContext.AFA050 + "'," sqlstr = sqlstr + "'" + TradeContext.AFC061 + "'," sqlstr = sqlstr + "'" + TradeContext.AFC062 + "'," sqlstr = sqlstr + "'" + TradeContext.AFC063 + "'," sqlstr = sqlstr + "'" + TradeContext.AFC064 + "'," sqlstr = sqlstr + "'" + TradeContext.FBLRQ + "'," sqlstr = sqlstr + "'" + TradeContext.bankbm + "'," sqlstr = sqlstr + "'" + TradeContext.busiNo + "'," sqlstr = sqlstr + "'" + TradeContext.teller + "'," sqlstr = sqlstr + "'" + TradeContext.brno + "'," sqlstr = sqlstr + "'" + FLAG + "'," sqlstr = sqlstr + "'" + TradeContext.workDate + "'," sqlstr = sqlstr + "'" + TradeContext.workTime + "')" TradeContext.errorCode = "0000" TradeContext.errorMsg = "退付成功" if( AfaDBFunc.InsertSql( sqlstr ) < 1 ): AfaDBFunc.RollbackSql( ) AfaLoggerFunc.tradeInfo( '插入退付信息表失败' + sqlstr ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) TradeContext.errorCode = "0001" TradeContext.errorMsg = "退付失败" return False AfaDBFunc.CommitSql( ) AfaLoggerFunc.tradeInfo( '插入退付信息表结束' ) #本模块主要是为了填写发票数据 if (TradeContext.channelCode =='001' ): #柜面交易不计发票 TradeContext.__billSaveCtl__ = '0' else: TradeContext.__billSaveCtl__ = '1' bill = [] bill.append('1') bill.append('') bill.append('') bill.append('') bill.append('') bill.append('') bill.append('') bill.append('') return bill
def InsertDB(record): tradeLogger.info(HostContext.O1ACBL) #=====向8446表中插入数据==== tradeLogger.info("进入InsertDB,向8446表中插入数据") #TradeContext.serDate = AfaAdminFunc.getTimeFromNow(int(-1)) #TradeContext.serDate ='20091231' insertsql = "insert into FS_8446_REMAIN(BUSINO,DATE,THIS,ACCNO,BANKNO) VALUES('"+ \ record[0] + "','" + TradeContext.serDate + "','" + str(float(HostContext.O1ACBL)) + "','" + record[1] + "','" + record[3] + "')" tradeLogger.info(insertsql) res = AfaDBFunc.InsertSql(insertsql) if(res < -1): AfaDBFunc.RollbackSql( ) tradeLogger.info('BUSINO>>>'+record[0]) tradeLogger.info("插入8446余额表失败") return False AfaDBFunc.CommitSql( ) return True
def insert( insert_dict ): if not chk(insert_dict): return -1 sql = "INSERT INTO rcc_ztcbka (" + ','.join(table_tuple) + ") VALUES ( " for table_item in table_tuple: if table_dict[table_item] == 'S': if insert_dict.has_key(table_item): sql = sql + "'" + insert_dict[table_item] + "'," else: sql = sql + "''," else: if insert_dict.has_key(table_item) and str(insert_dict[table_item]) != '': sql = sql + str(insert_dict[table_item]) + "," else: sql = sql + "0," sql = sql[0:-1] + ")" AfaLoggerFunc.tradeInfo(sql) return AfaDBFunc.InsertSql( sql )
AfaLoggerFunc.tradeInfo(">>>结束获取前中心工作日期") #==================通存通兑往账统计========================================= AfaLoggerFunc.tradeInfo(">>>开始通存通兑往账业务量统计") tmp_sql = "" tmp_sql = tmp_sql + " insert into rcc_trcsta(" tmp_sql = tmp_sql + " select a.nccwkdat,a.besbno,a.trcco,a.brsflg,'','',count(occamt),sum(occamt),'0','','','','',''" tmp_sql = tmp_sql + " from rcc_wtrbka as a,rcc_spbsta as b where a.bjedte = b.bjedte and a.bspsqn = b.bspsqn" tmp_sql = tmp_sql + " and b.bcstat = '42' and b.bdwflg = '1' and a.brsflg = '" + PL_BRSFLG_SND + "' and a.nccwkdat in " + LNCCWKDAT tmp_sql = tmp_sql + " group by a.nccwkdat,a.besbno,a.trcco,a.brsflg)" AfaLoggerFunc.tradeInfo(tmp_sql) ret = AfaDBFunc.InsertSql(tmp_sql) if ret < 0: AfaLoggerFunc.tradeInfo(AfaDBFunc.sqlErrMsg) rccpsCronFunc.cronExit("S999","通存通兑往账业务量统计异常") AfaLoggerFunc.tradeInfo(">>>结束通存通兑往账业务量统计") #==================通存通兑来账统计========================================= AfaLoggerFunc.tradeInfo(">>>开始通存通兑来账业务量统计") tmp_sql = "" tmp_sql = tmp_sql + " insert into rcc_trcsta(" tmp_sql = tmp_sql + " select a.nccwkdat,a.besbno,a.trcco,a.brsflg,'','',count(occamt),sum(occamt),'0','','','','',''" tmp_sql = tmp_sql + " from rcc_wtrbka as a,rcc_spbsta as b where a.bjedte = b.bjedte and a.bspsqn = b.bspsqn" tmp_sql = tmp_sql + " and b.bcstat in ('70','72') and b.bdwflg = '1' and a.brsflg = '" + PL_BRSFLG_RCV + "' and a.nccwkdat in " + LNCCWKDAT
def VouhTrans( ): #===定义变量-输入的凭证号码与库表中状态为‘1’(已出未入)的凭证号码的连续标志====== #sFlagContinue:continue:前后连续; #sFlagContinue:FrontContinue:前连续; #sFlagContinue:BackContinue:后连续; sFlagContinue = '' #=============进入凭证出库交易========================== #1.查询需要出库的凭证起止号码是否在库表中已入未发的凭证号码范围内 #2.如果需要出库的凭证起止号码在库表中可出库的凭证号码范围内,那么需要 # 判断库表中满足凭证状态为已发未领,地区号与签到柜员所在地区一致这几个条件的记录 #与输入的凭证号码是否有连续关系 #3.如果无连续关系,那么需要判断输入的凭证起止号码与库表中相应的凭证号码区间的关系 # 1)输入的起始号码与区间的起始号码相同. 2)输入的终止号码与区间的结束号码相同 # 3)输入的起始号码和终止号码与区间起始和结束号码都相同. 4)输入的起止号码完全在区间之内 #4.如果有连续关系,那么需要判断输入的凭证起止号码与库表中凭证状态为已发未领的 #凭证号码之间的关系 1) 前连续 2)后连续 3)前后连续 for i in range(TradeContext.sNum): #begin凭证优化201202 李利君 Len='' Len = int(len(TradeContext.sStartNo[i])) #=============计算输入的凭证数量========================== sStartNoMulti = str(int( TradeContext.sStartNo[i] ) - 1).rjust(Len,'0') sEndNoAdd = str(int( TradeContext.sEndNo[i] ) + 1).rjust(Len,'0') #end #查询数据库[凭证登记表],确认是否输入的凭证起始号码,终止号码在该柜员登陆分行 #登记未出状态的凭证号码段内 sqlStr = "select STARTNO,ENDNO,LSTTRXDAY,LSTTRXTIME,RIVTELLER,TELLERNO \ from VOUH_REGISTER \ where VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and BESBNO = '" + TradeContext.sBesbNo + "'\ and TELLERNO = '" + TradeContext.sTellerTailNo + "'\ and CUR = '" + TradeContext.sCur + "'\ and DEPOSITORY = '" + TradeContext.sExDepos + "'\ and VOUHSTATUS = '" + TradeContext.sExStatus+ "' \ and ( ENDNO >= '" + TradeContext.sEndNo[i] + "' and STARTNO <= '" + TradeContext.sStartNo[i] + "' )" records = AfaDBFunc.SelectSql( sqlStr ) AfaLoggerFunc.tradeDebug(sqlStr) if( records == None ): #查询凭证登记表异常 if( i > 0 ): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit('A005061', '查询[凭证登记表]操作异常!') raise AfaFlowControl.flowException( ) elif( len( records ) == 0 ): #如果凭证登记表中无对应记录 if( i > 0 ): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit('A005067', '凭证操作失败,凭证库中不存在本次操作的凭证!') raise AfaFlowControl.flowException( ) else : records = AfaUtilTools.ListFilterNone( records ) sTempStartNo = records[0][0] #保存输入的凭证号码所在的区间起始凭证号码 sTempEndNo = records[0][1] #保存输入的凭证号码所在的区间终止凭证号码 sTempLstTrxDay = records[0][2] #保存输入的凭证号码所在的区间最后交易日期 sTempLstTrxTime = records[0][3] #保存输入的凭证号码所在的区间最后交易时间 sTempRivTeller = records[0][4] #保存输入的凭证号码所在的区间对方柜员 sTempTellerNo = records[0][5] #保存输入的凭证号码所在的区间对方柜员 #当输入的凭证起止号码为合法号码时,查询库表中满足状态为已发未领, #柜员号地区号与签到柜员所在地区一致的条件的记录与输入的凭证号码是否有连续关系 sqlStr = "select STARTNO,ENDNO from VOUH_REGISTER \ where VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and BESBNO = '" + TradeContext.sInBesbNo + "'\ and TELLERNO = '" + TradeContext.sInTellerTailNo + "'\ and CUR = '" + TradeContext.sCur + "'\ and DEPOSITORY = '" + TradeContext.sDepository + "'\ and VOUHSTATUS = '"+ TradeContext.sVouhStatus+ "' \ and ( ENDNO = '" + sStartNoMulti + "' \ OR STARTNO = '" + sEndNoAdd + "' )" AfaLoggerFunc.tradeDebug(sqlStr) records = AfaDBFunc.SelectSql( sqlStr ) records = AfaUtilTools.ListFilterNone( records ) if( records == None ): #查询凭证登记表异常 if( i > 0 ): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit('A005061', '查询[凭证登记表]操作异常!') raise AfaFlowControl.flowException( ) #输入的凭证号码与库中已存在的状态为登记未出的凭证号码无连续关系 elif( len( records ) == 0 ): #输入的起始号码和终止号码与区间起始和结束号码都相同 if ( int( TradeContext.sEndNo[i] ) == int( sTempEndNo ) \ and int( TradeContext.sStartNo[i] ) == int( sTempStartNo ) ): #直接更新对应记录 sqlStr = "update VOUH_REGISTER set \ DEPOSITORY = '"+TradeContext.sDepository+"',\ VOUHSTATUS = '"+ TradeContext.sVouhStatus+ "',\ BESBNO = '" + TradeContext.sInBesbNo + "', \ TELLERNO = '" + TradeContext.sInTellerTailNo + "', \ RIVTELLER = '" + TradeContext.sTellerTailNo + "', \ LSTTRXDAY = '" + TradeContext.sLstTrxDay + "',\ LSTTRXTIME = '" + TradeContext.sLstTrxTime + "'" sqlStr = sqlStr + " where STARTNO = '" + TradeContext.sStartNo[i] + "' \ and DEPOSITORY = '" + TradeContext.sExDepos + "'\ and BESBNO = '" + TradeContext.sBesbNo + "'\ and TELLERNO = '" + TradeContext.sTellerTailNo + "'\ and VOUHSTATUS = '" + TradeContext.sExStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and CUR = '"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug('1'+sqlStr) records = AfaDBFunc.UpdateSql( sqlStr ) if records == -1 or records == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) else: tradeExit('0000', TradeContext.sTransType+'成功') #输入的终止号码与区间的结束号码相同 elif ( int( TradeContext.sEndNo[i] ) == int( sTempEndNo ) ): #更新数据库中已存记录,更新成功后再新增出库记录 sqlStr = "update VOUH_REGISTER set \ VOUHNUM = '"+ ( str( int( TradeContext.sStartNo[i] ) - int( sTempStartNo ) ) )+ "',\ ENDNO = '" + sStartNoMulti + "'" sqlStr = sqlStr + " where STARTNO = '" + sTempStartNo + "' \ and DEPOSITORY = '" + TradeContext.sExDepos + "'\ and BESBNO = '" + TradeContext.sBesbNo + "'\ and TELLERNO = '" + TradeContext.sTellerTailNo + "'\ and VOUHSTATUS = '" + TradeContext.sExStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and CUR ='"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug('2'+sqlStr) records = AfaDBFunc.UpdateSql( sqlStr ) if records == -1 or records == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) else: #更新成功后再新增出库记录 sqlStr = "insert into VOUH_REGISTER \ (BESBNO,TELLERNO,DEPOSITORY,CUR,VOUHTYPE,STARTNO,ENDNO,RIVTELLER,\ VOUHSTATUS,VOUHNUM,LSTTRXDAY,LSTTRXTIME) \ values \ ('" + TradeContext.sInBesbNo + "',\ '" + TradeContext.sInTellerTailNo + "','"+TradeContext.sDepository+"','"+ TradeContext.sCur+"',\ '"+ TradeContext.sVouhType[i] + "',\ '" + TradeContext.sStartNo[i] + "','" + sTempEndNo + "',\ '" + TradeContext.sTellerTailNo +"','"+ TradeContext.sVouhStatus+ "',\ '" + TradeContext.sVouhNum[i] + "',\ '" + TradeContext.sLstTrxDay + "','" + TradeContext.sLstTrxTime + "')" record = AfaDBFunc.InsertSql( sqlStr ) if record == -1 or record == 0: AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) else: #调配成功 tradeExit('0000', TradeContext.sTransType+'成功') #输入的起始号码与区间的起始号码相同 elif ( int( TradeContext.sStartNo[i] ) == int( sTempStartNo ) ): #更新数据库中已存记录,更新成功后再新增出库记录 sqlStr = "update VOUH_REGISTER set \ VOUHNUM = '" + str( int( sTempEndNo ) - int ( TradeContext.sEndNo[i] ) )+ "',\ STARTNO = '" + sEndNoAdd + "'" sqlStr = sqlStr + " where ENDNO = '" + sTempEndNo + "' \ and DEPOSITORY = '" + TradeContext.sExDepos + "'\ and BESBNO = '" + TradeContext.sBesbNo + "'\ and TELLERNO = '" + TradeContext.sTellerTailNo + "'\ and VOUHSTATUS = '" + TradeContext.sExStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and CUR ='"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug('3'+sqlStr) records = AfaDBFunc.UpdateSql( sqlStr ) if records == -1 or records == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) else: #更新成功后再新增出库记录 sqlStr = "insert into VOUH_REGISTER \ (BESBNO,TELLERNO,DEPOSITORY,CUR,VOUHTYPE,STARTNO,ENDNO,RIVTELLER,\ VOUHSTATUS,VOUHNUM,LSTTRXDAY,LSTTRXTIME) \ values \ ('" + TradeContext.sInBesbNo + "',\ '" + TradeContext.sInTellerTailNo + "','"+TradeContext.sDepository+"',\ '" + TradeContext.sCur+"',\ '" + TradeContext.sVouhType[i]+"',\ '" + sTempStartNo + "',\ '" + TradeContext.sEndNo[i] + "','"+TradeContext.sTellerTailNo+"',\ '" + TradeContext.sVouhStatus+ "','" + TradeContext.sVouhNum[i] + "',\ '" + TradeContext.sLstTrxDay + "',\ '" + TradeContext.sLstTrxTime + "')" AfaLoggerFunc.tradeDebug('1'+sqlStr) record = AfaDBFunc.InsertSql( sqlStr ) if record == -1 or record == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) else: #调配成功 tradeExit('0000', TradeContext.sTransType+'成功') #输入的起止号码完全包含在区间之内 else: #1更新数据库中已存记录,更新成功后再新增出库记录和相应登记未出状态记录 sqlStr = "update VOUH_REGISTER set \ VOUHNUM = '" + str( int( TradeContext.sStartNo[i] ) - int( sTempStartNo ) ) + "',\ ENDNO = '" + sStartNoMulti + "'" sqlStr = sqlStr + " where STARTNO = '" + sTempStartNo + "' \ and DEPOSITORY = '" + TradeContext.sExDepos + "'\ and BESBNO = '" + TradeContext.sBesbNo + "'\ and TELLERNO = '" + TradeContext.sTellerTailNo + "'\ and VOUHSTATUS = '" + TradeContext.sExStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and CUR ='"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug('4'+sqlStr) records = AfaDBFunc.UpdateSql( sqlStr ) if records == -1 or records == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', '新增[凭证登记表]基本信息失败!') raise AfaFlowControl.flowException( ) #2##############更新成功后再新增出库记录########################################### sqlStr = "insert into VOUH_REGISTER \ (BESBNO,TELLERNO,DEPOSITORY,CUR,VOUHTYPE,STARTNO,ENDNO,RIVTELLER,\ VOUHSTATUS,VOUHNUM,LSTTRXDAY,LSTTRXTIME) \ values \ ('" + TradeContext.sInBesbNo + "',\ '" + TradeContext.sInTellerTailNo + "','"+TradeContext.sDepository+"',\ '" + TradeContext.sCur+"',\ '" + TradeContext.sVouhType[i]+"',\ '" + TradeContext.sStartNo[i] + "',\ '" + TradeContext.sEndNo[i] + "','"+TradeContext.sTellerTailNo+"',\ '" + TradeContext.sVouhStatus+ "','" + TradeContext.sVouhNum[i] + "',\ '" + TradeContext.sLstTrxDay + "',\ '" + TradeContext.sLstTrxTime + "')" AfaLoggerFunc.tradeDebug('2'+sqlStr) record = AfaDBFunc.InsertSql( sqlStr ) if record == -1 or record == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) #3新增新增出库记录成功后,新增相应登记未出状态记录 sqlStr = "insert into VOUH_REGISTER \ (BESBNO,TELLERNO,DEPOSITORY,CUR,VOUHTYPE,STARTNO,ENDNO,RIVTELLER,\ VOUHSTATUS,VOUHNUM,LSTTRXDAY,LSTTRXTIME) \ values \ ('" + TradeContext.sBesbNo + "',\ '" + sTempTellerNo + "','"+TradeContext.sExDepos+ "','"+TradeContext.sCur+"',\ '" + TradeContext.sVouhType[i]+"',\ '" + sEndNoAdd + "',\ '" + sTempEndNo + "','"+sTempRivTeller+"',\ '"+ TradeContext.sExStatus+ "',\ '" + str( int( sTempEndNo ) - int ( TradeContext.sEndNo[i] ) )+ "',\ '" + sTempLstTrxDay + "',\ '" + sTempLstTrxTime + "')" AfaLoggerFunc.tradeDebug('3'+sqlStr) record = AfaDBFunc.InsertSql( sqlStr ) if record == -1 or record == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) #新增成功 tradeExit('0000', '操作成功') else: #判断前后连续关系 #continue:前后连续标识; #FrontContinue:前连续标识; #BackContinue:后连续标识; for x in range( len(records) ): if ( ( int( TradeContext.sStartNo[i] ) - 1 ) == int( records[x][1] ) ): #前连续 sTempStart = records[x][0] #records[x][0]:数据库中满足查询条件的凭证起始号码 if ( sFlagContinue == 'BackContinue' ): sFlagContinue = 'Continue' else: sFlagContinue = 'FrontContinue' if ( (int( TradeContext.sEndNo[i]) + 1 ) == int( records[x][0] ) ): #后连续 sTempEnd = records[x][1] #records[x][1]:数据库中满足查询条件的凭证终止号码 if ( sFlagContinue == 'FrontContinue' ): sFlagContinue = 'Continue' else: sFlagContinue = 'BackContinue' #输入的凭证号码与库表中同凭证状态为登记未出的记录存在后连续关系, #则与相应的记录进行向后归并 if ( sFlagContinue == 'BackContinue' ): #1后连续:更新相应数据库中[凭证登记表]相应记录 sqlStr = "update VOUH_REGISTER set \ VOUHNUM = '" + str( int( sTempEnd ) - int( TradeContext.sStartNo[i] ) + 1 ) + "',\ LSTTRXDAY = '" + TradeContext.sLstTrxDay + "',\ LSTTRXTIME = '" + TradeContext.sLstTrxTime + "',\ STARTNO = '" + TradeContext.sStartNo[i] + "'" sqlStr = sqlStr + " where STARTNO = '" + sEndNoAdd + "'\ and TELLERNO = '" + TradeContext.sInTellerTailNo + "' \ and BESBNO = '" + TradeContext.sInBesbNo + "'\ and CUR = '" + TradeContext.sCur + "'\ and DEPOSITORY = '" + TradeContext.sDepository + "'\ and VOUHSTATUS = '"+ TradeContext.sVouhStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "'" AfaLoggerFunc.tradeDebug('5'+sqlStr) records = AfaDBFunc.UpdateSql( sqlStr ) if records == -1 or records == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) #2更新成功后,删除起始号码为sTempStartNo的原记录,输入凭证数量为1 if ( int( sTempStartNo ) == int( TradeContext.sStartNo[i] ) ) : sqlDel = "delete from VOUH_REGISTER \ where STARTNO = '" + sTempStartNo + "' \ and DEPOSITORY = '" + TradeContext.sExDepos + "'\ and BESBNO = '" + TradeContext.sBesbNo + "'\ and TELLERNO = '" + TradeContext.sTellerTailNo + "'\ and VOUHSTATUS = '" + TradeContext.sExStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and CUR ='"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug(sqlDel) record = AfaDBFunc.DeleteSql( sqlDel ) if record == -1 or record == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) else: tradeExit('0000', TradeContext.sTransType+'成功') else: #更新成功后,更新终止号码为TradeContext.sEndNo的原记录,输入凭证数量大于1 sqlStr = "update VOUH_REGISTER set \ VOUHNUM = '" + str( int( TradeContext.sStartNo[i] ) - int( sTempStartNo ) )+ "',\ LSTTRXDAY = '" + TradeContext.sLstTrxDay + "',\ LSTTRXTIME = '" + TradeContext.sLstTrxTime + "',\ ENDNO = '" + sStartNoMulti + "'" sqlStr = sqlStr + " where ENDNO = '" + TradeContext.sEndNo[i] + "' \ and DEPOSITORY = '" + TradeContext.sExDepos + "'\ and BESBNO = '" + TradeContext.sBesbNo + "'\ and TELLERNO = '" + TradeContext.sTellerTailNo + "'\ and VOUHSTATUS = '" + TradeContext.sExStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and CUR ='"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug('6'+sqlStr) record = AfaDBFunc.UpdateSql( sqlStr ) if record == -1 or record == 0: AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) #回滚 tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) else: tradeExit('0000', '操作成功') #输入的凭证号码与库表中同凭证状态为登记未出存在前连续关系, #则与相应的记录进行向前归并 elif ( sFlagContinue == 'FrontContinue' ): #前连续:更新相应数据库中[凭证登记表]相应记录 sqlStr = "update VOUH_REGISTER set \ VOUHNUM = '" + str( int( TradeContext.sEndNo[i] ) - int( sTempStart ) + 1 ) + "',\ LSTTRXDAY = '" + TradeContext.sLstTrxDay + "',\ LSTTRXTIME = '" + TradeContext.sLstTrxTime + "',\ ENDNO = '" + ( TradeContext.sEndNo[i] ) + "'" sqlStr = sqlStr + " where ENDNO = '" + sStartNoMulti + "'\ and TELLERNO = '" + TradeContext.sInTellerTailNo + "' \ and BESBNO = '" + TradeContext.sInBesbNo + "'\ and CUR = '" + TradeContext.sCur + "'\ and DEPOSITORY = '" + TradeContext.sDepository + "'\ and VOUHSTATUS = '"+ TradeContext.sVouhStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "'" AfaLoggerFunc.tradeDebug('7'+sqlStr) records = AfaDBFunc.UpdateSql( sqlStr ) if records == -1 or records == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) #回滚 tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) #2更新成功后,删除起始号码为sTempStartNo的原记录,输入凭证数量为1 if ( int( sTempEndNo ) == int( TradeContext.sEndNo[i] ) ) : sqlDel = "delete from VOUH_REGISTER \ where STARTNO = '" + sTempStartNo + "' \ and DEPOSITORY = '" + TradeContext.sExDepos + "'\ and BESBNO = '" + TradeContext.sBesbNo + "'\ and TELLERNO = '" + TradeContext.sTellerTailNo + "'\ and VOUHSTATUS = '" + TradeContext.sExStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and CUR ='"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug(sqlDel) record = AfaDBFunc.DeleteSql( sqlDel ) if record == -1 or record == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) else: #更新成功 tradeExit('0000', '操作成功') else: #更新成功后,更新起始号码为TradeContext.sStartNo的原记录,输入凭证数量大于1 sqlStr = "update VOUH_REGISTER set \ VOUHNUM = '" + str( int( sTempEndNo ) - int( TradeContext.sEndNo[i] ) ) + "',\ LSTTRXDAY = '" + TradeContext.sLstTrxDay + "',\ LSTTRXTIME = '" + TradeContext.sLstTrxTime + "',\ STARTNO = '" + sEndNoAdd + "'" sqlStr = sqlStr + " where STARTNO = '" + TradeContext.sStartNo[i] + "' \ and DEPOSITORY = '" + TradeContext.sExDepos + "'\ and BESBNO = '" + TradeContext.sBesbNo + "'\ and TELLERNO = '" + TradeContext.sTellerTailNo + "'\ and VOUHSTATUS = '" + TradeContext.sExStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and CUR ='"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug('8'+sqlStr) record = AfaDBFunc.UpdateSql( sqlStr ) if record == -1 or record == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) else: #更新成功 tradeExit('0000', '操作成功') #输入的凭证号码与库表中同凭证状态为登记未出存在前后连续关系, #则与相应的记录进行前后归并 elif ( sFlagContinue == 'Continue' ): sTemVouhNum = str( int(sTempEnd) - int(sTempStart) + 1 ) #更新数据库表[凭证登记表]内相应记录 sqlStr = "update VOUH_REGISTER set \ ENDNO = '" + sTempEnd + "', \ VOUHNUM = '" + sTemVouhNum + "',\ LSTTRXDAY = '" + TradeContext.sLstTrxDay + "',\ LSTTRXTIME = '" + TradeContext.sLstTrxTime + "'" sqlStr = sqlStr + " where STARTNO = '" + sTempStart + "' \ and TELLERNO = '" + TradeContext.sInTellerTailNo + "' \ and BESBNO = '" + TradeContext.sInBesbNo + "'\ and CUR = '" + TradeContext.sCur + "'\ and DEPOSITORY = '" + TradeContext.sDepository + "'\ and VOUHSTATUS = '"+ TradeContext.sVouhStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "'" AfaLoggerFunc.tradeDebug('9'+sqlStr) records = AfaDBFunc.UpdateSql( sqlStr ) if records == -1 or records == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) #2归并成功后,删除归并后其余一条 sqlDel = "delete from VOUH_REGISTER \ where STARTNO = '" + TradeContext.sStartNo[i] + "' \ and DEPOSITORY = '" + TradeContext.sExDepos + "'\ and BESBNO = '" + TradeContext.sBesbNo + "'\ and TELLERNO = '" + TradeContext.sTellerTailNo + "'\ and VOUHSTATUS = '" + TradeContext.sExStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and CUR ='"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug(sqlDel) record = AfaDBFunc.DeleteSql( sqlDel ) if record == -1 or record == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) # 3 sqlDel = "delete from VOUH_REGISTER \ where STARTNO = '" + sEndNoAdd + "' \ and TELLERNO = '" + TradeContext.sInTellerTailNo + "' \ and BESBNO = '" + TradeContext.sInBesbNo + "'\ and CUR = '" + TradeContext.sCur + "'\ and DEPOSITORY = '" + TradeContext.sDepository + "'\ and VOUHSTATUS = '"+ TradeContext.sVouhStatus+ "' \ and VOUHTYPE = '" + TradeContext.sVouhType[i]+ "'" AfaLoggerFunc.tradeDebug(sqlDel) record = AfaDBFunc.DeleteSql( sqlDel ) if record == -1 or record == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', TradeContext.sTransType+'失败!') raise AfaFlowControl.flowException( ) tradeExit('0000', '操作成功') return True
def VouhModify( ): #判断报文变量是否存在,若存在则赋值到内部变量,用于插入数据库 if( TradeContext.existVariable( "sLstTrxDay" ) ): _sWorkDate_ = TradeContext.sLstTrxDay #工作日期 else: _sWorkDate_ = '' if( TradeContext.existVariable( "sLstTrxTime" ) ): _sWorkTime_ = TradeContext.sLstTrxTime #工作时间 else: _sWorkTime_ = '' if( TradeContext.existVariable( "sBesbNo" ) ): _sBESBNO_ = TradeContext.sBesbNo #机构号 else: _sBESBNO_ = '' if( TradeContext.existVariable( "sCur" ) ): _sCur_ = TradeContext.sCur #货币代号 else: _sCur_ = '' if( TradeContext.existVariable( "sTellerTailNo" ) ): _sTellerTailNo_ = TradeContext.sTellerTailNo #交易柜员尾箱号 else: _sTellerNo_ = '' if( TradeContext.existVariable( "sVouhSerial" ) ): _sVouhSerial_ = TradeContext.sVouhSerial #操作流水号 else: _sVouhSerial_ = GetVouhSerial( ) if( TradeContext.existVariable( "sRivTeller" ) ): _sRivTeller_ = TradeContext.sRivTeller #对方柜员尾箱号 else: _sRivTeller_ = '' if( TradeContext.existVariable( "sDepository" ) ): _sDepository_ = TradeContext.sDepository #库箱标志 else: _sDepository_ = '' if( TradeContext.existVariable( "sExDepos" ) ): _sExDepos_ = TradeContext.sExDepos #原库箱标志 else: _sExDepos_ = '' if( TradeContext.existVariable( "sVouhStatus" ) ): _sVouhStatus_ = TradeContext.sVouhStatus #状态 else: _sVouhStatus_ = '' if( TradeContext.existVariable( "sExStatus" ) ): _sExStatus_ = TradeContext.sExStatus #原状态 else: _sExStatus_ = '' if( TradeContext.existVariable( "sAuthTeller" ) ): _sAuthTeller_ = TradeContext.sAuthTeller #授权柜员 else: _sAuthTeller_ = '' if( TradeContext.existVariable( "sTransType" ) ): _sTransType_ = TradeContext.sTransType #凭证状态 else: _sTransType_ = '' if(not TradeContext.existVariable( "sNum" ) ): TradeContext.sNum = 1 #重复次数 for i in range(TradeContext.sNum): if( TradeContext.existVariable( "sVouhType" ) ): _sVouhType_ = TradeContext.sVouhType[i] #凭证种类 else: _sVouhType_ = '' if( TradeContext.existVariable( "sStartNo" ) ): _sStartNo_ = TradeContext.sStartNo[i] #起始号码 else: _sStartNo_ = '' if( TradeContext.existVariable( "sEndNo" ) ): _sEndNo_ = TradeContext.sEndNo[i] #终止号码 else: _sEndNo_ = '' if( TradeContext.existVariable( "sVouhNum" ) ): _sVouhNum_ = TradeContext.sVouhNum[i] #凭证数量 else: _sVouhNum_ = '' #用内部变量拼插入数据库SQL sqlStrInsert = "insert into VOUH_MODIFY ( VOUHSERIAL, WORKDATE, WORKTIME,VOUHNUM, BESBNO, TELLERNO, CUR ,\ VOUHTYPE, STARTNO, ENDNO, RIVTELLER, DEPOSITORY, EXDEPOS, VOUHSTATUS, EXSTATUS,TRANSTYPE) \ VALUES ('" + _sVouhSerial_ + "','" + _sWorkDate_ + "','" + _sWorkTime_ + "','"+ _sVouhNum_ + "','" + _sBESBNO_ + "','" \ + _sTellerTailNo_ + "','" + _sCur_+ "','" + _sVouhType_+"','" \ + _sStartNo_ + "','" + _sEndNo_ + "','" + _sRivTeller_ + "','" + _sDepository_ + "','" \ + _sExDepos_ + "','" + _sVouhStatus_ + "','" + _sExStatus_ + "','" + _sTransType_ + "')" AfaLoggerFunc.tradeInfo( sqlStrInsert ) records = AfaDBFunc.InsertSql( sqlStrInsert ) if records == -1 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005061', '插入[凭证流水表]操作异常!') raise AfaFlowControl.flowException( ) return -1 return 0
def Ahdx_DzSend(): totalnum = 0 totalamt = 0 try: sqlStr = "SELECT STATUS FROM ABDT_UNITINFO WHERE" sqlStr = sqlStr + " APPNO = '" + TradeContext.appNo + "'" sqlStr = sqlStr + " AND BUSINO = '" + TradeContext.busiNo + "'" sqlStr = sqlStr + " AND AGENTTYPE IN ('1','2')" #AfaLoggerFunc.tradeInfo(sqlStr) records = AfaDBFunc.SelectSql( sqlStr ) if (records==None or len(records) < 0): AfaLoggerFunc.tradeInfo('>>>处理结果:对帐处理失败,数据库异常') TradeContext.errorCode,TradeContext.errorMsg = "0001","对帐处理失败,数据库异常" return False elif ( len(records) == 0 ): AfaLoggerFunc.tradeInfo('>>>处理结果:没有发现该单位信息,不能对帐处理') TradeContext.errorCode,TradeContext.errorMsg = "0001","没有发现该单位信息,不能对帐处理" return False #=====对非当日账不需要签退==== if ( records[0][0] != '2' and (TradeContext.WORKDATE == TradeContext.workDate)): AfaLoggerFunc.tradeInfo('>>>处理结果:必须先签退才能进行对帐处理') TradeContext.errorCode,TradeContext.errorMsg = "0001","必须先签退才能进行对帐处理" return False sFileName = TradeContext.HOST_LDIR + '/' + TradeContext.appNo + '_' + TradeContext.WORKDATE + '_2' if ( not (os.path.exists(sFileName) and os.path.isfile(sFileName)) ): AfaLoggerFunc.tradeInfo("对帐文件不存在,必须先日终处理才能进行对帐处理") TradeContext.errorCode,TradeContext.errorMsg = "0001","对帐文件不存在,必须先日终处理才能进行对帐处理" return False hpTmp = open( sFileName,"r" ) if not hpTmp.read() : AfaLoggerFunc.tradeInfo("当天没有正常收入交易") #begin 20100716 蔡永贵修改 由于此处并没有抛出异常终止程序,故此处errorCode还是应该置为0000 #TradeContext.errorCode,TradeContext.errorMsg = "0001","当天没有交易" TradeContext.errorCode,TradeContext.errorMsg = "0000","当天没有交易" #end #return False #对帐初始化 sqlstr = "UPDATE FS_MAINTRANSDTL SET CHKFLAG='" + '*' + "' WHERE " sqlstr = sqlstr + " APPNO='" + TradeContext.appNo + "'" sqlstr = sqlstr + " AND BUSINO='" + TradeContext.busiNo + "'" sqlstr = sqlstr + " AND WORKDATE='" + TradeContext.WORKDATE + "'" AfaLoggerFunc.tradeInfo(sqlstr) retcode = AfaDBFunc.UpdateSqlCmt( sqlstr ) if (retcode==None or retcode <= 0): AfaLoggerFunc.tradeInfo('没有任何交易数据') #打开主机下载文件 hFp = open(sFileName, "r") #读取一行 linebuf = hFp.readline() while ( len(linebuf) > 0 ): if ( len(linebuf) < 996 ): AfaLoggerFunc.tradeInfo('该批次下载文件格式错误(长度),请检查') hFp.close() return False swapbuf = linebuf[0:996].split('<fld>') # if ( len(swapbuf) != 55 ): # AfaLoggerFunc.tradeInfo('该批次下载文件格式错误(域数),请检查') # hFp.close() # return False #显示记录信息 #PrtRecInfo(swapbuf) linebuf = hFp.readline() if ( swapbuf[0].strip() != TradeContext.appNo or \ swapbuf[3].strip() != TradeContext.WORKDATE or \ swapbuf[5].strip() != TradeContext.WORKDATE ): continue #先查询数据库中记录是否存在 sqlstr = "SELECT BRNO,TELLERNO,REVTRANF,AMOUNT,BANKSTATUS,CORPSTATUS FROM FS_MAINTRANSDTL WHERE" sqlstr = sqlstr + " APPNO='" + TradeContext.appNo + "'" sqlstr = sqlstr + " AND BUSINO='" + TradeContext.busiNo + "'" sqlstr = sqlstr + " AND WORKDATE='" + TradeContext.WORKDATE + "'" sqlstr = sqlstr + " AND SERIALNO='" + swapbuf[4].strip() + "'" AfaLoggerFunc.tradeInfo(sqlstr) ChkFlag = '*' records = AfaDBFunc.SelectSql( sqlstr ) if ( records==None or len(records) == 0 ): AfaLoggerFunc.tradeInfo('数据库中记录匹配失败(表中无记录)') AfaLoggerFunc.tradeInfo(sqlstr) continue else: h_tradeamt = (long)((float)(swapbuf[32].strip())*100 + 0.1) m_tradeamt = (long)((float)(records[0][3].strip())*100 + 0.1) if ( swapbuf[9].strip() != records[0][0] ): AfaLoggerFunc.tradeInfo('数据库中记录匹配失败(机构号不符):' + swapbuf[9].strip() + '|' + records[0][0] + '|') #PrtRecInfo(swapbuf) ChkFlag = '2' elif ( swapbuf[10].strip() != records[0][1] ): AfaLoggerFunc.tradeInfo('数据库中记录匹配失败(柜员号不符):' + swapbuf[10].strip() + '|' + records[0][1] + '|') #PrtRecInfo(swapbuf) ChkFlag = '3' elif ( h_tradeamt != m_tradeamt ): AfaLoggerFunc.tradeInfo('数据库中记录匹配失败(发生额不符):' + str(h_tradeamt) + '|' + str(m_tradeamt) + '|') #PrtRecInfo(swapbuf) ChkFlag = '4' elif ( swapbuf[50].strip() == '1' ): ChkFlag = '1' else: ChkFlag = '0' #再修改与数据库进行匹配 sqlstr = "UPDATE FS_MAINTRANSDTL SET CHKFLAG='" + ChkFlag + "' WHERE " sqlstr = sqlstr + " APPNO='" + TradeContext.appNo + "'" sqlstr = sqlstr + " AND BUSINO='" + TradeContext.busiNo + "'" sqlstr = sqlstr + " AND WORKDATE='" + TradeContext.WORKDATE + "'" sqlstr = sqlstr + " AND SERIALNO='" + swapbuf[4].strip() + "'" #AfaLoggerFunc.tradeInfo(sqlstr) retcode = AfaDBFunc.UpdateSqlCmt( sqlstr ) if (retcode==None or retcode <= 0): AfaLoggerFunc.tradeInfo('修改记录对帐状态,数据库异常') hFp.close() TradeContext.errorCode,TradeContext.errorMsg = "0001","修改记录对帐状态,数据库异常" return False totalnum = totalnum + 1 totalamt = totalamt + m_tradeamt hFp.close() #每天只能做一次对账 sqlstr = "select this,date from fs_remain where busino='" + TradeContext.busiNo + "'" sqlstr = sqlstr + " and bankno = '" + TradeContext.bankbm + "'" + "order by date desc" AfaLoggerFunc.tradeInfo(sqlstr) records = AfaDBFunc.SelectSql( sqlstr ) if( records == None ): TradeContext.errorCode = "9999" TradeContext.errorMsg = "非税余额表异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False if( len(records)==0 ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "非税余额表异常(没有单位信息)" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False #取出昨天的余额 sqlstr = "select this from fs_remain where busino='" + TradeContext.busiNo + "' and date='" + TradeContext.wyesterdate + "'" sqlstr = sqlstr + " and bankno = '" + TradeContext.bankbm + "'" + " order by date desc" AfaLoggerFunc.tradeInfo( sqlstr ) records = AfaDBFunc.SelectSql( sqlstr ) if( records == None ): TradeContext.errorCode = "9999" TradeContext.errorMsg = "非税余额表异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False if( len(records)==0 ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "非税余额表异常(没有对账日期前一天的信息)" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False TradeContext.lastRemain = records[0][0] #上期余额 TradeContext.banlance = records[0][0] #统计余额变化 #如果当天没有余额信息则插入一条 #TradeContext.remain="44676653.13" sqlstr = "insert into fs_remain(busino,date,this,bankno) values('" + TradeContext.busiNo + "','" + TradeContext.WORKDATE + "','" + TradeContext.remain + "','" + TradeContext.bankbm + "')" if( AfaDBFunc.InsertSql( sqlstr ) < 1 ): AfaDBFunc.RollbackSql( ) TradeContext.errorCode,TradeContext.errorMsg = "0001",'插入本期余额失败' + sqlstr AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) return False AfaDBFunc.CommitSql( ) #生成对帐文件,从主交易表中取出数据 sqlStr = "SELECT bankserno,USERNO,NOTE1,USERNAME,NOTE2,AMOUNT FROM FS_MAINTRANSDTL WHERE " sqlStr = sqlStr + " APPNO='" + TradeContext.appNo + "'" sqlStr = sqlStr + " AND BUSINO='" + TradeContext.busiNo + "'" sqlStr = sqlStr + " AND WORKDATE='" + TradeContext.WORKDATE + "'" sqlStr = sqlStr + " AND CHKFLAG='0' AND NOTE2='1' AND BANKSTATUS='0' and REVTRANF='0' order by userno" AfaLoggerFunc.tradeInfo( sqlStr ) records = AfaDBFunc.SelectSql( sqlStr ) if (records==None ): AfaLoggerFunc.tradeInfo('查询主要交易失败,数据库异常') TradeContext.errorCode,TradeContext.errorMsg = "0001","生成对帐处理失败,数据库异常" return False normalNum = 0 #正常笔数 tuifuNum = 0 #退付笔数 normalAmt = 0 #正常金额合计 tuifuAmt = 0 #退付金额合计 ##############################王军江添加于2007-10-16########################################################### fileName = TradeContext.busiNo + "duizhang" + ".txt" dzFileName = os.environ['AFAP_HOME'] + "/data/ahfs/" + fileName dzfp= open(dzFileName, "w") lineWidth = 144 #报表列表宽度 WidthList = [10,10,20,40,32,14,14,14] dzfp.write('对账单'.center(lineWidth)) dzfp.write('\n') dzfp.write('\n') dzfp.write(' 机构名称:' + TradeContext.I1SBNM + '\t' ) # dzfp.write(' 制表日期:' + TradeContext.workDate + '\t\t\t\t\n' ) dzfp.write(' 制表日期:' + TradeContext.WORKDATE + '\t\t\t\t\n' ) #将制表日期改为所对账务那天的日期 dzfp.write(' 对公帐户:' + TradeContext.busiAccno + '\t\t\t\t' ) dzfp.write(' 上期余额:' + TradeContext.lastRemain + '\n' ) dzfp.write(' ┌─────┬─────┬──────────┬────────────────────┬────────────────┬───────┬───────┬───────┐'+'\n') dzfp.write(' │银行流水号│缴款书编号│ 执收单位编号 │ 缴款人 │正常 待查 退付 上缴国库 上缴专户│ 贷方 │ 借方 │ 合计 │'+'\n') banlance = float(TradeContext.lastRemain) #上期余额 normalNum = 0 tuifuNum = 0 AfaLoggerFunc.tradeInfo( '当前流水缴费数:' + str( len(records) ) ) i = 0 while ( i < len(records) ): rowLine = ' │' lineList = list(records[i]) if lineList[4] == '1': #正常收入 lineList[4] = '正常收入' lineList.append('') banlance = banlance + float(lineList[5]) lineList.append( str(banlance) ) normalNum = normalNum + 1 elif lineList[4] == '2' : #退付收入 lineList[4] = '退付收入' lineList.insert(len(lineList)-1,'') banlance = banlance - float(lineList[6]) lineList.append( str(banlance) ) tuifuNum = tuifuNum + 1 else: AfaLoggerFunc.tradeInfo('资金性质错误') return False dzfp.write(' ├─────┼─────┼──────────┼────────────────────┼────────────────┼───────┼───────┼───────┤'+'\n') dzfp.write(' │') for j in range( len(WidthList) ): if j == 4: dzfp.write( lineList[j].center(WidthList[j]) ) else: dzfp.write( lineList[j].ljust(WidthList[j]) ) dzfp.write('│') else: dzfp.write('\n') i=i+1 ################################################################################################################ #统计待查收入 流水号、缴款书编号、交款人、收费金额 #sqlstr = "select afc401,afc001,afc006,afc011 from fs_fc74 where date='" + TradeContext.WORKDATE + "'and busino='" + TradeContext.busiNo + "' and afc016='" + TradeContext.brno + "' and flag != '*'" dateTmp = TradeContext.WORKDATE[0:4] + '-' + TradeContext.WORKDATE[4:6] + '-' + TradeContext.WORKDATE[6:8] sqlstr = "select afc401,afc001,afc006,afc011 from fs_fc74 where afc015='" + dateTmp + "'and busino='" + TradeContext.busiNo + "' and afc016='" + TradeContext.brno + "' and flag != '*' and afa101 = '" + TradeContext.bankbm + "'" AfaLoggerFunc.tradeInfo( sqlstr ) records = AfaDBFunc.SelectSql( sqlstr ) if (records==None) : TradeContext.errorCode,TradeContext.errorMsg = "0001","获取待查数据失败,数据库异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( sqlstr + AfaDBFunc.sqlErrMsg ) return False i = 0 AfaLoggerFunc.tradeInfo( '当前待查数目:' + str( len(records) ) ) daichaNum = 0 #待查笔数 while ( i < len(records) ): lineList = list(records[i]) lineList[1] = '' lineList.insert(2,'') #执收单位编码 lineList.insert(4,'待查') #资金性质 banlance = banlance + float(lineList[len(lineList)-1]) lineList.append('') #贷方 lineList.append( str(banlance) ) daichaNum = daichaNum + 1 dzfp.write(' ├─────┼─────┼──────────┼────────────────────┼────────────────┼───────┼───────┼───────┤'+'\n') dzfp.write(' │') for j in range( len(WidthList) ): if j == 4: dzfp.write( lineList[j].center(WidthList[j]) ) else: dzfp.write( lineList[j].ljust(WidthList[j]) ) dzfp.write('│') else: dzfp.write('\n') i=i+1 #---------------------统计退付-------------- sqlStr = "SELECT bankserno,USERNO,NOTE1,USERNAME,NOTE2,AMOUNT FROM FS_MAINTRANSDTL WHERE " sqlStr = sqlStr + " APPNO='" + TradeContext.appNo + "'" sqlStr = sqlStr + " AND BUSINO='" + TradeContext.busiNo + "'" sqlStr = sqlStr + " AND WORKDATE='" + TradeContext.WORKDATE + "'" sqlStr = sqlStr + " AND CHKFLAG='0' AND NOTE2='2' AND BANKSTATUS='0' and REVTRANF='0' order by userno" AfaLoggerFunc.tradeInfo( sqlStr ) records = AfaDBFunc.SelectSql( sqlStr ) if (records==None ): AfaLoggerFunc.tradeInfo('查询主要交易失败,数据库异常') TradeContext.errorCode,TradeContext.errorMsg = "0001","生成对帐处理失败,数据库异常" return False i = 0 while ( i < len(records) ): rowLine = ' │' lineList = list(records[i]) if lineList[4] == '1': #正常收入 lineList[4] = '正常收入' lineList.append('') banlance = banlance + float(lineList[5]) lineList.append( str(banlance) ) normalNum = normalNum + 1 elif lineList[4] == '2' : #退付收入 lineList[4] = '退付收入' lineList.insert(len(lineList)-1,'') #资金性质贷方为空 banlance = banlance - float(lineList[6]) lineList.append( str(banlance) ) tuifuNum = tuifuNum + 1 else: AfaLoggerFunc.tradeInfo('资金性质错误') return False dzfp.write(' ├─────┼─────┼──────────┼────────────────────┼────────────────┼───────┼───────┼───────┤'+'\n') dzfp.write(' │') for j in range( len(WidthList) ): if j == 4: dzfp.write( lineList[j].center(WidthList[j]) ) else: dzfp.write( lineList[j].ljust(WidthList[j]) ) dzfp.write('│') else: dzfp.write('\n') i=i+1 else: dzfp.write(' └─────┴─────┴──────────┴────────────────────┴────────────────┴───────┴───────┴───────┘'+'\n' ) normalAmt = 0 tuifuAmt = 0 daichaAmt = 0 sqlStr = "SELECT sum(double(AMOUNT)) FROM FS_MAINTRANSDTL WHERE " sqlStr = sqlStr + " APPNO='" + TradeContext.appNo + "'" sqlStr = sqlStr + " AND BUSINO='" + TradeContext.busiNo + "'" sqlStr = sqlStr + " AND WORKDATE='" + TradeContext.WORKDATE + "'" sqlStr = sqlStr + " AND CHKFLAG='0' AND NOTE2='1' AND BANKSTATUS='0' and REVTRANF='0'" AfaLoggerFunc.tradeInfo( sqlStr ) records = AfaDBFunc.SelectSql( sqlStr ) normalAmt = records[0][0] if (normalAmt==None) : normalAmt = 0 sqlStr = "SELECT sum(double(AMOUNT)) FROM FS_MAINTRANSDTL WHERE " sqlStr = sqlStr + " APPNO='" + TradeContext.appNo + "'" sqlStr = sqlStr + " AND BUSINO='" + TradeContext.busiNo + "'" sqlStr = sqlStr + " AND WORKDATE='" + TradeContext.WORKDATE + "'" sqlStr = sqlStr + " AND CHKFLAG='0' AND NOTE2='2' AND BANKSTATUS='0' and REVTRANF='0'" AfaLoggerFunc.tradeInfo( sqlStr ) records = AfaDBFunc.SelectSql( sqlStr ) tuifuAmt = records[0][0] if (tuifuAmt==None) : tuifuAmt = 0 dateTmp = TradeContext.WORKDATE[0:4] + '-' + TradeContext.WORKDATE[4:6] + '-' + TradeContext.WORKDATE[6:8] sqlstr = "select sum(double(AFC011)) from fs_fc74 where AFC015='" + dateTmp + "'and busino='" + TradeContext.busiNo + "' and afc016='" + TradeContext.brno + "' and flag != '*'" AfaLoggerFunc.tradeInfo( sqlstr ) records = AfaDBFunc.SelectSql( sqlstr ) daichaAmt = records[0][0] if (daichaAmt==None) : daichaAmt = 0 sLastLine = " 总笔数:" + str(daichaNum+normalNum+tuifuNum)+ "\t\t正常笔数:" + str(normalNum) + "\t\t待查笔数:" + str(daichaNum) + "\t\t退付笔数:" + str(tuifuNum) + "\t\t制表人:" dzfp.write(sLastLine + "\n") sLastLine = " 正常收入合计:" + str(normalAmt)+ "\t\t退付合计:" + str(tuifuAmt) + "\t\t待查合计:" + str(daichaAmt) dzfp.write(sLastLine + "\n") dzfp.write(" 本期余额:"+ TradeContext.remain ) dzfp.close() #文件长度 TradeContext.DZFILESIZE = str(os.path.getsize(dzFileName)) #对帐文件名 TradeContext.DZFILENAME = fileName except Exception, e: AfaLoggerFunc.tradeInfo(str(e)) AfaLoggerFunc.tradeInfo('对帐处理异常') TradeContext.errorCode,TradeContext.errorMsg = "0001","对帐处理异常" dzfp.close() return False
def SubModuleMainFst(): TradeContext.__agentEigen__ = '0' #从表标志 #如果不是主办行,不能做此交易 AfaLoggerFunc.tradeInfo('检验是否是主办行') sqlstr = "select brno from abdt_unitinfo where appno='" + TradeContext.appNo + "' and busino='" + TradeContext.busiNo + "' and brno='" + TradeContext.brno + "'" AfaLoggerFunc.tradeInfo(sqlstr) records = AfaDBFunc.SelectSql( sqlstr ) if records == None: TradeContext.errorCode = "0001" TradeContext.errorMsg = "操作数据库异常" AfaLoggerFunc.tradeInfo(sqlstr+AfaDBFunc.sqlErrMsg) return False if( len( records)==0 ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "不是主办行,不能做此交易" AfaLoggerFunc.tradeInfo(sqlstr+AfaDBFunc.sqlErrMsg) return False #首先从库表中查询缴款书编号,如果查找到则返回已经缴费的错误 AfaLoggerFunc.tradeInfo('缴款书是否已经缴费') sqlstr = "select flag from fs_fc76 where afc001='" + TradeContext.AFC001 + "'" #===条件增加银行编码字段,张恒修改=== sqlstr = sqlstr + " and afc153 = '" + TradeContext.bankbm + "'" records = AfaDBFunc.SelectSql( sqlstr ) if ( len(records) == 0 ): AfaLoggerFunc.tradeInfo( "没有查找到缴款书编号可以缴费"+sqlstr ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) else: if records[0][0] == '0': TradeContext.errorCode,TradeContext.errorMsg = '0001','已经查找到了交款书编号,不能再缴费' AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False elif records[0][0] == '1': TradeContext.errorCode,TradeContext.errorMsg = '0002',"缴款书已冲正,可缴费" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) else: TradeContext.errorCode,TradeContext.errorMsg = '0003',"缴款书状态位异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False #查询缴款书标号,还有对应流水是否已经补录过 AfaLoggerFunc.tradeInfo('是否已经补录过') for serNo in TradeContext.AFC401.split(':') : sqlstr = "select * from fs_fc84 where afc001='" + TradeContext.AFC001 + "' and afc401 like '%" + serNo + "%'" AfaLoggerFunc.tradeInfo( sqlstr ) records = AfaDBFunc.SelectSql( sqlstr ) if( len( records) > 0 ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "该缴款书已经补录,不能再次补录" return False AfaLoggerFunc.tradeInfo( '********************插入补录数据表开始*******************' ) #-----------------------根据单位编码配置获取财政信息---------------------------- sqlstr = "select aaa010,bankno from fs_businoinfo where busino='" + TradeContext.busiNo + "'" sqlstr = sqlstr + " and bankno = '" + TradeContext.bankbm + "'" records = AfaDBFunc.SelectSql( sqlstr ) if records == None or len(records)==0 : TradeContext.errorCode,TradeContext.errorMsg = "0001","查找单位信息表异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( sqlstr ) sys.exit(1) elif len(records) > 1: TradeContext.errorCode,TradeContext.errorMsg = "0001","单位信息表异常:一个单位编号对应了多个财政信息" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( sqlstr ) sys.exit(1) TradeContext.AAA010 = records[0][0].strip() TradeContext.AFA101 = records[0][1].strip() #TradeContext.AAA010 = "0000000000" TradeContext.AAA011 = "" TradeContext.AFC016 = TradeContext.brno # ----------------------------开始票据信息校验------------------------------- #是否串票的校验 piaoNo = TradeContext.AFC001[0:9] aaz010 = TradeContext.AAA010 #财政区划内码 sqlstr = "select * from fs_dpz_gl where fczqhnm='" + aaz010 + "'" AfaLoggerFunc.tradeInfo( sqlstr ) records = AfaDBFunc.SelectSql(sqlstr) #=====add by pgt 20090423 根据前台传上来的校验标志来判断是否进行校验==== if (len(records) > 0 and (TradeContext.CKMD == "1")): #大厅模式 if (TradeContext.existVariable('AFA091' ) and len(TradeContext.AFA091)>0): AfaLoggerFunc.tradeInfo( "串票校验--大厅模式" ) sqlstr = "select afa090 from fs_fa20 where afa091='" + TradeContext.AFA091 + "' and BUSINO='" + TradeContext.busiNo + "'" records = AfaDBFunc.SelectSql( sqlstr ) if( records == None or len(records)==0 ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "数据库异常,FS_FA20表" AfaLoggerFunc.tradeInfo( sqlstr ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) return False afa090 = records[0][0] #大厅内码 sqlstr = "select count(*) from fs_dpz_gl where fdwdm='" + afa090 + "' and fqshm<='" + piaoNo + "' and fqzhm>='" + piaoNo + "'" records = AfaDBFunc.SelectSql( sqlstr ) if( records == None ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "串票校验异常" AfaLoggerFunc.tradeInfo( sqlstr ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) return False if int(records[0][0]) == 0 : TradeContext.errorCode = "0001" TradeContext.errorMsg = "非本大厅票据,请检查票号" return False else: #非大厅模式 AfaLoggerFunc.tradeInfo( "串票校验--非大厅模式" ) sqlstr = "select count(*) from (select distinct b.AFA051 from FS_DPZ_GL a,fs_fa15 b where a.fdwdm=b.AFA050 and a.FQSHM<='" + piaoNo + "' and a.FQZHM>='" + piaoNo + "'" + \ " union all select distinct c.AFA051 from FS_DPZ_GL a,fs_fa21 b,fs_fa15 c where a.FQSHM<='" + piaoNo + "' and a.FQZHM>='" + piaoNo + "' and a.fdwdm=b.AFA050 and b.AFA050=c.AFA050) a where locate(a.afa051, '" + TradeContext.AFA051 + "')=1" AfaLoggerFunc.tradeInfo( sqlstr ) records = AfaDBFunc.SelectSql( sqlstr ) if( records == None ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "串票校验异常" AfaLoggerFunc.tradeInfo( sqlstr ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) return False if int(records[0][0]) == 0 : TradeContext.errorCode = "0001" TradeContext.errorMsg = "非本执收单位票据,请检查票号" return False AfaLoggerFunc.tradeInfo("单位在此开票日期内是否有权收取此项目") #单位日期是否合法 sql = "select aaz006,aaz007,afa050,AAZ002 from fs_fa15 where afa051='" + TradeContext.AFA051 + "' and BUSINO='" + TradeContext.busiNo + "'" sql = sql + " and aaa010='" + TradeContext.AAA010 + "' order by aaz002 desc" AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.SelectSql( sql ) if ( records == None ): AfaLoggerFunc.tradeInfo(sql) TradeContext.errorCode,TradeContext.errorMsg = "0001","数据库异常:查询单位信息表" AfaLoggerFunc.tradeInfo(TradeContext.errorMsg) return False if ( len(records) == 0 ): TradeContext.errorCode,TradeContext.errorMsg = "0001","没有此单位" AfaLoggerFunc.tradeInfo(TradeContext.errorMsg) return False else: iFlag=0 if (records[0][3]!='1'): TradeContext.errorCode,TradeContext.errorMsg = "0001","单位不是末级" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False if (records[0][0] <= TradeContext.AFC005 ) and (len(records[0][1])==0 or records[0][1] >= TradeContext.AFC005) : iFlag=1 if iFlag==0 : TradeContext.errorCode,TradeContext.errorMsg = "0001","单位已经无效" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False #保存单位内码 afa050 = records[0][2] AfaLoggerFunc.tradeInfo( afa050 ) for afa031 in TradeContext.AFA031.split( "^" ): #项目日期是否合法 sql = "select aaz006,aaz007,AFA030,AAZ002 from fs_fa13 where afa031='" + afa031 + "' and BUSINO='" + TradeContext.busiNo + "' order by aaz006 desc" AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.SelectSql( sql ) if ( records == None ): AfaLoggerFunc.tradeInfo(sql) TradeContext.errorCode,TradeContext.errorMsg = "0001","数据库异常:查询项目信息表" AfaLoggerFunc.tradeInfo(TradeContext.errorMsg) return False if ( len(records) == 0 ): TradeContext.errorCode,TradeContext.errorMsg = "0001","没有此项目%s" %afa031 AfaLoggerFunc.tradeInfo(TradeContext.errorMsg) return False else: iFlag=0 if (records[0][0] <= TradeContext.AFC005 ) and (len(records[0][1])==0 or records[0][1] >= TradeContext.AFC005) : iFlag=1 if iFlag==0 : TradeContext.errorCode,TradeContext.errorMsg = "0001","项目%s已经无效" %afa031 AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False #保存收费内码 afa030 = records[0][2] AfaLoggerFunc.tradeInfo( afa030 ) #单位在此开票日期内是否有权收取此项目 sql = "select aaz006,aaz007 from fs_fa16 where afa030='" + afa030 + "' and afa050='" + afa050 + "' and BUSINO='" + TradeContext.busiNo + "'" AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.SelectSql( sql ) if ( records == None ): AfaLoggerFunc.tradeInfo(sql) TradeContext.errorCode,TradeContext.errorMsg = "0001","数据库异常:查询单位项目关系信息表" AfaLoggerFunc.tradeInfo(TradeContext.errorMsg) return False if ( len(records) == 0 ): TradeContext.errorCode,TradeContext.errorMsg = "0001","没有此单位项目%s关系" %afa031 AfaLoggerFunc.tradeInfo(TradeContext.errorMsg) return False else: iFlag=0 for i in range( len(records) ) : if (records[0][0] <= TradeContext.AFC005 ) and (len(records[0][1])==0 or records[i][1] >= TradeContext.AFC005) : iFlag=1 if iFlag==0 : TradeContext.errorCode,TradeContext.errorMsg = "0001","单位项目%s关系已经无效" %afa031 AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False #如果为大厅模式,则应将大厅编码录入到系统中,并校验当前开票日期内,此单位项目是否属于此大厅 if (TradeContext.existVariable('AFA091' ) and len(TradeContext.AFA091)>0): #征收大厅与单位项目对照表 sql = "select aaz006,aaz007 from fs_fa21,fs_fa20 where fs_fa21.AFA090=fs_fa20.AFA090 and fs_fa20.AFA091='" + TradeContext.AFA091 + "' and fs_fa21.afa030='" + afa030 + "' and fs_fa21.afa050='" + afa050 + "'" AfaLoggerFunc.tradeInfo(sql) records = AfaDBFunc.SelectSql( sql ) if ( records == None ): AfaLoggerFunc.tradeInfo(sql) TradeContext.errorCode,TradeContext.errorMsg = "0001","数据库异常:查询征收大厅与单位项目对照表" AfaLoggerFunc.tradeInfo(TradeContext.errorMsg) return False if ( len(records) == 0 ): TradeContext.errorCode,TradeContext.errorMsg = "0001","没有此征收大厅与单位项目对照关系" AfaLoggerFunc.tradeInfo(TradeContext.errorMsg) return False else: iFlag=0 for i in range( len(records) ) : if (records[0][0] <= TradeContext.AFC005 ) and (len(records[0][1])==0 or records[0][1] >= TradeContext.AFC005) : iFlag=1 if iFlag==0 : TradeContext.errorCode,TradeContext.errorMsg = "0001","征收大厅与单位项目关系已经无效" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False #-------------------------检验金额----------------------------------------------- AfaLoggerFunc.tradeInfo("检验金额") AfaLoggerFunc.tradeInfo("特殊标志AFC187:"+TradeContext.AFC187) #减征 :减免为100 if (TradeContext.AFC187=="100"): AfaLoggerFunc.tradeInfo("减征") for afa031 in TradeContext.AFA031.split( "^" ): i = TradeContext.AFA031.split( "^" ).index(afa031) sqlstr = "select afa038,afa039,AFA041 from fs_fa13 where afa031='" + afa031 + "' and BUSINO='" + TradeContext.busiNo + "' order by aaz006 desc" AfaLoggerFunc.tradeInfo( sqlstr ) records = AfaDBFunc.SelectSql( sqlstr ) if ( records == None ): TradeContext.errorCode,TradeContext.errorMsg = "0001","数据库异常:查找收费项目表" AfaLoggerFunc.tradeInfo( sqlstr ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False if len(records) == 0 : TradeContext.errorCode,TradeContext.errorMsg = "0001","没有此收费项目信息" AfaLoggerFunc.tradeInfo( sqlstr ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False else: #1 金额<数量*标准下限 if records[0][0].strip() == '0' and records[0][1].strip() == '0' : pass else: inputAmt = float( (TradeContext.AFC011.split("^"))[i] ) #输入金额 maxAmt = float( records[0][0] ) * float( (TradeContext.AFC010.split("^"))[i] ) #最大金额 minAmt = float( records[0][1] ) * float( (TradeContext.AFC010.split("^"))[i] ) #最小金额 AfaLoggerFunc.tradeInfo("当前项目上限:" + str(maxAmt)) AfaLoggerFunc.tradeInfo("当前项目下限:" + str(minAmt)) AfaLoggerFunc.tradeInfo("收入金额:" + str(inputAmt)) #=====根据前台传来的校验标示判断是否进行金额判断pgt 20090423==== if TradeContext.CKMD == '1': if minAmt <= inputAmt : TradeContext.errorCode,TradeContext.errorMsg = '0001','项目%s输入金额错误' %afa031 return False #2 减免金额必须小于等于本级分成金额 #3 缴款书缴费时限 d1 = datetime.datetime(int(TradeContext.workDate[0:4]),int( TradeContext.workDate[4:6]), int(TradeContext.workDate[6:8])) d2 = datetime.datetime(int(TradeContext.AFC005[0:4]), int(TradeContext.AFC005[5:7]), int(TradeContext.AFC005[8:10])) AfaLoggerFunc.tradeInfo(str((d1 - d2).days)) if (d1 - d2).days >5 or (d1 - d2).days >records[0][2]: #缴款书本身缴费时限为5天 TradeContext.errorCode,TradeContext.errorMsg = '0001','已经超过缴费时限:项目%s' %afa031 return False #4 当项目表(FA13)中有多条项目信息时,需根据缴款书的开票日期在项目表中找在开票日期有效的那条项目信息 #集中汇缴:集中汇缴200 #因为无法确定其数量,所以不校验其金额。 #如果为大厅模式,则应将大厅编码录入到系统中,并校验当前开票日期内,此单位项目是否属于此大厅。 elif (TradeContext.AFC187=="200"): AfaLoggerFunc.tradeInfo("集中汇缴") #直接缴库默认300 else: for afa031 in TradeContext.AFA031.split( "^" ): i = TradeContext.AFA031.split( "^" ).index(afa031) sqlstr = "select afa038,afa039 from fs_fa13 where afa031='" + afa031 + "' and BUSINO='" + TradeContext.busiNo + "' order by aaz006 desc" AfaLoggerFunc.tradeInfo( sqlstr ) records = AfaDBFunc.SelectSql( sqlstr ) if ( records == None ): TradeContext.errorCode,TradeContext.errorMsg = "0001","数据库异常:查找收费项目表" AfaLoggerFunc.tradeInfo( sqlstr ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False if len(records) == 0 : TradeContext.errorCode,TradeContext.errorMsg = "0001","没有此收费项目信息" AfaLoggerFunc.tradeInfo( sqlstr ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False else: if records[0][0].strip() == '0' and records[0][1].strip() == '0' : pass else: inputAmt = float( (TradeContext.AFC011.split("^"))[i] ) #输入金额 maxAmt = float( records[0][0] ) * float( (TradeContext.AFC010.split("^"))[i] ) #最大金额 minAmt = float( records[0][1] ) * float( (TradeContext.AFC010.split("^"))[i] ) #最小金额 AfaLoggerFunc.tradeInfo("当前项目上限:" + str(maxAmt)) AfaLoggerFunc.tradeInfo("当前项目下限:" + str(minAmt)) AfaLoggerFunc.tradeInfo("收入金额:" + str(inputAmt)) #=====根据前台传上来的校验标志判断是否进行金额校验 pgt 20090414==== if TradeContext.CKMD == '1': if minAmt > inputAmt or inputAmt > maxAmt : TradeContext.errorCode,TradeContext.errorMsg = '0001','项目%s输入金额错误' %afa031 return False #AfaLoggerFunc.tradeInfo("输入金额:" + TradeContext.AFC011 ) #不能当天补录 for serno in TradeContext.AFC401.split(":"): sqlstr = "select date from fs_fc74 where afc401='" + serno + "' and afc015='" + TradeContext.AFC015 + "'" records = AfaDBFunc.SelectSql( sqlstr ) if ( records == None or len(records) == 0 ): AfaLoggerFunc.tradeInfo( sqlstr ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) TradeContext.errorCode = "0001" TradeContext.errorMsg = "查找补录日期失败" return False if records[0][0] == TradeContext.workDate : TradeContext.errorCode = "0001" TradeContext.errorMsg = "不能当天补录,请次日补录" return False #------------------计算总金额----------------- amount = 0.0 for fee in TradeContext.AFC011.split('^'): amount = amount + float(fee) TradeContext.payAmount = str( amount ) AfaLoggerFunc.tradeInfo( '总金额:' + TradeContext.payAmount ) sqlstr = "insert into FS_FC84(AFC401,AAA010,AFC001,AFA031,AFA051,AFA101,AAA011,AFC002,AFC003,AFC004, \ AFC005,AFC006,AFC007,AFC008,AFC009,AFC010,AFC011,AMOUNT,AFC012,AFC013,AFC015,AFC016,TELLER,BUSINO,AFC187,AFA091,FLAG,DATE,TIME) values(" for j in range( len( (TradeContext.AFA031).split("^") ) ) : sqlstr1 = sqlstr sqlstr1 = sqlstr1 + "'" + TradeContext.AFC401 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AAA010 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC001 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFA031.split("^")[j] + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFA051 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFA101 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AAA011 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC002 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC003 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC004 + "'," #=====刘雨龙 20080902 修改日期格式==== sqlstr1 = sqlstr1 + "'" + TradeContext.AFC005[:4] + '-' + TradeContext.AFC005[4:6] + '-' + TradeContext.AFC005[6:]+ "'," #sqlstr1 = sqlstr1 + "'" + TradeContext.AFC005 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC006 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC007 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC008 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC009.split("^")[j] + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC010.split("^")[j] + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC011.split("^")[j] + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.payAmount + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC012 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC013.split("^")[j] + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC015 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC016 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.teller + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.busiNo + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC187 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFA091 + "'," sqlstr1 = sqlstr1 + "'" + '0' + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.workDate + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.workTime + "')" if( AfaDBFunc.InsertSql( sqlstr1 ) < 0 ): AfaDBFunc.RollbackSql( ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeInfo( '插入补录数据失败' + sqlstr1 ) TradeContext.errorCode,TradeContext.errorMsg = "0001","插入补录数据失败" return False AfaDBFunc.CommitSql( ) AfaLoggerFunc.tradeInfo( '********************插入补录数据表结束*******************' ) TradeContext.errorCode,TradeContext.errorMsg = "0000","插入补录数据成功" return True
def backupdb(tbName,clName,backupDate): AfaLoggerFunc.tradeInfo(">>>>开始统计表[" + tbName + "]" + backupDate + "]需备份数据") sql = "select count(*) from " + tbName + " where " + clName + " < '" + backupDate + "'" AfaLoggerFunc.tradeInfo(sql) rec = AfaDBFunc.SelectSql(sql) if rec == None: AfaLoggerFunc.tradeInfo(">>>>统计表[" + tbName + "][" + backupDate + "]需备份数据异常") rccpsCronFunc.cronExit("S999","统计表[" + tbName + "][" + backupDate + "]需备份数据异常") if len(rec) <= 0: AfaLoggerFunc.tradeInfo(">>>>统计表[" + tbName + "][" + backupDate + "]需备份数据异常") rccpsCronFunc.cronExit("S999","统计表[" + tbName + "][" + backupDate + "]需备份数据异常") if rec[0][0] <= 0: AfaLoggerFunc.tradeInfo(">>>>表[" + tbName + "][" + backupDate + "]无需备份数据") #rccpsCronFunc.cronExit("S999","实时汇兑登记簿[" + backupDate + "]无需备份数据") else: #导出表数据至文件 file = path + "/" + tbName + ".del" if not os.path.exists(file): AfaLoggerFunc.tradeInfo(">>>>开始导出表[" + tbName + "][" + backupDate + "]数据至文件") cmd = "db2 \"export to '" + file + "' of del select * from " + tbName + " where " + clName + " < '" + backupDate + "'\"" AfaLoggerFunc.tradeInfo(cmd) os.system(cmd) AfaLoggerFunc.tradeInfo(">>>>结束导出表[" + tbName + "][" + backupDate + "]数据至文件") else: AfaLoggerFunc.tradeInfo(">>>>表[" + tbName + "][" + backupDate + "]数据文件已存在") #导出表数据至历史表 AfaLoggerFunc.tradeInfo(">>>>开始导出表[" + tbName + "][" + backupDate + "]数据至历史表") sql = "" sql = sql + "insert into " + tbName + "_his " sql = sql + "(select * from " + tbName + " where " + clName + " < '" + backupDate + "')" AfaLoggerFunc.tradeInfo(sql) rec = AfaDBFunc.InsertSql(sql) if (rec < 0): AfaLoggerFunc.tradeInfo(AfaDBFunc.sqlErrMsg) rccpsCronFunc.cronExit("S999","导出表[" + tbName + "][" + backupDate + "]数据至历史表异常") AfaLoggerFunc.tradeInfo(">>>>结束导出表[" + tbName + "][" + backupDate + "]数据至历史表") #删除表数据 AfaLoggerFunc.tradeInfo(">>>>开始删除表[" + tbName + "][" + backupDate + "]数据") sql = "" sql = sql + "delete from " + tbName + " where " + clName + " < '" + backupDate + "'" AfaLoggerFunc.tradeInfo(sql) rec = AfaDBFunc.DeleteSql(sql) if (rec < 0): AfaLoggerFunc.tradeInfo(AfaDBFunc.sqlErrMsg) rccpsCronFunc.cronExit("S999","删除表[" + tbName + "][" + backupDate + "]数据异常") AfaLoggerFunc.tradeInfo(">>>>结束删除表[" + tbName + "][" + backupDate + "]数据") #提交事务 if not AfaDBFunc.CommitSql(): AfaLoggerFunc.tradeInfo(AfaDBFunc.sqlErrMsg) rccpsCronFunc.cronExit("S999","提交事务异常") #重整表 AfaLoggerFunc.tradeInfo(">>>>开始重整表[" + tbName + "]") cmd = "db2 \"reorg table " + tbName + "\" " AfaLoggerFunc.tradeInfo(cmd) os.system(cmd) AfaLoggerFunc.tradeInfo(">>>>结束重整表[" + tbName + "]")
def SubModuleMainFst( ): TradeContext.__agentEigen__ = '0' #从表标志 AfaLoggerFunc.tradeInfo( "中台单位编码信息维护开始" ) #判断操作类型 if TradeContext.opType == '1': AfaLoggerFunc.tradeInfo( "新增" ) sqlstr = "select * from fs_businoinfo where busino='" + TradeContext.busiNo + "'" sqlstr = sqlstr + " and bankno = '" + TradeContext.bankbm + "'" AfaLoggerFunc.tradeInfo('>>>sql=' + sqlstr) records = AfaDBFunc.SelectSql( sqlstr ) if records == None : TradeContext.errorCode = "0001" TradeContext.errorMsg = "查找单位编码信息异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False if len(records) >=1 : TradeContext.errorCode = "0001" TradeContext.errorMsg = "已经查找到单位编码信息,不能再次新建" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False #首先校验输入账户和名称是否正确 #张恒修改AG2012 sqlstr = "select accno,businame from abdt_unitinfo where appno ='" + TradeContext.appNo + "' and busino='" + TradeContext.busiNo + "'" AfaLoggerFunc.tradeInfo('>>>sql=' + sqlstr) records = AfaDBFunc.SelectSql( sqlstr ) if( records == None or len( records)==0 ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "没有查找到单位编码账户信息" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False else: if records[0][0].strip() != TradeContext.accno or records[0][1].strip() and records[0][1].strip() != TradeContext.name : TradeContext.errorCode = "0001" TradeContext.errorMsg = "单位编码账户信息不符" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False #校验输入银行编码和银行名称是否正确 sqlstr = "select afa102 from fs_fa22 where afa101='" + TradeContext.bankNo + "'" AfaLoggerFunc.tradeInfo('>>>sql=' + sqlstr) records = AfaDBFunc.SelectSql( sqlstr ) if( records == None ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "查找到单位编码账户信息异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False if len(records) == 0: TradeContext.errorCode = "0001" TradeContext.errorMsg = "银行编码不存在" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False else: #=====刘雨龙 20080815 新增关于处理银行编码相同多条记录的处理==== for i in range(0,len(records)): if records[i][0].strip() != TradeContext.bankName : TradeContext.errorCode = '0011' TradeContext.errorMsg = '银行编码与银行名称不符' AfaLoggerFunc.tradeInfo('>>>银行名称['+str(records[i][0])+']与柜员上送银行名称['+TradeContext.bankName+']不符') if int(len(records)-1) == i: return False else: AfaLoggerFunc.tradeInfo('>>>银行名称['+str(records[i][0])+']与柜员上送银行名称['+TradeContext.bankName+']相符') break #if records[0][0].strip() != TradeContext.bankName : # TradeContext.errorCode = "0001" # TradeContext.errorMsg = "银行编码与银行名字不符" # AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) # return False #校验财政区划信息 sqlstr = "select aaa012 from fs_aa11 where aaa010='" + TradeContext.AAA010 + "'" AfaLoggerFunc.tradeInfo('>>>sql=' + sqlstr) records = AfaDBFunc.SelectSql( sqlstr ) AfaLoggerFunc.tradeInfo(str(records)) if( records == None ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "查找到单位编码财政区划信息异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False if len(records) == 0: TradeContext.errorCode = "0001" TradeContext.errorMsg = "财政区划内码不存在" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False else: if records[0][0].strip() != TradeContext.AAA012 : TradeContext.errorCode = "0001" TradeContext.errorMsg = "财政区划内码与财政区划名称不符" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( records[0][0].strip() ) return False #通过校验,插入到数据库中 sqlstr = "insert into fs_businoinfo ( BUSINO,ACCNO,NAME,AAA010,AAA012,BANKNO,BANKNAME,BANKBRNO,BRNO,TELLER,DATE,TIME,CTRYBANKNO,CTRYBANKNAME ) values(" sqlstr = sqlstr + "'" + TradeContext.busiNo + "'," sqlstr = sqlstr + "'" + TradeContext.accno + "'," sqlstr = sqlstr + "'" + TradeContext.name + "'," sqlstr = sqlstr + "'" + TradeContext.AAA010 + "'," sqlstr = sqlstr + "'" + TradeContext.AAA012 + "'," sqlstr = sqlstr + "'" + TradeContext.bankNo + "'," sqlstr = sqlstr + "'" + TradeContext.bankName + "'," sqlstr = sqlstr + "'" + TradeContext.busiNo[0:10]+ "'," sqlstr = sqlstr + "'" + TradeContext.brno + "'," sqlstr = sqlstr + "'" + TradeContext.teller + "'," sqlstr = sqlstr + "'" + TradeContext.workDate + "'," sqlstr = sqlstr + "'" + TradeContext.workTime + "'," sqlstr = sqlstr + "''," sqlstr = sqlstr + "'')" AfaLoggerFunc.tradeInfo('>>>sql=' + sqlstr) if( AfaDBFunc.InsertSql( sqlstr ) < 1 ): AfaDBFunc.RollbackSql( ) TradeContext.errorCode,TradeContext.errorMsg = "0001",'插入单位编码信息表失败' + sqlstr AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) return False AfaDBFunc.CommitSql( ) #修改 elif TradeContext.opType == '2': AfaLoggerFunc.tradeInfo( "修改" ) sqlstr = "update fs_businoinfo set accno='" + TradeContext.accno + "',name='" + TradeContext.name + "'," + \ "aaa010='" + TradeContext.AAA010 + "',aaa012='" + TradeContext.AAA012 + "',date='" + TradeContext.workDate + "'," + \ "time='" + TradeContext.workTime + "',brno='" + TradeContext.brno + "',teller='" + TradeContext.teller + "'," + \ "bankno = '" + TradeContext.bankNo + "' where busino='" + TradeContext.busiNo + "'" #=====刘雨龙 20080821 新增修改参数==== AfaLoggerFunc.tradeInfo('>>>sql=' + sqlstr) if( AfaDBFunc.UpdateSql( sqlstr ) < 1 ): AfaDBFunc.RollbackSql( ) TradeContext.errorCode,TradeContext.errorMsg = "0001",'更新单位编码信息表失败' + sqlstr AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) return False AfaDBFunc.CommitSql( ) #删除 elif TradeContext.opType == '3': AfaLoggerFunc.tradeInfo( "删除" ) sqlstr = "delete from fs_businoinfo where busino='" + TradeContext.busiNo + "'" AfaLoggerFunc.tradeInfo('>>>sql=' + sqlstr) if( AfaDBFunc.DeleteSql( sqlstr ) < 1 ): AfaDBFunc.RollbackSql( ) TradeContext.errorCode,TradeContext.errorMsg = "0001",'删除单位编码信息表失败' + sqlstr AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) return False AfaDBFunc.CommitSql( ) TradeContext.errorCode,TradeContext.errorMsg = "0000",'操作单位编码信息表成功' AfaLoggerFunc.tradeInfo( "********************中台单位编码信息维护结束***************" ) return True
def InsertBill( billData ): AfaLoggerFunc.tradeInfo( '>>>插入发票信息[begin]' ) # count 发票表的列数-1 if( int( TradeContext.__billSaveCtl__ ) == 0 ): return True if( billData is None or ( type( billData ) is not list and type( billData ) is not tuple ) or len( billData )<8 ): TradeContext.errorCode, TradeContext.errorMsg='A0040', '发票数据异常' return False count=17 BillDtl=[[]]*( count+1 ) BillDtl[0] = TradeContext.agentSerialno # SERIALNO 代理业务流水号 BillDtl[1] = TradeContext.sysId # APPNO 业务编码 BillDtl[2] = TradeContext.unitno # BUSINO 单位编码 if( TradeContext.existVariable( "subUnitno" ) ): BillDtl[3] = TradeContext.subUnitno # SUBUNITNO 子单位代码 else: BillDtl[3] = '' BillDtl[4] = TradeContext.workDate # WORKDATE 交易日期 yyyymmdd BillDtl[5] = TradeContext.workTime # WORKTIME 交易时间 BillDtl[6] = TradeContext.userno # USERNO 用户号 if( TradeContext.existVariable( "userName" ) ): BillDtl[7] = TradeContext.userName # USERNAME 用户名称 else: BillDtl[7] = '' BillDtl[8] = '0' # BILLSTATUS 发票状态(0.正常 1.作废) BillDtl[9] = '0' # PRTNUM 打印次数 sql = "INSERT INTO AFA_BILLDTL(SERIALNO,SYSID,UNITNO,SUBUNITNO,WORKDATE,WORKTIME,USERNO,USERNAME,BILLSTATUS,PRTNUM,ITEM1,ITEM2,ITEM3,ITEM4,ITEM5,ITEM6,BILLSERNO,BILLDATA) VALUES(" #发票数量 billCount=int( billData[0] ) if ( billCount < 1 ): TradeContext.errorCode, TradeContext.errorMsg='A0038', '发票张数错误' return False try: for i in range( 0, billCount ): for j in range( 1, 8 ): if( type( billData[j] ) is str ): BillDtl[9+j] = billData[j] elif( type( billData[j] ) is list or type( billData[j] ) is tuple ): BillDtl[9+j] = billData[j][i] else: BillDtl[9+j]='' BillDtl[count]=str( i + 1 ) sql1 = sql for k in range( 0, count ): sql1=sql1+ "'"+ BillDtl[k]+"'," sql1=sql1+"'"+BillDtl[count]+"')" AfaLoggerFunc.tradeInfo( sql1 ) if( AfaDBFunc.InsertSql( sql1 ) < 1 ): AfaDBFunc.RollbackSql( ) TradeContext.errorCode, TradeContext.errorMsg='A0039', '插入发票表失败' + AfaDBFunc.sqlErrMsg return False AfaDBFunc.CommitSql( ) AfaLoggerFunc.tradeInfo( '插入发票信息[end]' ) return True except Exception, e: AfaLoggerFunc.tradeFatal( e ) TradeContext.errorCode, TradeContext.errorMsg='A0040', '发票数据异常' AfaDBFunc.RollbackSql( ) return False
def main(): AfaLoggerFunc.tradeInfo( '凭证中心参数维护['+TradeContext.TemplateCode+']进入' ) #=============前台上送数据=================================== #TradeContext.sBesbNo 机构号 #TradeContext.sTellerNo 柜员号 #TradeContext.opeType 操作类型 #TradeContext.sVouhType 凭证种类 #TradeContext.sVouhName 凭证名称 #TradeContext.sNum 重复次数 #=============获取当前系统时间========================== TradeContext.sLstTrxDay = AfaUtilTools.GetSysDate( ) TradeContext.sLstTrxTime = AfaUtilTools.GetSysTime( ) try: #=============获取机构类型========================== HostContext.I1OTSB = TradeContext.sBesbNo #机构号 HostContext.I1SBNO = TradeContext.sBesbNo #机构号 HostContext.I1USID = TradeContext.sTellerNo #柜员号 HostContext.I1WSNO = TradeContext.sWSNO #终端号 if(not VouhHostFunc.CommHost('2001')): VouhFunc.tradeExit( TradeContext.errorCode, TradeContext.errorMsg ) raise AfaFlowControl.flowException( ) if(TradeContext.errorCode == '0000'): SBNO = HostContext.O1SBCH AfaLoggerFunc.tradeInfo( SBNO ) #begin凭证优化更改LLJ 201109 #=============获取柜员尾箱号=============================== HostContext.I1SBNO = TradeContext.sBesbNo #机构号 HostContext.I1USID = TradeContext.sTellerNo #柜员号 HostContext.I1WSNO = TradeContext.sWSNO #终端号 HostContext.I1EDDT = TradeContext.sLstTrxDay #终止日期 HostContext.I1TELR = TradeContext.sTellerNo #柜员代号 if(not VouhHostFunc.CommHost('0104')): VouhFunc.tradeExit( TradeContext.errorCode, TradeContext.errorMsg ) raise AfaFlowControl.flowException( ) if(TradeContext.errorCode == '0000'): TradeContext.sTellerTailNobak = HostContext.O2CABO TradeContext.sTellerTailNo = TradeContext.sTellerTailNobak[0] #柜员尾箱号TradeContext.sTellerTailNo AfaLoggerFunc.tradeInfo( '柜员尾箱号:' + TradeContext.sTellerTailNo ) #end #=============初始化返回报文变量======================== TradeContext.tradeResponse = [] #================拆包======================== if(TradeContext.existVariable("sVouhType")): TradeContext.sVouhType = VouhFunc.DelSpace(TradeContext.sVouhType.split("|")) TradeContext.sNum = len(TradeContext.sVouhType) if(TradeContext.existVariable("sVouhName")): TradeContext.sVouhName = VouhFunc.DelSpace(TradeContext.sVouhName.split("|")) AfaLoggerFunc.tradeInfo( '=================='+str(TradeContext.sNum) ) #===========检查操作类型是否存在=========== # 1 新增,2 删除, 3 修改, 4 查询 if( not TradeContext.existVariable( "opeType" ) ): tradeExit( 'A005060', '操作类型[opeType]值不存在!' ) raise AfaFlowControl.flowException( ) if TradeContext.opeType == '1': #新增 if(SBNO <> '33' and SBNO <> '02' ): tradeExit( 'A0001', '该机构柜员不能进行此操作!' ) raise AfaFlowControl.flowException( ) n=0 for i in range(TradeContext.sNum): n=n+1 #==========检查该凭证种类信息是否已经存在============ sqlStr = "select VOUHTYPE from VOUH_PARAMETER \ where VOUHTYPE = '" + TradeContext.sVouhType[i] + "'\ and BESBNO = '" + TradeContext.sBesbNo + "'" AfaLoggerFunc.tradeInfo( 'sql = ' + sqlStr ) records = AfaDBFunc.SelectSql( sqlStr ) if( records == None ): if(n>1): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005052', '查询[凭证参数维护表]操作异常!' ) raise AfaFlowControl.flowException( ) elif( len( records )!=0 ): if(n>1): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005053', '凭证种类已存在!' ) raise AfaFlowControl.flowException( ) #==========检查该凭证名称信息是否已经存在============ sqlStr = "select VOUHNAME from VOUH_PARAMETER \ where trim(VOUHNAME) = trim('" + TradeContext.sVouhName[i] + "')\ and BESBNO = '" + TradeContext.sBesbNo + "'" AfaLoggerFunc.tradeInfo( 'sql = ' + sqlStr ) records = AfaDBFunc.SelectSql( sqlStr ) if( records == None ): if(n>1): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005052', '查询[凭证参数维护表]操作异常!' ) raise AfaFlowControl.flowException( ) elif( len( records )!=0 ): if(n>1): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005053', '凭证名称已存在!' ) raise AfaFlowControl.flowException( ) #=============初始化返回报文变量==================== TradeContext.tradeResponse=[] sqlStr = "INSERT INTO VOUH_PARAMETER (BESBNO,VOUHTYPE,VOUHNAME,TELLERNO,ACTIVEDATE,STATUS) VALUES ('"+TradeContext.sBesbNo+"','"+\ TradeContext.sVouhType[i]+"','"+TradeContext.sVouhName[i]+"','"+TradeContext.sTellerTailNo+"','"+TradeContext.sLstTrxDay+"','1')" AfaLoggerFunc.tradeInfo( sqlStr ) records = AfaDBFunc.InsertSql( sqlStr ) if records < 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005054', '新增[凭证号码表]基本信息失败!' ) raise AfaFlowControl.flowException( ) #数据库提交 AfaLoggerFunc.tradeInfo( '------------数据库提交' ) AfaDBFunc.CommitSql( ) TradeContext.tradeResponse.append( ['sNum',str(TradeContext.sNum)] ) TradeContext.tradeResponse.append( ['sLstTrxDay',TradeContext.sLstTrxDay] ) TradeContext.tradeResponse.append( ['sLstTrxTime',TradeContext.sLstTrxTime] ) TradeContext.tradeResponse.append( ['errorCode','0000'] ) TradeContext.tradeResponse.append( ['errorMsg','交易成功'] ) if TradeContext.opeType == '3': #删除 if(SBNO <> '33' and SBNO <> '02' ): tradeExit( 'A0001', '该机构柜员不能进行此操作!' ) raise AfaFlowControl.flowException( ) n = 0 for i in range(TradeContext.sNum): n=n+1 sqlStr = "select * from VOUH_REGISTER \ where VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' \ and VOUHSTATUS <> '6' \ and BESBNO = '"+TradeContext.sBesbNo+"'" records = AfaDBFunc.SelectSql( sqlStr ) AfaLoggerFunc.tradeDebug(sqlStr) if( records == None ): if(n>1): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005060', '查询[凭证登记表]操作异常!' ) raise AfaFlowControl.flowException( ) elif( len( records ) > 0 ): if(n>1): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005061', '不能删除存在有效凭证的凭证参数!' ) raise AfaFlowControl.flowException( ) sqlStr = "DELETE FROM VOUH_PARAMETER WHERE VOUHTYPE = '" + TradeContext.sVouhType[i]+ "'\ and BESBNO = '" + TradeContext.sBesbNo+ "'" AfaLoggerFunc.tradeDebug(sqlStr) records = AfaDBFunc.DeleteSql( sqlStr ) if records == -1: AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005055', '删除[凭证参数维护表]操作异常!' ) raise AfaFlowControl.flowException( ) if records == 0: AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005056', '[凭证参数维护表]内无对应记录可被删除!' ) raise AfaFlowControl.flowException( ) #数据库提交 AfaLoggerFunc.tradeInfo( '------------数据库提交' ) AfaDBFunc.CommitSql( ) TradeContext.tradeResponse.append( ['sNum',str(TradeContext.sNum)] ) TradeContext.tradeResponse.append( ['sLstTrxDay',TradeContext.sLstTrxDay] ) TradeContext.tradeResponse.append( ['sLstTrxTime',TradeContext.sLstTrxTime] ) TradeContext.tradeResponse.append( ['errorCode','0000'] ) TradeContext.tradeResponse.append( ['errorMsg','交易成功'] ) if TradeContext.opeType == '2':#修改 if(SBNO <> '33' and SBNO <> '02' ): tradeExit( 'A0001', '该机构柜员不能进行此操作!' ) raise AfaFlowControl.flowException( ) n=0 #==============修改凭证参数维护表===================== for i in range(TradeContext.sNum): n=n+1 #==========检查该凭证名称信息是否已经存在============ sqlStr = "select VOUHNAME from VOUH_PARAMETER \ where trim(VOUHNAME) = trim('" + TradeContext.sVouhName[i] + "')\ and BESBNO = '" + TradeContext.sBesbNo + "'" AfaLoggerFunc.tradeInfo( 'sql = ' + sqlStr ) records = AfaDBFunc.SelectSql( sqlStr ) if( records == None ): if(n>1): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005052', '查询[凭证参数维护表]操作异常!' ) raise AfaFlowControl.flowException( ) elif( len( records )!=0 ): if(n>1): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005053', '凭证名称已存在!' ) raise AfaFlowControl.flowException( ) sqlStr = "UPDATE VOUH_PARAMETER set \ VOUHNAME = '"+ TradeContext.sVouhName[i] + "'" sqlStr = sqlStr +" WHERE VOUHTYPE = '" + TradeContext.sVouhType[i] + "'\ and BESBNO = '" + TradeContext.sBesbNo+ "'" records = AfaDBFunc.UpdateSql( sqlStr ) if records==-1 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005057', '更新[凭证参数维护表]信息异常!' ) raise AfaFlowControl.flowException( ) elif records==0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit( 'A005058', '修改[凭证参数维护表]基本信息失败!' ) raise AfaFlowControl.flowException( ) #数据库提交 AfaLoggerFunc.tradeInfo( '------------数据库提交' ) AfaDBFunc.CommitSql( ) TradeContext.tradeResponse.append( ['sNum',str(TradeContext.sNum)] ) TradeContext.tradeResponse.append( ['sLstTrxDay',TradeContext.sLstTrxDay] ) TradeContext.tradeResponse.append( ['sLstTrxTime',TradeContext.sLstTrxTime] ) TradeContext.tradeResponse.append( ['errorCode','0000'] ) TradeContext.tradeResponse.append( ['errorMsg','交易成功'] ) if TradeContext.opeType == '4':#查询 TradeContext.tradeResponse=[] sqlStr = "SELECT VOUHTYPE,VOUHNAME,BESBNO FROM VOUH_PARAMETER WHERE (SUBSTR(BESBNO,1,6) = '"+ (TradeContext.sBesbNo)[:6] +"' \ or BESBNO ='3400008887')" if (len(TradeContext.sVouhType)!=0 and len(TradeContext.sVouhType[0])!=0): sqlStr = sqlStr + " AND VOUHTYPE = '" + TradeContext.sVouhType[0] + "' AND STATUS = '1'" AfaLoggerFunc.tradeInfo( 'sqlStr = ' + sqlStr ) records = AfaDBFunc.SelectSql( sqlStr ) if( records == None ): TradeContext.tradeResponse.append( ['retCount','0'] ) tradeExit( 'A005052', '查询[凭证参数维护表]操作异常!' ) raise AfaFlowControl.flowException( ) elif( len( records )==0 ): TradeContext.tradeResponse.append( ['retCount','0'] ) tradeExit( 'A005059', '查询[凭证参数维护表]基本信息不存在!' ) raise AfaFlowControl.flowException( ) else: records=AfaUtilTools.ListFilterNone( records ) sTotal=len( records ) sVouhType = '' sVouhName = '' sBESBNO = '' for i in range( 0, len( records ) ): if( i <> 0): strSplit = '|' else: strSplit = '' sVouhType = sVouhType + strSplit + records[i][0] sVouhName = sVouhName + strSplit + records[i][1] sBESBNO = sBESBNO + strSplit + records[i][2] TradeContext.tradeResponse.append( ['sVouhType',sVouhType] ) TradeContext.tradeResponse.append( ['sVouhName',sVouhName] ) TradeContext.tradeResponse.append( ['sBESBNO',sBESBNO] ) TradeContext.tradeResponse.append( ['sLstTrxDay',TradeContext.sLstTrxDay] ) TradeContext.tradeResponse.append( ['sLstTrxTime',TradeContext.sLstTrxTime] ) TradeContext.tradeResponse.append( ['sTotal',str(sTotal)] ) TradeContext.tradeResponse.append( ['errorCode','0000'] ) TradeContext.tradeResponse.append( ['errorMsg','查询成功'] ) tradeExit('0000', '查询成功') #自动打包 AfaFunc.autoPackData() #=============程序退出========================================= AfaLoggerFunc.tradeInfo( '凭证中心参数维护['+TradeContext.TemplateCode+']退出' ) except AfaFlowControl.flowException, e: AfaFlowControl.exitMainFlow( )
def SubModuledoTrd(): #本模块主要是为了填写发票数据 if (TradeContext.channelCode =='001' ): #柜面交易不计发票 TradeContext.__billSaveCtl__ = '0' else: TradeContext.__billSaveCtl__ = '1' bill = [] bill.append('1') bill.append('') bill.append('') bill.append('') bill.append('') bill.append('') bill.append('') bill.append('') AfaLoggerFunc.tradeInfo("*************缴费交易开始*****************") try: sqlstr = "" sqlstr = "select * from fs_fc76 where afc001='" + TradeContext.userNo + "'" #===张恒增加查询增加项银行编码字段,保证查出唯一一条记录=== sqlstr = sqlstr + " and afc153 = '" + TradeContext.bankbm + "'" records = AfaDBFunc.SelectSql(sqlstr) #查找到了缴款书编号,只需要更新状态位 if ( len(records) > 0 ): AfaLoggerFunc.tradeInfo("=====>>>表FS_FC76中有"+TradeContext.userNo+"对应的信息,只需要更新状态位") sqlstr = "" sqlstr = "update fs_fc76 set flag='0',afc187='" + TradeContext.AFC187 + "' ,serno='" + TradeContext.agentSerialno + "' where afc001='" + TradeContext.userNo + "'" if( AfaDBFunc.UpdateSqlCmt( sqlstr ) < 1 ): TradeContext.errorCode,TradeContext.errorMsg = '0001','已有缴款记录' AfaLoggerFunc.tradeInfo( TradeContext.errorMsg +sqlstr) return None else: TradeContext.errorCode,TradeContext.errorMsg = "0000",'缴费成功' AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo("*************缴费交易结束*****************") return bill else: AfaLoggerFunc.tradeInfo("=====>>>表FS_FC76中无"+TradeContext.userNo+"对应的信息,插入记录") #==如果找到了缴款书编号,需要更新前台送过来的当前记录的所有字段,张恒修改于20100524== sqlstr1 = "" #把交费信息写到本地数据库里面 #增加银行编码字段,张恒修改 sqlstr = "insert into FS_FC76(AFC001,AFA031,AFC163,AFC187,AFC183,AFC157, \ AFC181,AFA040,AFC180,AFA051,AFC166,AFC155,AFC153, \ AFC154,AFA183,AFA184,AFA185,AFA091,AFC015,AAA010,FLAG,SERNO,BUSINO,TELLER,BRNO,DATE,TIME,BANKNO) values(" for i in range( len( (TradeContext.AFA031).split("^") ) ) : sqlstr1 = sqlstr sqlstr1 = sqlstr1 + "'" + TradeContext.AFC001 + "'," sqlstr1 = sqlstr1 + "'" + (TradeContext.AFA031.split("^"))[i] + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC163 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC187 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC183 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC157 + "'," sqlstr1 = sqlstr1 + "'" + (TradeContext.AFC181.split("^"))[i].strip() + "'," sqlstr1 = sqlstr1 + "'" + (TradeContext.AFA040.split("^"))[i].strip() + "'," sqlstr1 = sqlstr1 + "'" + (TradeContext.AFC180.split("^"))[i].strip() + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFA051 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC166 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC155 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC153 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFC154 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFA183 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFA184 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFA185 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AFA091 + "'," sqlstr1=sqlstr1+"'"+TradeContext.workDate[:4]+'-'+TradeContext.workDate[4:6]+'-'+TradeContext.workDate[6:]+"'," #=====刘雨龙 20080821 修改银行收款时间为TradeContext.workDate==== #sqlstr1 = sqlstr1 + "'" + TradeContext.AFC015 + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.AAA010 + "'," sqlstr1 = sqlstr1 + "'" + '0' + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.agentSerialno + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.busiNo + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.teller + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.brno + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.workDate + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.workTime + "'," sqlstr1 = sqlstr1 + "'" + TradeContext.bankbm + "')" AfaLoggerFunc.tradeInfo( sqlstr1 ) if( AfaDBFunc.InsertSql( sqlstr1 ) < 1 ): AfaDBFunc.RollbackSql( ) TradeContext.errorCode,TradeContext.errorMsg = "0001",'插入缴费书信息表失败' + sqlstr1 AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) return None AfaDBFunc.CommitSql( ) TradeContext.errorCode,TradeContext.errorMsg = "0000",'缴费成功' AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo("*************缴费交易结束*****************") return bill except Exception, e: AfaLoggerFunc.tradeInfo(str(e)) return None
def SubModuleMainFst( ): TradeContext.__agentEigen__ = '0' #从表标志 #-----------------------根据单位编码配置获取财政信息---------------------------- sqlstr = "select aaa010,bankno from fs_businoinfo where busino='" + TradeContext.busiNo + "'" sqlstr = sqlstr + " and bankno ='" + TradeContext.bankbm + "'" records = AfaDBFunc.SelectSql( sqlstr ) if records == None or len(records)==0 : TradeContext.errorCode,TradeContext.errorMsg = "0001","查找单位信息表异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( sqlstr ) return False elif len(records) > 1: TradeContext.errorCode,TradeContext.errorMsg = "0001","单位信息表异常:一个单位编号对应了多个财政信息" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( sqlstr ) return False TradeContext.AAA010 = records[0][0].strip() TradeContext.AFA101 = records[0][1].strip() #TradeContext.AAA010 = '0000000000' #TradeContext.AFA101 = '011' try: #查询未清分过的 if TradeContext.opType == '0': if( not TradeContext.existVariable( "FileName" ) ): TradeContext.errorCode,TradeContext.errorMsg = '0001','文件名称为空' return False fileName = os.environ['AFAP_HOME'] + "/data/ahfs/" + TradeContext.FileName AfaLoggerFunc.tradeInfo( '文件名称:' + fileName ) if ( os.path.exists(fileName) and os.path.isfile(fileName) ): AfaLoggerFunc.tradeInfo( '进入查询未清分' ) fp = open(fileName,"r") sLine = fp.readline() while ( sLine ): AfaLoggerFunc.tradeInfo( "********************中台清分查询开始***************" ) LineItem = sLine.split("<fld>") dateTmp = TradeContext.serDate[0:4] + '-' + TradeContext.serDate[4:6] + '-' + TradeContext.serDate[6:8] sqlstr = "" sqlstr = "select * from fs_fc74 where afc401='" + LineItem[0].strip() + "' and afc015='" + dateTmp + "' and busino='" + TradeContext.busiNo + "'" sqlstr = sqlstr + " and afa101 = '" + TradeContext.bankbm + "'" #===条件增加银行编码字段,张恒修改=== sqlstr = sqlstr + " and afa101 = '" + TradeContext.bankbm + "'" AfaLoggerFunc.tradeInfo( sqlstr ) records = AfaDBFunc.SelectSql( sqlstr ) if( records == None ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "查找流水明细表异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) return False #如果没有查到流水号码,则插入一条记录 if ( len( records)==0 ): #=====刘雨龙 新增关于收款人账号处理,取businoinfo表中账号==== sql2 = "select accno from fs_businoinfo where busino='" + TradeContext.busiNo + "'" sql2 = sql2 + " and bankno = '" + TradeContext.bankbm + "'" red = AfaDBFunc.SelectSql( sql2 ) if red == None or len(red)==0 : TradeContext.errorCode,TradeContext.errorMsg = "0001","查找单位信息表异常" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( sql2 ) #=====没有则赋空==== TradeContext.accno1 = '' #=====赋值==== TradeContext.accno1 = red[0][0] AfaLoggerFunc.tradeInfo( '插入流水号码%s' %LineItem[0] ) sqlstr = "" #流水号 缴款人名称 缴款人账号 收费金额 银行收款时间 sqlstr = "insert into fs_fc74 (AFC401,AAA010,AFA101,AFC004,AFC006,AFC007,AFC008,AFC011,AFC015,PAYTIME,AFC016,TELLER,BUSINO,FZPH,AFA091,AFC001,NOFEE,FLAG,DATE,TIME) values ( " dateTmp = LineItem[5].strip() dateTmp = dateTmp[0:4] + '-' + dateTmp[4:6] + '-' + dateTmp[6:8] sqlstr = sqlstr + "'" + LineItem[0].strip() + "'," #流水号 sqlstr = sqlstr + "'" + TradeContext.AAA010 + "'," #财政区划内码 sqlstr = sqlstr + "'" + TradeContext.AFA101 + "'," #银行外码 #=====刘雨龙 20080825 修改关于收款人账号的处理==== #sqlstr = sqlstr + "'" + '' + "'," #收款人帐号 sqlstr = sqlstr + "'" + TradeContext.accno1 + "'," #收款人帐号 sqlstr = sqlstr + "'" + LineItem[1].strip() + "'," #交款人名 sqlstr = sqlstr + "'" + '' + "'," #缴款人开户行 sqlstr = sqlstr + "'" + LineItem[2].strip() + "'," #缴款人帐号 sqlstr = sqlstr + "'" + LineItem[3].strip() + "'," #收费金额 sqlstr = sqlstr + "'" + dateTmp + "'," #收款日期 sqlstr = sqlstr + "'" + LineItem[4].strip() + "'," #收款时间 sqlstr = sqlstr + "'" + TradeContext.brno + "'," #银行网点 sqlstr = sqlstr + "'" + TradeContext.teller + "'," #柜员号 sqlstr = sqlstr + "'" + TradeContext.busiNo + "'," #单位编号 sqlstr = sqlstr + "'" + '' + "'," #支票号 sqlstr = sqlstr + "'" + '' + "'," #大厅外码 sqlstr = sqlstr + "'" + '' + "'," #缴款书编号 sqlstr = sqlstr + "'" + '' + "'," #缴款书金额 sqlstr = sqlstr + "'" + '*' + "'," #标志位,初始化为未处理状态 sqlstr = sqlstr + "'" + '00000000' + "'," #日期 sqlstr = sqlstr + "'" + TradeContext.workTime + "')" #时间 if( AfaDBFunc.InsertSql( sqlstr ) < 1 ): AfaDBFunc.RollbackSql( ) AfaLoggerFunc.tradeInfo( "插入数据库失败" ) AfaLoggerFunc.tradeInfo(sqlstr) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) TradeContext.errorCode = "0001" TradeContext.errorMsg = "插入流水表失败" return False AfaDBFunc.CommitSql( ) #else: # AfaLoggerFunc.tradeInfo('更新流水号码%s日期' %LineItem[0]) # sqlstr = "update fs_fc74 set date='" + TradeContext.workDate + "' where afc401='" + LineItem[0].strip() + "'" # if( AfaDBFunc.UpdateSql( sqlstr ) < 1 ) : # AfaDBFunc.RollbackSql() # TradeContext.errorCode, TradeContext.errorMsg='0001', '更新待查数据表失败' # AfaLoggerFunc.tradeInfo( sqlstr ) # AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) # return False # # AfaDBFunc.CommitSql( ) sLine = fp.readline() #从数据库中查询出来数据,写到文件中去 sqlstr = "" #sqlstr = "select FLAG,SERNO,PAYAMOUNT,PAYACCNO,PAYER,PAYDATE,PAYTIME from fs_detail where date='" + TradeContext.workDate + "' and busino='" + TradeContext.busiNo + "' and flag = '1'" dateTmp = TradeContext.serDate[0:4] + '-' + TradeContext.serDate[4:6] + '-' + TradeContext.serDate[6:8] #当前状态、流水号、收费金额、缴款人账号、缴款人名称、收款日期、银行收款时间 sqlstr = "select flag,afc401,afc011,afc008,afc006,afc015,paytime from fs_fc74 where afc015='" + dateTmp + "' and busino='" + TradeContext.busiNo + "' and afc016='" + TradeContext.brno + "' and flag='*' and date='00000000' " #===条件增加银行编码字段,张恒修改=== sqlstr = sqlstr + " and afa101 = '" + TradeContext.bankbm + "'" AfaLoggerFunc.tradeInfo( sqlstr ) records = AfaDBFunc.SelectSql( sqlstr ) if( records == None ): TradeContext.errorCode = "0001" TradeContext.errorMsg = "查找流水信息失败" AfaLoggerFunc.tradeInfo( TradeContext.errorMsg ) AfaLoggerFunc.tradeInfo( sqlstr + AfaDBFunc.sqlErrMsg ) return False else: #将数据写到文件中去 lDir = os.environ['AFAP_HOME'] + "/data/ahfs/" #本地目录 fName = "DOWN_8474_" + TradeContext.busiNo + ".txt" #文件名称 try: hp = open(lDir+fName,"w") hp.write( str(len(records)) + "\n" ) i = 0 while( i < len(records) ): lineList = list(records[i]) if lineList[0] == '*': lineList[0] = '1' #转化日期格式将0000-00-00转化为00000000 lineList[5] = lineList[5].replace('-','') hp.write( "|".join( lineList ) ) if i != len(records) -1 : hp.write( "\n" ) i = i + 1 else: hp.close() TradeContext.downFileName = fName except Exception, e: AfaLoggerFunc.tradeInfo( str(e) ) TradeContext.errorCode = "0001" TradeContext.errorMsg = "写文件异常" return False else: AfaLoggerFunc.tradeInfo( "文件" + fileName + "不存在" ) TradeContext.errorCode = "0002" TradeContext.errorMsg = "没有找到上传文件" return False #查询已经清分的 else:
sqlstr = sqlstr + "'" + dateTmp + "'," #收款日期 sqlstr = sqlstr + "'" + LineItem[4].strip() + "'," #收款时间 sqlstr = sqlstr + "'" + TradeContext.brno + "'," #银行网点 sqlstr = sqlstr + "'" + TradeContext.teller + "'," #柜员号 sqlstr = sqlstr + "'" + TradeContext.busiNo + "'," #单位编号 sqlstr = sqlstr + "'" + '' + "'," #支票号 sqlstr = sqlstr + "'" + '' + "'," #大厅外码 sqlstr = sqlstr + "'" + '' + "'," #缴款书编号 sqlstr = sqlstr + "'" + '' + "'," #缴款书金额 sqlstr = sqlstr + "'" + '*' + "'," #标志位,初始化为未处理状态 sqlstr = sqlstr + "'" + '00000000' + "'," #日期 sqlstr = sqlstr + "'" + TradeContext.workTime + "')" #时间 if( AfaDBFunc.InsertSql( sqlstr ) < 1 ): AfaDBFunc.RollbackSql( ) AfaLoggerFunc.tradeInfo( "插入数据库失败" ) AfaLoggerFunc.tradeInfo(sqlstr) AfaLoggerFunc.tradeInfo( AfaDBFunc.sqlErrMsg ) TradeContext.errorCode = "0001" TradeContext.errorMsg = "插入流水表失败" continue #sys.exit(1) AfaDBFunc.CommitSql( ) sLine = fp.readline() #从数据库中查询出来数据,写到文件中去 sqlstr = ""
def main( ): AfaLoggerFunc.tradeInfo( '凭证入库['+TradeContext.TemplateCode+']进入' ) #=============前台上送数据=================================== #TradeContext.sBesbNo 机构号 #TradeContext.sCur 货币代码 #TradeContext.sTellerNo 柜员号 #TradeContext.sVouhType 凭证种类 #TradeContext.sVouhName 凭证名称 #TradeContext.sStartNo 起始号码 #TradeContext.sEndNo 终止号码 #TradeContext.sRivTeller 对方柜员 #TradeContext.sVouhStatus 凭证状态 #TradeContext.sVouhNum 凭证数量 #TradeContext.sLstTrxDay 最后交易日期 #TradeContext.sLstTrxTime 最后交易时间 #TradeContext.sDepository 库箱标志 #TradeContext.sVouhName 凭证名称 try: #================拆包======================== TradeContext.sVouhType = VouhFunc.DelSpace(TradeContext.sVouhType.split("|")) TradeContext.sVouhName = VouhFunc.DelSpace(TradeContext.sVouhName.split("|")) TradeContext.sStartNo = VouhFunc.DelSpace(TradeContext.sStartNo.split("|")) TradeContext.sEndNo = VouhFunc.DelSpace(TradeContext.sEndNo.split("|")) TradeContext.sVouhNum = VouhFunc.DelSpace(TradeContext.sVouhNum.split("|")) TradeContext.sNum = len(TradeContext.sVouhType) #==================暂存================================== TradeContext.rVouhType = VouhFunc.AddSplit(TradeContext.sVouhType) TradeContext.rVouhName = VouhFunc.AddSplit(TradeContext.sVouhName) TradeContext.rStartNo = VouhFunc.AddSplit(TradeContext.sStartNo) TradeContext.rEndNo = VouhFunc.AddSplit(TradeContext.sEndNo) TradeContext.rVouhNum = VouhFunc.AddSplit(TradeContext.sVouhNum) #=============初始化返回报文变量======================== TradeContext.tradeResponse = [] #=============生成流水号======================== TradeContext.sVouhSerial = VouhFunc.GetVouhSerial( ) #=============获取当前系统时间========================== TradeContext.sLstTrxDay = AfaUtilTools.GetSysDate( ) TradeContext.sLstTrxTime = AfaUtilTools.GetSysTime( ) #=============置凭证操作状态及库箱标志==================== TradeContext.sDepository = '1' #库箱标志 1.分行管理库 2.支行管理库 3.网点管理库 4.柜员凭证箱 TradeContext.sExDepos = ' ' #原库箱标志 TradeContext.sVouhStatus = '0' #状态 0.已入未发 TradeContext.sExStatus = ' ' #原状态 TradeContext.sRivTeller = ' ' #对方柜员 TradeContext.sTransType = '凭证入库' #begin凭证优化更改201109 #=============获取柜员尾箱号=============================== HostContext.I1SBNO = TradeContext.sBesbNo #机构号 HostContext.I1USID = TradeContext.sTellerNo #柜员号 HostContext.I1WSNO = TradeContext.sWSNO #终端号 HostContext.I1EDDT = TradeContext.sLstTrxDay #终止日期 HostContext.I1TELR = TradeContext.sTellerNo #柜员代号 if(not VouhHostFunc.CommHost('0104')): VouhFunc.tradeExit( TradeContext.errorCode, TradeContext.errorMsg ) raise AfaFlowControl.flowException( ) if(TradeContext.errorCode == '0000'): TradeContext.sTellerTailNobak = HostContext.O2CABO TradeContext.sTellerTailNo = TradeContext.sTellerTailNobak[0] AfaLoggerFunc.tradeInfo( '柜员尾箱号:' + TradeContext.sTellerTailNo ) #end #判断是否回滚 n=0 for i in range(TradeContext.sNum): #=============定义变量========================== sFlagBack = '0' #入库凭证终止号码与库中凭证的起始号码是否存在连续关系,'1':是;'0':否 sFlagFront = '0' #入库凭证起始号码与库中凭证的终止号码是否存在连续关系,'1':是;'0':否 n=n+1 #============= 判断入库的起始号码是否小于等于终止号码============================ if(int(TradeContext.sStartNo[i]) > int(TradeContext.sEndNo[i]) ): tradeExit('A005066', '入库起始号码不能大于终止号码!') raise AfaFlowControl.flowException( ) #凭证优化更改201108 #============= 查询分行凭证库中的凭证号段============================ #sqlStr = "select STARTNO,ENDNO,VOUHSTATUS from VOUH_REGISTER WHERE VOUHTYPE = '"\ #+ TradeContext.sVouhType[i] + "' and BESBNO = '" + TradeContext.sBesbNo + "' and CUR = '" + TradeContext.sCur+"'" sqlStr = "select STARTNO,ENDNO ,VOUHSTATUS from VOUH_REGISTER where VOUHTYPE ='" + TradeContext.sVouhType[i] + "'" sqlStr = sqlStr + " and VOUHSTATUS != '1' and BESBNO = '" + TradeContext.sBesbNo + "' and CUR = '" + TradeContext.sCur+"'" #end AfaLoggerFunc.tradeDebug(sqlStr) records = AfaDBFunc.SelectSql( sqlStr ) AfaLoggerFunc.tradeInfo(records) if( records == None ): tradeExit('A005061', '查询[凭证登记表]操作异常!') raise AfaFlowControl.flowException( ) elif( len( records ) == 0 ): #如果数据库中无对应记录则直接插入 sqlStr = "insert into VOUH_REGISTER \ (BESBNO,TELLERNO,DEPOSITORY,CUR,VOUHTYPE,STARTNO,ENDNO,RIVTELLER,VOUHSTATUS,\ VOUHNUM,LSTTRXDAY,LSTTRXTIME) \ values \ ('"+TradeContext.sBesbNo+"','"+TradeContext.sTellerTailNo+"',\ '"+TradeContext.sDepository+"','"+TradeContext.sCur+"','"+TradeContext.sVouhType[i]+"',\ '"+TradeContext.sStartNo[i]+"','"+TradeContext.sEndNo[i]+"','"+TradeContext.sRivTeller+"',\ '"+TradeContext.sVouhStatus+"','"+TradeContext.sVouhNum[i]+"',\ '"+TradeContext.sLstTrxDay+"','"+TradeContext.sLstTrxTime+"')" AfaLoggerFunc.tradeDebug(sqlStr) records = AfaDBFunc.InsertSql( sqlStr ) if records == -1 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit('A005062', '凭证入库失败,凭证数据库操作失败!') raise AfaFlowControl.flowException( ) else: tradeExit('0000', '凭证入库成功') else : #判断入库的凭证起止号码与已入库的凭证号码是否有交集,其中records[x][0] #为已入库的终止号码;records[x][1]为已入库的起始号码,判断为有交集的情况为: #1.入库的终止号码大于等于已入库的起始号码,并且小于等于已入库的终止号码; #2.入库的起始号码大于等于已入库的起始号码,并且小于等于已入库的终止号码; #3.入库的终止号码大于等于已入库的终止号码,并且入库的起始号码小于等于已入库的起始号码 for x in range( len(records) ): sTmpStartNo = records[x][0] sTmpEndNo = records[x][1] sTmpVouhStat = records[x][2] if ((int(TradeContext.sEndNo[i])<=int(sTmpEndNo) and int(TradeContext.sEndNo[i])>=int(sTmpStartNo)) \ or (int(TradeContext.sStartNo[i])>=int(sTmpStartNo) and int(TradeContext.sStartNo[i])<=int(sTmpEndNo)) \ or ( int(TradeContext.sEndNo[i])>=int(sTmpEndNo) and int(TradeContext.sStartNo[i])<=int(sTmpStartNo))): if( n > 1 ): AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit('A005063', '凭证入库失败,凭证库中存在本次入库的凭证!') raise AfaFlowControl.flowException( ) elif ((int(TradeContext.sEndNo[i]) == (int(sTmpStartNo)-1)) and sTmpVouhStat == '0'): sFlagBack = '1' #无交集且后连续,置后连续标识 sOperDelNo = records[x][0] sOperEndNo = records[x][1] elif ((int(TradeContext.sStartNo[i]) == (int(sTmpEndNo)+1)) and sTmpVouhStat == '0'): sFlagFront = '1' #无交集且前连续,置前连续标识 sOperStartNo = records[x][0] #输入的凭证号码与库中同类型凭证存在后连续关系,则与相应的记录进行归并 if ( sFlagBack == '1' and sFlagFront == '0'): sTmpVouhNum = str( int(sTmpEndNo) - int(TradeContext.sStartNo[i]) + 1 ) sqlStr = "update VOUH_REGISTER set \ STARTNO = '" + TradeContext.sStartNo[i] + "', \ VOUHNUM = '"+ sTmpVouhNum + "',\ TELLERNO = '" + TradeContext.sTellerTailNo + "',\ LSTTRXDAY = '"+ TradeContext.sLstTrxDay + "',\ LSTTRXTIME = '" + TradeContext.sLstTrxTime + "'\ where ENDNO = '" + sOperEndNo + "' AND VOUHSTATUS = '"+TradeContext.sVouhStatus+"' \ AND VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' AND BESBNO = '" + TradeContext.sBesbNo+ "' \ AND CUR = '" + TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug(sqlStr) records = AfaDBFunc.UpdateSql( sqlStr ) if records == -1 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) #回滚 AfaDBFunc.RollbackSql( ) tradeExit('A005064', '凭证入库失败,凭证数据库操作异常!') raise AfaFlowControl.flowException( ) elif records == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) #回滚 AfaDBFunc.RollbackSql( ) tradeExit('A005062', '凭证入库失败,凭证数据库操作失败!') raise AfaFlowControl.flowException( ) else: tradeExit('0000', '凭证入库成功') #输入的凭证号码与库中同类型凭证存在前连续关系,则与相应的记录进行归并 elif ( sFlagFront == '1' and sFlagBack == '0' ): sTmpVouhNum = str( int(TradeContext.sEndNo[i]) - int(sOperStartNo) + 1 ) sqlStr = "update VOUH_REGISTER set \ ENDNO = '" + TradeContext.sEndNo[i] + "', \ VOUHNUM = '" + sTmpVouhNum + "',\ TELLERNO = '" + TradeContext.sTellerTailNo+ "',\ LSTTRXDAY = '" + TradeContext.sLstTrxDay + "',\ LSTTRXTIME = '" + TradeContext.sLstTrxTime + "'\ where STARTNO = '" + sOperStartNo + "' AND VOUHSTATUS = '"+TradeContext.sVouhStatus+"' \ AND VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' AND BESBNO = '" + TradeContext.sBesbNo + "' \ AND CUR ='"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug(sqlStr) records = AfaDBFunc.UpdateSql( sqlStr ) if records == -1 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) #回滚 AfaDBFunc.RollbackSql( ) tradeExit('A005064', '凭证入库失败,凭证数据库操作异常!') raise AfaFlowControl.flowException( ) elif records == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) #回滚 AfaDBFunc.RollbackSql( ) tradeExit('A005062', '凭证入库失败,凭证数据库操作失败!') raise AfaFlowControl.flowException( ) else: tradeExit('0000', '凭证入库成功') #输入的凭证号码与库中同类型凭证存在前/后连续关系,则与相应的记录进行归并 elif ( sFlagBack == '1' and sFlagFront == '1' ): sTmpVouhNum = str( int(sOperEndNo) - int(sOperStartNo) + 1 ) sqlStr = "update VOUH_REGISTER set \ ENDNO = '" + sOperEndNo + "', VOUHNUM = '" + sTmpVouhNum + "',\ TELLERNO = '" + TradeContext.sTellerTailNo + "',\ LSTTRXDAY = '" + TradeContext.sLstTrxDay + "',\ LSTTRXTIME = '" + TradeContext.sLstTrxTime + "'\ where STARTNO = '" + sOperStartNo + "' AND VOUHSTATUS = '"+TradeContext.sVouhStatus+"' \ AND VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' AND BESBNO = '" + TradeContext.sBesbNo + "' \ AND CUR = '"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug(sqlStr) records = AfaDBFunc.UpdateSql( sqlStr ) if records == -1 or records == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) #回滚 AfaDBFunc.RollbackSql( ) tradeExit('A005062', '凭证入库失败,凭证数据库操作失败!') raise AfaFlowControl.flowException( ) else: #归并成功后,删除归并后其余一条 sqlDel = "delete from VOUH_REGISTER \ where STARTNO = '" + sOperDelNo + "' AND VOUHSTATUS = '"+TradeContext.sVouhStatus+"' \ AND VOUHTYPE = '" + TradeContext.sVouhType[i]+ "' AND BESBNO ='"+ TradeContext.sBesbNo+"' \ AND CUR = '"+ TradeContext.sCur+"'" AfaLoggerFunc.tradeDebug(sqlDel) record = AfaDBFunc.DeleteSql( sqlDel ) if record == -1 or record == 0 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) record = AfaDBFunc.RollbackSql( ) tradeExit('A005062', '凭证入库失败,凭证数据库操作失败!') raise AfaFlowControl.flowException( ) else: tradeExit('0000', '凭证入库成功') #输入的凭证号码与库中同类型凭证不存在任何连续关系,则直接插入 else: sqlStr = "insert into VOUH_REGISTER \ (BESBNO,TELLERNO,DEPOSITORY,CUR,VOUHTYPE,STARTNO,ENDNO,RIVTELLER,VOUHSTATUS,\ VOUHNUM,LSTTRXDAY,LSTTRXTIME) \ values \ ('" + TradeContext.sBesbNo + "','" + TradeContext.sTellerTailNo + "',\ '"+TradeContext.sDepository+ "','" + TradeContext.sCur+"','"+ TradeContext.sVouhType[i]+"',\ '" + TradeContext.sStartNo[i] + "','" + TradeContext.sEndNo[i] + "','" + TradeContext.sRivTeller +"',\ '"+TradeContext.sVouhStatus+"','" + TradeContext.sVouhNum[i] + "',\ '" + TradeContext.sLstTrxDay + "','" + TradeContext.sLstTrxTime + "')" AfaLoggerFunc.tradeDebug(sqlStr) records = AfaDBFunc.InsertSql( sqlStr ) if records == -1 : AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) tradeExit('A005062', '凭证入库失败,凭证数据库操作失败!') raise AfaFlowControl.flowException( ) else: tradeExit('0000', '凭证入库成功') AfaLoggerFunc.tradeInfo( '------------更新凭证变更登记表' ) #更新凭证变更登记表 VouhFunc.VouhModify() #数据库提交 AfaLoggerFunc.tradeInfo( '------------数据库提交' ) AfaDBFunc.CommitSql( ) #主机记账 AfaLoggerFunc.tradeInfo( '------------主机记账' ) TradeContext.sOperSty = '0' VouhHostFunc.VouhCommHost() TradeContext.sTranStatus = '0' AfaLoggerFunc.tradeInfo( '=======================12'+TradeContext.errorCode ) #TradeContext.errorCode = '0000' if(TradeContext.errorCode <> '0000'): tmpErrorCode= TradeContext.errorCode tmpErrorMsg = TradeContext.errorMsg #冲正 #=============置凭证操作状态及库箱标志==================== TradeContext.sDepository = '1' #库箱标志 1.分行管理库 2.支行管理库 3.网点管理库 4.柜员凭证箱 TradeContext.sExDepos = '1' #原库箱标志 TradeContext.sVouhStatus = '9' #状态 0.已入未发 9.欲出库 TradeContext.sExStatus = '0' #原状态 TradeContext.sRivTeller = ' ' #对方柜员 TradeContext.sTransType = '冲正' TradeContext.sInTellerTailNo = TradeContext.sTellerTailNo TradeContext.sInBesbNo = TradeContext.sBesbNo #交易公共部分 VouhFunc.VouhTrans() AfaDBFunc.CommitSql( ) sqlDel = "delete from VOUH_REGISTER where VOUHSTATUS = '9'" AfaLoggerFunc.tradeDebug(sqlDel) record = AfaDBFunc.DeleteSqlCmt( sqlDel ) if record == -1 or record == 0 : tradeExit('A005062', '冲正失败,凭证数据库操作失败!') raise AfaFlowControl.flowException( ) else: AfaLoggerFunc.tradeInfo( '============================自动冲正!' ) TradeContext.sTranStatus = '1' if(not TradeContext.existVariable( "HostSerno" )): TradeContext.HostSerno = '' #更新流水表 VouhFunc.ModifyVouhModify() tradeExit(tmpErrorCode, tmpErrorMsg) raise AfaFlowControl.flowException( ) #更新流水表 VouhFunc.ModifyVouhModify() TradeContext.tradeResponse.append( ['sVouhSerial',TradeContext.sVouhSerial] ) TradeContext.tradeResponse.append( ['sVouhType',TradeContext.rVouhType] ) TradeContext.tradeResponse.append( ['sVouhName',TradeContext.rVouhName] ) TradeContext.tradeResponse.append( ['sStartNo',TradeContext.rStartNo] ) TradeContext.tradeResponse.append( ['sEndNo',TradeContext.rEndNo] ) TradeContext.tradeResponse.append( ['sVouhNum',TradeContext.rVouhNum] ) TradeContext.tradeResponse.append( ['sLstTrxDay',TradeContext.sLstTrxDay] ) TradeContext.tradeResponse.append( ['sLstTrxTime',TradeContext.sLstTrxTime] ) TradeContext.tradeResponse.append( ['sNum',str(TradeContext.sNum)] ) TradeContext.tradeResponse.append( ['errorCode','0000'] ) TradeContext.tradeResponse.append( ['errorMsg','查询成功'] ) #自动打包 AfaFunc.autoPackData() #=============程序退出==================== AfaLoggerFunc.tradeInfo( '凭证入库['+TradeContext.TemplateCode+']退出' ) except AfaFlowControl.flowException, e: AfaLoggerFunc.tradeInfo( '数据库回滚' ) AfaDBFunc.RollbackSql( ) AfaFlowControl.exitMainFlow( )