def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作交易[TRC001_8531]进入***' ) #=====判断输入接口值是否存在==== if( not TradeContext.existVariable( "STRDAT" ) ): return AfaFlowControl.ExitThisFlow('A099','起始日期[STRDAT]不存在' ) if( not TradeContext.existVariable( "ENDDAT" ) ): return AfaFlowControl.ExitThisFlow('A099','终止日期[ENDDAT]不存在' ) if( not TradeContext.existVariable( "RECSTRNO" ) ): return AfaFlowControl.ExitThisFlow('A099','起始笔数[RECSTRNO]不存在' ) #=====生成查询语句==== wheresql="" wheresql = wheresql + "BESBNO='" + TradeContext.BESBNO + "' " wheresql=wheresql + " AND BJEDTE>='" + TradeContext.STRDAT + "'" wheresql=wheresql + " AND BJEDTE<='" + TradeContext.ENDDAT + "'" #=====判断交易代码是否为空==== if(TradeContext.TRCCO != ""): wheresql = wheresql + " AND TRCCO='" + TradeContext.TRCCO + "'" #=====判断往来标识是否为空==== if(TradeContext.BRSFLG != ""): wheresql = wheresql + " AND BRSFLG='" + TradeContext.BRSFLG + "'" #=====判断查复标识是否为空或者9-全部==== if(TradeContext.ISDEAL != "9" and TradeContext.ISDEAL!=""): wheresql = wheresql + " AND ISDEAL='" + TradeContext.ISDEAL + "'" AfaLoggerFunc.tradeDebug(">>>生成查询语句sql="+wheresql) #=====查询机构名==== subbra_dict={'BESBNO':TradeContext.BESBNO} sub=rccpsDBTrcc_subbra.selectu(subbra_dict) if(sub==None): return AfaFlowControl.ExitThisFlow('A099','查询机构名失败' ) if(len(sub)==0): return AfaFlowControl.ExitThisFlow('A099','没有相应的机构名' ) #=====判断打印类型==== #=====0 不打印==== if TradeContext.PRTTYPE=='0': AfaLoggerFunc.tradeInfo(">>>进入不打印处理") #=====判断报单序号是否为空==== if(TradeContext.BSPSQN!=""): wheresql = wheresql + " AND BSPSQN='" + TradeContext.BSPSQN + "'" #=====得到总记录数==== allcount=rccpsDBTrcc_hdcbka.count(wheresql) if(allcount==-1): return AfaFlowControl.ExitThisFlow('A099','超找总记录数失败' ) #=====查询数据库==== ordersql=" order by BJEDTE DESC,BSPSQN DESC" records=rccpsDBTrcc_hdcbka.selectm(TradeContext.RECSTRNO,10,wheresql,ordersql) if(records==None): return AfaFlowControl.ExitThisFlow('A099','查询失败' ) elif( len(records)<=0 ): return AfaFlowControl.ExitThisFlow('A099','未查找到数据' ) else: #=====生成文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetHostDate()+"_"+TradeContext.TransCode fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") if(f==None): return AfaFlowControl.ExitThisFlow('A099','打开文件失败' ) filecontext="" #=====写文件操作==== for i in range(0,len(records)): filecontext=records[i]['BJEDTE'] + "|" \ +records[i]['BSPSQN'] + "|" \ +records[i]['BRSFLG'] + "|" \ +records[i]['BESBNO'] + "|" \ +records[i]['BETELR'] + "|" \ +records[i]['BEAUUS'] + "|" \ +records[i]['NCCWKDAT']+ "|" \ +records[i]['TRCCO'] + "|" \ +records[i]['TRCDAT'] + "|" \ +records[i]['TRCNO'] + "|" \ +records[i]['SNDBNKCO']+ "|" \ +records[i]['SNDBNKNM']+ "|" \ +records[i]['RCVBNKCO']+ "|" \ +records[i]['RCVBNKNM']+ "|" \ +records[i]['BOJEDT'] + "|" \ +records[i]['BOSPSQ'] + "|" \ +records[i]['ORTRCCO'] + "|" \ +records[i]['CONT'] + "|" \ +records[i]['ISDEAL'] + "|" \ +records[i]['CUR'] + "|" \ +str(records[i]['OCCAMT'])+ "|" \ +records[i]['PYRACC'] + "|" \ +records[i]['PYEACC'] + "|" \ +records[i]['PRCCO'] + "|" \ +records[i]['STRINFO'] + "|" \ +records[i]['PYRNAM'] + "|" \ +records[i]['PYENAM'] + "|" f.write(filecontext+"\n") AfaLoggerFunc.tradeInfo("生成文件结束") f.close() #=====输出接口赋值==== TradeContext.RECCOUNT=str(len(records)) #查询笔数 TradeContext.RECALLCOUNT=str(allcount) #总笔数 TradeContext.PBDAFILE=filename #文件名 TradeContext.errorCode="0000" TradeContext.errorMsg="查询成功" #=====1 打印==== elif TradeContext.PRTTYPE=='1': #=====判断报单序号是否为空==== if(TradeContext.BSPSQN!=""): wheresql = wheresql + " AND BSPSQN='" + TradeContext.BSPSQN + "'" else: return AfaFlowControl.ExitThisFlow('S999','报单序号[BSPSQN]不允许为空' ) #=====查询数据库==== records=rccpsDBTrcc_hdcbka.selectm(TradeContext.RECSTRNO,10,wheresql,"") if(records==None): return AfaFlowControl.ExitThisFlow('A099','查询失败' ) elif( len(records)<=0 ): return AfaFlowControl.ExitThisFlow('A099','未查找到数据' ) else: #=====查询书==== if(TradeContext.TRCCO=='9900511'): AfaLoggerFunc.tradeInfo(">>>业务类型为查询书") #=====查询原交易信息==== where_dict={'BJEDTE':records[0]['BOJEDT'],'BSPSQN':records[0]['BOSPSQ']} ret=rccpsDBTrcc_trcbka.selectu(where_dict) if(ret==None): return AfaFlowControl.ExitThisFlow('A099','查询原信息失败' ) if(len(ret)==0): return AfaFlowControl.ExitThisFlow('A099','未查找原信息' ) AfaLoggerFunc.tradeDebug(">>>开始生成查询书打印文本") #=====查询书打印格式==== txt="""\ %(BESBNM)s电子汇兑查询书 |-----------------------------------------------------------------------------| | 查询日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 查询书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 原交易金额: | %(OROCCAMT)-15.2f | |-----------------------------------------------------------------------------| | 原发起行行号: | %(ORSNDBNKCO)s | |-----------------------------------------------------------------------------| | 原接收行行号: | %(ORRCVBNKCO)s | |-----------------------------------------------------------------------------| | 查询内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ #=====写文件操作==== file_name = 'rccps_' + records[0]['BJEDTE'] + '_' + TradeContext.BSPSQN + '_8531' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(records[0]['BJEDTE']).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(records[0]['SNDBNKCO']).ljust(10,' '),\ 'RCVBNKCO':(records[0]['RCVBNKCO']).ljust(10,' '),\ 'OROCCAMT':(records[0]['OCCAMT']),\ 'ORSNDBNKCO':(ret['SNDBNKCO']).ljust(10,' '),\ 'ORRCVBNKCO':(ret['RCVBNKCO']).ljust(10,' '),\ 'CONT1':(records[0]['CONT'][:68]).ljust(68,' '),\ 'CONT2':(records[0]['CONT'][68:138]).ljust(70,' '),\ 'CONT3':(records[0]['CONT'][138:208]).ljust(70,' '),\ 'CONT4':(records[0]['CONT'][208:]).ljust(70,' ')} out_file.close() TradeContext.PBDAFILE = file_name #文件名 AfaLoggerFunc.tradeDebug(">>>结束生成打印文本") #=====查复书==== elif(TradeContext.TRCCO=='9900512'): AfaLoggerFunc.tradeInfo(">>>业务类型为查复书") #=====查询原交易信息==== where_dict={'BJEDTE':records[0]['BOJEDT'],'BSPSQN':records[0]['BOSPSQ']} ret=rccpsDBTrcc_hdcbka.selectu(where_dict) if(ret==None): return AfaFlowControl.ExitThisFlow('A099','查询原信息失败' ) if(len(ret)==0): return AfaFlowControl.ExitThisFlow('A099','未查找原信息' ) #=====查复书打印格式==== txt="""\ %(BESBNM)s电子汇兑查复书 |-----------------------------------------------------------------------------| | 查复日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 查复书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 原查询日期: | %(BOJEDT)s | |-----------------------------------------------------------------------------| | 原查询书号: | %(BOSPSQ)s | |-----------------------------------------------------------------------------| | 原金额: | %(OROCCAMT)-15.2f | |-----------------------------------------------------------------------------| | 原币种: | 人民币 | |-----------------------------------------------------------------------------| | 查复内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ #====写文件操作==== file_name = 'rccps_' + records[0]['BJEDTE'] + '_' + TradeContext.BSPSQN + '_8531' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(records[0]['BJEDTE']).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'RCVBNKCO':(records[0]['RCVBNKCO']).ljust(10,' '),\ 'BOJEDT':(records[0]['BOJEDT']).ljust(8,' '),\ 'BOSPSQ':(records[0]['BOSPSQ']).ljust(12,' '),\ 'OROCCAMT':(ret['OCCAMT']),\ 'CONT1':(records[0]['CONT'][:68]).ljust(68,' '),\ 'CONT2':(records[0]['CONT'][68:138]).ljust(70,' '),\ 'CONT3':(records[0]['CONT'][138:208]).ljust(70,' '),\ 'CONT4':(records[0]['CONT'][208:]).ljust(70,' ')} out_file.close() TradeContext.PBDAFILE = file_name #文件名 AfaLoggerFunc.tradeDebug("结束生成打印文本") #=====自由格式书==== elif(TradeContext.TRCCO=='9900513'): AfaLoggerFunc.tradeInfo(">>>业务类型为自由格式书") #=====自由格式书打印格式==== txt="""\ %(BESBNM)s自由格式书 |-----------------------------------------------------------------------------| | 日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 自由格式书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ #=====写文件操作==== file_name = 'rccps_' + records[0]['BJEDTE'] + '_' + TradeContext.BSPSQN + '_8531' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(records[0]['BJEDTE']).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(records[0]['SNDBNKCO']).ljust(10,' '),\ 'RCVBNKCO':(records[0]['RCVBNKCO']).ljust(10,' '),\ 'CONT1':(records[0]['CONT'][:68]).ljust(68,' '),\ 'CONT2':(records[0]['CONT'][68:138]).ljust(70,' '),\ 'CONT3':(records[0]['CONT'][138:208]).ljust(70,' '),\ 'CONT4':(records[0]['CONT'][208:]).ljust(70,' ')} out_file.close() TradeContext.PBDAFILE = file_name #文件名 AfaLoggerFunc.tradeDebug("结束生成打印文本") #=====特约汇兑查询书==== elif(TradeContext.TRCCO=='9900522'): AfaLoggerFunc.tradeInfo(">>>业务类型为特约汇兑查询书") #=====查询原交易信息==== where_dict={'BJEDTE':records[0]['BOJEDT'],'BSPSQN':records[0]['BOSPSQ']} ret=rccpsDBTrcc_trcbka.selectu(where_dict) if(ret==None): return AfaFlowControl.ExitThisFlow('A099','查询原信息失败' ) if(len(ret)==0): return AfaFlowControl.ExitThisFlow('A099','未查找原信息' ) #=====特约电子汇兑查询书打印格式==== txt="""\ %(BESBNM)s全国特约电子汇兑查询书 |-----------------------------------------------------------------------------| | 查询日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 特约汇兑查询书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 原报单号: | %(BOSPSQ)s | |-----------------------------------------------------------------------------| | 原金额: | %(OROCCAMT)-15.2f | |-----------------------------------------------------------------------------| | 原委托日期: | %(ORTRCDAT)s | |-----------------------------------------------------------------------------| | 原发起行行号: | %(ORSNDBNKCO)s | |-----------------------------------------------------------------------------| | 查询内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ #====写文件操作==== file_name = 'rccps_' + records[0]['BJEDTE'] + '_' + TradeContext.BSPSQN + '_8531' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(records[0]['BJEDTE']).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(records[0]['SNDBNKCO']).ljust(10,' '),\ 'RCVBNKCO':(records[0]['RCVBNKCO']).ljust(10,' '),\ 'BOSPSQ':(records[0]['BOSPSQ']).ljust(10,' '),\ 'OROCCAMT':(ret['OCCAMT']),\ 'ORTRCDAT':(ret['TRCDAT']).ljust(8,' '),\ 'ORSNDBNKCO':(ret['SNDBNKCO']).ljust(10,' '),\ 'CONT1':(records[0]['CONT'][:68]).ljust(68,' '),\ 'CONT2':(records[0]['CONT'][68:138]).ljust(70,' '),\ 'CONT3':(records[0]['CONT'][138:208]).ljust(70,' '),\ 'CONT4':(records[0]['CONT'][208:]).ljust(70,' ')} out_file.close() TradeContext.PBDAFILE = file_name #文件名 AfaLoggerFunc.tradeDebug("结束生成打印文本") #=====特约汇兑查复书==== elif(TradeContext.TRCCO=='9900523'): AfaLoggerFunc.tradeInfo(">>>业务类型为特约汇兑查复书") #=====查询原交易信息==== where_dict={'BJEDTE':records[0]['BOJEDT'],'BSPSQN':records[0]['BOSPSQ']} ret=rccpsDBTrcc_hdcbka.selectu(where_dict) if(ret==None): return AfaFlowControl.ExitThisFlow('A099','查询原信息失败' ) if(len(ret)==0): return AfaFlowControl.ExitThisFlow('A099','未查找原信息' ) #=====特约电子汇兑查复书打印格式==== txt="""\ %(BESBNM)s全国特约电子汇兑查复书 |-----------------------------------------------------------------------------| | 查复日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 特约汇兑查复书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 原特约查询发起行行号: | %(ORSNDBNKCO)s | |-----------------------------------------------------------------------------| | 原特约查询日期: | %(BOJEDT)s | |-----------------------------------------------------------------------------| | 原金额: | %(OROCCAMT)-15.2f | |-----------------------------------------------------------------------------| | 原委托日期: | %(ORTRCDAT)s | |-----------------------------------------------------------------------------| | 原特约查询交易流水号: | %(ORTRCNO)s | |-----------------------------------------------------------------------------| | 查询内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ #====写文件操作==== file_name = 'rccps_' + records[0]['BJEDTE'] + '_' + TradeContext.BSPSQN + '_8531' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(records[0]['BJEDTE']).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(records[0]['SNDBNKCO']).ljust(10,' '),\ 'RCVBNKCO':(records[0]['RCVBNKCO']).ljust(10,' '),\ 'ORSNDBNKCO':(ret['SNDBNKCO']).ljust(10,' '),\ 'BOJEDT':(records[0]['BJEDTE']).ljust(8,' '),\ 'OROCCAMT':(ret['OCCAMT']),\ 'ORTRCDAT':(ret['TRCDAT']).ljust(8,' '),\ 'ORTRCNO':(ret['TRCNO']).ljust(12,' '),\ 'CONT1':(records[0]['CONT'][:68]).ljust(68,' '),\ 'CONT2':(records[0]['CONT'][68:138]).ljust(70,' '),\ 'CONT3':(records[0]['CONT'][138:208]).ljust(70,' '),\ 'CONT4':(records[0]['CONT'][208:]).ljust(70,' ')} out_file.close() TradeContext.PBDAFILE = file_name #文件名 AfaLoggerFunc.tradeDebug("结束生成打印文本") #=====特约汇兑自由格式书==== elif(TradeContext.TRCCO=='9900524'): AfaLoggerFunc.tradeInfo(">>>业务类型为特约汇兑自由格式书") #=====特约电子汇兑自由格式书打印格式==== txt="""\ %(BESBNM)s全国特约电子汇兑自由格式书 |-----------------------------------------------------------------------------| | 日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 特约汇兑自由格式书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ #=====写文件操作==== file_name = 'rccps_' + records[0]['BJEDTE'] + '_' + TradeContext.BSPSQN + '_8531' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(records[0]['BJEDTE']).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(records[0]['SNDBNKCO']).ljust(10,' '),\ 'RCVBNKCO':(records[0]['RCVBNKCO']).ljust(10,' '),\ 'CONT1':(records[0]['CONT'][:68]).ljust(68,' '),\ 'CONT2':(records[0]['CONT'][68:138]).ljust(70,' '),\ 'CONT3':(records[0]['CONT'][138:208]).ljust(70,' '),\ 'CONT4':(records[0]['CONT'][208:]).ljust(70,' ')} out_file.close() TradeContext.PBDAFILE = file_name #文件名 AfaLoggerFunc.tradeInfo("结束生成打印文本") else: return AfaFlowControl.ExitThisFlow('A099','没有相关的业务类型' ) TradeContext.RECCOUNT="1" #查询笔数 TradeContext.RECALLCOUNT="1" #总笔数 TradeContext.errorCode="0000" TradeContext.errorMsg="查询成功" elif( len(TradeContext.PRTTYPE) == 0 ): return AfaFlowControl.ExitThisFlow('A099','打印标志为必输项' ) else: return AfaFlowControl.ExitThisFlow('A099','打印标志非法' ) AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作交易[TRC001_8531]退出***' ) return True
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( ">>>开始汇兑来账接收处理" ) #=====判断是否重复交易==== sel_dict = {'TRCNO':TradeContext.TRCNO,'TRCDAT':TradeContext.TRCDAT,'SNDBNKCO':TradeContext.SNDBNKCO} record = rccpsDBTrcc_trcbka.selectu(sel_dict) if record == None: return AfaFlowControl.ExitThisFlow('S999','判断是否重复报文,查询汇兑业务登记簿相同报文异常') elif len(record) > 0: AfaLoggerFunc.tradeInfo('汇兑业务登记簿中存在相同数据,重复报文,进入下一流程') #=====为通讯回执报文赋值==== out_context_dict = {} out_context_dict['sysType'] = 'rccpst' out_context_dict['TRCCO'] = '9900503' out_context_dict['MSGTYPCO'] = 'SET008' out_context_dict['RCVMBRCO'] = TradeContext.SNDMBRCO out_context_dict['SNDMBRCO'] = TradeContext.RCVMBRCO out_context_dict['SNDBRHCO'] = TradeContext.BESBNO out_context_dict['SNDCLKNO'] = TradeContext.BETELR out_context_dict['SNDTRDAT'] = TradeContext.BJEDTE out_context_dict['SNDTRTIM'] = TradeContext.BJETIM out_context_dict['ORMFN'] = TradeContext.MSGFLGNO out_context_dict['MSGFLGNO'] = out_context_dict['SNDMBRCO'] + TradeContext.BJEDTE + TradeContext.SerialNo out_context_dict['NCCWKDAT'] = TradeContext.NCCworkDate out_context_dict['OPRTYPNO'] = '99' out_context_dict['ROPRTPNO'] = TradeContext.OPRTYPNO out_context_dict['TRANTYP'] = '0' out_context_dict['ORTRCCO'] = TradeContext.TRCCO out_context_dict['PRCCO'] = 'RCCI0000' out_context_dict['STRINFO'] = '重复报文' rccpsMap0000Dout_context2CTradeContext.map(out_context_dict) #=====发送afe==== AfaAfeFunc.CommAfe() return AfaFlowControl.ExitThisFlow('S999','重复报文,退出处理流程') AfaLoggerFunc.tradeInfo(">>>结束判断是否重复报文") #=====币种转换==== if TradeContext.CUR == 'CNY': TradeContext.CUR = '01' #====开始向字典赋值==== trcbka_dict = {} if not rccpsMap1101CTradeContext2Dtrcbka_dict.map(trcbka_dict): return AfaFlowControl.ExitThisFlow('M999', '字典赋值出错') trcbka_dict['DCFLG'] = PL_DCFLG_CRE #借贷标识.贷 trcbka_dict['OPRNO'] = '00' #业务属性 #=====开始插入数据库==== if not rccpsDBFunc.insTransTrc(trcbka_dict): #=====RollBack操作==== AfaDBFunc.RollbackSql() return AfaFlowControl.ExitThisFlow('D002', '插入数据库出错,RollBack成功') else: #=====commit操作==== AfaDBFunc.CommitSql() AfaLoggerFunc.tradeInfo('插入汇兑业务登记簿,COMMIT成功') #=====设置状态为收妥==== sstlog = {} sstlog['BSPSQN'] = TradeContext.BSPSQN sstlog['BJEDTE'] = TradeContext.BJEDTE sstlog['BCSTAT'] = PL_BCSTAT_BNKRCV sstlog['BDWFLG'] = PL_BDWFLG_SUCC #=====设置状态为 收妥-成功 ==== if not rccpsState.setTransState(sstlog): #=====RollBack操作==== AfaDBFunc.RollbackSql() return AfaFlowControl.ExitThisFlow(TradeContext.errorCode, TradeContext.errorMsg) else: #=====commit操作==== AfaDBFunc.CommitSql() AfaLoggerFunc.tradeInfo('>>>commit成功') ##========================= START 张恒 增加于20091011 来帐落机构及入帐挂账处理 =====================## #初始化记挂账标识,记账.0,挂账.1,默认记账 accflag = 0 #接收机构暂存 TradeContext.BESBNOFIRST = TradeContext.BESBNO if accflag == 0: AfaLoggerFunc.tradeInfo(">>>开始校验密押") #=====开始调用密押服务器进行核押==== SNDBANKCO = TradeContext.SNDBNKCO RCVBANKCO = TradeContext.RCVBNKCO SNDBANKCO = SNDBANKCO.rjust(12,'0') RCVBANKCO = RCVBANKCO.rjust(12,'0') AMOUNT = TradeContext.OCCAMT.split('.')[0] + TradeContext.OCCAMT.split('.')[1] AMOUNT = AMOUNT.rjust(15,'0') INFO = ' ' INFO = INFO.rjust(60,' ') AfaLoggerFunc.tradeDebug('处理类型(0-编押 1-核押):' + str(PL_SEAL_DEC) ) AfaLoggerFunc.tradeDebug('业务种类(1-现金汇票 2-转账汇票 3-电子汇兑业务):' +str(PL_TYPE_DZHD) ) AfaLoggerFunc.tradeDebug('委托日期:' + TradeContext.TRCDAT ) AfaLoggerFunc.tradeDebug('交易流水号:' + TradeContext.TRCNO ) AfaLoggerFunc.tradeDebug('AMOUNT=' + str(AMOUNT) ) AfaLoggerFunc.tradeDebug('SNDBANKCO=' + str(SNDBANKCO) ) AfaLoggerFunc.tradeDebug('RCVBANKCO=' + str(RCVBANKCO) ) AfaLoggerFunc.tradeDebug('密押:' + TradeContext.SEAL ) AfaLoggerFunc.tradeDebug('OTHERINFO[' + str(INFO) + ']') ret = miya.DraftEncrypt(PL_SEAL_DEC,PL_TYPE_DZHD,TradeContext.TRCDAT,TradeContext.TRCNO,AMOUNT,SNDBANKCO,RCVBANKCO,'',TradeContext.SEAL) if ret != 0: #密押错,挂账 AfaLoggerFunc.tradeInfo("密押校验未通过,ret=[" + str(ret) + "]") accflag = 1 TradeContext.NOTE3 = "密押错,挂账!" else: #密押校验通过 AfaLoggerFunc.tradeInfo("密押校验通过") AfaLoggerFunc.tradeInfo(">>>结束校验密押") #校验账号是否非法 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验账号是否非法") if (len(TradeContext.PYEACC) != 23) and (len(TradeContext.PYEACC) != 19) : accflag = 1 TradeContext.NOTE3 = '此账号不是对公或对私账号,挂账!' AfaLoggerFunc.tradeInfo("结束校验账号是否非法") #调用主机接口查询账户信息 if accflag == 0: #调用8810查询账户信息 AfaLoggerFunc.tradeInfo("开始查询账户信息") TradeContext.ACCNO = TradeContext.PYEACC TradeContext.HostCode = '8810' rccpsHostFunc.CommHost( '8810' ) if TradeContext.errorCode != '0000': accflag = 1 TradeContext.NOTE3 = '查询收款人信息失败,挂账!' elif TradeContext.errorCode == '0000' and len(TradeContext.ACCSO) == 0 : accflag = 1 TradeContext.NOTE3 = '查询收款人开户机构失败,挂账!' AfaLoggerFunc.tradeInfo("结束查询账户信息") #校验账户状态是否正常 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验是否跨法人") if TradeContext.ACCSO[0:6] != TradeContext.BESBNO[0:6] : accflag = 1 TradeContext.NOTE3 = '接收行与账户开户行跨法人,挂账!' AfaLoggerFunc.tradeInfo("结束校验是否跨法人") #校验开户机构是否建立代理关系 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验接收行与开户机构是否为同一机构") if TradeContext.ACCSO != TradeContext.BESBNOFIRST: khjg = {} khjg['BESBNO'] = TradeContext.ACCSO khjg['BTOPSB'] = TradeContext.BESBNOFIRST khjg['SUBFLG'] = PL_SUBFLG_SUB rec = rccpsDBTrcc_subbra.selectu(khjg) if rec == None: accflag = 1 TradeContext.NOTE3 = '查询账户代理关系失败,挂账!' elif len(rec) <= 0: accflag = 1 TradeContext.NOTE3 = '账户未建立代理关系,挂账!' else: #接收机构与开户机构存在代理关系,设置机构号为开户机构号 TradeContext.BESBNO = TradeContext.ACCSO AfaLoggerFunc.tradeInfo("结束校验接收行与开户机构是否为同一机构") #校验账号状态是否正常 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验账号状态是否正常") if TradeContext.ACCST != '0' and TradeContext.ACCST != '2': accflag = 1 TradeContext.NOTE3 = '账户状态不正常,挂账!' #在建立代理关系的情况下,账户状态不正常,同样挂账 TradeContext.BESBNO = TradeContext.BESBNOFIRST AfaLoggerFunc.tradeInfo("结束校验账号状态是否正常") #校验收款人户名是否一致 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验收款人户名是否一致") if TradeContext.ACCNM != TradeContext.PYENAM : accflag = 1 TradeContext.NOTE3 = '收款人户名不符,挂账!' #在建立代理关系的情况下,账户状态不正常,同样挂账 TradeContext.BESBNO = TradeContext.BESBNOFIRST AfaLoggerFunc.tradeInfo("结束校验收款人户名是否一致") if (TradeContext.existVariable( "PYEACC" ) and len(TradeContext.PYEACC) != 0): #收款人名称 TradeContext.PYEACCNO = TradeContext.PYEACC else: TradeContext.PYEACCNO = '' if (TradeContext.existVariable( "PYENAM" ) and len(TradeContext.PYENAM) != 0): #收款人名称 TradeContext.OTNM = TradeContext.PYENAM else: TradeContext.OTNM = '' #汇兑往帐记帐字典赋值 TradeContext.SBACACNM = '' #借方户名 input_dict = {} if (TradeContext.existVariable( "PYRNAM" ) and len(TradeContext.PYRNAM) != 0): #付款人户名 TradeContext.SBACACNM = TradeContext.PYRNAM input_dict['accflag'] = str(accflag) #记挂标志 input_dict['OCCAMT'] = TradeContext.OCCAMT #交易金额 input_dict['PYEACC'] = TradeContext.PYEACCNO #收款人账号 input_dict['OTNM'] = TradeContext.OTNM #收款人名称 input_dict['BESBNO'] = TradeContext.BESBNO #调用汇兑记账接口 rccpsEntries.HDLZJZ(input_dict) TradeContext.accflag = accflag #代理标志 #=====新增sstlog表状态记录==== if not rccpsState.newTransState(TradeContext.BJEDTE,TradeContext.BSPSQN,TradeContext.BCSTAT,TradeContext.BDWFLG): #=====RollBack操作==== AfaDBFunc.RollbackSql() return AfaFlowControl.ExitThisFlow('M999', '设置状态['+TradeContext.BCSTAT+']['+TradeContext.BDWFLG+']失败,系统自动回滚') else: #=====commit操作==== AfaDBFunc.CommitSql() return True
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作交易[TRC001_8532]进入***' ) #=====判断输入接口值是否存在==== if( not TradeContext.existVariable( "STRDAT" ) ): return AfaFlowControl.ExitThisFlow('A099', '起始日期[STRDAT]不存在') if( not TradeContext.existVariable( "ENDDAT" ) ): return AfaFlowControl.ExitThisFlow('A099', '结束日期[ENDDAT]不存在') if( not TradeContext.existVariable( "RECSTRNO" ) ): return AfaFlowControl.ExitThisFlow('A099', '起始笔数[RECSTRNO]不存在') if(len(TradeContext.PRTTYPE)==0): return AfaFlowControl.ExitThisFlow("S999", "打印标志[PRTTYPE]不允许为空") #=====组织sql语句==== wheresql="" wheresql = wheresql + "BESBNO='" + TradeContext.BESBNO + "' " wheresql=wheresql+" and BJEDTE>='"+TradeContext.STRDAT+"'" wheresql=wheresql+" AND BJEDTE<='"+TradeContext.ENDDAT+"'" #=====判断查复标识是否为空或为9-全部==== if(TradeContext.ISDEAL != "" and TradeContext.ISDEAL != "9"): wheresql=wheresql+" AND ISDEAL='"+TradeContext.ISDEAL+"'" #=====判断往来标识是否为空==== if(TradeContext.BRSFLG!=""): wheresql=wheresql+" AND BRSFLG='"+TradeContext.BRSFLG+"'" #=====判断交易代码是否为空==== if(TradeContext.TRCCO !="" ): wheresql=wheresql+" AND TRCCO='"+TradeContext.TRCCO+"'" #业务类型(交易代码) start_no=TradeContext.RECSTRNO #起始笔数 sel_size=10 #=====查询机构名==== subbra_dict={'BESBNO':TradeContext.BESBNO} sub=rccpsDBTrcc_subbra.selectu(subbra_dict) if(sub==None): return AfaFlowControl.ExitThisFlow('A099','查询机构名失败' ) if(len(sub)==0): return AfaFlowControl.ExitThisFlow('A099','机构名称无满足条件记录' ) #=====判断打印类型 0 不打印==== if(TradeContext.PRTTYPE=='0'): AfaLoggerFunc.tradeInfo(">>>进入不打印处理") #=====判断查询查复书号是否为空==== if(TradeContext.BSPSQN!="" ): wheresql=wheresql+" AND BSPSQN='"+TradeContext.BSPSQN+"'" #=====查询总记录数==== allcount=rccpsDBTrcc_pjcbka.count(wheresql) if(allcount==-1): return AfaFlowControl.ExitThisFlow('A099','查找总记录数失败' ) #=====查询数据库==== ordersql=" order by BJEDTE DESC,BSPSQN DESC" records=rccpsDBTrcc_pjcbka.selectm(start_no,sel_size,wheresql,ordersql) if records==None: return AfaFlowControl.ExitThisFlow('A099','查询失败' ) if len(records)<=0: return AfaFlowControl.ExitThisFlow('A099','没有查找到数据' ) else: #=====生成文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetHostDate()+"_"+TradeContext.TransCode fpath=os.environ["AFAP_HOME"]+"/tmp/" try: f=open(fpath+filename,"w") except : AfaLoggerFunc.tradeInfo(">>>打开文件失败") return AfaFlowControl.ExitThisFlow('A099','打开文件失败' ) filecontext="" #=====写文件操作==== for i in range(0,len(records)): #=====生成文件内容==== AfaLoggerFunc.tradeDebug( "生成文件内容 ") filecontext=records[i]['BJEDTE'] + "|" \ +records[i]['BSPSQN'] + "|" \ +records[i]['BRSFLG'] + "|" \ +records[i]['BESBNO'] + "|" \ +records[i]['BETELR'] + "|" \ +records[i]['BEAUUS'] + "|" \ +records[i]['NCCWKDAT'] + "|" \ +records[i]['TRCCO'] + "|" \ +records[i]['TRCDAT'] + "|" \ +records[i]['TRCNO'] + "|" \ +records[i]['SNDBNKCO'] + "|" \ +records[i]['SNDBNKNM'] + "|" \ +records[i]['RCVBNKCO'] + "|" \ +records[i]['RCVBNKNM'] + "|" \ +records[i]['BOJEDT'] + "|" \ +records[i]['BOSPSQ'] + "|" \ +records[i]['ORTRCCO'] + "|" \ +records[i]['CONT'] + "|" \ +records[i]['ISDEAL'] + "|" \ +records[i]['BILDAT'] + "|" \ +records[i]['BILNO'] + "|" \ +records[i]['BILPNAM'] + "|" \ +records[i]['BILENDDT'] + "|" \ +str(records[i]['BILAMT'])+ "|" \ +records[i]['PYENAM'] + "|" \ +records[i]['HONBNKNM'] + "|" \ +records[i]['PRCCO'] + "|" \ +records[i]['STRINFO'] + "|" f.write(filecontext+"\n") f.close() #=====输出接口赋值==== TradeContext.PBDAFILE=filename #文件名 TradeContext.RECCOUNT=str(len(records)) #查询笔数 TradeContext.RECALLCOUNT=str(allcount) #总笔数 #=====打印处理 1 打印==== elif(TradeContext.PRTTYPE=='1'): AfaLoggerFunc.tradeInfo(">>>进入打印处理") #=====判断查询查复书号是否为空==== if(TradeContext.BSPSQN!="" ): wheresql=wheresql+" AND BSPSQN='"+TradeContext.BSPSQN+"'" else: return AfaFlowControl.ExitThisFlow('A099','查询查复书号[BSPSQN]不允许为空' ) #=====查询数据库==== records = rccpsDBTrcc_pjcbka.selectm(TradeContext.RECSTRNO,10,wheresql,"") if(records==None): return AfaFlowControl.ExitThisFlow('A099','查询失败' ) elif( len(records)<=0 ): return AfaFlowControl.ExitThisFlow('A099','未查找到数据' ) else: #=====票据查询书==== if(TradeContext.TRCCO=='9900520'): AfaLoggerFunc.tradeInfo(">>>业务类型为票据查询书") #=====票据查询书打印格式==== txt = """\ %(BESBNM)s票据查询书 |-----------------------------------------------------------------------------| | 查询日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 票据查询书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 票据日期: | %(BILDAT)s | |-----------------------------------------------------------------------------| | 票据到期日: | %(BILENDDT)s | |-----------------------------------------------------------------------------| | 票据号码: | %(BILNO)s | |-----------------------------------------------------------------------------| | 出票人名称: | %(BILPNAM)s| |-----------------------------------------------------------------------------| | 付款行名称: | %(HONBNKNM)s| |-----------------------------------------------------------------------------| | 查询内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ #====写文件操作==== file_name = 'rccps_' + records[0]['BJEDTE'] + '_' + TradeContext.BSPSQN + '_8532' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(records[0]['BJEDTE']).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(records[0]['SNDBNKCO']).ljust(10,' '),\ 'RCVBNKCO':(records[0]['RCVBNKCO']).ljust(10,' '),\ 'BILDAT':(records[0]['BILDAT']).ljust(8,' '),\ 'BILENDDT':(records[0]['BILENDDT']).ljust(8,' '),\ 'BILNO':(records[0]['BILNO']).ljust(16,' '),\ 'BILPNAM':(records[0]['BILPNAM']).ljust(60,' '),\ 'HONBNKNM':(records[0]['HONBNKNM']).ljust(60,' '),\ 'CONT1':(records[0]['CONT'][:68]).ljust(68,' '),\ 'CONT2':(records[0]['CONT'][68:138]).ljust(70,' '),\ 'CONT3':(records[0]['CONT'][138:208]).ljust(70,' '),\ 'CONT4':(records[0]['CONT'][208:]).ljust(70,' ')} out_file.close() TradeContext.PBDAFILE = file_name #文件名 AfaLoggerFunc.tradeDebug("结束生成打印文本") #=====票据查复书==== elif(TradeContext.TRCCO=='9900521'): AfaLoggerFunc.tradeInfo(">>>业务类型为票据查复书") #=====查询原交易信息==== where_dict={'BJEDTE':records[0]['BOJEDT'],'BSPSQN':records[0]['BOSPSQ']} ret=rccpsDBTrcc_pjcbka.selectu(where_dict) if(ret==None): return AfaFlowControl.ExitThisFlow('A099','查询原信息失败' ) if(len(ret)==0): return AfaFlowControl.ExitThisFlow('A099','未查找原信息' ) #=====票据查复书打印格式==== txt = """\ %(BESBNM)s票据查复书 |---------------------------------------------------------------------------------------| | 查复日期: | %(BJEDTE)s | |---------------------------------------------------------------------------------------| | 票据查复书号: | %(BSPSQN)s | |---------------------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |---------------------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |---------------------------------------------------------------------------------------| | 票据日期: | %(BILDAT)s | |---------------------------------------------------------------------------------------| | 票据到期日: | %(BILENDDT)s | |---------------------------------------------------------------------------------------| | 票据号码: | %(BILNO)s | |---------------------------------------------------------------------------------------| | 出票人名称: | %(BILPNAM)s| |---------------------------------------------------------------------------------------| | 收款人名称: | %(PYENAM)s| |---------------------------------------------------------------------------------------| | 付款行名称: | %(HONBNKNM)s| |---------------------------------------------------------------------------------------| | 原票据查询日期: | %(BOJEDT)s | |---------------------------------------------------------------------------------------| | 原票据查询发起行行号: | %(ORSNDBNKCO)s | |---------------------------------------------------------------------------------------| | 原票据查询书号: | %(BOSPSQ)s | |---------------------------------------------------------------------------------------| | 查复内容: | | |---------------------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |---------------------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ #====写文件操作==== file_name = 'rccps_' + records[0]['BJEDTE'] + '_' + TradeContext.BSPSQN + '_8532' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(records[0]['BJEDTE']).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(records[0]['SNDBNKCO']).ljust(10,' '),\ 'RCVBNKCO':(records[0]['RCVBNKCO']).ljust(10,' '),\ 'BILDAT':(records[0]['BILDAT']).ljust(8,' '),\ 'BILENDDT':(records[0]['BILENDDT']).ljust(8,' '),\ 'BILNO':(records[0]['BILNO']).ljust(16,' '),\ 'BILPNAM':(records[0]['BILPNAM']).ljust(60,' '),\ 'PYENAM':(records[0]['PYENAM']).ljust(60,' '),\ 'HONBNKNM':(records[0]['HONBNKNM']).ljust(60,' '),\ 'BOJEDT':(records[0]['BOJEDT']).ljust(8,' '),\ 'ORSNDBNKCO':(ret['SNDBNKCO']).ljust(10,' '),\ 'BOSPSQ':(records[0]['BOSPSQ']).ljust(12,' '),\ 'CONT1':(records[0]['CONT'][:68]).ljust(68,' '),\ 'CONT2':(records[0]['CONT'][68:138]).ljust(70,' '),\ 'CONT3':(records[0]['CONT'][138:208]).ljust(70,' '),\ 'CONT4':(records[0]['CONT'][208:]).ljust(70,' ')} out_file.close() TradeContext.PBDAFILE = file_name #文件名 AfaLoggerFunc.tradeDebug("结束生成打印文本") else: return AfaFlowControl.ExitThisFlow("S999", "业务类型非法") TradeContext.RECCOUNT='1' #查询笔数 TradeContext.RECALLCOUNT='1' #总笔数 TradeContext.errorCode="0000" TradeContext.errorMsg="查询成功" else: return AfaFlowControl.ExitThisFlow("S999", "打印标志非法") TradeContext.errorCode="0000" TradeContext.errorMsg="查询成功" AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作交易[TRC001_8532]退出***' ) return True
def SubModuleDoSnd(): #=================判断afe是否发送成功======================================= if TradeContext.errorCode != '0000': AfaLoggerFunc.tradeInfo('>>>AFE发送失败') return AfaFlowControl.ExitThisFlow(TradeContext.errorCode, TradeContext.errorMsg) AfaLoggerFunc.tradeInfo('>>>发送成功') update_wdict = {'BJEDTE':TradeContext.BOJEDT,'BSPSQN':TradeContext.BOSPSQ} update_dict = {'ISDEAL':PL_ISDEAL_ISDO} #已查复 ret = rccpsDBTrcc_hdcbka.update(update_dict,update_wdict) if (ret <= 0): AfaDBFunc.RollbackSql() return AfaFlowControl.ExitThisFlow("S999","更新原查询业务信息异常") AfaDBFunc.CommitSql() AfaLoggerFunc.tradeInfo(">>>Commit成功") #=====查询机构名==== subbra_dict={'BESBNO':TradeContext.BESBNO} sub=rccpsDBTrcc_subbra.selectu(subbra_dict) if(sub==None): return AfaFlowControl.ExitThisFlow('A099','查询机构名失败' ) if(len(sub)==0): return AfaFlowControl.ExitThisFlow('A099','没有相应的机构名' ) #=====生成打印文本==== AfaLoggerFunc.tradeInfo("开始生成打印文本") txt = """\ %(BESBNM)s通存通兑查复书 |-----------------------------------------------------------------------------| | 查复日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 查复书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 原查询日期: | %(BOJEDT)s | |-----------------------------------------------------------------------------| | 原查询书号: | %(BOSPSQ)s | |-----------------------------------------------------------------------------| | 原金额: | %(OROCCAMT)-15.2f | |-----------------------------------------------------------------------------| | 原币种: | 人民币 | |-----------------------------------------------------------------------------| | 查复内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ file_name = 'rccps_' + TradeContext.BJEDTE + '_' + TradeContext.BSPSQN + '_' + '_8512' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(TradeContext.BJEDTE).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'RCVBNKCO':(TradeContext.RCVBNKCO).ljust(10,' '),\ 'BOJEDT':(TradeContext.BOJEDT).ljust(8,' '),\ 'BOSPSQ':(TradeContext.BOSPSQ).ljust(12,' '),\ 'OROCCAMT':(TradeContext.PRT_OROCCAMT),\ 'CONT1':(TradeContext.CONT[:68]).ljust(68,' '),\ 'CONT2':(TradeContext.CONT[68:138]).ljust(70,' '),\ 'CONT3':(TradeContext.CONT[138:208]).ljust(70,' '),\ 'CONT4':(TradeContext.CONT[208:]).ljust(70,' ')} out_file.close() TradeContext.PBDAFILE = file_name AfaLoggerFunc.tradeInfo("结束生成打印文本") return True
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( "====开始汇兑来账接收处理====" ) #=====判断是否重复交易==== sel_dict = {'TRCNO':TradeContext.TRCNO,'TRCDAT':TradeContext.TRCDAT,'SNDBNKCO':TradeContext.SNDBNKCO} record = rccpsDBTrcc_trcbka.selectu(sel_dict) if record == None: return AfaFlowControl.ExitThisFlow('S999','判断是否重复报文,查询汇兑业务登记簿相同报文异常') elif len(record) > 0: AfaLoggerFunc.tradeInfo('汇兑业务登记簿中存在相同数据,重复报文,进入下一流程') #=====为通讯回执报文赋值==== out_context_dict = {} out_context_dict['sysType'] = 'rccpst' out_context_dict['TRCCO'] = '9900503' out_context_dict['MSGTYPCO'] = 'SET008' out_context_dict['RCVMBRCO'] = TradeContext.SNDMBRCO out_context_dict['SNDMBRCO'] = TradeContext.RCVMBRCO out_context_dict['SNDBRHCO'] = TradeContext.BESBNO out_context_dict['SNDCLKNO'] = TradeContext.BETELR out_context_dict['SNDTRDAT'] = TradeContext.BJEDTE out_context_dict['SNDTRTIM'] = TradeContext.BJETIM out_context_dict['ORMFN'] = TradeContext.MSGFLGNO out_context_dict['MSGFLGNO'] = out_context_dict['SNDMBRCO'] + TradeContext.BJEDTE + TradeContext.SerialNo out_context_dict['NCCWKDAT'] = TradeContext.NCCworkDate out_context_dict['OPRTYPNO'] = '99' out_context_dict['ROPRTPNO'] = TradeContext.OPRTYPNO out_context_dict['TRANTYP'] = '0' out_context_dict['ORTRCCO'] = TradeContext.TRCCO out_context_dict['PRCCO'] = 'RCCI0000' out_context_dict['STRINFO'] = '重复报文' rccpsMap0000Dout_context2CTradeContext.map(out_context_dict) #=====发送afe==== AfaAfeFunc.CommAfe() return AfaFlowControl.ExitThisFlow('S999','重复报文,退出处理流程') AfaLoggerFunc.tradeInfo(">>>结束判断是否重复报文") #=====币种转换==== if TradeContext.CUR == 'CNY': TradeContext.CUR = '01' #====开始向字典赋值==== trcbka_dict = {} if not rccpsMap1101CTradeContext2Dtrcbka_dict.map(trcbka_dict): return AfaFlowControl.ExitThisFlow('M999', '字典赋值出错') trcbka_dict['DCFLG'] = PL_DCFLG_CRE #借贷标识 trcbka_dict['OPRNO'] = '01' #业务属性 #=====开始插入数据库==== if not rccpsDBFunc.insTransTrc(trcbka_dict): #=====RollBack操作==== AfaDBFunc.RollbackSql() return AfaFlowControl.ExitThisFlow('D002', '插入数据库出错,RollBack成功') else: #=====commit操作==== AfaDBFunc.CommitSql() AfaLoggerFunc.tradeInfo('插入汇兑业务登记簿,COMMIT成功') #=====设置状态为收妥==== sstlog = {} sstlog['BSPSQN'] = TradeContext.BSPSQN sstlog['BJEDTE'] = TradeContext.BJEDTE sstlog['BCSTAT'] = PL_BCSTAT_BNKRCV sstlog['BDWFLG'] = PL_BDWFLG_SUCC #=====设置状态为 收妥-成功 ==== if not rccpsState.setTransState(sstlog): #=====RollBack操作==== AfaDBFunc.RollbackSql() return AfaFlowControl.ExitThisFlow(TradeContext.errorCode, TradeContext.errorMsg) else: #=====commit操作==== AfaDBFunc.CommitSql() AfaLoggerFunc.tradeInfo('>>>commit成功') ##========================= START 张恒 增加于20091011 来帐落机构及入帐挂账处理 =====================## #初始化记挂账标识,记账.0,挂账.1,默认记账 accflag = 0 #接收机构暂存 TradeContext.BESBNOFIRST = TradeContext.BESBNO if accflag == 0: AfaLoggerFunc.tradeInfo(">>>开始校验密押") #=====开始调用密押服务器进行核押==== SNDBANKCO = TradeContext.SNDBNKCO RCVBANKCO = TradeContext.RCVBNKCO SNDBANKCO = SNDBANKCO.rjust(12,'0') RCVBANKCO = RCVBANKCO.rjust(12,'0') AMOUNT = TradeContext.OCCAMT.split('.')[0] + TradeContext.OCCAMT.split('.')[1] AMOUNT = AMOUNT.rjust(15,'0') AfaLoggerFunc.tradeDebug('AMOUNT=' + str(AMOUNT) ) AfaLoggerFunc.tradeDebug('SNDBANKCO=' + str(SNDBANKCO) ) AfaLoggerFunc.tradeDebug('RCVBANKCO=' + str(RCVBANKCO) ) ret = miya.DraftEncrypt(PL_SEAL_DEC,PL_TYPE_DZHD,TradeContext.TRCDAT,TradeContext.TRCNO,AMOUNT,SNDBANKCO,RCVBANKCO,'',TradeContext.SEAL) if ret != 0: #密押错,挂账 AfaLoggerFunc.tradeInfo("密押校验未通过,ret=[" + str(ret) + "]") accflag = 1 TradeContext.NOTE3 = "密押错,挂账!" else: #密押校验通过 AfaLoggerFunc.tradeInfo("密押校验通过") AfaLoggerFunc.tradeInfo(">>>结束校验密押") #校验账号是否非法 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验账号是否非法") if (len(TradeContext.PYEACC) != 23) and (len(TradeContext.PYEACC) != 19) : accflag = 1 TradeContext.NOTE3 = '此账号不是对公或对私账号,挂账!' AfaLoggerFunc.tradeInfo("结束校验账号是否非法") #调用主机接口查询账户信息 if accflag == 0: #调用8810查询账户信息 AfaLoggerFunc.tradeInfo("开始查询账户信息") TradeContext.ACCNO = TradeContext.PYEACC TradeContext.HostCode = '8810' rccpsHostFunc.CommHost( '8810' ) if TradeContext.errorCode != '0000': accflag = 1 TradeContext.NOTE3 = '查询收款人信息失败,挂账!' elif TradeContext.errorCode == '0000' and len(TradeContext.ACCSO) == 0 : accflag = 1 TradeContext.NOTE3 = '查询收款人开户机构失败,挂账!' AfaLoggerFunc.tradeInfo("结束查询账户信息") #校验账户状态是否正常 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验是否跨法人") if TradeContext.ACCSO[0:6] != TradeContext.BESBNO[0:6] : accflag = 1 TradeContext.NOTE3 = '接收行与账户开户行跨法人,挂账!' AfaLoggerFunc.tradeInfo("结束校验是否跨法人") #校验开户机构是否建立代理关系 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验接收行与开户机构是否为同一机构") if TradeContext.ACCSO != TradeContext.BESBNOFIRST: khjg = {} khjg['BESBNO'] = TradeContext.ACCSO khjg['BTOPSB'] = TradeContext.BESBNOFIRST khjg['SUBFLG'] = PL_SUBFLG_SUB rec = rccpsDBTrcc_subbra.selectu(khjg) if rec == None: accflag = 1 TradeContext.NOTE3 = '查询账户代理关系失败,挂账!' elif len(rec) <= 0: accflag = 1 TradeContext.NOTE3 = '账户未建立代理关系,挂账!' else: #接收机构与开户机构存在代理关系,设置机构号为开户机构号 TradeContext.BESBNO = TradeContext.ACCSO AfaLoggerFunc.tradeInfo("结束校验接收行与开户机构是否为同一机构") #校验账号状态是否正常 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验账号状态是否正常") if TradeContext.ACCST != '0' and TradeContext.ACCST != '2': accflag = 1 TradeContext.NOTE3 = '账户状态不正常,挂账!' #在建立代理关系的情况下,账户状态不正常,同样挂账 TradeContext.BESBNO = TradeContext.BESBNOFIRST AfaLoggerFunc.tradeInfo("结束校验账号状态是否正常") #校验收款人户名是否一致 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验收款人户名是否一致") if TradeContext.ACCNM != TradeContext.PYENAM : accflag = 1 TradeContext.NOTE3 = '收款人户名不符,挂账!' #在建立代理关系的情况下,账户状态不正常,同样挂账 TradeContext.BESBNO = TradeContext.BESBNOFIRST AfaLoggerFunc.tradeInfo("结束校验收款人户名是否一致") if (TradeContext.existVariable( "PYEACC" ) and len(TradeContext.PYEACC) != 0): #收款人名称 TradeContext.PYEACC = TradeContext.PYEACC else: TradeContext.PYEACC = '' if (TradeContext.existVariable( "PYENAM" ) and len(TradeContext.PYENAM) != 0): #收款人名称 TradeContext.OTNM = TradeContext.PYENAM else: TradeContext.OTNM = '' #汇兑往帐记帐字典赋值 input_dict = {} if (TradeContext.existVariable( "PYRNAM" ) and len(TradeContext.PYRNAM) != 0): #付款人户名 TradeContext.SBACACNM = TradeContext.PYRNAM input_dict['accflag'] = str(accflag) #记挂标志 input_dict['OCCAMT'] = TradeContext.OCCAMT #交易金额 input_dict['PYEACC'] = TradeContext.PYEACC #收款人账号 input_dict['OTNM'] = TradeContext.OTNM #收款人名称 input_dict['BESBNO'] = TradeContext.BESBNO #调用汇兑记账接口 rccpsEntries.HDLZJZ(input_dict) TradeContext.accflag = accflag #代理标志 #=====开始调函数拼贷方账号第25位校验位==== TradeContext.HostCode = '8813' #调用8813主机接口 TradeContext.RCCSMCD = PL_RCCSMCD_HDLZ #主机摘要代码:汇兑来账 TradeContext.ACUR = '1' ##========================= END 张恒 增加于20091011 来帐落机构及入帐挂账处理 =====================## #=====新增sstlog表状态记录==== if not rccpsState.newTransState(TradeContext.BJEDTE,TradeContext.BSPSQN,TradeContext.BCSTAT,TradeContext.BDWFLG): #=====RollBack操作==== AfaDBFunc.RollbackSql() return AfaFlowControl.ExitThisFlow('M999', '设置状态['+TradeContext.BCSTAT+']['+TradeContext.BDWFLG+']失败,系统自动回滚') else: #=====commit操作==== AfaDBFunc.CommitSql() return True
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo("进入交易后处理") #=================判断afe是否发送成功======================================= if TradeContext.errorCode != '0000': return AfaFlowControl.ExitThisFlow(TradeContext.errorCode, TradeContext.errorMsg) #=====查询机构名==== subbra_dict={'BESBNO':TradeContext.BESBNO} sub=rccpsDBTrcc_subbra.selectu(subbra_dict) if(sub==None): return AfaFlowControl.ExitThisFlow('A099','查询机构名失败' ) if(len(sub)==0): return AfaFlowControl.ExitThisFlow('A099','没有相应的机构名' ) #=================生成打印文本============================================= AfaLoggerFunc.tradeInfo("开始生成打印文本") txt = """\ %(BESBNM)s汇票查询书 |-----------------------------------------------------------------------------| | 查询日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 查询书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 出票日期: | %(BILDAT)s | |-----------------------------------------------------------------------------| | 汇票金额: | %(BILAMT)s | |-----------------------------------------------------------------------------| | 汇票号码: | %(BILNO)s | |-----------------------------------------------------------------------------| | 付款人账号: | %(PYRACC)s | |-----------------------------------------------------------------------------| | 付款人名称: | %(PYRNAM)s| |-----------------------------------------------------------------------------| | 收款人账号: | %(PYEACC)s | |-----------------------------------------------------------------------------| | 收款人名称: | %(PYENAM)s| |-----------------------------------------------------------------------------| | 查询内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ file_name = 'rccps_' + TradeContext.BJEDTE + '_' + TradeContext.BSPSQN + '_8516' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") AfaLoggerFunc.tradeInfo(">>>>>>开始赋值") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(TradeContext.BJEDTE).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(TradeContext.SNDBNKCO).ljust(10,' '),\ 'RCVBNKCO':(TradeContext.RCVBNKCO).ljust(10,' '),\ 'BILDAT':(TradeContext.BILDAT).ljust(8,' '),\ 'BILAMT':(TradeContext.BILAMT).ljust(15,' '),\ 'BILNO':(TradeContext.BILNO).ljust(16,' '),\ 'PYRACC':(TradeContext.PYRACC).ljust(32,' '),\ 'PYRNAM':(TradeContext.PYRNAM).ljust(60,' '),\ 'PYEACC':(TradeContext.PYEACC).ljust(32,' '),\ 'PYENAM':(TradeContext.PYENAM).ljust(60,' '),\ 'CONT1':(TradeContext.CONT[:68]).ljust(68,' '),\ 'CONT2':(TradeContext.CONT[68:138]).ljust(70,' '),\ 'CONT3':(TradeContext.CONT[138:208]).ljust(70,' '),\ 'CONT4':(TradeContext.CONT[208:]).ljust(70,' ')} AfaLoggerFunc.tradeInfo(">>>>>>结束赋值") out_file.close TradeContext.PBDAFILE = file_name AfaLoggerFunc.tradeInfo("结束生成打印文本") AfaLoggerFunc.tradeInfo("结束交易后处理") return True
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( '***往账.本地类操作(1.本地操作).县中心机构维护[TRC001_8549]进入***' ) AfaLoggerFunc.tradeInfo(">>>开始必要性校验") #=====校验机构号与柜员号是否为同一机构 20091116 张恒 ======= if TradeContext.OPRNO != '3': if TradeContext.BESBNO[0:6] != TradeContext.BRNO[0:6] : return AfaFlowControl.ExitThisFlow("S999","不是同一机构不允许做此业务") #===== END ================================================== #=====校验机构权限 3 查询==== if TradeContext.OPRNO != '3': chk_subbra_where_dict = {} chk_subbra_where_dict['BESBNO'] = TradeContext.BESBNO chk_subbra_where_dict['SUBFLG'] = '1' chk_subbra_dict = rccpsDBTrcc_subbra.selectu(chk_subbra_where_dict) if chk_subbra_dict == None: return AfaFlowControl.ExitThisFlow("S999","查询本机构信息异常") if len(chk_subbra_dict) <= 0: return AfaFlowControl.ExitThisFlow("S999","机构登记簿中不存在本机构,本机构无操作权限") #===== 张恒 注释于20091116======= # else: # if chk_subbra_dict['BESBTP'] != '31': #机构属性非县联社财务部 # return AfaFlowControl.ExitThisFlow("S999","本机构非县联社清算中心,禁止提交") # # elif TradeContext.BTOPSB != TradeContext.BESBNO: # return AfaFlowControl.ExitThisFlow("S999","此机构非本机构下属机构,禁止除查询以外的任何处理") #=================必要性校验================================================ #=====0 增加==== # if TradeContext.OPRNO == '0': # #=================校验此机构是否已存在================================== # subbra_where_dict = {} # subbra_where_dict['BESBNO'] = TradeContext.BRNO # # subbra_dict = rccpsDBTrcc_subbra.selectu(subbra_where_dict) # # if subbra_dict == None: # return AfaFlowControl.ExitThisFlow("S999","校验机构是否已存在异常") # if len(subbra_dict) > 0: # return AfaFlowControl.ExitThisFlow("S999","机构登记簿中存在此机构") #=====0 增加或 1 修改==== # #if TradeContext.OPRNO == '0' or TradeContext.OPRNO == '1': # #=================校验农信银系统行号是否已被分配======================== # subbra_where_sql = "BANKBIN = '" + TradeContext.BANKBIN + "' and BESBNO != '" + TradeContext.BRNO + "'" # subbra_count = rccpsDBTrcc_subbra.count(subbra_where_sql) # # if subbra_count < 0: # return AfaFlowControl.ExitThisFlow("S999","校验农信银系统行号是否已被分配异常") # if subbra_count > 0: # return AfaFlowControl.ExitThisFlow("S999","农信银系统行号已被分配给其他机构,禁止提交") # AfaLoggerFunc.tradeInfo(">>>结束必要性校验") #=====判断操作类型 3 查询==== if( TradeContext.OPRNO == "3" ): AfaLoggerFunc.tradeInfo(">>>开始查询机构信息") subbra_where_dict = {} subbra_where_dict['BESBNO'] = TradeContext.BRNO subbra_dict = rccpsDBTrcc_subbra.selectu(subbra_where_dict) if subbra_dict == None: return AfaFlowControl.ExitThisFlow("S999","查询机构登记簿异常") if len(subbra_dict) <= 0: return AfaFlowControl.ExitThisFlow("S999","机构登记簿中不存在此机构") else: rccpsMap8549Dsubbra2CTradeContext.map(subbra_dict) AfaLoggerFunc.tradeInfo(">>>结束查询机构信息") #=====操作类型为0 增加==== elif TradeContext.OPRNO == '0': AfaLoggerFunc.tradeInfo(">>>开始新增机构信息") #=====校验此机构是否已存在==== subbra_where_dict = {} subbra_where_dict['BESBNO'] = TradeContext.BRNO subbra_dict = rccpsDBTrcc_subbra.selectu(subbra_where_dict) if subbra_dict == None: return AfaFlowControl.ExitThisFlow("S999","校验机构是否已存在异常") if len(subbra_dict) > 0: return AfaFlowControl.ExitThisFlow("S999","机构登记簿中存在此机构") #=====增加新机构==== subbra_insert_dict = {} rccpsMap8549CTradeContext2Dsubbra.map(subbra_insert_dict) ret = rccpsDBTrcc_subbra.insertCmt(subbra_insert_dict) if ret <= 0: return AfaFlowControl.ExitThisFlow("S999","新增机构信息异常") AfaLoggerFunc.tradeInfo(">>>结束新增机构信息") #===== 张恒 注释于20091116======= #=====操作类型为1 修改==== # elif TradeContext.OPRNO == '1': # AfaLoggerFunc.tradeInfo(">>>开始修改机构信息") # # subbra_where_dict = {} # subbra_where_dict['BESBNO'] = TradeContext.BRNO # # subbra_update_dict = {} # rccpsMap8549CTradeContext2Dsubbra.map(subbra_update_dict) # # ret = rccpsDBTrcc_subbra.updateCmt(subbra_update_dict,subbra_where_dict) # # if ret <= 0: # return AfaFlowControl.ExitThisFlow("S999","修改机构信息异常") # # AfaLoggerFunc.tradeInfo(">>>结束修改机构信息") #=====操作类型为2 删除==== elif TradeContext.OPRNO == '2': AfaLoggerFunc.tradeInfo(">>>开始删除机构信息") subbra_where_dict = {} subbra_where_dict['BESBNO'] = TradeContext.BRNO ret = rccpsDBTrcc_subbra.deleteCmt(subbra_where_dict) if ret <= 0: return AfaFlowControl.ExitThisFlow("S999","删除机构信息异常") AfaLoggerFunc.tradeInfo(">>>结束删除机构信息") else: #=================操作类型非法========================================== return AfaFlowControl.ExitThisFlow("S999","操作类型非法") TradeContext.errorCode = '0000' TradeContext.errorMsg = '处理成功' AfaLoggerFunc.tradeInfo( '***往账.本地类操作(1.本地操作).县中心机构维护[TRC001_8549]退出***' ) return True
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( '***往账.本地类操作(1.本地操作).省中心机构维护[TRC001_8548]进入***' ) #=================判断是否省清算中心======================================== AfaLoggerFunc.tradeDebug(">>>开始校验机构权限,只有省清算中心才能做此交易") if TradeContext.BESBNO != PL_BESBNO_BCLRSB: return AfaFlowControl.ExitThisFlow("S999","本机构非清算中心,无此交易权限") AfaLoggerFunc.tradeDebug(">>>结束校验机构权限") #=================必要性校验================================================ AfaLoggerFunc.tradeInfo(">>>开始必要性校验") #=====0 增加==== if TradeContext.OPRNO == '0': #=================校验此机构是否已存在================================== subbra_where_dict = {} subbra_where_dict['BESBNO'] = TradeContext.BRNO subbra_dict = rccpsDBTrcc_subbra.selectu(subbra_where_dict) if subbra_dict == None: return AfaFlowControl.ExitThisFlow("S999","校验机构是否已存在异常") if len(subbra_dict) > 0: return AfaFlowControl.ExitThisFlow("S999","机构登记簿中存在此机构") #=====0 增加或 1 修改==== if TradeContext.OPRNO == '0' or TradeContext.OPRNO == '1': #=================校验农信银系统行号是否已被分配======================== subbra_where_sql = "BANKBIN = '" + TradeContext.BANKBIN + "' and BESBNO != '" + TradeContext.BRNO + "'" subbra_count = rccpsDBTrcc_subbra.count(subbra_where_sql) if subbra_count < 0: return AfaFlowControl.ExitThisFlow("S999","校验农信银系统行号是否已被分配异常") if subbra_count > 0: return AfaFlowControl.ExitThisFlow("S999","农信银系统行号已被分配给其他机构,禁止提交") AfaLoggerFunc.tradeInfo(">>>结束必要性校验") #=================判断操作类型 3 查询==== if TradeContext.OPRNO == '3': AfaLoggerFunc.tradeInfo(">>>开始查询机构信息") subbra_where_dict = {} subbra_where_dict['BESBNO'] = TradeContext.BRNO subbra_dict = {} subbra_dict = rccpsDBTrcc_subbra.selectu(subbra_where_dict) if subbra_dict == None: return AfaFlowControl.ExitThisFlow("S999","查询机构登记簿异常") if len(subbra_dict) <= 0: return AfaFlowControl.ExitThisFlow("S999","机构登记簿中不存在此机构") else: rccpsMap8548Dsubbra2CTradeContext.map(subbra_dict) AfaLoggerFunc.tradeInfo(">>>结束查询机构信息") #=================操作类型为 0 增加==== elif TradeContext.OPRNO == '0': AfaLoggerFunc.tradeInfo(">>>开始新增机构信息") subbra_insert_dict = {} rccpsMap8548CTradeContext2Dsubbra.map(subbra_insert_dict) ret = rccpsDBTrcc_subbra.insertCmt(subbra_insert_dict) if ret <= 0: return AfaFlowControl.ExitThisFlow("S999","新增机构信息异常") AfaLoggerFunc.tradeInfo(">>>结束新增机构信息") #=================操作类型为 1 修改==== elif TradeContext.OPRNO == '1': AfaLoggerFunc.tradeInfo(">>>开始修改机构信息") subbra_where_dict = {} subbra_where_dict['BESBNO'] = TradeContext.BRNO subbra_update_dict = {} rccpsMap8548CTradeContext2Dsubbra.map(subbra_update_dict) ret = rccpsDBTrcc_subbra.updateCmt(subbra_update_dict,subbra_where_dict) if ret <= 0: return AfaFlowControl.ExitThisFlow("S999","修改机构信息异常") AfaLoggerFunc.tradeInfo(">>>结束修改机构信息") #=================操作类型为 2 删除==== elif TradeContext.OPRNO == '2': AfaLoggerFunc.tradeInfo(">>>开始删除机构信息") subbra_where_dict = {} subbra_where_dict['BESBNO'] = TradeContext.BRNO ret = rccpsDBTrcc_subbra.deleteCmt(subbra_where_dict) if ret <= 0: return AfaFlowControl.ExitThisFlow("S999","删除机构信息异常") AfaLoggerFunc.tradeInfo(">>>结束删除机构信息") else: #=================操作类型非法========================================== return AfaFlowControl.ExitThisFlow("S999","操作类型非法") TradeContext.errorCode = '0000' TradeContext.errorMsg = '处理成功' AfaLoggerFunc.tradeInfo( '***往账.本地类操作(1.本地操作).省中心机构维护[TRC001_8548]退出***' ) return True
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作交易[TRC001_8535]进入***' ) #=====判断业务类型是否存在==== if not (TradeContext.existVariable( "TRCCO" ) and len(TradeContext.TRCCO) != 0): return AfaFlowControl.ExitThisFlow('S999','业务类型[TRCCO]不存在或为空') #=====取交易时间==== TradeContext.BJEDTE = AfaUtilTools.GetSysDate( ) #=====通过机构号查询机构名称==== ret = {} subbra = {'BESBNO':TradeContext.BESBNO} ret = rccpsDBTrcc_subbra.selectu(subbra) if ret == None: return AfaFlowControl.ExitThisFlow('S999','数据库操作失败') if len(ret) <= 0: if TradeContext.TRCCO not in ('14','15'): return AfaFlowControl.ExitThisFlow('S999','数据库中无机构号['+TradeContext.BESBNO+']') else: TradeContext.BESBNM = TradeContext.BESBNO else: TradeContext.BESBNM = ret['BESBNM'] #=====判断业务类型 01 汇兑往账==== if TradeContext.TRCCO == '01': AfaLoggerFunc.tradeInfo('>>>汇兑往账清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND BRSFLG = '" + PL_BRSFLG_SND + "'" sql = sql + " AND TRCCO IN ('2000001','2000002','2000003','2000009') " #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_trcbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "电子汇兑往帐清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 业务种类 报单序号 报单日期 发起行行号 接收行行号 金额 付款人账号 " filecontext = filecontext + "收款人账号 业务状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====通过报单序号和日期取状态==== bcstat = {} bcstat_dict = {'BJEDTE':records[i]['BJEDTE'],'BSPSQN':records[i]['BSPSQN']} bcstat = rccpsDBTrcc_spbsta.selectu(bcstat_dict) if bcstat == None: return AfaFlowControl.ExitThisFlow('S999','数据库操作失败') if len(bcstat) <= 0: return AfaFlowControl.ExitThisFlow('S999','通过报单序号取业务状态失败') #=====写文件==== filecontext=str(i+1).ljust(4) + records[i]['TRCCO'].ljust(10) + records[i]['BSPSQN'].ljust(13) \ + records[i]['BJEDTE'].ljust(9) + records[i]['SNDBNKCO'].ljust(11) \ + records[i]['RCVBNKCO'].ljust(11) + str(records[i]['OCCAMT']).ljust(11) \ + records[i]['PYRACC'].ljust(30) + records[i]['PYEACC'].ljust(34) \ + bcstat['BCSTAT'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====02 汇兑来帐==== elif TradeContext.TRCCO == '02': AfaLoggerFunc.tradeInfo('>>>汇兑来账清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND BRSFLG = '" + PL_BRSFLG_RCV + "'" sql = sql + " AND TRCCO IN ('2000001','2000002','2000003','2000009')" #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_trcbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "电子汇兑来帐清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 汇票类别 报单序号 出票日期 汇票号码 金额 申请人账号 " filecontext = filecontext + "收款人账号 业务状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====通过报单序号和日期取状态==== bcstat = {} bcstat_dict = {'BJEDTE':records[i]['BJEDTE'],'BSPSQN':records[i]['BSPSQN']} bcstat = rccpsDBTrcc_spbsta.selectu(bcstat_dict) if bcstat == None: return AfaFlowControl.ExitThisFlow('S999','数据库操作失败') if len(bcstat) <= 0: return AfaFlowControl.ExitThisFlow('S999','通过报单序号取业务状态失败') #=====写文件==== filecontext=str(i+1).ljust(4) + records[i]['TRCCO'].ljust(10) + records[i]['BSPSQN'].ljust(13) \ + records[i]['BJEDTE'].ljust(9) + records[i]['SNDBNKCO'].ljust(11) \ + records[i]['RCVBNKCO'].ljust(11) + str(records[i]['OCCAMT']).ljust(11) \ + records[i]['PYRACC'].ljust(30) + records[i]['PYEACC'].ljust(34) \ + bcstat['BCSTAT'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #====03 本行汇票签发==== elif TradeContext.TRCCO == '03': AfaLoggerFunc.tradeInfo('>>>本行汇票签发清单打印操作') #====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND BRSFLG = '" + PL_BRSFLG_SND + "'" sql = sql + " AND BILRS = '" + PL_BILRS_INN + "' AND HPSTAT = '" + PL_HPSTAT_SIGN + "'" #=====多笔查询==== records = rccpsDBTrcc_bilbka.selectm(1,0,sql,"") if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "本行汇票签发清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 汇票类别 报单序号 出票日期 汇票号码 金 额 申请人账号 " filecontext = filecontext + "收款人账号 业务状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====通过汇票号码、汇票版本号取汇票类别==== bilinf = {} bilinf_dict = {'BILVER':records[i]['BILVER'],'BILNO':records[i]['BILNO'],'BILRS':records[i]['BILRS']} bilinf = rccpsDBTrcc_bilinf.selectu(bilinf_dict) if bilinf == None: return AfaFlowControl.ExitThisFlow('S999','数据库操作失败') if len(bilinf) <= 0: return AfaFlowControl.ExitThisFlow('S999','通过汇票号码取汇票类别失败') #=====写文件==== filecontext=str(i+1).ljust(4) + bilinf['BILTYP'].ljust(10) + records[i]['BSPSQN'].ljust(13) \ + bilinf['BILDAT'].ljust(9) + records[i]['BILNO'].ljust(11) \ + str(bilinf['BILAMT']).ljust(11) + bilinf['PYRACC'].ljust(30) \ + bilinf['PYEACC'].ljust(34) + bilinf['BILTYP'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #====04 解付他行汇票==== elif TradeContext.TRCCO == '04': AfaLoggerFunc.tradeInfo('>>>解付他行汇票清单打印操作') #====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND BRSFLG = '" + PL_BRSFLG_SND + "'" sql = sql + " AND BILRS = '" + PL_BILRS_OUT + "'" #=====多笔查询==== records = rccpsDBTrcc_bilbka.selectm(1,0,sql,"") if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "解付他行汇票清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 汇票类别 报单序号 出票日期 汇票号码 金 额 申请人账号 " filecontext = filecontext + "收款人账号 业务状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====通过汇票号码、汇票版本号取汇票类别==== bilinf = {} bilinf_dict = {'BILVER':records[i]['BILVER'],'BILNO':records[i]['BILNO'],'BILRS':records[i]['BILRS']} bilinf = rccpsDBTrcc_bilinf.selectu(bilinf_dict) if bilinf == None: return AfaFlowControl.ExitThisFlow('S999','数据库操作失败') if len(bilinf) <= 0: return AfaFlowControl.ExitThisFlow('S999','通过汇票号码取汇票类别失败') #=====写文件==== filecontext=str(i+1).ljust(4) + bilinf['BILTYP'].ljust(10) + records[i]['BSPSQN'].ljust(13) \ + bilinf['BILDAT'].ljust(9) + records[i]['BILNO'].ljust(11) \ + str(bilinf['BILAMT']).ljust(11) + bilinf['PYRACC'].ljust(30) \ + bilinf['PYEACC'].ljust(34) + bilinf['BILTYP'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====05 退汇往帐==== elif TradeContext.TRCCO == '05': AfaLoggerFunc.tradeInfo('>>>退汇往账清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND BRSFLG = '" + PL_BRSFLG_SND + "'" sql = sql + " AND TRCCO = '2000004' " #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_trcbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "退汇往帐清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 业务种类 报单序号 报单日期 发起行行号 接收行行号 金额 付款人账号 " filecontext = filecontext + "收款人账号 业务状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====通过报单序号和日期取状态==== bcstat = {} bcstat_dict = {'BJEDTE':records[i]['BJEDTE'],'BSPSQN':records[i]['BSPSQN']} bcstat = rccpsDBTrcc_spbsta.selectu(bcstat_dict) if bcstat == None: return AfaFlowControl.ExitThisFlow('S999','数据库操作失败') if len(bcstat) <= 0: return AfaFlowControl.ExitThisFlow('S999','通过报单序号取业务状态失败') #=====写文件==== filecontext=str(i+1).ljust(4) + records[i]['TRCCO'].ljust(10) + records[i]['BSPSQN'].ljust(13) \ + records[i]['BJEDTE'].ljust(9) + records[i]['SNDBNKCO'].ljust(11) \ + records[i]['RCVBNKCO'].ljust(11) + str(records[i]['OCCAMT']).ljust(11) \ + records[i]['PYRACC'].ljust(30) + records[i]['PYEACC'].ljust(34) \ + bcstat['BCSTAT'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====06 退汇来帐==== elif TradeContext.TRCCO == '06': AfaLoggerFunc.tradeInfo('>>>退汇来账清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND BRSFLG = '" + PL_BRSFLG_RCV + "'" sql = sql + " AND TRCCO = '2000004' " #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_trcbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "退汇来帐清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 业务种类 报单序号 报单日期 发起行行号 接收行行号 金额 付款人账号 " filecontext = filecontext + "收款人账号 业务状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====通过报单序号和日期取状态==== bcstat = {} bcstat_dict = {'BJEDTE':records[i]['BJEDTE'],'BSPSQN':records[i]['BSPSQN']} bcstat = rccpsDBTrcc_spbsta.selectu(bcstat_dict) if bcstat == None: return AfaFlowControl.ExitThisFlow('S999','数据库操作失败') if len(bcstat) <= 0: return AfaFlowControl.ExitThisFlow('S999','通过报单序号取业务状态失败') #=====写文件==== filecontext=str(i+1).ljust(4) + records[i]['TRCCO'].ljust(10) + records[i]['BSPSQN'].ljust(13) \ + records[i]['BJEDTE'].ljust(9) + records[i]['SNDBNKCO'].ljust(11) \ + records[i]['RCVBNKCO'].ljust(11) + str(records[i]['OCCAMT']).ljust(11) \ + records[i]['PYRACC'].ljust(30) + records[i]['PYEACC'].ljust(34) \ + bcstat['BCSTAT'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====07 汇兑查询书==== elif TradeContext.TRCCO == '07': AfaLoggerFunc.tradeInfo('>>>汇兑查询书清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND TRCCO IN ('9900511','9900522') " #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_hdcbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "汇兑查询书清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 查询书号 查询日期 往来标志 发起行行号 接收行行号 状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====写文件==== filecontext=str(i+1).ljust(4) + records[i]['BSPSQN'].ljust(13) \ + records[i]['BJEDTE'].ljust(13) + records[i]['BRSFLG'].ljust(8) \ + records[i]['SNDBNKCO'].ljust(12) + records[i]['RCVBNKCO'].ljust(13) \ + records[i]['ISDEAL'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====08 汇兑查复书==== elif TradeContext.TRCCO == '08': AfaLoggerFunc.tradeInfo('>>>汇兑查复书清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND TRCCO IN ('9900512','9900523') " #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_hdcbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "汇兑查复书清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 查询书号 查询日期 往来标志 发起行行号 接收行行号 状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====写文件==== filecontext=str(i+1).ljust(4) + records[i]['BSPSQN'].ljust(13) \ + records[i]['BJEDTE'].ljust(9) + records[i]['BRSFLG'].ljust(10) \ + records[i]['SNDBNKCO'].ljust(11) + records[i]['RCVBNKCO'].ljust(11) \ + records[i]['ISDEAL'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====09 票据查询书==== elif TradeContext.TRCCO == '09': AfaLoggerFunc.tradeInfo('>>>票据查询书清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND TRCCO = '9900520' " #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_pjcbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "票据查询书清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 查询书号 查询日期 往来标志 发起行行号 接收行行号 状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====写文件==== filecontext=str(i+1).ljust(4) + records[i]['BSPSQN'].ljust(13) \ + records[i]['BJEDTE'].ljust(9) + records[i]['BRSFLG'].ljust(10) \ + records[i]['SNDBNKCO'].ljust(11) + records[i]['RCVBNKCO'].ljust(11) \ + records[i]['ISDEAL'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====10 票据查复书==== elif TradeContext.TRCCO == '10': AfaLoggerFunc.tradeInfo('>>>票据查复书清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND TRCCO = '9900521' " #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_pjcbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "票据查复书清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 查询书号 查询日期 往来标志 发起行行号 接收行行号 状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====写文件==== filecontext=str(i+1).ljust(4) + records[i]['BSPSQN'].ljust(13) \ + records[i]['BJEDTE'].ljust(9) + records[i]['BRSFLG'].ljust(10) \ + records[i]['SNDBNKCO'].ljust(11) + records[i]['RCVBNKCO'].ljust(11) \ + records[i]['ISDEAL'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====11 汇票查询书==== elif TradeContext.TRCCO == '11': AfaLoggerFunc.tradeInfo('>>>汇票查询书清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND TRCCO = '9900526' " #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_hpcbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "汇票查询书清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 查询书号 出票日期 汇票号码 出票金额 往来标志 发起行行号 接收行行号 状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====写文件==== filecontext=str(i+1).ljust(4) + records[i]['BSPSQN'].ljust(15) \ + records[i]['BILDAT'].ljust(9) + records[i]['BILNO'].ljust(11) \ + str(records[i]['BILAMT']).ljust(15) + records[i]['BRSFLG'].ljust(6) \ + records[i]['SNDBNKCO'].ljust(11) + records[i]['RCVBNKCO'].ljust(13) \ + records[i]['ISDEAL'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====12 汇票查复书==== elif TradeContext.TRCCO == '12': AfaLoggerFunc.tradeInfo('>>>汇票查复书清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND TRCCO = '9900527' " #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_hpcbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "汇票查复书清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 查询书号 查询日期 往来标志 发起行行号 接收行行号 状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====写文件==== filecontext=str(i+1).ljust(4) + records[i]['BSPSQN'].ljust(13) \ + records[i]['BJEDTE'].ljust(9) + records[i]['BRSFLG'].ljust(10) \ + records[i]['SNDBNKCO'].ljust(11) + records[i]['RCVBNKCO'].ljust(11) \ + records[i]['ISDEAL'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====13 自由格式书==== elif TradeContext.TRCCO == '13': AfaLoggerFunc.tradeInfo('>>>自由格式书清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND TRCCO IN ('9900513','9900524') " #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_hdcbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "自由格式书清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 业务种类 报 单 序 号 报单日期 发起行行号 接收行行号 往来标志 状态\n" filecontext = filecontext + "=================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====写文件==== filecontext=str(i+1).ljust(4) + records[i]['TRCCO'].ljust(10) + records[i]['BSPSQN'].ljust(13) \ + records[i]['BJEDTE'].ljust(9) + records[i]['SNDBNKCO'].ljust(11) \ + records[i]['RCVBNKCO'].ljust(11) + records[i]['BRSFLG'].ljust(10) \ + records[i]['ISDEAL'] f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====15 通存通兑往账==== elif(TradeContext.TRCCO == '15'): AfaLoggerFunc.tradeInfo('>>>通存通兑往账清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND BRSFLG = '" + PL_BRSFLG_SND + "'" #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_wtrbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "通存通兑往账清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 报单日期 报单序号 接收行行号 交易代码 收款人账号 付款人账号 金额 手续费 状态\n" filecontext = filecontext + "================================================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====查询此笔交易的当前状态==== where_dict = {} where_dict = {'BJEDTE':records[i]['BJEDTE'],'BSPSQN':records[i]['BSPSQN']} spb_dict = rccpsDBTrcc_spbsta.selectu(where_dict) if(spb_dict == None): return AfaFlowControl.ExitThisFlow('S999','查询业务的当前状态失败') elif(len(spb_dict) == 0): return AfaFlowControl.ExitThisFlow('S999','查询业务的当前状态结果为空') else: AfaLoggerFunc.tradeInfo("查询业务的当前状态成功") #=====写文件==== filecontext=str(i+1).ljust(6) + records[i]['BJEDTE'].ljust(10) + records[i]['BSPSQN'].ljust(14) \ + records[i]['RCVBNKCO'].ljust(12) + records[i]['TRCCO'].ljust(10) \ + records[i]['PYEACC'].ljust(26) + records[i]['PYRACC'].ljust(25) \ + str(records[i]['OCCAMT']).ljust(15) + str(records[i]['CUSCHRG']).ljust(15) + spb_dict['BCSTAT'].ljust(2) f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") #=====14 通存通兑来账==== elif(TradeContext.TRCCO == '14'): AfaLoggerFunc.tradeInfo('>>>通存通兑往账清单打印操作') #=====组织查询语句==== sql = "BJEDTE >= '" + TradeContext.STRDAT + "'" sql = sql + " AND BJEDTE <= '" + TradeContext.ENDDAT + "'" sql = sql + " AND BESBNO = '" + TradeContext.BESBNO + "'" sql = sql + " AND BRSFLG = '" + PL_BRSFLG_RCV + "'" #=====多笔查询==== ordersql = "ORDER BY TRCCO ASC" records = rccpsDBTrcc_wtrbka.selectm(1,0,sql,ordersql) if records == None: return AfaFlowControl.ExitThisFlow('A099','数据库操作失败' ) if len(records) == 0: return AfaFlowControl.ExitThisFlow('A099','无满足条件记录' ) #=====开始组织返回文件==== filename="rccps_"+TradeContext.BETELR+"_"+AfaUtilTools.GetSysDate()+"_"+TradeContext.TransCode try: fpath=os.environ["AFAP_HOME"]+"/tmp/" f=open(fpath+filename,"w") except IOError: return AfaFlowControl.ExitThisFlow('S999','打开文件失败') #=====写文件头==== filecontext = "\n\n\n" filecontext = filecontext + " " + TradeContext.BESBNM + "通存通兑来账清单\n" filecontext = filecontext + "起止日期:" + TradeContext.STRDAT + "~" + TradeContext.ENDDAT + "\n" filecontext = filecontext + "序号 报单日期 报单序号 接收行行号 交易代码 收款人账号 付款人账号 金额 手续费 状态\n" filecontext = filecontext + "================================================================================================================================================\n" f.write(filecontext+"\n") #=====循环组织文件数据==== for i in range(0,len(records)): #=====查询此笔交易的当前状态==== where_dict = {} where_dict = {'BJEDTE':records[i]['BJEDTE'],'BSPSQN':records[i]['BSPSQN']} spb_dict = rccpsDBTrcc_spbsta.selectu(where_dict) if(spb_dict == None): return AfaFlowControl.ExitThisFlow('S999','查询业务的当前状态失败') elif(len(spb_dict) == 0): return AfaFlowControl.ExitThisFlow('S999','查询业务的当前状态结果为空') else: AfaLoggerFunc.tradeInfo("查询业务的当前状态成功") #=====写文件==== filecontext=str(i+1).ljust(6) + records[i]['BJEDTE'].ljust(10) + records[i]['BSPSQN'].ljust(14) \ + records[i]['RCVBNKCO'].ljust(12) + records[i]['TRCCO'].ljust(10) \ + records[i]['PYEACC'].ljust(26) + records[i]['PYRACC'].ljust(25) \ + str(records[i]['OCCAMT']).ljust(15) + str(records[i]['CUSCHRG']).ljust(15) + spb_dict['BCSTAT'].ljust(2) f.write(filecontext+"\n") #=====添加打印日期等==== filecontext = "-----------------------------------------------------------------------------------------------------------------\n" filecontext = filecontext + " 打印日期:" + TradeContext.BJEDTE + " 授权: 记账: \n" f.write(filecontext) f.close() AfaLoggerFunc.tradeInfo(">>>生成文件结束") else: return AfaFlowControl.ExitThisFlow('S999','业务类型错') TradeContext.errorCode = '0000' TradeContext.errorMsg = '成功' TradeContext.PRTDAT = TradeContext.BJEDTE #打印日期 TradeContext.PBDAFILE = filename #文件名 AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作交易[TRC001_8535]退出***' ) return True
def ChkUnitInfo( BRSFLG ): if BRSFLG == PL_BRSFLG_SND: AfaLoggerFunc.tradeInfo( '>>>开始通过机构号取行号' ) #=====通存通兑业务直接使用清算中心行号==== if TradeContext.existVariable('TRCCO') and TradeContext.TRCCO[:2] == '30': subbra = {'BESBNO':PL_BESBNO_BCLRSB} else: #=====开始向字典赋值==== subbra = {'BESBNO':TradeContext.BESBNO} #=====查询发送行号==== sub = rccpsDBTrcc_subbra.selectu(subbra) if sub == None: return AfaFlowControl.ExitThisFlow('M999','数据库错误') if len(sub) <= 0: #return AfaFlowControl.ExitThisFlow('M999','机构号取发送行号无对应记录') return AfaFlowControl.ExitThisFlow('M999','非法机构') else: AfaLoggerFunc.tradeDebug('>>>BTOPSB['+sub['BTOPSB']+']') #=====刘雨龙 2008-07-25 新增代理机构查询==== if sub['SUBFLG'] == PL_SUBFLG_SUB : #被代理,'0' 张恒20091201 替换0 sel_sub = {'BESBNO':sub['BTOPSB']} sel = rccpsDBTrcc_subbra.selectu(sel_sub) if sel == None: return AfaFlowControl.ExitThisFlow('M999','数据库错误') if len(sel) <= 0: return AfaFlowControl.ExitThisFlow('M999','非法机构') else: TradeContext.SNDBNKCO = sel['BANKBIN'] else: TradeContext.SNDBNKCO = sub['BANKBIN'] AfaLoggerFunc.tradeInfo( '发送行号[SNDBNKCO]:' + TradeContext.SNDBNKCO ) #====通过发送行号取行名==== paybnk = {'BANKBIN':TradeContext.SNDBNKCO} pyb = rccpsDBTrcc_paybnk.selectu(paybnk) if pyb == None: return AfaFlowControl.ExitThisFlow('M999','数据库操作错误') if len(pyb) <= 0: #return AfaFlowControl.ExitThisFlow('M999','行号取发送行名无相应记录') return AfaFlowControl.ExitThisFlow('M999','非法机构') else: #if( (TradeContext.BJEDTE < pyb['EFCTDAT'] or pyb['BANKSTATUS'] != '1') and len(TradeContext.SNDBNKCO) == 10 ): #关彬捷 20081222 修改行号生效失效判断 if( pyb['NOTE1'] != '1' ): return AfaFlowControl.ExitThisFlow('M999','发送行号未生效') else: TradeContext.SNDBNKNM = pyb['BANKNAM'] TradeContext.SNDSTLBIN = pyb['STLBANKBIN'] AfaLoggerFunc.tradeDebug( '发送行名[SNDBNKNM]:' + TradeContext.SNDBNKNM ) AfaLoggerFunc.tradeDebug( '发送成员行号[SNDSTLBIN]:' + TradeContext.SNDSTLBIN ) #=====通过接收行号取接收行成员行号==== if (TradeContext.existVariable("RCVBNKCO") and len(TradeContext.RCVBNKCO) == 10): #if len(TradeContext.RCVBNKCO) == 10: AfaLoggerFunc.tradeDebug('>>>普通汇兑行号') rcvstl = {'BANKBIN':TradeContext.RCVBNKCO} rcvpyb = rccpsDBTrcc_paybnk.selectu(rcvstl) if rcvpyb == None: return AfaFlowControl.ExitThisFlow('M999','数据库操作错误') if len(rcvpyb) <= 0: return AfaFlowControl.ExitThisFlow('M999','接收行号取接收成员行号无相应记录') else: TradeContext.RCVSTLBIN = rcvpyb['STLBANKBIN'] TradeContext.RCVBNKNM = rcvpyb['BANKNAM'] AfaLoggerFunc.tradeDebug('>>>接收行名['+TradeContext.RCVBNKNM+']') AfaLoggerFunc.tradeDebug('>>>接收成员行号['+TradeContext.RCVSTLBIN+']') #=====通过OPRTYPNO判断发起行权限和接收行权限==== if TradeContext.TRCCO[0:2] == '20': #=====判断接收行号==== if rcvpyb['PRIVILEGE'][0:1] != '1': return AfaFlowControl.ExitThisFlow('M999','此接收行号尚未开汇兑业务') elif TradeContext.TRCCO[0:2] == '21': #=====判断接收行号==== if rcvpyb['PRIVILEGE'][1:2] != '1': return AfaFlowControl.ExitThisFlow('M999','此接收行号尚未开通汇票业务') elif TradeContext.TRCCO[0:2] == '30': #=====判断接收行号==== if rcvpyb['PRIVILEGE'][2:3] != '1': return AfaFlowControl.ExitThisFlow('M999','此接收行号尚未开通通存通兑业务') AfaLoggerFunc.tradeDebug('>>>接收成员行号权限判断完成') #elif len(TradeContext.RCVBNKCO) < 10: else: if not TradeContext.existVariable('RCVBNKCO'): TradeContext.RCVBNKCO = '1000000000' #=====通过行号找行名==== paybnk_dict = {'BANKBIN':TradeContext.RCVBNKCO} pyba = rccpsDBTrcc_paybnk.selectu(paybnk_dict) if pyba == None: return AfaFlowControl.ExitThisFlow('M999','数据库操作错误') if len(pyba) <= 0: return AfaFlowControl.ExitThisFlow('M999','行号取发送行名无相应记录') else: TradeContext.RCVBNKNM = pyba['BANKNAM'] AfaLoggerFunc.tradeInfo( '接收行名[RCVBNKNM]:' + TradeContext.RCVBNKNM ) if len(str(pyba['STLBANKBIN'])) == 0: TradeContext.RCVSTLBIN = '9999999997' else: TradeContext.RCVSTLBIN = pyba['STLBANKBIN'] AfaLoggerFunc.tradeInfo( '接收成员行号[RCVSTLBIN]:' + TradeContext.RCVSTLBIN ) elif len(TradeContext.RCVBNKCO) == 0: TradeContext.RCVBNKCO = ' ' elif len(TradeContext.RCVBNKCO) == 7: #=====通过行号找行名==== paybnk_dict = {'BANKBIN':TradeContext.RCVBNKCO} pyba = rccpsDBTrcc_paybnk.selectu(paybnk_dict) if pyba == None: return AfaFlowControl.ExitThisFlow('M999','数据库操作错误') if len(pyba) <= 0: return AfaFlowControl.ExitThisFlow('M999','行号取发送行名无相应记录') else: TradeContext.RCVBNKNM = pyba['BANKNAM'] AfaLoggerFunc.tradeInfo( '接收行名[RCVBNKNM]:' + TradeContext.RCVBNKNM ) if len(str(pyba['STLBANKBIN'])) == 0: TradeContext.RCVSTLBIN = '9999999997' else: TradeContext.RCVSTLBIN = pyba['STLBANKBIN'] AfaLoggerFunc.tradeInfo( '接收成员行号[RCVSTLBIN]:' + TradeContext.RCVSTLBIN ) #=====通过OPRTYPNO判断发起行权限和接收行权限==== if TradeContext.TRCCO[0:2] == '20': #=====判断发起行号==== if pyb['PRIVILEGE'][0:1] != '1': return AfaFlowControl.ExitThisFlow('M999','此发送行号尚未开通汇兑业务') #=====刘雨龙 20081013 新增“汇票解付”同汇兑业务权限==== elif (TradeContext.TRCCO[0:2] == '21' and TradeContext.TRCCO != '2100100'): #=====判断发起行号==== if pyb['PRIVILEGE'][1:2] != '1': return AfaFlowControl.ExitThisFlow('M999','此发送行号尚未开通汇票业务') elif TradeContext.TRCCO[0:2] == '30': #=====判断发起行号==== if pyb['PRIVILEGE'][2:3] != '1': return AfaFlowControl.ExitThisFlow('M999','此发送行号尚未开通通存通兑业务') AfaLoggerFunc.tradeDebug('>>>发起成员行号权限判断完成') elif BRSFLG == PL_BRSFLG_RCV: AfaLoggerFunc.tradeInfo( '>>>开始通过行号取机构号' ) #=====判断接收行号是否存在==== if not TradeContext.existVariable( "RCVBNKCO" ): TradeContext.BESBNO = PL_BESBNO_BCLRSB TradeContext.BETELR = PL_BETELR_AUTO AfaLoggerFunc.tradeInfo( '机构号[BESBNO]:' + TradeContext.BESBNO ) return True #====开始向字典赋值==== suba = {'BANKBIN':TradeContext.RCVBNKCO} suba['SUBFLG'] = PL_SUBFLG_AGE #代理 subd = rccpsDBTrcc_subbra.selectu(suba) if subd == None: return AfaFlowControl.ExitThisFlow('M999','数据库操作错误') if len(subd) <= 0: TradeContext.BESBNO = PL_BESBNO_BCLRSB TradeContext.BETELR = PL_BETELR_AUTO AfaLoggerFunc.tradeInfo( '机构号[BESBNO]:' + TradeContext.BESBNO ) else: TradeContext.BESBNO = subd['BESBNO'] TradeContext.BETELR = PL_BETELR_AUTO AfaLoggerFunc.tradeInfo( '机构号[BESBNO]:' + TradeContext.BESBNO ) else: return AfaFlowControl.ExitThisFlow('M999','机构参数错误') AfaLoggerFunc.tradeInfo('>>>函数结束') return True
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo( '***农信银系统:往账.中心类操作(1.中心操作).汇兑自由格式书发送[TRC003_8513]进入***' ) #=================判断afe是否发送成功======================================= if TradeContext.errorCode != '0000': return AfaFlowControl.ExitThisFlow(TradeContext.errorCode, TradeContext.errorMsg) AfaLoggerFunc.tradeInfo('发送成功') #=====查询机构名==== subbra_dict={'BESBNO':TradeContext.BESBNO} sub=rccpsDBTrcc_subbra.selectu(subbra_dict) if(sub==None): return AfaFlowControl.ExitThisFlow('A099','查询机构名失败' ) if(len(sub)==0): return AfaFlowControl.ExitThisFlow('A099','没有相应的机构名' ) #=====生成打印文本==== AfaLoggerFunc.tradeInfo("开始生成打印文本") txt = """\ %(BESBNM)s自由格式书 |-----------------------------------------------------------------------------| | 日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 自由格式书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ file_name = 'rccps_' + TradeContext.BJEDTE + '_' + TradeContext.BSPSQN + '_8513' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(TradeContext.BJEDTE).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(TradeContext.SNDBNKCO).ljust(10,' '),\ 'RCVBNKCO':(TradeContext.RCVBNKCO).ljust(10,' '),\ 'CONT1':(TradeContext.CONT[:68]).ljust(68,' '),\ 'CONT2':(TradeContext.CONT[68:138]).ljust(70,' '),\ 'CONT3':(TradeContext.CONT[138:208]).ljust(70,' '),\ 'CONT4':(TradeContext.CONT[208:]).ljust(70,' ')} out_file.close TradeContext.PBDAFILE = file_name AfaLoggerFunc.tradeInfo("结束生成打印文本") AfaLoggerFunc.tradeInfo( '***农信银系统:往账.中心类操作(1.中心操作).汇兑自由格式书发送[TRC003_8513]退出***' ) return True
def SubModuleDoSnd(): #=================判断afe是否发送成功======================================= if TradeContext.errorCode != '0000': return AfaFlowControl.ExitThisFlow(TradeContext.errorCode, TradeContext.errorMsg) AfaLoggerFunc.tradeInfo('发送成功') #=====刘雨龙 20080702 新增修改原记录状态为 已查复 ==== hdcbka_where_dict = {} hdcbka_where_dict['BJEDTE'] = TradeContext.BOJEDT hdcbka_where_dict['BSPSQN'] = TradeContext.BOSPSQ hdcbka_update_dict = {} hdcbka_update_dict['ISDEAL'] = PL_ISDEAL_ISDO ret = rccpsDBTrcc_hdcbka.update(hdcbka_update_dict,hdcbka_where_dict) if ret == None: return AfaFlowControl.ExitThisFlow('S999','数据库操作错误') if ret <= 0: if not AfaDBFunc.RollbackSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) AfaLoggerFunc.tradeError(">>>Rollback异常") return AfaFlowControl.ExitThisFlow("S999","更新系统状态异常") if not AfaDBFunc.CommitSql( ): AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg ) return AfaFlowControl.ExitThisFlow("S999","Commit异常") AfaLoggerFunc.tradeInfo(">>>Commit成功") #=====查询机构名==== subbra_dict={'BESBNO':TradeContext.BESBNO} sub=rccpsDBTrcc_subbra.selectu(subbra_dict) if(sub==None): return AfaFlowControl.ExitThisFlow('A099','查询机构名失败' ) if(len(sub)==0): return AfaFlowControl.ExitThisFlow('A099','没有相应的机构名' ) #=================生成打印文本============================================= AfaLoggerFunc.tradeInfo("开始生成打印文本") txt = """\ %(BESBNM)s全国特约电子汇兑查复书 |-----------------------------------------------------------------------------| | 查复日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 特约汇兑查复书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 原特约查询发起行行号: | %(ORSNDBNKCO)s | |-----------------------------------------------------------------------------| | 原特约查询日期: | %(BOJEDT)s | |-----------------------------------------------------------------------------| | 原金额: | %(OROCCAMT)-15.2f | |-----------------------------------------------------------------------------| | 原委托日期: | %(ORTRCDAT)s | |-----------------------------------------------------------------------------| | 原特约查询交易流水号: | %(ORTRCNO)s | |-----------------------------------------------------------------------------| | 查询内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ file_name = 'rccps_' + TradeContext.BJEDTE + '_' + TradeContext.BSPSQN + '_8519' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(TradeContext.BJEDTE).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(TradeContext.SNDBNKCO).ljust(10,' '),\ 'RCVBNKCO':(TradeContext.RCVBNKCO).ljust(10,' '),\ 'ORSNDBNKCO':(TradeContext.OR_SNDBNKCO).ljust(10,' '),\ 'BOJEDT':(TradeContext.ORQYDAT).ljust(8,' '),\ 'OROCCAMT':(TradeContext.OR_OCCAMT),\ 'ORTRCDAT':(TradeContext.OR_TRCDAT).ljust(8,' '),\ 'ORTRCNO':(TradeContext.OR_TRCNO).ljust(12,' '),\ 'CONT1':(TradeContext.CONT[:68]).ljust(68,' '),\ 'CONT2':(TradeContext.CONT[68:138]).ljust(70,' '),\ 'CONT3':(TradeContext.CONT[138:208]).ljust(70,' '),\ 'CONT4':(TradeContext.CONT[208:]).ljust(70,' ')} out_file.close TradeContext.PBDAFILE = file_name AfaLoggerFunc.tradeInfo("结束生成打印文本") return True
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo("交易后处理") #=====判断afe是否发送成功==== AfaLoggerFunc.tradeInfo("判断afe是否发送成功") if TradeContext.errorCode != '0000': AfaLoggerFunc.tradeInfo("判断afe发送失败") return AfaFlowControl.ExitThisFlow(TradeContext.errorCode, TradeContext.errorMsg) AfaLoggerFunc.tradeInfo("判断afe发送成功") #=====查询机构名==== AfaLoggerFunc.tradeInfo("查询机构名") subbra_dict={'BESBNO':TradeContext.BESBNO} sub=rccpsDBTrcc_subbra.selectu(subbra_dict) if(sub==None): return AfaFlowControl.ExitThisFlow('A099','查询机构名失败' ) if(len(sub)==0): return AfaFlowControl.ExitThisFlow('A099','没有相应的机构名' ) #=================生成打印文本============================================= AfaLoggerFunc.tradeInfo("开始生成打印文本") txt = """\ %(BESBNM)s通存通兑查询书 |-----------------------------------------------------------------------------| | 查询日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 查询书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 原交易金额: | %(OROCCAMT)-15.2f | |-----------------------------------------------------------------------------| | 原发起行行号: | %(ORSNDBNKCO)s | |-----------------------------------------------------------------------------| | 原接收行行号: | %(ORRCVBNKCO)s | |-----------------------------------------------------------------------------| | 查询内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ file_name = 'rccps_' + TradeContext.BJEDTE + '_' + TradeContext.BSPSQN + '_8511' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(TradeContext.BJEDTE).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(TradeContext.SNDBNKCO).ljust(10,' '),\ 'RCVBNKCO':(TradeContext.RCVBNKCO).ljust(10,' '),\ 'OROCCAMT':float((TradeContext.OROCCAMT)),\ 'ORSNDBNKCO':(TradeContext.SNDBNKCO).ljust(10,' '),\ 'ORRCVBNKCO':(TradeContext.RCVBNKCO).ljust(10,' '),\ 'CONT1':(TradeContext.CONT[:68]).ljust(68,' '),\ 'CONT2':(TradeContext.CONT[68:138]).ljust(70,' '),\ 'CONT3':(TradeContext.CONT[138:208]).ljust(70,' '),\ 'CONT4':(TradeContext.CONT[208:]).ljust(70,' ')} out_file.close TradeContext.PBDAFILE = file_name AfaLoggerFunc.tradeInfo("结束生成打印文本") AfaLoggerFunc.tradeInfo('发送成功') AfaLoggerFunc.tradeInfo("交易后处理 退出") AfaLoggerFunc.tradeInfo("'***农信银系统:通存通兑往账交易.通存通兑查询书发送[8582] 退出") return True
def SubModuleDoFst(): AfaLoggerFunc.tradeInfo( "====开始汇兑退汇来账接收处理====" ) #=====判断是否重复交易==== sel_dict = {'TRCNO':TradeContext.TRCNO,'TRCDAT':TradeContext.TRCDAT,'SNDBNKCO':TradeContext.SNDBNKCO} record = rccpsDBTrcc_trcbka.selectu(sel_dict) if record == None: return AfaFlowControl.ExitThisFlow('S999','判断是否重复报文,查询汇兑业务登记簿相同报文异常') elif len(record) > 0: AfaLoggerFunc.tradeInfo('汇兑业务登记簿中存在相同数据,重复报文,进入下一流程') #=====为通讯回执报文赋值==== out_context_dict = {} out_context_dict['sysType'] = 'rccpst' out_context_dict['TRCCO'] = '9900503' out_context_dict['MSGTYPCO'] = 'SET008' out_context_dict['RCVMBRCO'] = TradeContext.SNDMBRCO out_context_dict['SNDMBRCO'] = TradeContext.RCVMBRCO out_context_dict['SNDBRHCO'] = TradeContext.BESBNO out_context_dict['SNDCLKNO'] = TradeContext.BETELR out_context_dict['SNDTRDAT'] = TradeContext.BJEDTE out_context_dict['SNDTRTIM'] = TradeContext.BJETIM out_context_dict['ORMFN'] = TradeContext.MSGFLGNO out_context_dict['MSGFLGNO'] = out_context_dict['SNDMBRCO'] + TradeContext.BJEDTE + TradeContext.SerialNo out_context_dict['NCCWKDAT'] = TradeContext.NCCworkDate out_context_dict['OPRTYPNO'] = '99' out_context_dict['ROPRTPNO'] = TradeContext.OPRTYPNO out_context_dict['TRANTYP'] = '0' out_context_dict['ORTRCCO'] = TradeContext.TRCCO out_context_dict['PRCCO'] = 'RCCI0000' out_context_dict['STRINFO'] = '重复报文' rccpsMap0000Dout_context2CTradeContext.map(out_context_dict) #=====发送afe==== AfaAfeFunc.CommAfe() return AfaFlowControl.ExitThisFlow('S999','重复报文,退出处理流程') AfaLoggerFunc.tradeInfo(">>>结束判断是否重复报文") #=====币种转换==== if TradeContext.CUR == 'CNY': TradeContext.CUR = '01' #===================查询原交易信息========================================= AfaLoggerFunc.tradeInfo(">>>开始查询原交易信息") ortrc_dict = {} if not rccpsDBFunc.getTransTrcAK(TradeContext.ORSNDBNK,TradeContext.ORTRCDAT,TradeContext.ORTRCNO,ortrc_dict): AfaLoggerFunc.tradeInfo("未找到原交易信息") TradeContext.BOJEDT = "" TradeContext.BOSPSQ = "" else: TradeContext.BOJEDT = ortrc_dict['BJEDTE'] TradeContext.BOSPSQ = ortrc_dict['BSPSQN'] #=====刘雨龙 2008-09-17 增加业务类型==== TradeContext.OPRATTNO = ortrc_dict['OPRATTNO'] AfaLoggerFunc.tradeInfo(">>>结束查询原交易信息") #====开始向字典赋值==== trcbka_dict = {} if not rccpsMap1101CTradeContext2Dtrcbka_dict.map(trcbka_dict): return AfaFlowControl.ExitThisFlow('M999', '字典赋值出错') trcbka_dict['DCFLG'] = PL_DCFLG_CRE #借贷标识 trcbka_dict['OPRNO'] = '09' #业务属性 #=====开始插入数据库==== if not rccpsDBFunc.insTransTrc(trcbka_dict): #=====RollBack操作==== AfaDBFunc.RollbackSql() return AfaFlowControl.ExitThisFlow('D002', '插入数据库出错,RollBack成功') else: #=====commit操作==== AfaDBFunc.CommitSql() AfaLoggerFunc.tradeInfo('插入汇兑业务登记簿,COMMIT成功') ##========================= START 张恒 增加于20091011 来帐落机构及入帐挂账处理 =====================## #初始化记挂账标识,记账.0,挂账.1,默认记账 accflag = 0 #接收机构暂存 TradeContext.BESBNOFIRST = TradeContext.BESBNO #校验账号是否非法 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验账号是否非法") if (len(TradeContext.PYEACC) != 23) and (len(TradeContext.PYEACC) != 19) : accflag = 1 TradeContext.NOTE3 = '此账号不是对公或对私账号,挂账!' AfaLoggerFunc.tradeInfo("结束校验账号是否非法") #调用主机接口查询账户信息 if accflag == 0: #调用8810查询账户信息 AfaLoggerFunc.tradeInfo("开始查询账户信息") TradeContext.ACCNO = TradeContext.PYEACC TradeContext.HostCode = '8810' rccpsHostFunc.CommHost( '8810' ) if TradeContext.errorCode != '0000': accflag = 1 TradeContext.NOTE3 = '查询收款人信息失败,挂账!' elif TradeContext.errorCode == '0000' and len(TradeContext.ACCSO) == 0 : accflag = 1 TradeContext.NOTE3 = '查询收款人开户机构失败,挂账!' AfaLoggerFunc.tradeInfo("结束查询账户信息") #校验账户状态是否正常 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验是否跨法人") if TradeContext.ACCSO[0:6] != TradeContext.BESBNO[0:6] : accflag = 1 TradeContext.NOTE3 = '接收行与账户开户行跨法人,挂账!' AfaLoggerFunc.tradeInfo("结束校验是否跨法人") #校验开户机构是否建立代理关系 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验接收行与开户机构是否为同一机构") if TradeContext.ACCSO != TradeContext.BESBNOFIRST: khjg = {} khjg['BESBNO'] = TradeContext.ACCSO khjg['BTOPSB'] = TradeContext.BESBNOFIRST khjg['SUBFLG'] = PL_SUBFLG_SUB rec = rccpsDBTrcc_subbra.selectu(khjg) if rec == None: accflag = 1 TradeContext.NOTE3 = '查询账户代理关系失败,挂账!' elif len(rec) <= 0: accflag = 1 TradeContext.NOTE3 = '账户未建立代理关系,挂账!' else: #接收机构与开户机构存在代理关系,设置机构号为开户机构号 TradeContext.BESBNO = TradeContext.ACCSO AfaLoggerFunc.tradeInfo("结束校验接收行与开户机构是否为同一机构") #校验账号状态是否正常 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验账号状态是否正常") if TradeContext.ACCST != '0' and TradeContext.ACCST != '2': accflag = 1 TradeContext.NOTE3 = '账户状态不正常,挂账!' #在建立代理关系的情况下,账户状态不正常,同样挂账 TradeContext.BESBNO = TradeContext.BESBNOFIRST AfaLoggerFunc.tradeInfo("结束校验账号状态是否正常") #校验收款人户名是否一致 if accflag == 0: AfaLoggerFunc.tradeInfo("开始校验收款人户名是否一致") if TradeContext.ACCNM != TradeContext.PYENAM : accflag = 1 TradeContext.NOTE3 = '收款人户名不符,挂账!' #在建立代理关系的情况下,账户状态不正常,同样挂账 TradeContext.BESBNO = TradeContext.BESBNOFIRST AfaLoggerFunc.tradeInfo("结束校验收款人户名是否一致") if (TradeContext.existVariable( "PYEACC" ) and len(TradeContext.PYEACC) != 0): #收款人名称 TradeContext.PYEACC = TradeContext.PYEACC else: TradeContext.PYEACC = '' if (TradeContext.existVariable( "PYENAM" ) and len(TradeContext.PYENAM) != 0): #收款人名称 TradeContext.OTNM = TradeContext.PYENAM else: TradeContext.OTNM = '' #汇兑往帐记帐字典赋值 input_dict = {} input_dict['accflag'] = str(accflag) #记挂标志 input_dict['OCCAMT'] = TradeContext.OCCAMT #交易金额 input_dict['PYEACC'] = TradeContext.PYEACC #收款人账号 input_dict['OTNM'] = TradeContext.OTNM #收款人名称 input_dict['BESBNO'] = TradeContext.BESBNO #调用汇兑记账接口 rccpsEntries.HDLZJZ(input_dict) TradeContext.accflag = accflag #代理标志 #=====开始调函数拼贷方账号第25位校验位==== TradeContext.HostCode = '8813' #调用8813主机接口 TradeContext.RCCSMCD = PL_RCCSMCD_HDLZ #主机摘要代码:汇兑来账 TradeContext.ACUR = '1' ##========================= END 张恒 增加于20091011 来帐落机构及入帐挂账处理 =====================## #=====设置状态为收妥==== sstlog = {} sstlog['BSPSQN'] = TradeContext.BSPSQN sstlog['BJEDTE'] = TradeContext.BJEDTE sstlog['BCSTAT'] = PL_BCSTAT_BNKRCV sstlog['BDWFLG'] = PL_BDWFLG_SUCC #=====设置状态为 收妥-成功 ==== if not rccpsState.setTransState(sstlog): #=====RollBack操作==== AfaDBFunc.RollbackSql() return AfaFlowControl.ExitThisFlow(TradeContext.errorCode, TradeContext.errorMsg) else: #=====commit操作==== AfaDBFunc.CommitSql() AfaLoggerFunc.tradeInfo('>>>commit成功') return True
def SubModuleDoSnd(): #=================判断afe是否发送成功======================================= if TradeContext.errorCode != '0000': return AfaFlowControl.ExitThisFlow(TradeContext.errorCode, TradeContext.errorMsg) AfaLoggerFunc.tradeInfo('发送成功') #=====查询机构名==== subbra_dict={'BESBNO':TradeContext.BESBNO} sub=rccpsDBTrcc_subbra.selectu(subbra_dict) if(sub==None): return AfaFlowControl.ExitThisFlow('A099','查询机构名失败' ) if(len(sub)==0): return AfaFlowControl.ExitThisFlow('A099','没有相应的机构名' ) #=================生成打印文本============================================= AfaLoggerFunc.tradeInfo("开始生成打印文本") txt = """\ %(BESBNM)s全国特约电子汇兑查询书 |-----------------------------------------------------------------------------| | 查询日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 特约汇兑查询书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 原金额: | %(OROCCAMT)-15.2f | |-----------------------------------------------------------------------------| | 原委托日期: | %(ORTRCDAT)s | |-----------------------------------------------------------------------------| | 原发起行行号: | %(ORSNDBNKCO)s | |-----------------------------------------------------------------------------| | 查询内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ file_name = 'rccps_' + TradeContext.BJEDTE + '_' + TradeContext.BSPSQN + '_8518' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(TradeContext.BJEDTE).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(TradeContext.SNDBNKCO).ljust(10,' '),\ 'RCVBNKCO':(TradeContext.RCVBNKCO).ljust(10,' '),\ 'OROCCAMT':(TradeContext.OR_OCCAMT),\ 'ORTRCDAT':(TradeContext.OR_TRCDAT).ljust(8,' '),\ 'ORSNDBNKCO':(TradeContext.OR_SNDBNKCO).ljust(10,' '),\ 'CONT1':(TradeContext.CONT[:68]).ljust(68,' '),\ 'CONT2':(TradeContext.CONT[68:138]).ljust(70,' '),\ 'CONT3':(TradeContext.CONT[138:208]).ljust(70,' '),\ 'CONT4':(TradeContext.CONT[208:]).ljust(70,' ')} out_file.close TradeContext.PBDAFILE = file_name AfaLoggerFunc.tradeInfo("结束生成打印文本") return True
def SubModuleDoSnd(): #=================判断afe是否发送成功======================================= if TradeContext.errorCode != '0000': return AfaFlowControl.ExitThisFlow(TradeContext.errorCode, TradeContext.errorMsg) AfaLoggerFunc.tradeInfo('发送成功') #=====查询机构名==== subbra_dict={'BESBNO':TradeContext.BESBNO} sub=rccpsDBTrcc_subbra.selectu(subbra_dict) if(sub==None): return AfaFlowControl.ExitThisFlow('A099','查询机构名失败' ) if(len(sub)==0): return AfaFlowControl.ExitThisFlow('A099','没有相应的机构名' ) #=================生成打印文本============================================= AfaLoggerFunc.tradeInfo("开始生成打印文本") txt = """\ %(BESBNM)s票据查复书 |---------------------------------------------------------------------------------------| | 查复日期: | %(BJEDTE)s | |---------------------------------------------------------------------------------------| | 票据查复书号: | %(BSPSQN)s | |---------------------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |---------------------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |---------------------------------------------------------------------------------------| | 票据日期: | %(BILDAT)s | |---------------------------------------------------------------------------------------| | 票据到期日: | %(BILENDDT)s | |---------------------------------------------------------------------------------------| | 票据号码: | %(BILNO)s | |---------------------------------------------------------------------------------------| | 出票人名称: | %(BILPNAM)s| |---------------------------------------------------------------------------------------| | 收款人名称: | %(PYENAM)s| |---------------------------------------------------------------------------------------| | 付款行名称: | %(HONBNKNM)s| |---------------------------------------------------------------------------------------| | 原票据查询日期: | %(BOJEDT)s | |---------------------------------------------------------------------------------------| | 原票据查询发起行行号: | %(ORSNDBNKCO)s | |---------------------------------------------------------------------------------------| | 原票据查询书号: | %(BOSPSQ)s | |---------------------------------------------------------------------------------------| | 查复内容: | | |---------------------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |---------------------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ file_name = 'rccps_' + TradeContext.BJEDTE + '_' + TradeContext.BSPSQN + '_8515' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(TradeContext.BJEDTE).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(TradeContext.SNDBNKCO).ljust(10,' '),\ 'RCVBNKCO':(TradeContext.RCVBNKCO).ljust(10,' '),\ 'BILDAT':(TradeContext.BILDAT).ljust(8,' '),\ 'BILENDDT':(TradeContext.BILENDDT).ljust(8,' '),\ 'BILNO':(TradeContext.BILNO).ljust(16,' '),\ 'BILPNAM':(TradeContext.BILPNAM).ljust(60,' '),\ 'PYENAM':(TradeContext.PYENAM).ljust(60,' '),\ 'HONBNKNM':(TradeContext.HONBNKNM).ljust(60,' '),\ 'BOJEDT':(TradeContext.OR_BJEDTE).ljust(8,' '),\ 'ORSNDBNKCO':(TradeContext.OR_SNDBNKCO).ljust(10,' '),\ 'BOSPSQ':(TradeContext.BOSPSQ).ljust(12,' '),\ 'CONT1':(TradeContext.CONT[:68]).ljust(68,' '),\ 'CONT2':(TradeContext.CONT[68:138]).ljust(70,' '),\ 'CONT3':(TradeContext.CONT[138:208]).ljust(70,' '),\ 'CONT4':(TradeContext.CONT[208:]).ljust(70,' ')} out_file.close TradeContext.PBDAFILE = file_name AfaLoggerFunc.tradeInfo("结束生成打印文本") return True
def SubModuleDoSnd(): AfaLoggerFunc.tradeInfo("进入交易后处理") #=====判断afe是否发送成功==== if TradeContext.errorCode != '0000': return AfaFlowControl.ExitThisFlow(TradeContext.errorCode, TradeContext.errorMsg) AfaLoggerFunc.tradeInfo('>>>发送成功') #=====更新汇票查询查复登记簿中的查复标识==== update_where_dict = {'BJEDTE':TradeContext.BOJEDT,'BSPSQN':TradeContext.BOSPSQ} update_dict = {'ISDEAL':PL_ISDEAL_ISDO} ret = rccpsDBTrcc_hpcbka.update(update_dict,update_where_dict) if( ret <= 0 ): AfaDBFunc.RollbackSql() return AfaFlowControl.ExitThisFlow("S999","更新原查询业务信息异常") AfaDBFunc.CommitSql() AfaLoggerFunc.tradeInfo(">>>Commit成功") #=====查询机构名==== subbra_dict={'BESBNO':TradeContext.BESBNO} sub=rccpsDBTrcc_subbra.selectu(subbra_dict) if(sub==None): return AfaFlowControl.ExitThisFlow('A099','查询机构名失败' ) if(len(sub)==0): return AfaFlowControl.ExitThisFlow('A099','没有相应的机构名' ) AfaLoggerFunc.tradeInfo("开始生成打印文本") txt = """\ %(BESBNM)s汇票查复书 |-----------------------------------------------------------------------------| | 查复日期: | %(BJEDTE)s | |-----------------------------------------------------------------------------| | 汇票查复书号: | %(BSPSQN)s | |-----------------------------------------------------------------------------| | 发起行行号: | %(SNDBNKCO)s | |-----------------------------------------------------------------------------| | 接收行行号: | %(RCVBNKCO)s | |-----------------------------------------------------------------------------| | 出票日期: | %(BILDAT)s | |-----------------------------------------------------------------------------| | 汇票金额: | %(BILAMT)-15.2f | |-----------------------------------------------------------------------------| | 汇票号码: | %(BILNO)s | |-----------------------------------------------------------------------------| | 付款人账号: | %(PYRACC)s | |-----------------------------------------------------------------------------| | 付款人名称: | %(PYRNAM)s| |-----------------------------------------------------------------------------| | 收款人账号: | %(PYEACC)s | |-----------------------------------------------------------------------------| | 收款人名称: | %(PYENAM)s| |-----------------------------------------------------------------------------| | 查复内容: | | |-----------------------------------------------------------------------------| | | | %(CONT1)s | | | | %(CONT2)s | | | | %(CONT3)s | | | | %(CONT4)s | | | |-----------------------------------------------------------------------------| 打印日期: %(BJEDTE)s 授权: 记账: """ file_name = 'rccps_' + TradeContext.BJEDTE + '_' + TradeContext.BSPSQN + '_8517' out_file = open(os.environ['AFAP_HOME'] + '/tmp/' + file_name,"wb") if out_file == None: return AfaFlowControl.ExitThisFlow("S999", "生成打印文件异常") print >> out_file,txt % {'BESBNM':(sub['BESBNM']).ljust(10,' '),\ 'BJEDTE':(TradeContext.BJEDTE).ljust(8,' '),\ 'BSPSQN':(TradeContext.BSPSQN).ljust(12,' '),\ 'SNDBNKCO':(TradeContext.SNDBNKCO).ljust(10,' '),\ 'RCVBNKCO':(TradeContext.RCVBNKCO).ljust(10,' '),\ 'BILDAT':(TradeContext.BILDAT).ljust(8,' '),\ 'BILAMT':(TradeContext.PRT_BILAMT),\ 'BILNO':(TradeContext.BILNO).ljust(16,' '),\ 'PYRACC':(TradeContext.PYRACC).ljust(32,' '),\ 'PYRNAM':(TradeContext.PYRNAM).ljust(60,' '),\ 'PYEACC':(TradeContext.PYEACC).ljust(32,' '),\ 'PYENAM':(TradeContext.PYENAM).ljust(60,' '),\ 'CONT1':(TradeContext.CONT[:68]).ljust(68,' '),\ 'CONT2':(TradeContext.CONT[68:138]).ljust(70,' '),\ 'CONT3':(TradeContext.CONT[138:208]).ljust(70,' '),\ 'CONT4':(TradeContext.CONT[208:]).ljust(70,' ')} out_file.close TradeContext.PBDAFILE = file_name AfaLoggerFunc.tradeInfo("结束生成打印文本") AfaLoggerFunc.tradeInfo("结束交易后处理") return True