📄 cms605.sqc
字号:
/********************************************************************** 源码文件名称 : cms605.SQC** 所属子系统 : CMS** 当前文件版本 : 4.0.0.0** 作者 : ZhouR** 版本创建日期 : 2004/10/15** 功能描述 : 帐户移入/移出登记簿查询 ** 修改记录 :** 修改人 修改日期 修改日期*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include "cmscode.h"#include <stdio.h>#include <fcntl.h>#include "ciscustomerinfo.h"#include "cmscardinfo.h"#include "cmsbussprd.h"#include "cmsactiom.h"#include "cmsacctm.h"#include "pubinq.h"EXEC SQL INCLUDE SQLCA;int cms216005( PUBCOM *pstPubcom ){ EXEC SQL BEGIN DECLARE SECTION; char acWhrStr[ 512 ]; char acPrdName[BIT41_LEN + 1]; char acChName[BIT17_LEN + 1]; EXEC SQL END DECLARE SECTION; /*定义局部变量*/ struct ciscustomerinfo stCisCustomerInfo; /* 客户公用基本信息文件 */ struct cmscardinfo stCmsCardInfo; /* 卡片信息表 */ struct cmsbussprd stCmsBussPrd; /* 业务品种与产品代码对照表*/ struct cmsactiom stCmsActiom; /* 帐户移入移出登记簿 */ struct cmsacctm stCmsAcctM; /* 卡账户对照表 */ BASESUBACCTINFO stDpsAccInfo; /* 静态表 */ char acFileName[FILENAME_LEN + 1]; /* 文件名称 */ char acTableName[PRDCODE_LEN + 1]; /* 表名称 */ char acBuffer[512]; char acBuffer1[512]; char acBussKind[BUSSKIND_LEN + 1]; /* 业务种类 */ char acOpflg[BIT2_LEN + 1]; /* 操作方式 */ char acSelStr[ 301 ]; char acCardNo[ CARDNO_LEN + 1 ]; /* 卡号 */ char acAcctNo[ ACCT_LEN + 1 ]; /* 帐号 */ char acBeginDate[ DATE_LEN + 1 ]; /* 起始日期 */ char acEndDate[ DATE_LEN + 1 ]; /* 终止日期 */ char pcPasswd[BIT17_LEN + 1]; /* 卡密码 */ int iRtn; double dBal=0.00; /* 余额 */ int iCount=0; /* 计数器 */ FILE *fp; /* 文件指针 */ strcpy( g_acRspMsg, "子交易: 帐户移入/移出登记簿查询打印子交易开始..." ); TRCLOG4 /* 初始化 */ memset( &stCisCustomerInfo, 0x00, sizeof( struct ciscustomerinfo ) ); memset( &stDpsAccInfo, 0x00, sizeof( BASESUBACCTINFO ) ); memset( &stCmsActiom, 0x00, sizeof( struct cmsactiom ) ); memset( &stCmsCardInfo, 0x00, sizeof( struct cmscardinfo ) ); memset( &stCmsBussPrd, 0x00, sizeof( struct cmsbussprd ) ); memset( acCardNo, 0x00, sizeof( acCardNo ) ); memset( acAcctNo, 0x00, sizeof( acAcctNo ) ); memset( acSelStr, 0x00, sizeof( acSelStr ) ); memset( acWhrStr, 0x00, sizeof( acWhrStr ) ); memset( acBussKind, 0x00, sizeof( acBussKind ) ); memset( acOpflg, 0x00, sizeof( acOpflg ) ); memset( acBeginDate, 0x00, sizeof( acBeginDate ) ); memset( acEndDate, 0x00, sizeof( acEndDate ) ); memset( pcPasswd, 0x00, sizeof( pcPasswd ) ); memset( acFileName, 0x00, sizeof( acFileName ) ); memset( acTableName, 0x00, sizeof( acTableName ) ); memset( acChName, 0x00, sizeof( acChName ) ); memset( acPrdName, 0x00, sizeof( acPrdName ) ); /* 取数据字典值 */ getstring( "CardNo", acCardNo ); getstring( "AcctNo", acAcctNo ); getstring( "BeginDate1", acBeginDate ); getstring( "EndDate1", acEndDate); getstring( "Passwd1", pcPasswd ); sprintf( g_acTrcMsg,"[%s],[%s],[%s],[%s],[%s]", acCardNo,acAcctNo, \ acBeginDate,acEndDate,pcPasswd ); TRCLOG3 strcpy( stCmsCardInfo.cardno, acCardNo ); sprintf( g_acTrcMsg,"CardNo[%s]", stCmsCardInfo.cardno ); TRCLOG4 /* 检查卡密码 */ if ( strlen(pcPasswd) && strlen( acCardNo ) ) { iRtn = cmsApiChkCardPwd( &stCmsCardInfo, pcPasswd, pstPubcom->acChannelId ); if ( iRtn ) { ERRLOG goto Exit; } strcpy( g_acTrcMsg, "cmsApiChkCardPwd finish " ); TRCLOG1 } strcpy( g_acTrcMsg, "cmsApiChkCardPwd finish " ); TRCLOG2 strcpy( acTableName, "cms605" ); sprintf(acFileName, "%s%s%s", acTableName, pstPubcom->acBrc, pstPubcom->acTeller); fp = (FILE *)BeginFile( pstPubcom, acFileName ); if ( fp == NULL ) { ERRLOG goto Exit; } /*组织查询字典*/ if (GetInqDict( fp , "216005" )) { ERRLOG goto Exit ; } sprintf( acWhrStr, " select * from cmsactiom where 1=1"); if ( strlen ( acCardNo ) > 0 ) { sprintf( acWhrStr+strlen(acWhrStr), " and cardno = '%s'", acCardNo ); } if ( strlen ( acAcctNo ) > 0 ) { sprintf( acWhrStr+strlen(acWhrStr), " and acctno = '%s'", acAcctNo ); } if ( strcmp ( acBeginDate, INITDATE ) ) { sprintf( acWhrStr+strlen(acWhrStr), " and trandate >= '%s'", acBeginDate ); } if ( strcmp ( acEndDate, INITDATE ) ) { sprintf( acWhrStr+strlen(acWhrStr), " and trandate <= '%s'", acEndDate ); } sprintf( acWhrStr+strlen(acWhrStr), " ORDER BY trandate, cardno, serseqno DESC" ); strcpy( g_acTrcMsg, acWhrStr ); TRCLOG4 EXEC SQL PREPARE pre_1 FROM :acWhrStr; if ( SQLCODE ) { strcpy( g_acRspCode, "CMS1A7" ); pubCrtRspInfo( SQLCODE ); ERRLOG goto Exit ; } EXEC SQL DECLARE actiom_cur CURSOR FOR pre_1; if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS110" ); pubCrtRspInfo("cmsactiom",SQLCODE ); ERRLOG goto Exit ; } SQLOPENCUR(actiom_cur,"actiom_cur") if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS111" ); pubCrtRspInfo("cmsactiom",SQLCODE ); ERRLOG goto Exit ; } for( ; ; ) { memset( acBuffer, 0x00, sizeof( acBuffer ) ); memset( acBuffer1, 0x00, sizeof( acBuffer1 ) ); memset( &stDpsAccInfo, 0x00, sizeof( BASESUBACCTINFO ) ); EXEC SQL FETCH actiom_cur into R_CMSACTIOM; if( SQLCODE == SQLNOTFOUND ) break ; sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS112" ); pubCrtRspInfo( "cmsactiom",SQLCODE ); SQLCLOSECUR(actiom_cur,"actiom_cur") ERRLOG goto Exit ; } sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 /* 翻译业务种类 */ strcpy ( acBussKind, cmsactiom_busskind ); TransMemo( "0027" , acBussKind , acBuffer); /* 翻译操作方式 */ strcpy ( acOpflg, cmsactiom_opflg ); TransMemo( "0028" , acOpflg , acBuffer1); sprintf( g_acTrcMsg,"SQLCODE[%s][%s]", acBuffer, acBuffer1 ); TRCLOG4 pubVtoSCmsactiom(&stCmsActiom); pubInitCmsbussprd(); EXEC SQL select description into :cmsbussprd_description from cmsbussprd where busskind=:cmsactiom_busskind; if( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy(g_acRspCode,"CMS112"); pubCrtRspInfo("cmsactiom",SQLCODE); ERRLOG SQLCLOSECUR(actiom_cur,"actiom_cur") goto Exit; } pubVtoSCmsbussprd(&stCmsBussPrd); /*根据币种代码取币种信息*/ pubInitPubcurrencyinfo(); EXEC SQL SELECT chname INTO :acChName FROM pubcurrencyinfo WHERE ccy = :cmsactiom_ccy; if( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy(g_acRspCode,"CMS112"); pubCrtRspInfo("pubcurrencyinfo",SQLCODE); ERRLOG SQLCLOSECUR(actiom_cur,"actiom_cur") goto Exit; } /* 根据产品代码取产品名称 */ pubInitDpssaveprdinfo(); pubInitDpstermprdinfo(); EXEC SQL SELECT prdname INTO :acPrdName FROM dpssaveprdinfo WHERE prdcode = :cmsactiom_prdcod; if( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy(g_acRspCode,"CMS112"); pubCrtRspInfo("dpssaveprdinfo",SQLCODE); ERRLOG SQLCLOSECUR(actiom_cur,"actiom_cur") goto Exit; } if ( SQLCODE == SQLNOTFOUND ) { EXEC SQL SELECT prdname INTO :acPrdName FROM dpstermprdinfo WHERE prdcode = :cmsactiom_prdcod; if( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy(g_acRspCode,"CMS112"); pubCrtRspInfo("dpstermprdinfo",SQLCODE); ERRLOG SQLCLOSECUR(actiom_cur,"actiom_cur") goto Exit; } } strcpy( g_acTrcMsg, acChName ); TRCLOG2 if ( strlen (pcPasswd) ) { sprintf( g_acTrcMsg,"SQLCODE[%s][%s][%s]", stCmsActiom.cardno, stCmsActiom.subacct, stCmsActiom.ccy ); TRCLOG4 memset( &stCmsAcctM, 0x00, sizeof( struct cmsacctm ) ); strcpy( stCmsAcctM.cardno, stCmsActiom.cardno ); strcpy( stCmsAcctM.acctseqno, stCmsActiom.acctseqno ); iRtn = cmsApiGetCmsAcctM( &stCmsAcctM ); if ( iRtn ) { strcpy( g_acRspCode, RSP_OK ); } else { if ( stCmsAcctM.status[ BIT1_LEN ] == NORMAL_STS ) { /* 按客户账号和款项代码获取账户信息 DPS API */ memset( &stDpsAccInfo, 0x00, sizeof( BASESUBACCTINFO ) ); iRtn = InqBaseSubAcct( pstPubcom, stCmsAcctM.acctno, stCmsActiom.subacct, stCmsActiom.ccy, "1100000000000000", "0","0", &stDpsAccInfo); if (iRtn) { strcpy( g_acRspCode, RSP_OK ); } } } } /* 拼写文件 */ fprintf( fp, "\"%s\"~\"%s\"~%d~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~" "\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~\"%s\"~" "\"%s\"~\"%s\"~\"%s\"~\"%s\"~%.2lf\n", stCmsActiom.cardno, /* 卡号 */ stCmsActiom.trandate, /* 交易日期 */ stCmsActiom.serseqno, /* 主机流水号 */ stCmsActiom.vouchno, /* 登记簿编号 */ stCmsActiom.acctseqno, /* 卡内帐户序号 */ stCmsActiom.busskind, /* 业务种类 */ stCmsBussPrd.description, /* 业务种类说明 */ stCmsActiom.opflg, /* 操作方式 */ stCmsActiom.ccy, /* 币种 */ acChName, /* 币种名称 */ stCmsActiom.prdcod, /* 产品代码 */ acPrdName, /* 产品名称 */ stCmsActiom.acctno, /* 帐号 */ stCmsActiom.subacct, /* 款项代码 */ stCmsActiom.idtype, /* 证件类型 */ stCmsActiom.idcode, /* 证件号码 */ stCmsActiom.custname, /* 姓名/单位名称*/ stCmsActiom.issuebrc, /* 发卡机构码 */ stCmsActiom.brc, /* 交易机构码 */ stCmsActiom.teller, /* 交易柜员 */ stDpsAccInfo.dBal); /* 余额 */ iCount ++; } SQLCLOSECUR(actiom_cur,"actiom_cur") EndFile( fp ); if (iCount == 0) { strcpy( g_acRspCode, "CMS1B7" ); pubCrtRspInfo( "帐户移入/移出"); ERRLOG return FAILED; } /* 出口赋值 */Exit: EndFile( fp ); if( !strcmp( g_acRspCode, RSP_OK ) ) { SetInqFormid(pstPubcom, "216005") ; sprintf( g_acTrcMsg,"帐户移入/移出登记簿查询打印正常结束"); TRCLOG4 return SUCCESS; } else { sprintf( g_acTrcMsg,"帐户移入/移出登记簿查询打印失败"); TRCLOG4 return FAILED ; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -