Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
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
Exemple #8
0
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
Exemple #9
0
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
Exemple #10
0
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
Exemple #11
0
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
Exemple #12
0
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
Exemple #13
0
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
Exemple #14
0
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
Exemple #15
0
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
Exemple #16
0
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
Exemple #17
0
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