📄 cms667.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms667.SQC ** 函数名称 : cms216062 ** 所属子系统 : CMS ** 当前文件版本 : 1.0.0.0 ** 作 者 : xuliang ** 版本创建日期 : 2004/12/30 ** 功能描述 : 账户移入/移出打印 ** 修改记录 : ** 修改人 修改日期 修改日期*********************************************************************/#include "sysdefine.h"#include <stdio.h>#include "pubcom.h"#include "funcapi.h"#include "code.h"#include "attrdef.h"#include "cmscode.h"#include <fcntl.h>#include "ciscustomerinfo.h"#include "cmscardinfo.h"#include "cmsactiom.h"#include "errlog.h"#include "cmsacctm.h"#include "pubinq.h"EXEC SQL INCLUDE sqlca;#define OVERPAGE 45 /* 满页行数 */ #define OVERLINE 5 /* 换行行数 */ #define LIMIT 50struct prtdata{ char acCardNo[CARDNO_LEN +1]; /* 卡号 */ char acAcctNo[BIT23_LEN + 1]; /* 帐号 */ char acSubAcct[BIT23_LEN + 1]; /* 款项代码 */ char acAcctSeqno[ACCTSEQNO_LEN + 1]; /* 卡内帐户序号 */ char acBussKind[BIT40_LEN + 1]; /* 业务种类 */ char acCustName[CUSTNAME_LEN + 1]; /* 姓名/单位名称 */ char acTranDate[DATE_LEN + 1]; /* 交易日期 */ char acTeller[TNAME_LEN + 1]; /* 交易柜员 */ char acBrc[BRC_LEN + 1]; /* 交易机构码 */ char acOpflg[BIT5_LEN + 1]; /* 操作方式 */ char dBal[18]; /* 帐户余额 */};#define PRTLINE \ if( prtline( fp, acFmtFile,acPrtData ) ) \ FUNCERR_PRO \ iLineCount++;#define PRTHEAD \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp,"title:%s", acBankname); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "title0:%s|%s|%d", \ pstPubcom->acBrc,stPrtdata.acCustName, iPage ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "head:" ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "body:" ); \ iLineCount++;#define PRTBODY \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "body0:%s|%s|%s|%s|%s|%s|%s|%s|%s|%s", \ stPrtdata.acCardNo, stPrtdata.acAcctNo, \ stPrtdata.acSubAcct, stPrtdata.acAcctSeqno, \ stPrtdata.acBussKind, stPrtdata.acTranDate, \ stPrtdata.acTeller, stPrtdata.acBrc, \ stPrtdata.acOpflg, stPrtdata.dBal ); \ iLineCount++; \ iLine ++ ; #define PRTFOOT \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "tail1:" ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "bottm:%s", \ pstPubcom->acTeller ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "next:%s",pstPubcom->acTranDate ); \ iLineCount++; \ iPage ++ ; iLine = 0 ; int cms216062(pstPubcom)struct pubcom *pstPubcom;{ EXEC SQL BEGIN DECLARE SECTION; char acCardNo[CARDNO_LEN +1]; /* 卡号 */ char acAcctNo[ACCT_LEN + 1]; /* 帐号 */ char pcPasswd[BIT17_LEN + 1]; /* 卡密码 */ char acWhrStr[ 512 ]; EXEC SQL END DECLARE SECTION; char acBankname[ 41 ]; char acBuffer[512]; char acBuffer1[512]; char acBussKind[BUSSKIND_LEN + 1]; /* 业务种类 */ char acOpflg[BIT2_LEN + 1]; /* 操作方式 */ char acSubAcct[ACCT_LEN + 1]; /* 款项代码 */ FILE *fp,*fmtfp; /* 文件指针 */ int iRtn; char acSelStr[ 301 ]; double dBal=0.00; /* 余额 */ int iLineCount = 0 ; int i, iPage, iLine ; char acTableName[PRDCODE_LEN + 1]; /* 表名称 */ char acFileName[FILENAME_LEN + 1]; /* 文件名称 */ char acFmtFile[ 101 ]; char acPrtData[ 4096 ]; struct prtdata stPrtdata; struct ciscustomerinfo stCisCustomerInfo; /* 客户公用基本信息文件 */ struct cmscardinfo stCmsCardInfo; /* 卡片信息表 */ struct cmsacctm stCmsAcctM; /* 卡账户对照表 */ BASESUBACCTINFO stDpsAccInfo; /* 静态表 */ memset( acBuffer, 0x00, sizeof( acBuffer ) ); memset( acBuffer1, 0x00, sizeof( acBuffer1 ) ); memset( acSelStr, 0x00, sizeof( acSelStr ) ); memset( acWhrStr, 0x00, sizeof( acWhrStr ) ); memset( pcPasswd, 0x00, sizeof( pcPasswd ) ); memset( acCardNo, 0x00, sizeof( acCardNo ) ); memset( acAcctNo, 0x00, sizeof( acAcctNo ) ); memset( acFileName, 0x00, sizeof( acFileName ) ); memset( acTableName, 0x00, sizeof( acTableName ) ); memset( &stCisCustomerInfo, 0x00, sizeof( struct ciscustomerinfo ) ); memset( &stDpsAccInfo, 0x00, sizeof( BASESUBACCTINFO ) ); memset( acBankname, 0x00, sizeof(acBankname)); if ( pubGetBaseInfo("BANKNAME", acBankname ) ) FUNCERR_PRO /* 取数据字典 */ getstring( "CardNo", acCardNo ); getstring( "AcctNo", acAcctNo ); getstring( "Passwd1", pcPasswd ); sprintf( g_acTrcMsg,"CardNo[%s]AcctNo[%s]", acCardNo,acAcctNo ); TRCLOG4 fp = (FILE *)BeginFile( pstPubcom, NULL ); if ( fp == NULL ) { ERRLOG return FAILED ; } sprintf( acFmtFile, "%s/fmt/cms662.fmt", getenv("HOME") ); sprintf( g_acFmtFile, acFmtFile ); if( ( fmtfp=fopen( acFmtFile,"r" ) ) == NULL ) { strcpy( g_acTrcMsg, acFmtFile ); TRCLOG4 strcpy( g_acRspCode, "CMS1B0" ); sprintf( g_acRspMsg, "打开格式文件[%s]错", acFmtFile ); ERRLOG goto Exit; } 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 iLine = 0 ; iPage = 1 ; sprintf( acWhrStr, " select * from cmsactiom "); strcat( acWhrStr, " 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 ); } sprintf( acWhrStr+strlen(acWhrStr), " ORDER BY trandate, cardno DESC" ); strcpy( g_acTrcMsg, acWhrStr ); TRCLOG4 strcpy( acTableName, "cms662" ); sprintf( acFileName, "%s%s%s", acTableName, pstPubcom->acBrc,pstPubcom->acTeller); 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( &stPrtdata, 0x00, sizeof( struct prtdata ) ); memset( &stDpsAccInfo, 0x00, sizeof( BASESUBACCTINFO ) ); pubInitCmspcdreg(); 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 ); ERRLOG SQLCLOSECUR(actiom_cur,"actiom_cur") 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 if ( strlen (pcPasswd) ) { sprintf( g_acTrcMsg,"[%s][%s][%s]", cmsactiom_cardno, cmsactiom_subacct,cmsactiom_ccy ); TRCLOG4 strcpy( stCmsAcctM.cardno, cmsactiom_cardno ); strcpy( stCmsAcctM.acctseqno, cmsactiom_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, cmsactiom_subacct, cmsactiom_ccy, "1100000000000000", "0","0", &stDpsAccInfo); if (iRtn) { strcpy( g_acRspCode, RSP_OK ); } } } } strpack ( cmsactiom_brc ); strpack ( cmsactiom_opflg ); strpack ( cmsactiom_subacct ); strcpy ( stPrtdata.acCardNo, cmsactiom_cardno ); strncpy( stPrtdata.acAcctNo, cmsactiom_acctno, 22 ); strncpy( stPrtdata.acSubAcct, cmsactiom_subacct, 22 ); strcpy ( stPrtdata.acAcctSeqno, cmsactiom_acctseqno ); strcpy ( stPrtdata.acBussKind, acBuffer ); strcpy ( stPrtdata.acCustName, cmsactiom_custname ); strcpy ( stPrtdata.acTranDate, cmsactiom_trandate ); strcpy ( stPrtdata.acBrc, cmsactiom_brc ); strcpy ( stPrtdata.acTeller, cmsactiom_teller ); strcpy ( stPrtdata.acOpflg, acBuffer1 ); sprintf( stPrtdata.dBal, "%.2lf",stDpsAccInfo.dBal ); sprintf( g_acTrcMsg, "acCardNo[%s],acSubAcct[%s],acAcctSeqno[%s],acBussKind[%s],acCustName[%s],acTranDate[%s],acBrc[%s],acTeller[%s],acOpflg[%s],[%s]",stPrtdata.acCardNo, stPrtdata.acSubAcct,stPrtdata.acAcctSeqno,stPrtdata.acBussKind,stPrtdata.acCustName,stPrtdata.acTranDate,stPrtdata.acBrc,stPrtdata.acTeller,stPrtdata.acOpflg,stPrtdata.dBal); TRCLOG4 if( iLine == 0 ) { PRTHEAD } PRTBODY if( iLine % OVERPAGE == 0 ) { PRTFOOT } sprintf( g_acTrcMsg, "%s|%s|%s|%s|%s|%s|%s|%s|%s", \ stPrtdata.acCardNo, stPrtdata.acSubAcct, \ stPrtdata.acAcctSeqno, \ stPrtdata.acBussKind, stPrtdata.acCustName, \ stPrtdata.acTranDate, \ stPrtdata.acTeller, stPrtdata.acBrc, \ stPrtdata.acOpflg ); \ TRCLOG4 } SQLCLOSECUR(actiom_cur,"actiom_cur") if( iLine < OVERPAGE && iLine != 0 ) { PRTFOOT } if( iLineCount == 0 ) { strcpy( g_acRspCode, "CMS113" ); sprintf( g_acRspMsg, "无满足条件的纪录!" ); ERRLOG goto Exit ; }Exit: fclose( fmtfp ); fclose( fp ); if( !strcmp( g_acRspCode, RSP_OK ) ) { SetInqFormid(pstPubcom, "") ; return SUCCESS; } else return FAILED ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -