Exemple #1
0
def GetDetailFile(rfilename, lfilename):
    try:
        #创建文件
        ftpShell = os.environ['AFAP_HOME'] + '/data/ahfs/shell/ahfs_ahfs.sh'
        ftpFp = open(ftpShell, "w")

        ftpFp.write('open ' + TradeContext.HOST_HOSTIP + '\n')
        ftpFp.write('user ' + TradeContext.HOST_USERNO + ' ' + TradeContext.HOST_PASSWD + '\n')

        #下载文件
        ftpFp.write('cd '  + TradeContext.HOST_RDIR + '\n')
        ftpFp.write('lcd ' + TradeContext.HOST_LDIR + '\n')
        ftpFp.write('quote type c 1381 ' + '\n')
        ftpFp.write('get ' + rfilename + ' ' + lfilename + '\n')

        ftpFp.close()

        ftpcmd = 'ftp -n < ' + ftpShell + ' 1>/dev/null 2>/dev/null '

        ret = os.system(ftpcmd)
        if ( ret != 0 ):
            return -1
        else:
            return 0

    except Exception, e:
        AfaLoggerFunc.tradeInfo(e)
        AfaLoggerFunc.tradeInfo('FTP处理异常')
        return -1
Exemple #2
0
def UpdatePreDtl( action ):

    AfaLoggerFunc.tradeInfo( '更新原交易流水' )
    sql="UPDATE FS_MAINTRANSDTL SET "
    if( action == 'BANK' ):
        sql=sql+" BANKSTATUS='3' "
    elif( action == 'CORP' ):
        sql=sql+" CORPSTATUS='3' "
    elif( action == 'TRADE' ):
        sql=sql+" BANKSTATUS='3' ,CORPSTATUS='3'"
    else:
        TradeContext.errorCode, TradeContext.errorMsg='A0041', '入口参数条件不符,没有这种类型的操作'
        return False

    sql=sql+" WHERE SERIALNO='"+TradeContext.preAgentSerno+ \
    "' AND WORKDATE='"+TradeContext.workDate+"' AND REVTRANF='0'"

    ret=AfaDBFunc.UpdateSql( sql )
    if( ret >0 ):
        return True

    AfaLoggerFunc.tradeFatal( sql )
    if( ret == 0 ):
        TradeContext.errorCode, TradeContext.errorMsg='A0100', '未发现原始交易'
    else :
        TradeContext.errorCode, TradeContext.errorMsg='A0100', '更新流水主表原交易记录失败'+AfaDBFunc.sqlErrMsg

    return False
Exemple #3
0
def main( ):

    AfaLoggerFunc.tradeInfo('******代收代付.参数下载模板[' + TradeContext.TemplateCode + ']进入******')

    try:
    
        #=====================初始化返回报文变量================================
        TradeContext.tradeResponse=[]


        #=====================获取当前系统时间==================================
        TradeContext.workDate=AfaUtilTools.GetSysDate( )
        TradeContext.workTime=AfaUtilTools.GetSysTime( )
        
        
        #=====================外调接口(前处理)==================================
        subModuleExistFlag=0
        subModuleName = 'T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode
        try:
            subModuleHandle=__import__( subModuleName )

        except Exception, e:
            AfaLoggerFunc.tradeInfo( e )

        else:
Exemple #4
0
def HostParseRet( hostType ):
    HostContext.O1TLSQ=''
    AfaLoggerFunc.tradeInfo( '=======================10' )
    if (HostContext.host_Error == True):    #主机通讯错误
        TradeContext.__status__='2'
        TradeContext.errorCode, TradeContext.errorMsg = 'A9998', '主机通讯错误'
        TradeContext.bankCode  = HostContext.host_ErrorType                       #通讯错误代码
        return False
    AfaLoggerFunc.tradeInfo( '=======================11'+HostContext.O1MGID )
    if( HostContext.O1MGID == 'AAAAAAA' ): #成功
        
        TradeContext.__status__='0'
        TradeContext.errorCode, TradeContext.errorMsg = '0000', '主机成功'
        TradeContext.PDTLSQ = HostContext.O1TLSQ                               #柜员流水号
        TradeContext.PDTRDT = HostContext.O1TRDT                                #主机时间
        TradeContext.PAMGID = HostContext.O1MGID                               #主机返回代码
        return True

    else:                                  #失败
        TradeContext.__status__='1'
        
        #安徽农信-主机自动返回错误信息,不需要转换
        #result = AfapFunc.RespCodeMsg(HostContext.O1MGID,'0000','100000')
        #if not result :
        TradeContext.errorCode, TradeContext.errorMsg = HostContext.O1MGID, HostContext.O1INFO
        return False
Exemple #5
0
def SubModuleDoSnd():
    AfaLoggerFunc.tradeInfo('进入续期查询交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' )
    
    try:
        names = Party3Context.getNames( )
        for name in names:
            value = getattr( Party3Context, name )
            if ( not name.startswith( '__' ) and type(value) is StringType) :
                setattr( TradeContext, name, value )
          
        if(TradeContext.errorCode=='0000'):
            TradeContext.errorMsg="续期查询成功"
        
        
        #TradeContext.syr_name1 = ''
        #syr_name = []
        #if TradeContext.existVariable('syr_name1'):
        #    syr_name.append('xiaozhang')
        #    syr_name.append('xig')
        TradeContext.O1ACUR = '1'
        #    TradeContext.syr_name = syr_name 
     
        AfaLoggerFunc.tradeInfo('退出续期查询交易与第三方通讯后处理' )    
        return True
        
    except AfaFlowControl.flowException, e:
        AfaFlowControl.exitMainFlow( str(e) )
Exemple #6
0
def GetRBSQ( BRSFLG, seqName="RCCPS_SEQ" ):

    AfaLoggerFunc.tradeDebug( '>>>获取前置流水号' )
    #=====是否为往账业务====
    if BRSFLG == PL_BRSFLG_SND:
        #=====判断机构号是否存在====
        if( not TradeContext.existVariable( "BESBNO" ) ):
            raise AfaFlowControl.ExitThisFlow('M999','无机构号,处理失败' )

    #=====往账机构号取第3-6位====
    TradeContext.Serialno = TradeContext.BESBNO[2:6]

    AfaLoggerFunc.tradeDebug('>>>开始判断交易代码')
    #====判断交易代码是否存在(中心7位代码)====
    if( not TradeContext.existVariable( "TRCCO" ) ):
        raise AfaFlowControl.ExitThisFlow('M999','交易代码[TRCCO]字段值不存在' )
    #=====判断业务类型,根据交易取不同类型====
    AfaLoggerFunc.tradeDebug('>>>开始判断业务类型')
    if not GetTRCCO():
        raise AfaFlowControl.ExitThisFlow('M999','取业务类型失败' )
    #=====生成流水号====
    AfaLoggerFunc.tradeInfo('>>>开始生成前置流水号')
    sqlStr = "SELECT NEXTVAL FOR " + seqName + " FROM SYSIBM.SYSDUMMY1"
    records = AfaDBFunc.SelectSql( sqlStr )
    if records == None :
        raise AfaFlowControl.ExitThisFlow('A0025', AfaDBFun.sqlErrMsg )
    #左补"0"(6位)
    #=====流水号规则:4位机构号+1位业务类型+1位往来账标志+6位顺序号
    TradeContext.RBSQ=TradeContext.Serialno+BRSFLG+str(records[0][0]).rjust(6,'0' )

    AfaLoggerFunc.tradeInfo( '>>>前置流水号' + TradeContext.RBSQ )

    return str( records[0][0] )
Exemple #7
0
def SubModuleDoSnd():
    AfaLoggerFunc.tradeDebug('>>>开始处理AFE返回结果')
    #=====开始判断afe返回结果====
    if TradeContext.errorCode != '0000':
         return AfaFlowControl.ExitThisFlow('M999','发送农信银中心失败')
    
    return True
Exemple #8
0
def SubModuleDoFst( ):
    
    AfaLoggerFunc.tradeInfo( '初始化汇总查询交易变量' )
    
    if( not (TradeContext.existVariable( "insuid" ) ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '机构号[insuid]值不存在!' )

    if( not (TradeContext.existVariable( "productid" ) ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '险种[productid]值不存在!' )

    if( not (TradeContext.existVariable( "instno" ) ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '机构号[instno]值不存在!' )

    if( not (TradeContext.existVariable( "salerno" ) ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '销售员工工号[salerno]值不存在!' )

    if( not (TradeContext.existVariable( "startdate" ) and TradeContext.startdate != '00000000') ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '起始日期[startdate]值不存在!' )

    if( not (TradeContext.existVariable( "enddate" ) and TradeContext.enddate != '00000000' ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '截止日期[enddate]值不存在!' )

    if( not TradeContext.existVariable( "channelCode" ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '渠道代码[channelCode]值不存在!' )

    if( TradeContext.channelCode == '005' ):
        
        if( not TradeContext.existVariable( "tellerno" ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[tellerno]值不存在!' )
        if( not TradeContext.existVariable( "brno" ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '网点号[brno]值不存在!' )
        if( not TradeContext.existVariable( "termid" ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[termid]值不存在!' )
   
    return True
Exemple #9
0
def ftpfile( sfilename, rfilename):

    try:
        #创建文件
        ftpShell = os.environ['AFAP_HOME'] + '/data/ahfs/shell/AhfsFtpTf' + '.sh'
        ftpFp = open(ftpShell, "w")

        ftpFp.write('open ' + TradeContext.BATCH_HOSTIP + '\n')
        ftpFp.write('user ' + TradeContext.BATCH_USERNO + ' ' + TradeContext.BATCH_PASSWD + '\n')

        #下载文件
        ftpFp.write('cd '  + TradeContext.BATCH_RDIR + '\n')
        ftpFp.write('lcd ' + TradeContext.BATCH_LDIR + '\n')
        ftpFp.write('bin ' + '\n')
        ftpFp.write('get ' + rfilename + ' ' + sfilename + '\n')

        ftpFp.close()

        ftpcmd = 'ftp -n < ' + ftpShell + ' 1>/dev/null 2>/dev/null '

        os.system(ftpcmd)

        return 0

    except Exception, e:
        AfaLoggerFunc.tradeInfo(e)
        AfaLoggerFunc.tradeInfo('FTP处理异常')
        return -1
Exemple #10
0
def main( ):

    AfaLoggerFunc.tradeInfo('******代收代付.模板1.缴费模板['+TradeContext.TemplateCode+']进入******')
    
    try:
    
        #=====================初始化返回报文变量================================
        TradeContext.tradeResponse=[]
                
                
        #=====================获取当前系统时间==================================
        TradeContext.workDate=AfaUtilTools.GetSysDate( )
        TradeContext.workTime=AfaUtilTools.GetSysTime( )

        #=====================判断应用系统状态==================================
        if not AfaFunc.ChkSysStatus( ) :
            raise AfaFlowControl.flowException( )
                
        #=====================外调接口(前处理)==================================
        subModuleExistFlag=0
        subModuleName = 'T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode
        try:
            subModuleHandle=__import__( subModuleName )
            
        except Exception, e:
            AfaLoggerFunc.tradeInfo( e)
            
        else:
Exemple #11
0
def TrxMain( ):


    AfaLoggerFunc.tradeInfo('**********批量业务公用交易(8488)开始**********')


    TradeContext.tradeResponse.append(['O1AFAPDATE', TradeContext.TranDate])    #工作日期
    TradeContext.tradeResponse.append(['O1AFAPTIME', TradeContext.TranTime])    #工作时间


    if ( TradeContext.I1PROCTYPE == '01' ):

        #查询账户信息
        if ( not AbdtFunc.VMENU_QueryAccInfo( ) ):
            return False

    else:
        return ExitSubTrade( '9000', '无此操作类型' )


    AfaLoggerFunc.tradeInfo('**********批量业务公用交易(8488)结束**********')


    #返回
    TradeContext.tradeResponse.append(['errorCode', '0000'])
    TradeContext.tradeResponse.append(['errorMsg',  '交易成功'])
    return True
def update( update_dict,where_dict ):
    if not chk(update_dict):
        return -1
    if not chk(where_dict):
        return -1

    updatesql = ""
    for update_item in update_dict.keys():
        if table_dict[update_item] == 'S':
            updatesql = updatesql + update_item + " = '" + update_dict[update_item] + "',"
        else:
            updatesql = updatesql + update_item + " = " + str(update_dict[update_item]) + ","

    wheresql = ""
    for where_item in where_dict.keys():
        if table_dict[where_item] == 'S':
            #begin 20110215 蔡永贵修改
            #wheresql = wheresql + where_item + " LIKE '" + where_dict[where_item] + "' and  "
            wheresql = wheresql + where_item + " LIKE '%" + where_dict[where_item] + "' and  "
            #end
        else:
            wheresql = wheresql + where_item + " = " + str(where_dict[where_item]) + " and "


    sql = "UPDATE rcc_bilinf SET " + updatesql[0:-1] + " WHERE " + wheresql[0:-5]
    AfaLoggerFunc.tradeInfo(sql)
    return AfaDBFunc.UpdateSql( sql )
Exemple #13
0
def SubModuleDoFst():
    AfaLoggerFunc.tradeInfo("农信银.通存通兑来账.补正来账[T" + TradeContext.TemplateCode + '_' + TradeContext.TransCode+"]进入")
    
    AfaLoggerFunc.tradeInfo("交易前处理(登记流水,中心前处理)  进入")
    
    #==============================组织应答报文===========================================
    AfaLoggerFunc.tradeInfo("组织应答报文开始")
    Ormfn = TradeContext.MSGFLGNO
    Rcvmbrco = TradeContext.SNDMBRCO
    Sndmbrco = TradeContext.RCVMBRCO
    #=====报文头====
    TradeContext.MSGTYPCO = 'SET010' #报文类代码
    TradeContext.RCVSTLBIN = Rcvmbrco #接受方成员行号
    TradeContext.SNDSTLBIN = Sndmbrco #发送方成员行号
    TradeContext.SNDBRHCO = TradeContext.BESBNO         #发起行网点号
    TradeContext.SNDCLKNO = TradeContext.BETELR         #发起行柜员号
    TradeContext.SNDTRDAT = TradeContext.BJEDTE         #发起行交易日期
    TradeContext.SNDTRTIM = TradeContext.BJETIM         #发起行交易时间
    TradeContext.MSGFLGNO = Rcvmbrco+TradeContext.BJEDTE + TradeContext.SerialNo  #报文标示号
    TradeContext.ORMFN    = Ormfn          #参考报文标示号
    TradeContext.NCCWKDAT = TradeContext.NCCworkDate   #中心工作日期
    TradeContext.OPRTYPNO = '30'     #业务类型
    TradeContext.ROPRTPNO = '30'     #参考业务类型
    TradeContext.TRANTYP  = '0'      #传输类型
    TradeContext.CURPIN   = ""  #异地客户密码
    
    TradeContext.PRCCO    = "NN1IA999"
    TradeContext.STRINFO  = "本交易无法补正" 
    
    AfaLoggerFunc.tradeInfo("组织应答报文结束")
    
    AfaLoggerFunc.tradeInfo("交易前处理(登记流水,中心前处理)  退出")
    
    return True
Exemple #14
0
def ChkCustInfo( ):

    #AfaLoggerFunc.tradeInfo('>>>判断个人协议是否存在')

    try:
        sql = ""
        sql = "SELECT PROTOCOLNO,BUSIUSERNO,ACCNO FROM ABDT_CUSTINFO WHERE "
        sql = sql + "APPNO='AG1014' AND "                                                  #业务编号
        sql = sql + "BUSINO="     + "'" + TradeContext.I1BUSINO    + "'" + " AND ("       #单位编号
        sql = sql + "BUSIUSERNO=" + "'" + TradeContext.SBNO         + "'" + " OR "         #商户客户编号
        sql = sql + "ACCNO="      + "'" + TradeContext.ACCNO        + "'" + " )AND "       #银行账号
        sql = sql + "STATUS="     + "'" + "1"                       + "'"                  #状态

        #AfaLoggerFunc.tradeInfo( sql )

        records = AfaDBFunc.SelectSql( sql )
        if ( records == None ):
            #AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg )
            return ExitSubTrade( '9000', '查询个人协议信息异常' )
        
        if ( len(records) > 0 ):
            #201208 中间业务优化 llj 判断是社保编号重复,还是账号重复
            if records[0][1]== TradeContext.SBNO:
                return ExitSubTrade( '9000', '该个人协议的社保编号已经被注册,不能再次进行注册')
            if records[0][2]== TradeContext.ACCNO: 
                return ExitSubTrade( '9000', '该个人协议的账号已经被注册,不能再次进行注册')  
            else:
                return ExitSubTrade( '9000', '该个人协议已经被注册,不能再次进行注册')    

        return True


    except Exception, e:
        AfaLoggerFunc.tradeFatal( str(e) )
        return ExitSubTrade( '9999', '判断个人协议信息是否存在异常')
Exemple #15
0
def SubModuleDoFst( ):
    
   
    AfaLoggerFunc.tradeInfo( '缴费信息查询变量值的有效性校验' )
    
    if( not TradeContext.existVariable( "unitno" ) ):
        return AfaFlowControl.ExitThisFlow( 'A0001', '单位编号[unitno]值不存在!' )
       
    if( not TradeContext.existVariable( "applno" ) ):
        return AfaFlowControl.ExitThisFlow( 'A0001', '投保单号[applno]值不存在!' )
   
    if( not TradeContext.existVariable( "userno" ) ):
        return AfaFlowControl.ExitThisFlow( 'A0001', '保单印刷号[userno]值不存在!' )   
    
    if( not TradeContext.existVariable( "channelCode" ) ):
        return AfaFlowControl.ExitThisFlow( 'A0001', '渠道代码[channelCode]值不存在!' )
    
    if( TradeContext.channelCode == '005' ):
        
        if( not TradeContext.existVariable( "tellerno" ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[tellerno]值不存在!' )
       
        if( not TradeContext.existVariable( "brno" ) ): 
            return AfaFlowControl.ExitThisFlow( 'A0001', '网点号[brno]值不存在!' )
        
        if( not TradeContext.existVariable( "termId" ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '终端号[termId]值不存在!' )
    
    return True
Exemple #16
0
def SubModuleMainFst( ):
    AfaLoggerFunc.tradeInfo('状态变更通知交易前处理[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' )
    try:
        if( not TradeContext.existVariable( "nextWorkDate" ) ):
            return TipsFunc.ExitThisFlow( '93002', 'TIPS工作日期[nextWorkDate]值不存在!' )
        if(  len(TradeContext.nextWorkDate)!=8 ):
            return TipsFunc.ExitThisFlow( '93001', 'TIPS工作日期[nextWorkDate]值不合法!' )
        if( not TradeContext.existVariable( "SysStat" ) ):
            return TipsFunc.ExitThisFlow( '93002', 'TIPS[SysStat]值不存在!' )
        
        if TradeContext.SysStat=='0':#日间
            #应用运行状态为:运行
            if(not TipsFunc.UpdAppStatus('1')):                                  
                return TipsFunc.ExitThisFlow( 'A0001', '修改应用运行状态失败!' )
            #修改应用工作日期
            if(not TipsFunc.UpdAppWorkDate(TradeContext.nextWorkDate)):
                return TipsFunc.ExitThisFlow( 'A0001', '修改应用工作日期失败!' )
        if TradeContext.SysStat=='1':#日切窗口
            #修改应用工作日期
            if(not TipsFunc.UpdAppWorkDate(TradeContext.nextWorkDate)):
                return TipsFunc.ExitThisFlow( 'A0001', '修改应用工作日期失败!' )
        if TradeContext.SysStat=='2':#系统维护状态
            #应用运行状态为:暂停
            if(not TipsFunc.UpdAppStatus('2')):                                  
                return TipsFunc.ExitThisFlow( 'A0001', '修改应用运行状态失败!' )

        TradeContext.errorCode = '0000'
        TradeContext.errorMsg = '交易成功' 
        #=============自动打包====================
        AfaLoggerFunc.tradeInfo('状态变更通知前处理结束[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' )
        return True
    except Exception, e:
        return TipsFunc.exitMainFlow(str(e))
Exemple #17
0
def start():
    try:
        AfaLoggerFunc.tradeInfo('RunSign='+TradeContext.RunSign+' 启用调度')
        if( TradeContext.existVariable( "BackRunTime" ) and len(TradeContext.BackRunTime)<=0 ):
            return TipsFunc.ExitThisFlow( 'A0001', '[BackRunTime]值不存在!' )
        
        year=(TradeContext.BackRunTime)[0:4]
        month=(TradeContext.BackRunTime)[4:6]
        day=(TradeContext.BackRunTime)[6:8]
        hour=(TradeContext.BackRunTime)[8:10]
        minute=(TradeContext.BackRunTime)[10:12]
            
        sql="UPDATE AFA_CRONADM              "
        sql=sql+" SET YEAR = '"+year+"',     "
        sql=sql+"     MONTH = '"+month+"',   "
        sql=sql+"     DAY = '"+day+"',       "
        sql=sql+"     HOUR = '"+hour+"',     "
        sql=sql+"     MINUTE = '"+minute+"', "
        sql=sql+"     STATUS = '1'           "
        sql=sql+" WHERE TASKID = '00050'     "
            
        AfaLoggerFunc.tradeInfo(sql)
        
        records = AfaDBFunc.UpdateSqlCmt(sql)
        if( records <=0  ):
            AfaLoggerFunc.tradeFatal(sql)
            return AfaFlowControl.ExitThisFlow( 'A0027', '未发现调度信息:'+AfaDBFunc.sqlErrMsg )
        if( records == None ):
            AfaLoggerFunc.tradeFatal(sql)
            return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg )
      
        return True
    except Exception, e:
        AfaLoggerFunc.tradeInfo(e)
        return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))         
Exemple #18
0
def getErrInfo(ERRKEY):
    AfaLoggerFunc.tradeInfo(">>>开始获取中心返回代码[" + ERRKEY + "]对应信息")
    
    errinf_where_dict = {}
    if ERRKEY[:2] != 'NN':
        errinf_where_dict['MBRTYP'] = '1'
        errinf_where_dict['ERRKEY'] = ERRKEY[:8]
    else:
        errinf_where_dict['MBRTYP'] = '2'
        errinf_where_dict['ERRKEY'] = ERRKEY[4:8]
    
    ERRSTR = ""
    
    errinf_dict = rccpsDBTrcc_errinf.selectu(errinf_where_dict)
    
    if errinf_dict == None:
        AfaLoggerFunc.tradeInfo("查询中心返回信息数据库异常")
        
    if len(errinf_dict) <= 0:
        ERRSTR = "未知错误"
        AfaLoggerFunc.tradeInfo("无此返回代码对应信息,返回中心返回信息[未知错误]")
    else:
        ERRSTR = errinf_dict['ERRSTR']
        AfaLoggerFunc.tradeInfo("找到此返回代码对应信息,返回中心返回信息[" + ERRSTR + "]")
    
    AfaLoggerFunc.tradeInfo(">>>结束获取中心返回代码[" + ERRKEY + "]对应信息")
    
    return ERRSTR
Exemple #19
0
def QueryBrnoInfo():
    try:
        AfaLoggerFunc.tradeInfo( '--->付款人账号[' + TradeContext.accno + ']' )
        AfaLoggerFunc.tradeInfo( '--->收款人账号[' + TradeContext.payeeAcct + ']' )
        #通讯区打包
        HostContext.I1TRCD = '8810'                        #主机交易码
        HostContext.I1SBNO = TIPS_SBNO_QS                  #该交易的发起机构
        HostContext.I1USID = TIPS_TELLERNO_AUTO            #交易柜员号
        HostContext.I1AUUS = ''                            #授权柜员
        HostContext.I1AUPS = ''                            #授权柜员密码
        HostContext.I1WSNO = '10.12.5.189'                 #终端号
        HostContext.I1ACNO = TradeContext.accno            #借方帐号
        HostContext.I1CYNO = '01'                          #币种
        HostContext.I1CFFG = '1'                           #密码校验标志(0-需要,1-不需要)
        HostContext.I1PSWD = ''                            #密码
        HostContext.I1CETY = ''                            #凭证种类
        HostContext.I1CCSQ = ''                            #凭证号码
        HostContext.I1CTFG = ''                            #钞汇标志

        HostTradeCode = "8810".ljust(10,' ')
        HostComm.callHostTrade( os.environ['AFAP_HOME'] + '/conf/hostconf/AH8810.map', HostTradeCode, "0002" )
        if( HostContext.host_Error ):
            AfaLoggerFunc.tradeInfo('>>>主机交易失败=[' + str(HostContext.host_ErrorType) + ']:' +  HostContext.host_ErrorMsg)
            return TipsFunc.ExitThisFlow( '9001', HostContext.host_ErrorMsg )
        else:
            if ( HostContext.O1MGID == 'AAAAAAA' ):
                TradeContext.brno             = HostContext.O1OPNT
                AfaLoggerFunc.tradeInfo( '----->开户机构[' + TradeContext.brno + ']' )

            else:
                return TipsFunc.ExitThisFlow( HostContext.O1MGID, HostContext.O1INFO )

    except Exception, e:
        AfaLoggerFunc.tradeInfo(e)
        return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))
Exemple #20
0
def TrxMain( ):


    AfaLoggerFunc.tradeInfo('**********批量作业清单打印(8412)开始**********')


    TradeContext.tradeResponse.append(['O1AFAPDATE', TradeContext.TranDate])    #工作日期
    TradeContext.tradeResponse.append(['O1AFAPTIME', TradeContext.TranTime])    #工作时间


    #判断单位协议是否有效
    if ( not AbdtFunc.ChkUnitInfo( ) ):
        return False


    #查询批量作业报表信息
    if ( not QueryBatchInfo( ) ):
        return False
        
    AfaLoggerFunc.tradeInfo('**********批量作业清单打印(8412)结束**********')


    #返回
    TradeContext.tradeResponse.append(['errorCode', '0000'])
    TradeContext.tradeResponse.append(['errorMsg',  '交易成功'])
    return True
Exemple #21
0
def UpdateUserPass():

    sql = "SELECT PASSWORD FROM ABDT_USERINFO WHERE STATUS='1' AND USERNO = '" + TradeContext.USERNO + "'"

    AfaLoggerFunc.tradeInfo(sql)
        
    records =  AfaDBFunc.SelectSql( sql )

    if (records == None or len(records)==0) :
        return ExitSubTrade( '9000', '不存在用户信息' )

    if (records[0][0] != TradeContext.OLDPASSWD):
        return ExitSubTrade( '9000', '旧密码不符' )

    sql = "UPDATE ABDT_USERINFO SET PASSWORD='******'"

    sql = sql + " WHERE "

    sql = sql + "USERNO="  + "'" + TradeContext.USERNO  + "'"              #用户号

    AfaLoggerFunc.tradeInfo(sql)

    ret = AfaDBFunc.UpdateSqlCmt( sql )
    if (ret < 0):
        return ExitSubTrade('9000', '修改用户密码失败')

    return True
Exemple #22
0
def SubModuleDoFst( ):
     
    AfaLoggerFunc.tradeInfo( '反交易变量值的有效性校验' )
   
    #交易代码
    TradeContext.tradeCode = TradeContext.TransCode
    
    if( not TradeContext.existVariable( "PreSerialno" ) ):
        return AfaFlowControl.ExitThisFlow( 'A0001', '原交易流水号[PreSerialno]值不存在!' )
   
    if( not TradeContext.existVariable( "channelCode" ) ):
        return AfaFlowControl.ExitThisFlow( 'A0001', '渠道代码[channelCode]值不存在!' )
    
    if( TradeContext.channelCode == '005' ):
        
        if( not TradeContext.existVariable( "tellerno" ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[tellerno]值不存在!' )
        
        if( not TradeContext.existVariable( "brno" ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '网点号[brno]值不存在!' )
        
        if( not TradeContext.existVariable( "termid" ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[termid]值不存在!' )
    
    return True
Exemple #23
0
def SubModuleMainFst( ):

    AfaLoggerFunc.tradeInfo( '进入请求TIPS重发对账明细查询[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' )
    sbrno=TradeContext.brno
    try:
        #====判断机构状态=======
        if not TipsFunc.ChkBranchStatus( ):
            return False
        #====获取清算信息=======
        if not TipsFunc.ChkLiquidStatus( ):
            return False
        if TradeContext.brno != TradeContext.__mainBrno__:
            return TipsFunc.ExitThisFlow( 'A0002', '非清算机构,不允许做此交易')
        #=============获取平台流水号==================== 
        if TipsFunc.GetSerialno( ) == -1 :
            raise TipsFunc.flowException( )
        
        #=============与第三方通讯====================
        AfaAfeFunc.CommAfe()

        TradeContext.errorCode = '0000'
        TradeContext.errorMsg = '请求已受理,请稍候查询对账结果'
        
        AfaLoggerFunc.tradeInfo( '退出请求TIPS重发对账明细['+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' )
        return True
    except TipsFunc.flowException, e:
        return False
Exemple #24
0
def InsertOnOffDTL():
    sql="insert into afa_UnitOnOffDTL(SYSID,UNITNO,SUBUNITNO,STATUS,OPERFLAG,STOPTIME,STARTTIME,NOTE1,NOTE2)"
    sql=sql+" values"
    sql=sql+"('"+TradeContext.sysId       +"'"
    sql=sql+",'"+TradeContext.unitno      +"'"
    sql=sql+",'"+TradeContext.TaxOrgName     +"'"
    sql=sql+",'"+'1'                         +"'"
    sql=sql+",'"+TradeContext.operFlag      +"'"
    sql=sql+",'"+TradeContext.stopTime      +"'"
    sql=sql+",'"+TradeContext.startTime      +"'"
    sql=sql+",'"+TradeContext.NOTE1           +"'"
    sql=sql+",'"+TradeContext.NOTE2           +"'"
    sql=sql+")"
    if( AfaDBFunc.InsertSqlCmt(sql) == -1 ):
        AfaLoggerFunc.tradeFatal(sql)
        return AfaFlowControl.ExitThisFlow( 'A0025', '数据库操作异常:'+AfaDBFunc.sqlErrMsg )
    return True


#获取商户参数
#def GetUnitStatus():
#    AfaLoggerFunc.tradeInfo('获取商户参数' )
#    #============系统标识============
#    sqlStr = "SELECT * FROM AFA_UNITADM WHERE SYSID = '" + TradeContext.sysId + "' AND "
#    #============商户代码============
#    sqlStr = sqlStr+"UNITNO = '" + TradeContext.unitno + "' "
#    AfaLoggerFunc.tradeInfo( sqlStr )
#    records = AfaDBFunc.SelectSql( sqlStr )
#    if( records == None ):
#        AfaLoggerFunc.tradeFatal( sqlStr )
#        return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户信息表操作异常:'+AfaDBFunc.sqlErrMsg )
#    elif( len( records )!=0 ):
#        AfaUtilTools.ListFilterNone( records )
#        TradeContext.__busiMode__ = records[0][6]   #=============业务模式=============
Exemple #25
0
def insTransWtr(wtr_dict):
    
    AfaLoggerFunc.tradeInfo( ">>>开始登记通存通兑业务登记簿[" + wtr_dict["BJEDTE"] + "][" + wtr_dict["BSPSQN"] + "]交易信息及相关状态" )
    
    if not wtr_dict.has_key("BJEDTE"):
        return AfaFlowControl.ExitThisFlow( 'S999',"登记通存通兑业务登记簿,BJEDTE不能为空")
        
    if not wtr_dict.has_key("BSPSQN"):
        return AfaFlowControl.ExitThisFlow( 'S999',"登记通存通兑业务登记簿,BSPSQN不能为空")
        
    
    #==========将输入字典赋值到通存通兑业务登记簿字典==========================
    wtrbka_dict = {}
    
    if not rccpsMap0000Dwtr_dict2Dwtrbka.map(wtr_dict,wtrbka_dict):
        return AfaFlowControl.ExitThisFlow( 'S999', '将输入字典赋值到通存通兑业务登记簿字典异常' )
        
    #==========登记信息到汇兑登记簿============================================
    AfaLoggerFunc.tradeInfo(wtrbka_dict)
    ret = rccpsDBTrcc_wtrbka.insert(wtrbka_dict)
    
    if ret <= 0:
        AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg )
        return AfaFlowControl.ExitThisFlow( 'S999', '登记通存通兑业务详细信息到通存通兑业务登记簿异常' )
        
    AfaLoggerFunc.tradeInfo("插入成功")
    #==========登记初始状态====================================================
    if not rccpsState.newTransState(wtr_dict["BJEDTE"],wtr_dict["BSPSQN"],PL_BCSTAT_INIT,PL_BDWFLG_SUCC):
        return False
    
    AfaLoggerFunc.tradeInfo( ">>>结束登记通存通兑业务登记簿[" + wtr_dict["BJEDTE"] + "][" + wtr_dict["BSPSQN"] + "]交易信息及相关状态" )
    return True
Exemple #26
0
def Query_ChkVariableExist( ):

    AfaLoggerFunc.tradeInfo( '查询类变量值的有效性校验[begin]' )
    if( not TradeContext.existVariable( "appNo" ) ):
        return AfaFlowControl.ExitThisFlow( 'A0001', '业务编号[appNo]值不存在!' )
        
    if( not TradeContext.existVariable( "busiNo" ) ):
        return AfaFlowControl.ExitThisFlow( 'A0001', 'busiNo[busiNo]值不存在!' )
        
    if( not TradeContext.existVariable( "trxCode" ) ):
        return AfaFlowControl.ExitThisFlow( 'A0001', '交易代码[trxCode]值不存在!' )
                
    if( not TradeContext.existVariable( "channelCode" ) ):
        return AfaFlowControl.ExitThisFlow( 'A0001', '渠道代码[channelCode]值不存在!' )
    else:
        TradeContext.channelCode=AfaUtilTools.Lfill( TradeContext.channelCode, 3, '0' )
               
    if( TradeContext.channelCode == '001' ):
        if( not TradeContext.existVariable( "brno" ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '机构代码[brno]值不存在!' )
                
        if( not TradeContext.existVariable( "teller" ) ):
            return AfaFlowControl.ExitThisFlow( 'A0001', '柜员号[teller]值不存在!' )
    
    AfaLoggerFunc.tradeInfo( '查询类变量值的有效性校验[end]' )        

    return True
Exemple #27
0
def Delete():
    try:
        if( TradeContext.existVariable( "BRNO" ) and len(TradeContext.BRNO)<=0):
            return AfaFlowControl.ExitThisFlow( 'A0027', '[分行行号]:不能为空')

        sql="SELECT BRNO,PAYBKCODE,BANKNO,BANKACCT,BANKNAME,PAYEEBANKNO,STATUS,ACCNO,NOTE1,NOTE2,NOTE3,NOTE4,NOTE5 "
        sql=sql+" FROM TIPS_BRANCH_ADM WHERE 1=1 "
        sql=sql+"AND BRNO='"+ TradeContext.BRNO+"'"
        AfaLoggerFunc.tradeInfo(sql)
        records = AfaDBFunc.SelectSql(sql)
        if( records == None ):
            AfaLoggerFunc.tradeFatal(sql)
            return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg )
        elif( len( records ) == 0 ):
            return AfaFlowControl.ExitThisFlow( 'A0027', '不存在此上线行信息' )

            
        sql="DELETE "
        sql=sql+" FROM TIPS_BRANCH_ADM WHERE 1=1 "
        if( TradeContext.existVariable( "BRNO" ) and len(TradeContext.BRNO)>0):
            sql=sql+"AND BRNO='"+ TradeContext.BRNO+"'"
        AfaLoggerFunc.tradeInfo(sql)
        records = AfaDBFunc.DeleteSqlCmt(sql)
        if( records == None or records <=0 ):
            AfaLoggerFunc.tradeFatal(sql)
            return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg )
        return True
    except Exception, e:
        AfaLoggerFunc.tradeInfo(e)
        return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))
Exemple #28
0
def main( ):

    AfaLoggerFunc.tradeInfo('======进入缴费交易模板['+TradeContext.TemplateCode+']=======')
    
    flag = 0
    
    try:
        #=============初始化返回报文变量====================
        TradeContext.tradeResponse=[]


        #=============获取当前系统时间====================
        TradeContext.workDate = AfaUtilTools.GetSysDate( )
        TradeContext.workTime = AfaUtilTools.GetSysTime( )

        #begin 20100625 蔡永贵修改
        #TradeContext.sysId       = "AG2008"
        TradeContext.sysId       = TradeContext.appNo
        #end

        TradeContext.agentFlag   = "01"
        TradeContext.__respFlag__='0'

        #=============外调接口1====================
        subModuleExistFlag=0
        subModuleName = 'T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode
        try:
            subModuleHandle=__import__( subModuleName )
        except Exception, e:
            AfaLoggerFunc.tradeInfo( e)
        else:
Exemple #29
0
def SubModuleDoSnd():
    AfaLoggerFunc.tradeInfo('进入单证重打交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通信后处理' )
    
    try:
        names = Party3Context.getNames( )
       
        for name in names:
            value = getattr( Party3Context, name )
            if ( not name.startswith( '__' ) and type(value) is StringType or type(value) is ListType) :
                setattr( TradeContext, name, value )
            
        if(TradeContext.errorCode=='0000'):
            #第三方返回成功后更新原保单印刷号
            update_sql = "update afa_maintransdtl set "                                             
            update_sql = update_sql + " userno            = '" + TradeContext.userno1     + "'"       #user1新保单印刷号
            update_sql = update_sql + " where userno      = '" + TradeContext.userno      + "'"       #user原保单印刷号 
            update_sql = update_sql + " and workdate      = '" + TradeContext.workDate    + "'"       #日期  
            update_sql = update_sql + " and agentserialno = '" + TradeContext.PreSerialno + "'"       #缴费成功的中间业务流水号
            
            #更新并提交数据
            if  AfaDBFunc.UpdateSqlCmt(update_sql)<0:
                return AfaFlowControl.ExitThisFlow("A999","更新投保单号失败")
                
            #第三方返回成功后生成现金价值文件
            if not YbtFunc.createFile( ):
                return False

        AfaLoggerFunc.tradeInfo('退出单证重打[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' )
        return True
    
    except Exception, e:
        AfaFlowControl.exitMainFlow(str(e))
Exemple #30
0
def ADBUpdateTransdtlRev( ):
    sqlupdate = ""
   
    AfaLoggerFunc.tradeInfo( '>>>>>>>开始更新原冲正交易结果信息<<<<<<<')
   
    sqlupdate = sqlupdate + "update afa_maintransdtl set "
    sqlupdate = sqlupdate + " corpcode = '"+TradeContext.errorCode.strip()+"' "
    sqlupdate = sqlupdate + ", errorMsg = '"+TradeContext.errorMsg.strip()+"' "
    sqlupdate = sqlupdate + " where sysid = '"+TradeContext.sysId+"' and agentserialno = '"+TradeContext.agentSerialno+"'"
   
    AfaLoggerFunc.tradeInfo( 'sqlupdate = ' + str(sqlupdate))
   
    record=AfaDBFunc.UpdateSqlCmt( sqlupdate )
   
    if( record > 0 ):
        AfaLoggerFunc.tradeInfo( '>>>>>>>更新原冲正交易结果信息成功<<<<<<<')
        return True
    if( record == 0 ):
        AfaLoggerFunc.tradeInfo( '>>>>>>>更新原冲正交易结果信息失败<<<<<<<')
        TradeContext.errorCode,TradeContext.errorMsg='A0100','未发现原始交易'
        return False
    else :
        AfaLoggerFunc.tradeInfo( '>>>>>>>更新原冲正交易结果信息失败<<<<<<<')
        TradeContext.errorCode, TradeContext.errorMsg='A0100', '更新原交易状态失败' + AfaDBFunc.sqlErrMsg
        return False
Exemple #31
0
def chkLimited(BJEDTE,PYRACC,OCCAMT):
    AfaLoggerFunc.tradeInfo(">>>开始检查当前交易金额是否超限额")
    
    pamtbl_where_dict = {'BPATPE':'4','BPARAD':'TDLZXE'}
    
    pamtbl_dict = {}
    pamtbl_dict = rccpsDBTrcc_pamtbl.selectu(pamtbl_where_dict)
    
    if pamtbl_dict == None:
        return AfaFlowControl.ExitThisFlow("S999","查询通兑来账交易限额异常")
        
    if len(pamtbl_dict) <= 0:
        return AfaFlowControl.ExitThisFlow("S999","参数表中无通兑来账参数")
    else:
        AfaLoggerFunc.tradeInfo("交易金额限额为[" + str(pamtbl_dict['BPADAT'])+ "]")
    
    where_sql = "select count(*),sum(a.occamt) from rcc_wtrbka as a,rcc_spbsta as b where a.bjedte = b.bjedte and a.bspsqn = b.bspsqn and a.PYRACC = '" + PYRACC + "' and a.BJEDTE = '" + BJEDTE + "' and b.bcstat in ('70','72') and b.bdwflg = '1'"
    
    records = AfaDBFunc.SelectSql(where_sql)
    
    if records == None:
        return AfaFlowControl.ExitThisFlow('S999','统计账户今日交易总金额异常')
    
    else:
        rec_count = records[0][0]
        rec_sum   = records[0][1] 
        
    if records[0][0] <= 0:
        rec_count = 0
        rec_sum   = 0.00
    
    AfaLoggerFunc.tradeInfo("今日历史交易金额总和为[" + str(rec_sum) + "],本次交易金额为[" + str(OCCAMT) + "]")
    
    if float(rec_sum) + float(OCCAMT) > float(pamtbl_dict['BPADAT']):
        return AfaFlowControl.ExitThisFlow("S999","本账户交易金额超限")
    
    AfaLoggerFunc.tradeInfo(">>>结束检查当前交易金额是否超限额")
    
    return True
Exemple #32
0
def xnb_Login():

    try:

        sqlStr = "UPDATE AFA_SYSTEM SET STATUS='1' WHERE"
        
        sqlStr = sqlStr + " SYSID ='AG2015'"
        
        AfaLoggerFunc.tradeInfo('签到sql:'+sqlStr)
        
        retcode = AfaDBFunc.UpdateSqlCmt( sqlStr )
        if (retcode==None or retcode <= 0):
            AfaLoggerFunc.tradeInfo('>>>处理结果:签到失败,数据库异常')
            TradeContext.errorCode,TradeContext.errorMsg    =   "0001","签到失败,数据库异常"
            sys.exit(1)

        AfaLoggerFunc.tradeInfo('>>>处理结果:签到成功')

    except Exception, e:
        AfaLoggerFunc.tradeInfo(str(e))
        TradeContext.errorCode,TradeContext.errorMsg    =   "0001",str(e)
        sys.exit(1)
Exemple #33
0
def ChkAppStatus():
    sqlstr  =   "select status from abdt_unitinfo where appno='" + TradeContext.appNo + "' and busino ='" + TradeContext.busiNo + "'"
    records = AfaDBFunc.SelectSql( sqlstr )
    if( records == None or len( records)==0 ):
        AfaLoggerFunc.tradeInfo('查找应用状态库失败')
        return False
    elif len( records ) == 1:
        if records[0][0].strip() == '1':
            return True
        else:
            AfaLoggerFunc.tradeInfo('应用状态没有开启')
            return False
    else:
        AfaLoggerFunc.tradeInfo('应用签约异常')
        return False
Exemple #34
0
def SubModuleDoFst():
    AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8554]进入***' )
    
    ##===张恒增加于20091230==== 
    trcbka_where_dict1={}
    trcbka_where_dict1 = {'BJEDTE':TradeContext.BJEDTE,'BSPSQN':TradeContext.BSPSQN}            
 
    #==========查询汇兑登记簿相关业务信息=======================================
    trcbka_dict = rccpsDBTrcc_trcbka.selectu(trcbka_where_dict1)  
    
    if trcbka_dict == None:
        AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg )
        return AfaFlowControl.ExitThisFlow( 'S999', '查询汇兑业务登记簿交易信息异常' )
        
    if len(trcbka_dict) <= 0:
        return AfaFlowControl.ExitThisFlow( 'S999', '汇兑业务登记簿中无此交易信息' )
    if trcbka_dict['BESBNO'] != TradeContext.BESBNO :
        return AfaFlowControl.ExitThisFlow( 'S999', '非本机构业务!' )
    ##====end=================
    
    #=====查询汇兑单笔信息====
    trcbka = {}
    bka = rccpsDBFunc.getTransTrc(TradeContext.BJEDTE,TradeContext.BSPSQN,trcbka)
    if bka == False:
        return  AfaFlowControl.ExitThisFlow('M999','查询单笔信息失败') 
    else:
        AfaLoggerFunc.tradeInfo( '>>>查询成功' )
        #=====字典赋值到TradeContext====
        rccpsMap8554Dtrcbka2CTradeContext.map(trcbka)
        
    TradeContext.OCCAMT    = str(trcbka['OCCAMT'])              #金额
    TradeContext.LOCCUSCHRG    = str(trcbka['LOCCUSCHRG'])      #手续费金额 增加于20091228  张恒
    
    TradeContext.errorCode = '0000'
    TradeContext.errorMsg  = '查询成功'

    AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8554]退出***' )
    return True
Exemple #35
0
def SubModuleDoSnd():
    AfaLoggerFunc.tradeInfo('缴费信息查询交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' )
    try:
        sql = "select agentserialno,"
        sql = sql + "userno,username,idcode,amount,usernameb,idcodeb,loandate,loanenddate,crevouno,crebarno,procode,cpicteller,note1 "
        sql = sql + " from afa_adbinfo where userno = '" + TradeContext.CpicNo.strip() + "' and note3 = '" + TradeContext.unitno.strip() + "'"
        sql = sql + " and workdate = '"+TradeContext.workDate + "'"
        sql = sql + " and tellerno = '"+TradeContext.tellerno + "'"
        sql = sql + " and dtlstatus = '0' "
        sql = sql + " order by agentserialno desc"
        AfaLoggerFunc.tradeInfo('缴费信息查询语句'+ sql)
        records = AfaDBFunc.SelectSql( sql )
        if(len(records) < 1):
            TradeContext.errorCode,TradeContext.errorMsg = "0001","无此投保信息"
            return False
        else:
            #用户编号(保险单号)
            TradeContext.CpicNo = records[0][1]
            #投保人名称
            TradeContext.UserName = records[0][2]
            #投保人身份证号码
            TradeContext.GovtID = records[0][3]
            #金额
            TradeContext.PaymentAmt = records[0][4]
            #被保人姓名
            TradeContext.UserNameB = records[0][5]
            #被保人身份证号码
            TradeContext.GovtIDB = records[0][6]
            #借款日期
            TradeContext.LoanDate = records[0][7]
            #借款到期日
            TradeContext.LoanEndDate = records[0][8]
            #借款凭证编号
            TradeContext.CreVouNo = records[0][9]
            #贷款合同编号
            TradeContext.CreBarNo = records[0][10]
            #保险种类
            TradeContext.ProCode = records[0][11]
            #太保业务员代码
            TradeContext.CpicTeller = records[0][12]
            #保单号
            TradeContext.CpciPNo = records[0][13]
            #交易返回码
            TradeContext.errorCode = '0000'
        AfaLoggerFunc.tradeInfo('退出缴费信息查询交易' )
        return True
    except Exception, e:
        AfaFlowControl.exitMainFlow(str(e))
Exemple #36
0
def DoSumAmountDiff(psSubUnitno):
    sSqlStr="SELECT SUM(AMOUNT) FROM AFA_MAINTRANSDTL WHERE  APPNO='"+TradeContext.appNo+"'"
    sSqlStr=sSqlStr+" AND UNITNO='"+TradeContext.unitno+"'"
    sSqlStr=sSqlStr+" AND SUBUNITNO='"+psSubUnitno+"'"
    sSqlStr=sSqlStr+" AND NOTE9='"+TradeContext.ChkDate+"'"
    sSqlStr=sSqlStr+" AND NOTE10='"+TradeContext.ChkAcctOrd+"'"
    sSqlStr=sSqlStr+" AND CHKFLAG='0'"
    AfaLoggerFunc.tradeInfo( sSqlStr )
    SumRecords = AfaDBFunc.SelectSql( sSqlStr )
    if(SumRecords == None ):
        # AfaLoggerFunc.tradeFatal( sqlStr )
        return AfaFlowControll.ExitThisFlow( 'A0002', '流水表表操作异常:'+AfaDBFunc.sqlErrMsg )
    else:
        SumRecords=UtilTools.ListFilterNone( SumRecords ,'0')
        TradeContext.amount=str(SumRecords[0][0])
        AfaLoggerFunc.tradeInfo( '汇总联社发生额'+str(TradeContext.amount) )    

    sSqlStr="SELECT SUM(AMOUNT)*100 FROM CHECK_TRANSDTL WHERE  APPNO='"+TradeContext.appNo+"'"
    sSqlStr=sSqlStr+" AND UNITNO='"+TradeContext.unitno+"'"
    sSqlStr=sSqlStr+" AND SUBUNITNO='"+psSubUnitno+"'"
    sSqlStr=sSqlStr +" and workDate  = '" + TradeContext.ChkDate            + "'"
    sSqlStr=sSqlStr +" and Batchno   = '" + TradeContext.ChkAcctOrd         + "'"
    sSqlStr=sSqlStr +" AND NOTE3     ='"  + TradeContext.PayBkCode.strip()  + "'"   
    sSqlStr=sSqlStr +" AND NOTE2     ='"  + TradeContext.PayeeBankNo.strip()  + "'"
    #sSqlStr=sSqlStr+" AND CHKFLAG!='0' AND CORPCHKFLAG='0'"
    AfaLoggerFunc.tradeInfo( sSqlStr )
    SumRecords = AfaDBFunc.SelectSql( sSqlStr )
    if(SumRecords == None ):
        # AfaLoggerFunc.tradeFatal( sqlStr )
        return AfaFlowControll.ExitThisFlow( 'A0002', '流水表表操作异常:'+AfaDBFunc.sqlErrMsg )
    else:
        SumRecords=UtilTools.ListFilterNone( SumRecords ,'0')
        TradeContext.amountQS=str(SumRecords[0][0])
        AfaLoggerFunc.tradeInfo( '汇总联社清算额'+str(TradeContext.amount) )
    TradeContext.amountDiff=str(long(float(TradeContext.amountQS)) - long(float(TradeContext.amount)))
    
    return True
    
Exemple #37
0
def UpdUnitDayendStatus(flag):
    AfaLoggerFunc.tradeInfo('修改商户日终状态' )
    GetUnitStatus()
    if(TradeContext.__busiMode__!='2'):
        sql="UPDATE AFA_UNITADM SET DAYENDSTATUS='"+flag+"',dayendtime='"+TradeContext.workTime+\
            "' WHERE SYSID='"+TradeContext.sysId+"'and UNITNO='"+TradeContext.unitno+"'"
    else:
        sql="UPDATE AFA_SUBUNITADM SET DAYENDSTATUS='"+flag+"' , dayendtime='"+TradeContext.workTime+\
            "' WHERE SYSID='"+TradeContext.sysId+"' AND UNITNO='"+TradeContext.unitno+"' AND "\
            "SUBUNITNO='"+TradeContext.subUnitno+"'"
    AfaLoggerFunc.tradeInfo(sql )
    records=AfaDBFunc.UpdateSqlCmt( sql )
    if( records <0 ):
        AfaLoggerFunc.tradeFatal( sql )
        return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户信息表操作异常:'+AfaDBFunc.sqlErrMsg )
    return True
Exemple #38
0
def ADBCheckCert( ):
    AfaLoggerFunc.tradeInfo('>>>>获取保险公司[' + TradeContext.unitno + ']凭证号,做校验<<<<')
    sql = ""
    sql = sql + " select certtype from afa_adbpam where "
    sql = sql + " unitno='" + TradeContext.unitno + "'"                       #单位名称(根据保险公司编号来
                                                                              #查询凭证种类)
    sql = sql + " and certtype='" + TradeContext.I1CETY + "'"

    AfaLoggerFunc.tradeInfo( sql )

    record = AfaDBFunc.SelectSql( sql )

    if ( record==None ):
        AfaLoggerFunc.tradeInfo( '>>>>查询凭证种类异常<<<<' )
        TradeContext.errorCode,TradeContext.errorMsg = 'A0100', '查询凭证种类异常'
        return False

    if ( len(record) <= 0):
        AfaLoggerFunc.tradeInfo( '>>>>保险公司代码或凭证种类非法<<<<' )
        TradeContext.errorCode,TradeContext.errorMsg = 'A0100', '保险公司代码或凭证种类非法'
        return False

    return True
Exemple #39
0
def GetUnitStatus():
    AfaLoggerFunc.tradeInfo('获取商户参数' )
    #============系统标识============
    sqlStr = "SELECT * FROM AFA_UNITADM WHERE SYSID = '" + TradeContext.sysId + "' AND "
    #============商户代码============
    sqlStr = sqlStr+"UNITNO = '" + TradeContext.unitno + "' "
    AfaLoggerFunc.tradeInfo( sqlStr )
    records = AfaDBFunc.SelectSql( sqlStr )
    if( records == None ):
        AfaLoggerFunc.tradeFatal( sqlStr )
        return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户信息表操作异常:'+AfaDBFunc.sqlErrMsg )
    elif( len( records )!=0 ):
        AfaUtilTools.ListFilterNone( records )
        TradeContext.__busiMode__ = records[0][6]   #=============业务模式=============
        if( TradeContext.__busiMode__!="2" ):
            TradeContext.__unitStatus__ = records[0][4]         #=============业务状态=============
            TradeContext.__unitLoginStatus__ = records[0][27]   #=============签到务状态=============
            TradeContext.__unitDayendStatus__ = records[0][28]  #=============日终状态=============
            TradeContext.__unitCheckStatus__ = records[0][30]   #=============对账业务状态=============
        if( TradeContext.__busiMode__=="2" ):
            AfaLoggerFunc.tradeInfo('获取子商户参数' )
            #============系统标识============
            sqlStr = "SELECT * FROM AFA_SUBUNITADM WHERE SYSID = '" + TradeContext.sysId + "' AND "
            #============商户代码============
            sqlStr = sqlStr+"UNITNO = '" + TradeContext.unitno + "' AND "
            #============子商户代码============
            sqlStr = sqlStr+"SUBUNITNO = '" + TradeContext.subUnitno + "' "
            subRecords = AfaDBFunc.SelectSql( sqlStr )
            if(subRecords == None ):
                return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户分支单位信息表操作异常:'+AfaDBFunc.sqlErrMsg )
            elif( len( subRecords )!=0 ):
                AfaUtilTools.ListFilterNone( subRecords )
                TradeContext.__unitStatus__ = subRecords[0][4]         #=============业务状态=============
                TradeContext.__unitLoginStatus__ = subRecords[0][27]   #=============签到务状态=============
                TradeContext.__unitDayendStatus__ = subRecords[0][28]  #=============日终状态=============
                TradeContext.__unitCheckStatus__ = subRecords[0][30]   #=============对账业务状态=============
    return True
Exemple #40
0
def MainExp_Proc( ):
    
    if (len(sys.argv)==1):
        TradeContext.workDate = AfaUtilTools.GetSysDate( )   #默认导出当天数据
    else:
        TradeContext.workDate = sys.argv[1]                  #导出指定日期的数据
    try:
        config = ConfigParser.ConfigParser( )
        configFileName = os.environ['AFAP_HOME'] + '/conf/lapp.conf'
        config.readfp( open(configFileName) )
        LDIR           = config.get("AG2017_AHJF_EXPORT","LDIR")
        
        LFileName_AHJF = "ahjf_export_" + TradeContext.workDate + ".txt"
        DFileName_AHJF = LDIR + "/" + "ahjf_export"  + ".txt"
        FileName_AHJF  = "ahjf_export"  + ".txt"

        sql_export     = " db2 \"export to '" + DFileName_AHJF + "' of del select * from afa_maintransdtl where sysid='AG2017' and workdate='" + TradeContext.workDate + "' \""

        os.system( "db2 connect to maps" )
        
        AfaLoggerFunc.tradeInfo(">>>开始导出表afa_maintransdtl,导出语句:" + sql_export)
        os.system( sql_export )

        os.system( "db2 disconnect maps" )
        
        #上传导出文件
        RFileName_AHJF = LFileName_AHJF

        if not ( AfaFtpFunc.putFile( "AG2017_AHJF_EXPORT",FileName_AHJF,RFileName_AHJF ) ):
            AfaLoggerFunc.tradeInfo( ">>>上传文件[" + LFileName_AHJF + "]失败" )
            return False
        return True
        
    except Exception, e:
        AfaLoggerFunc.tradeInfo( str(e) )
        AfaLoggerFunc.tradeInfo("操作异常")
        return False
Exemple #41
0
def PutData(filename):
    AfaLoggerFunc.tradeInfo("开始上传文件:"+TradeContext.busiNo + filename + TradeContext.workDate + ".txt"+"中的数据")
    try:
        #创建文件
        ftpShell = os.environ['AFAP_HOME'] + '/data/ahfs/shell/ftp_ahfs.sh'
        ftpFp = open(ftpShell, "w")

        ftpFp.write('open ' + TradeContext.CROP_HOSTIP + '\n')
        ftpFp.write('user ' + TradeContext.CROP_USERNO + ' ' + TradeContext.CROP_PASSWD + '\n')

        #上传文件
        if TradeContext.CROP_RDIR :
            ftpFp.write('cd ' + TradeContext.CROP_RDIR + '\n')
            
        ftpFp.write('lcd ' + TradeContext.CROP_LDIR + '\n')
        ftpFp.write('bin ' + '\n')
 
        #=====刘雨龙  20080819 修改文件名称保证唯一性====
        #ftpFp.write('put ' + TradeContext.bankCode + filename + TradeContext.workDate + ".txt" + '\n')
        ftpFp.write('put ' + TradeContext.busiNo + filename + TradeContext.workDate + ".txt " + TradeContext.bankCode+filename+TradeContext.workDate+'.txt\n')

        ftpFp.close()

        ftpcmd = 'ftp -n < ' + ftpShell + ' 1>/dev/null 2>/dev/null '
        ret = os.system(ftpcmd)
        if ( ret != 0 ):
            AfaLoggerFunc.tradeInfo( "上传文件" + TradeContext.busiNo   + filename + TradeContext.workDate + ".txt" + "失败" )
            #AfaLoggerFunc.tradeInfo( "上传文件" + TradeContext.bankCode + filename + TradeContext.workDate + ".txt" + "失败" )
            return -1
        else:
            AfaLoggerFunc.tradeInfo( "上传文件" + TradeContext.busiNo   + filename + TradeContext.workDate + ".txt" + "成功" )
            #AfaLoggerFunc.tradeInfo( "上传文件" + TradeContext.bankCode + filename + TradeContext.workDate + ".txt" + "成功" )
            return 0

    except Exception, e:
        AfaLoggerFunc.tradeInfo('FTP处理异常')
        return -1
Exemple #42
0
def GetFtpFile(RemoteFileName):

    TradeContext.sysId          = "FTP"
    TradeContext.hostip         = TradeContext.CROP_HOSTIP
    TradeContext.user           = TradeContext.CROP_USERNO
    TradeContext.pwd            = TradeContext.CROP_PASSWD
    TradeContext.localpath      = TradeContext.CROP_LDIR
    #TradeContext.localfilename  = LocalFileName
    TradeContext.remotefilename = RemoteFileName
    TradeContext.remotepath     = TradeContext.CROP_RDIR
    TradeContext.TransCode      = "8889"
    TradeContext.TemplateCode   = "3001"

    #=============与第三方通讯通讯====================
    TradeContext.__respFlag__='0'

    AfaAfeFunc.CommAfe()

    flag  = -1

    if( TradeContext.errorCode != '0000' ):
        AfaLoggerFunc.tradeInfo("文件[" + TradeContext.localpath + "/" + RemoteFileName + "]下载失败")
        flag = -1

    else:
        AfaLoggerFunc.tradeInfo("文件[" + TradeContext.localpath + "/" + RemoteFileName + "]下载成功")
        flag = 0

    #下载完成之后把下载日志记录到数据库中
    sql = ""
    sql = sql + "insert into fs_ftpreturn(busino,hostip,succflag,ftpflag,workdate,worktime,filename,note1,note2) values(  "
    sql = sql + "'" + TradeContext.busiNo         + "',"        #单位编号
    sql = sql + "'" + TradeContext.hostip         + "',"        #主机地址
    sql = sql + "'" + str(flag)                   + "',"        #成功失败标志(0-成功,-1-失败)
    sql = sql + "'" + "1"                         + "',"        #上传下载标志(0-上传,1-下载)
    sql = sql + "'" + TradeContext.WORKDATE       + "',"        #操作日期
    sql = sql + "'" + AfaUtilTools.GetSysTime( )  + "',"        #操作时间
    sql = sql + "'" + RemoteFileName              + "',"        #下载文件名
    sql = sql + "'',"                                           #备注1
    sql = sql + "'')"                                           #备注2

    AfaLoggerFunc.tradeInfo( ">>>>登记下载记录:" + sql )

    AfaDBFunc.UpdateSqlCmt( sql )

    return flag
Exemple #43
0
def SubModuleDoFst( ):
    try:
        AfaLoggerFunc.tradeInfo('进入缴费交易['+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']前处理' )
        #TradeContext.tradeType='T' #转账类交易
        #if( not TradeContext.existVariable( "corpTime" ) ):
        #    return TipsFunc.ExitThisFlow( 'A0001', '委托日期[corpTime]值不存在!' )
        #if( not TradeContext.existVariable( "corpSerno" ) ):
        #    return TipsFunc.ExitThisFlow( 'A0001', '第三方.交易流水号[corpSerno]值不存在!' )
        
        #====判断应用状态=======
        if not TipsFunc.ChkAppStatus():
            return False
            
        TradeContext.payeeBankNo = '011100000003'
        #====获取清算信息=======
        if not TipsFunc.ChkLiquidStatus():
            return False
        #====检查是否签约户=======
        #if not TipsFunc.ChkCustSign():
        #    return False
        #====判断机构状态=======
        if not TipsFunc.ChkBranchStatus():
            return False
        #====获取摘要代码=======
        #if not AfaFlowControl.GetSummaryCode():
        #    return False
        
        #摘要代码
        TradeContext.summary_code = 'TIP'
        
        #转换金额(以元为单位->以分为单位)
        #AfaLoggerFunc.tradeInfo('转换前金额(以元为单位)=' + TradeContext.amount)
        #TradeContext.amount=str(long((float(TradeContext.amount))*100 + 0.1))
        #AfaLoggerFunc.tradeInfo('转换后金额(以分为单位)=' + TradeContext.amount)
       
        #初始化
        #TradeContext.catrFlag = '1'         #现金转账标志
        TradeContext.__agentEigen__ = '0'   #从表标志
        TradeContext.channelCode = '001'
        TradeContext.userno = '12'
        TradeContext.zoneno = '000'
        AfaLoggerFunc.tradeInfo('==========================[' +TradeContext.accno+ ']')
        AfaLoggerFunc.tradeInfo('退出缴费交易['+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']前处理' )
        return True
    except Exception, e:
        TipsFunc.exitMainFlow(str(e)) 
Exemple #44
0
def getFile(ConfigNode,LocalFileName,RemoteFileName):
    
    AfaLoggerFunc.tradeInfo( '>>>FTP下载文件' )
    
    try:
        #读取FTP配置文件
        config = ConfigParser.ConfigParser( )
        configFileName = os.environ['AFAP_HOME'] + '/conf/lapp.conf'
        
        config.readfp( open( configFileName ) )
        
        HOSTIP    = config.get(ConfigNode,'HOSTIP')
        HOSTPORT  = config.get(ConfigNode,'HOSTPORT')
        USERNO    = config.get(ConfigNode,'USERNO')
        PASSWD    = config.get(ConfigNode,'PASSWD')
        LDIR      = config.get(ConfigNode,'LDIR')
        RDIR      = config.get(ConfigNode,'RDIR')
        
        #建立FTP实例
        ftp_p = ftplib.FTP()
        #连接FTP
        ftp_p.connect(HOSTIP,HOSTPORT)
        #登陆FTP
        ftp_p.login(USERNO,PASSWD)
        #移动到远程FTP服务器指定目录
        ftp_p.cwd(RDIR)
        #以写入方式打开本地文件
        file_handler = open(LDIR + "/" + LocalFileName,'wb')
        #获取指定下载文件内容,并写入到本地文件
        ftp_p.retrbinary("RETR " + RDIR + "/" + RemoteFileName,file_handler.write)
        #关闭本地文件
        file_handler.close()
        #退出FTP
        ftp_p.quit()
        
        #判断本地文件是否生成,若未生成,则抛出异常
        if not os.path.exists(LDIR + "/" + LocalFileName):
            raise Exception,"文件[" + LDIR + "/" + LocalFileName + "]下载失败"
            
        AfaLoggerFunc.tradeInfo("文件[" + LDIR + "/" + LocalFileName + "]下载成功")
        
        return True
        
    except Exception, e:
        AfaLoggerFunc.tradeInfo(e)
        return False
Exemple #45
0
def ChkAppStatus( ):

    AfaLoggerFunc.tradeInfo( '判断应用状态[begin]' )

    #============业务编号============
    sqlStr = "SELECT STATUS,STARTDATE,ENDDATE,STARTTIME,ENDTIME,ACCNO FROM ABDT_UNITINFO WHERE APPNO = '" + TradeContext.appNo + "'"

    #============单位编码============
    sqlStr = sqlStr + " AND BUSINO = '" + TradeContext.busiNo + "'"

    #============委托方式============
    sqlStr = sqlStr + " AND AGENTTYPE IN ('1','2')"

    records = AfaDBFunc.SelectSql( sqlStr )
    if( records == None ):
        # AfaLoggerFunc.tradeFatal( sqlStr )
        return AfaFlowControl.ExitThisFlow( 'A0002', '代收代付_单位信息表:'+AfaDBFunc.sqlErrMsg )

    elif( len( records )!=0 ):
        AfaUtilTools.ListFilterNone( records )
        #===============判断业务状态============================
        if( records[0][0]=="0" ):
            return AfaFlowControl.ExitThisFlow( 'A0004', '该业务处于未启用状态,不能做此交易' )
        elif( records[0][0]=="2" ):
            return AfaFlowControl.ExitThisFlow( 'A0005', '该业务处于关闭状态,不能做此交易' )
        elif( records[0][0]=="3" ):
            return AfaFlowControl.ExitThisFlow( 'A0006', '该业务处于停用状态,不能做此交易' )
        
        #===============判断服务时间============================
        if( long( TradeContext.workDate )<long( records[0][1] ) or long( TradeContext.workDate )>long( records[0][2] ) ):
            return AfaFlowControl.ExitThisFlow ('A0008', "该业务已过期,有效期:["+records[0][1] + "-->" + records[0][2] + "]") 

        #================判断有效时间===========================
        if( long(TradeContext.workTime) < long(records[0][3])) or (long(TradeContext.workTime) > long(records[0][4])):
            return AfaFlowControl.ExitThisFlow( 'A0007', "超过业务开放时间,请在["+records[0][3]+"-->"+records[0][4]+"]做此业务" )

        #=============代理业务帐号=============
        TradeContext.__agentAccno__ = records[0][5]            

        TradeContext.Daccno = records[0][5]

        AfaLoggerFunc.tradeInfo( '判断应用状态[end]' )
        return True
    else:
        AfaLoggerFunc.tradeError( sqlStr )
        return AfaFlowControl.ExitThisFlow( 'A0003', '该地区没有开放此业务' )
Exemple #46
0
def putFile(ConfigNode,LocalFileName,RemoteFileName):
    
    AfaLoggerFunc.tradeInfo( '>>>FTP上传文件' )
    
    try:
        #读取FTP配置文件
        config = ConfigParser.ConfigParser( )
        configFileName = os.environ['AFAP_HOME'] + '/conf/lapp.conf'
        
        config.readfp( open( configFileName ) )
        
        HOSTIP    = config.get(ConfigNode,'HOSTIP')
        HOSTPORT  = config.get(ConfigNode,'HOSTPORT')
        USERNO    = config.get(ConfigNode,'USERNO')
        PASSWD    = config.get(ConfigNode,'PASSWD')
        LDIR      = config.get(ConfigNode,'LDIR')
        RDIR      = config.get(ConfigNode,'RDIR')
        
        if not os.path.exists(LDIR + "/" + LocalFileName):
            raise Exception,"上传文件[" + LDIR + "/" + LocalFileName + "]不存在"
        
        #建立FTP实例
        ftp_p = ftplib.FTP()
        #连接FTP
        ftp_p.connect(HOSTIP,HOSTPORT)
        #登陆FTP
        ftp_p.login(USERNO,PASSWD)
        #移动到远程FTP服务器指定目录下
        ftp_p.cwd(RDIR)
        #以读取方式打开本地文件
        file_handler = open(LDIR + "/" + LocalFileName,'rb')
        #读取本地文件内容,并写入到远程FTP服务器指定文件
        ftp_p.storbinary("STOR " + RDIR + "/" + RemoteFileName,file_handler)
        #关闭本地文件
        file_handler.close()
        #退出FTP
        ftp_p.quit()
        
        AfaLoggerFunc.tradeInfo("文件[" + LDIR + "/" + LocalFileName + "]上传成功")
        
        return True
        
    except Exception, e:
        AfaLoggerFunc.tradeInfo(e)
        return False
Exemple #47
0
def CrtSequence( ):
    
    try:
        sqlStr = "SELECT NEXTVAL FOR AHXNB_ONLINE_SEQ FROM SYSIBM.SYSDUMMY1"

        records = AfaDBFunc.SelectSql( sqlStr )
        if records == None :
            AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg )
            return ExitSubTrade( '9000', '生成序列号异常' )
        AfaLoggerFunc.tradeInfo( "序列号:" + str(records[0][0]) )
        
        #序列号
        TradeContext.sequenceNo = str(records[0][0]).rjust(3,'0')
        
        return True

    except Exception, e:
        AfaLoggerFunc.tradeFatal( str(e) )
        return ExitSubTrade( '9999', '生成委托号异常' )
Exemple #48
0
def UpdUnitWorkDate():
    AfaLoggerFunc.tradeInfo('修改商户当前工作日期' )
    curworkdate=TradeContext.workDate
    if(  TradeContext.existVariable( "nextWorkDate" ) ):
        curworkdate=TradeContext.nextWorkDate
    GetUnitStatus()
    if(TradeContext.__busiMode__!='2'):
        sql="UPDATE AFA_UNITADM SET  PREWORKDATE=WORKDATE,WORKDATE='"+curworkdate+"'"+\
            " WHERE SYSID='"+TradeContext.sysId+"' AND UNITNO='"+TradeContext.unitno+"'"
    else:
        sql="UPDATE AFA_SUBUNITADM SET PREWORKDATE=WORKDATE,WORKDATE='"+curworkdate+"' "+\
            " WHERE SYSID='"+TradeContext.sysId+"' AND UNITNO='"+TradeContext.unitno+"' AND "\
            "SUBUNITNO='"+TradeContext.subUnitno+"'"
    AfaLoggerFunc.tradeInfo(sql )
    records=AfaDBFunc.UpdateSqlCmt( sql )
    if( records <0 ):
        AfaLoggerFunc.tradeFatal( sql )
        return AfaFlowControl.ExitThisFlow( 'A0025', '数据库错误,商户信息表操作异常:'+AfaDBFunc.sqlErrMsg )
    return True
Exemple #49
0
def GetFtpConfig( ):
    
    AfaLoggerFunc.tradeInfo( '--->获取地市ftp配置信息' )

    sql = " select * from fs_dsconf "
  
    records = AfaDBFunc.SelectSql( sql )
    
    if records == None:
        TradeContext.errorCode,TradeContext.errorMsg    =   "0001","查找地市ftp配置信息异常"
        AfaLoggerFunc.tradeInfo( TradeContext.errorMsg )
        return False
    elif len( records ) == 0:
        TradeContext.errorCode,TradeContext.errorMsg    =   "0001","没有找到地市ftp配置信息"
        AfaLoggerFunc.tradeInfo( TradeContext.errorMsg )
        return False
    else:
        TradeContext.ldir = records[0][5]       #本地路径
        return records
Exemple #50
0
def SubModuleDoSnd():
    AfaLoggerFunc.tradeInfo('进入安徽交罚查询交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' )
    
    try:
        names = Party3Context.getNames( )
        for name in names:
            value = getattr( Party3Context, name )
            if ( not name.startswith( '__' ) and type(value) is StringType) :
                setattr( TradeContext, name, value )
          
        if(TradeContext.errorCode=='0000'):
            TradeContext.errorMsg="安徽交罚查询成功"
        
        AfaLoggerFunc.tradeInfo(TradeContext.errorMsg)
        AfaLoggerFunc.tradeInfo('退出安徽交罚查询交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' )    
        return True
        
    except Exception, e:
        AfaFlowControl.ExitThisFlow( "E0001", str(e) )
Exemple #51
0
def SubModuleMainFst( ):
    TradeContext.TransCode='2111'
    AfaLoggerFunc.tradeInfo('财税库行_对账回执处理_前处理[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' )
    try:

        #=============获取平台流水号====================
        if TipsFunc.GetSerialno( ) == -1 :
            AfaLoggerFunc.tradeInfo('>>>处理结果:获取平台流水号异常' )
            return TipsFunc.ExitThisFlow( 'A0027', '获取流水号失败' )

        #=============与第三方通讯====================
        AfaAfeFunc.CommAfe()
                
        TradeContext.errorCode='0000'
        TradeContext.errorMsg='交易成功'
        AfaLoggerFunc.tradeInfo('财税库行_对账回执处理_前处理结束[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']' )
        return True
    except Exception, e:
        TipsFunc.exitMainFlow(str(e))
Exemple #52
0
def ChkCustInfo( ):

    sql = ""

    AfaLoggerFunc.tradeInfo('>>>判断个人协议是否有效')

    try:
        sql = "SELECT USERNAME,IDTYPE,IDCODE,PROTOCOLNO FROM ABDT_CUSTINFO WHERE "
        sql = sql + "APPNO="      + "'" + TradeContext.I1APPNO      + "'" + " AND "       #业务编号
        sql = sql + "BUSINO="     + "'" + TradeContext.I1BUSINO     + "'" + " AND ("      #单位编号
        sql = sql + "BUSIUSERNO=" + "'" + TradeContext.I1BUSIUSERNO + "'" + " OR "        #商户客户编号
        sql = sql + "BANKUSERNO=" + "'" + TradeContext.I1BANKUSERNO + "'" + " OR "        #银行客户编号
        sql = sql + "ACCNO="      + "'" + TradeContext.I1ACCNO      + "'" + ") AND "      #银行账号
        sql = sql + "STATUS="     + "'" + "1"                       + "'"                 #状态


        AfaLoggerFunc.tradeInfo( sql )


        records = AfaDBFunc.SelectSql( sql )
        if ( len(records) == 0 ):
            return ExitSubTrade('9000','没有该客户信息,不能进行相关的操作')


        #过滤None
        AfaUtilTools.ListFilterNone( records )

        TradeContext.USERNAME  = str(records[0][0])
        TradeContext.IDTYPE    = str(records[0][1])
        TradeContext.IDCODE    = str(records[0][2])
        rPROTOCOLNO            = str(records[0][3])
        TradeContext.ACCSTATUS = "0"

        if ( rPROTOCOLNO != TradeContext.I1PROTOCOLNO ):
            return ExitSubTrade( '9000', '不能修改个人协议编码')

        return True


    except Exception, e:
        AfaLoggerFunc.tradeFatal( str(e) )
        return ExitSubTrade( '9999', '判断个人协议信息是否存在异常')
Exemple #53
0
def file_Pro( ):
    try:
        
        #-----1,查询未处理的批量文件
        sql = ""
        sql = sql + " select batchno,filename,workdate,busino,WorkTime,tellerno,filename"
        sql = sql + " from ahnx_file"
        sql = sql + " where status='0'"        #上传成功
        sql = sql + " and filetype='4'"        #已有账号签约
        
        AfaLoggerFunc.tradeInfo('>>>>>>>开始查询AHNX_FILE原交易:'+ str(sql))
        records = AfaDBFunc.SelectSql( sql )
                  
        if records==None:
            return ExitSubTrade("D0001" ,"查询AHNX_FILE失败")
        elif(len(records) == 0):
            return ExitSubTrade("D0001" ,"无此信息")
            
        else:
            AfaLoggerFunc.tradeInfo("AHNX_FILE表中的记录数:" +str(len(records)))
            for i in range(len(records)):
                #委托号
                TradeContext.batchno      = records[i][0]
                #取得批量签约需转换的文件名
                TradeContext.FileName = records[i][1]
                #开户日期
                TradeContext.WorkDate     = records[i][2]
                #单位编号
                TradeContext.I1BUSINO     = records[i][3]
                #时间
                TradeContext.WorkTime     = records[i][4]
                #柜员号
                TradeContext.I1USID       = records[i][5]
                #原始文件名
                TradeContext.preFilename  = records[i][6]
                #把批量开户成功的数据转换成社保需要的文件格式
                if ( not CrtXnbFile_To_Sb( ) ):
                    continue
                
    except Exception, e:
        AfaLoggerFunc.tradeFatal( str(e) )
        return False
Exemple #54
0
def SubModuleDoTrd( ):
    
    AfaLoggerFunc.tradeInfo('进入缴费交易[T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode+']与第三方通讯后处理' )
    
    names = Party3Context.getNames( )
   
    for name in names:
        value = getattr( Party3Context, name )
        if ( not name.startswith( '__' ) and type(value) is StringType or type(value) is ListType) :
            setattr( TradeContext,name, value )
    
    if( TradeContext.errorCode == '0000' ):
        TradeContext.errorMsg = '交易成功'
    else:
        AfaLoggerFunc.tradeInfo('与第三方交易失败')
        return False

    AfaLoggerFunc.tradeInfo('退出缴费交易与第三方通讯后处理' )
    
    return True
Exemple #55
0
def CrtBatchNo( ):

    AfaLoggerFunc.tradeInfo('>>>生成批次委托号')

    try:
        sqlStr = "SELECT NEXTVAL FOR ABDT_ONLINE_SEQ FROM SYSIBM.SYSDUMMY1"

        records = AfaDBFunc.SelectSql( sqlStr )
        if records == None :
            AfaLoggerFunc.tradeFatal( AfaDBFunc.sqlErrMsg )
            return ExitSubTrade( '9000', '生成委托号异常' )

        #批次号
        TradeContext.BATCHNO = TradeContext.TranDate + str(records[0][0]).rjust(8, '0')

        return True

    except Exception, e:
        AfaLoggerFunc.tradeFatal( str(e) )
        return ExitSubTrade( '9999', '生成委托号异常' )
Exemple #56
0
def GetData(RemoteFileName,LocalFileName):

    ##======== START 20091110 by zhangheng ===============================================================
    try:
        HOSTIP    =  TradeContext.CROP_HOSTIP
        HOSTPORT  =  '21'
        USERNO    =  TradeContext.CROP_USERNO
        PASSWD    =  TradeContext.CROP_PASSWD
        LDIR      =  TradeContext.CROP_LDIR
        RDIR      =  TradeContext.CROP_RDIR

        #设置默认超时时间
        socket.setdefaulttimeout(15)
        #建立FTP实例
        ftp_p = ftplib.FTP()
        #连接FTP
        ftp_p.connect(HOSTIP,HOSTPORT)
        #登陆FTP
        ftp_p.login(USERNO,PASSWD)
        #移动到远程FTP服务器指定目录
        ftp_p.cwd(RDIR)
        #以写入方式打开本地文件
        file_handler = open(LDIR + "/" + LocalFileName,'wb')
        #获取指定下载文件内容,并写入到本地文件
        ftp_p.retrbinary("RETR " + RDIR + "/" + RemoteFileName,file_handler.write)
        #关闭本地文件
        file_handler.close()
        #退出FTP
        ftp_p.quit()

        #判断本地文件是否生成,若未生成,则抛出异常
        if not os.path.exists(LDIR + "/" + LocalFileName):
            AfaLoggerFunc.tradeInfo("文件[" + LDIR + "/" + LocalFileName + "]下载失败")
            return -1
        AfaLoggerFunc.tradeInfo("文件[" + LDIR + "/" + LocalFileName + "]下载成功")

        return 0
    ##========= END ================================================================
    except Exception, e:
        AfaLoggerFunc.tradeInfo('FTP处理异常')
        return -1
Exemple #57
0
def Query():
    try:
        if( TradeContext.existVariable( "PAYEEBANKNO" ) and len(TradeContext.PAYEEBANKNO)<=0):
            return AfaFlowControl.ExitThisFlow( 'A0027', '[清算国库支付系统行号]:不能为空')
        if( TradeContext.existVariable( "PAYBKCODE" ) and len(TradeContext.PAYBKCODE)<=0):
            return AfaFlowControl.ExitThisFlow( 'A0027', '[国库关联行行号]:不能为空')
        
        sql="SELECT PAYEEBANKNO,TRECODE,TRENAME,PAYEEACCT,PAYEEACCTNAME,PAYBKCODE,PAYBKNAME,LIQUIDATEMODE,STATUS,BRNO,TELLERNO,NOTE1,NOTE2,NOTE3,NOTE4,NOTE5 "
        sql=sql+" FROM TIPS_LIQUIDATE_ADM WHERE 1=1 "
        sql=sql+"AND PAYEEBANKNO='"+ TradeContext.PAYEEBANKNO+"'"
        sql=sql+"AND PAYBKCODE='"+ TradeContext.PAYBKCODE+"'"
        AfaLoggerFunc.tradeInfo(sql)
        records = AfaDBFunc.SelectSql(sql)
        if( records == None ):
            AfaLoggerFunc.tradeFatal(sql)
            return AfaFlowControl.ExitThisFlow( 'A0002', '数据库操作异常:'+AfaDBFunc.sqlErrMsg )
        elif( len(records) ==0 ):
            return AfaFlowControl.ExitThisFlow( 'A0027', '未此清算信息' )
        elif( len(records) > 1 ):
            return AfaFlowControl.ExitThisFlow( 'A0027', 'TIPS_LIQUIDATE_ADM表配置错误' )
        else:
            if records[0][7]=='0':
                return AfaFlowControl.ExitThisFlow( 'A0027', '业务已停止' )
            if records[0][7]=='2':
                return AfaFlowControl.ExitThisFlow( 'A0027', '业务已暂停' )
            TradeContext.PAYEEBANKNO    = records[0][0]
            TradeContext.TRECODE        = records[0][1]
            TradeContext.TRENAME        = records[0][2]
            TradeContext.PAYEEACCT      = records[0][3]
            TradeContext.PAYEEACCTNAME  = records[0][4]
            TradeContext.PAYBKCODE      = records[0][5]
            TradeContext.PAYBKNAME      = records[0][6]
            TradeContext.LIQUIDATEMODE  = records[0][7]
            TradeContext.BRNO           = records[0][8]
            TradeContext.TELLERNO       = records[0][10]
            
            
        return True
    except Exception, e:
        AfaLoggerFunc.tradeInfo(e)
        return AfaFlowControl.ExitThisFlow('9999', '程序处理异常'+str(e))
Exemple #58
0
def ExpUnitInfo( filename ):

    AfaLoggerFunc.tradeInfo( '--->开始导出单位协议签约数据' )
    try:
      
      os.system("db2 connect to maps")
      
      #cmd = "db2 \" export to '" + TradeContext.ldir + "/" + filename + "' of del select * from abdt_unitinfo where appno in ('AG2008','AG2012')\" "
      #begin 20110811 修改,因为芜湖扬子银行三县支行非税与当地非税的012相互冲突,所以增加银行编码015,新增AG2104与银行编码015对应
      cmd = "db2 \" export to '" + TradeContext.ldir + "/" + filename + "' of del select * from abdt_unitinfo where appno in ('AG2008','AG2012','AG2104')\" "
      #end 20110811
      os.system( cmd )
      
      os.system("db2 disconnect maps")
      
      return True
    
    except Exception, e:
        AfaLoggerFunc.tradeInfo(e)
        AfaLoggerFunc.tradeInfo('导出单位协议签约数据异常')
        return False
Exemple #59
0
def SubModuleDoFst():
    AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8554]进入***' )
    
    #=====查询汇兑单笔信息====
    trcbka = {}
    bka = rccpsDBFunc.getTransTrc(TradeContext.BJEDTE,TradeContext.BSPSQN,trcbka)
    if bka == False:
        return  AfaFlowControl.ExitThisFlow('M999','查询单笔信息失败') 
    else:
        AfaLoggerFunc.tradeInfo( '>>>查询成功' )
        #=====字典赋值到TradeContext====
        rccpsMap8554Dtrcbka2CTradeContext.map(trcbka)
        
    TradeContext.OCCAMT    = str(trcbka['OCCAMT'])              #金额
    TradeContext.LOCCUSCHRG    = str(trcbka['LOCCUSCHRG'])      #手续费金额 增加于20091228  张恒
    
    TradeContext.errorCode = '0000'
    TradeContext.errorMsg  = '查询成功'

    AfaLoggerFunc.tradeInfo( '***农信银系统:往账.本地类操作(1.本地操作)交易[TRC001_8554]退出***' )
    return True
Exemple #60
0
def main( ):

    AfaLoggerFunc.tradeInfo('********安徽省新农保.批量模板['+TradeContext.TemplateCode+']进入********')

    try:
    
        #=====================初始化返回报文变量================================
        TradeContext.tradeResponse=[]

       
        #=====================获取系统日期时间==================================
        TradeContext.WorkDate=AfaUtilTools.GetSysDate( )
        TradeContext.WorkTime=AfaUtilTools.GetSysTime( )
        
        #=====================判断应用系统状态==================================
        if not AfaFunc.ChkSysStatus( ) :
            raise AfaFlowControl.flowException( )


        #=====================动态加载交易脚本==================================
        trxModuleName = 'T'+TradeContext.TemplateCode+'_'+TradeContext.TransCode
        try:
            trxModuleHandle=__import__( trxModuleName )

        except Exception, e:
            AfaLoggerFunc.tradeInfo(e)
            raise AfaFlowControl.flowException( 'A0001', '加载交易脚本失败或交易脚本不存在' )


        #=====================安徽新农保业务个性化操作==========================
        if not trxModuleHandle.TrxMain( ) :
            raise AfaFlowControl.flowException( TradeContext.errorCode,TradeContext.errorMsg)


        #=====================自动打包==========================================
        AfaFunc.autoPackData()


        #=====================退出模板==========================================
        AfaLoggerFunc.tradeInfo('********安徽省新农保.批量模板['+TradeContext.TemplateCode+']退出********')