📄 cms655.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms655.SQC ** 函数名称 : cms216055 ** 所属子系统 : CMS ** 当前文件版本 : 1.0.0.0 ** 作 者 : ZhouR ** 版本创建日期 : 2004/10/14 ** 功能描述 : 客户下卡号和各分帐号打印 ** 修改记录 : ** 修改人 修改日期 修改日期*********************************************************************/#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 "cmsacctm.h"#include "errlog.h"#include "pubinq.h"EXEC SQL INCLUDE sqlca;#define OVERPAGE 45 /* 满页行数 */ #define OVERLINE 5 /* 换行行数 */ #define LIMIT 50struct prtdata{ char acCustNo[CUSTNO_LEN +1]; /* 客户号 */ char acCardNo[CARDNO_LEN +1]; /* 卡号 */ char acAcctSeqNo[ACCTSEQNO_LEN +1]; /* 卡内帐户序号 */ char acCcy[BIT15_LEN + 1]; /* 币种 */ char acPrdCod[PRDCODE_LEN + 1]; /* 产品代码 */ char acAcctNo[23]; /* 帐号 */ char acSubAcct[23]; /* 款项代码 */ char acAccOwner[11]; /* 帐户属主 */ char acIssueDate[DATE_LEN + 1]; /* 开户/移入日期*/ char acIssueBrc[BRC_LEN +1]; /* 开户/移入机构*/ char acCardBookFlag[9]; /* 卡折标志 */ char acStatus[9]; /* 帐户状态 */};#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|%d", \ stPrtdata.acCustNo, 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", \ stPrtdata.acCardNo, stPrtdata.acAcctSeqNo, \ stPrtdata.acCcy, stPrtdata.acPrdCod, \ stPrtdata.acAcctNo, stPrtdata.acSubAcct, \ stPrtdata.acAccOwner, stPrtdata.acCardBookFlag, \ stPrtdata.acStatus ); \ iLineCount++; \ iLine ++ ; #define PRTFOOT \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "tail1:" ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "bottm:%s|%s", \ pstPubcom->acBrc, pstPubcom->acTeller ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "next:%s",pstPubcom->acTranDate ); \ iLineCount++; \ iPage ++ ; iLine = 0 ; int cms216055(pstPubcom)struct pubcom *pstPubcom;{ /*定义局部变量*/ char acAccOwner[FLAG1_LEN + 1]; /* 帐户属主 */ char acCardBookFlag[FLAG1_LEN + 1]; /* 卡折标志 */ char acStatus[FLAG1_LEN + 1]; /* 帐户状态 */ char acCcy[CCY_LEN + 1]; /* 币种 */ char pcPasswd[PASSWD_LEN + 1]; /* 卡密码 */ char acBuffer[ 15 ]; char acBuffer1[ 11 ]; char acBuffer2[ 9 ]; char acBuffer3[ 15 ]; char acBankname[ 41 ]; FILE *fp,*fmtfp; /* 文件指针 */ int iLineCount = 0 ; int i, iPage, iLine ; char acFmtFile[ 101 ]; char acPrtData[ 4096 ]; char acFileName[FILENAME_LEN + 1]; /* 文件名称 */ char acTableName[PRDCODE_LEN + 1]; /* 表名称 */ char acIdType[IDTYPE_LEN + 1]; /* 证件类型 */ char acIdNo[IDNO_LEN + 1]; /* 证件号码 */ char acCustName[CUSTNAME_LEN + 1]; /* 客户姓名 */ int iRtn; int iCount=0; /* 计数器 */ struct prtdata stPrtdata; struct ciscustomerinfo stCisCustomerInfo; /* 客户公用基本信息文件 */ struct cmsacctm stCmsAcctM; /* 卡帐户对照表 */ BASESUBACCTINFO stDpsAccInfo; /* 静态表 */ struct cmscardinfo stCmsCardInfo; /* 卡片信息表 */ strcpy( g_acRspMsg, "子交易: 客户下卡号和各分帐号查询打印子交易开始.." ); TRCLOG4 /* 初始化 */ memset( &stCisCustomerInfo, 0x00, sizeof( struct ciscustomerinfo ) ); memset( &stDpsAccInfo, 0x00, sizeof( BASESUBACCTINFO ) ); memset( &stCmsCardInfo,0x00, sizeof( struct cmscardinfo )); memset( &stCmsAcctM, 0x00, sizeof( struct cmsacctm ) ); memset( acAccOwner, 0x00, sizeof( acAccOwner ) ); memset( pcPasswd,0x00, sizeof( pcPasswd ) ); memset( acCcy, 0x00, sizeof( acCcy )); memset( acCardBookFlag, 0x00, sizeof( acCardBookFlag ) ); memset( acStatus, 0x00, sizeof( acStatus ) ); memset( acIdType, 0x00, sizeof( acIdType ) ); memset( acIdNo, 0x00, sizeof( acIdNo ) ); memset( acBuffer, 0x00, sizeof( acBuffer ) ); memset( acBuffer1, 0x00, sizeof( acBuffer1 ) ); memset( acBuffer2, 0x00, sizeof( acBuffer2 ) ); memset( acBuffer3, 0x00, sizeof( acBuffer3 ) ); memset( acCustName, 0x00, sizeof( acCustName ) ); memset( acFileName, 0x00, sizeof( acFileName ) ); memset( acTableName, 0x00, sizeof( acTableName ) ); memset( acBankname, 0x00, sizeof( acBankname ) ); if ( pubGetBaseInfo("BANKNAME", acBankname ) ) FUNCERR_PRO /* 取数据字典 */ getstring( "IdType", acIdType ); getstring( "IdNo", acIdNo ); getstring( "CustName", acCustName ); sprintf( g_acTrcMsg,"IdType[%s]IdNo[%s]CustName[%s]", \ acIdType,acIdNo,acCustName ); TRCLOG3 fp = (FILE *)BeginFile( pstPubcom, NULL ); if ( fp == NULL ) { ERRLOG return FAILED ; } sprintf( acFmtFile, "%s/fmt/cms655.fmt", getenv("HOME") ); sprintf( g_acFmtFile, acFmtFile ); if( ( fmtfp=fopen(acFmtFile,"r") ) == NULL ) { strcpy( g_acTrcMsg, acFmtFile ); TRCLOG2 strcpy( g_acRspCode, "CMS1B0" ); sprintf( g_acRspMsg, "打开格式文件[%s]错", acFmtFile ); ERRLOG goto Exit; } /* 检查卡密码 */ if ( strlen(pcPasswd) ) { iRtn = cmsApiChkCardPwd( &stCmsCardInfo, pcPasswd, pstPubcom->acChannelId ); if ( iRtn ) { ERRLOG goto Exit; } strcpy( g_acTrcMsg, "cmsApiChkCardPwd finish " ); TRCLOG1 } iLine = 0 ; iPage = 1 ; /*将输入参数赋值*/ if ( strlen ( acIdType ) > 0 ) { strcpy( stCisCustomerInfo.idtype, acIdType ); } if ( strlen ( acIdNo ) > 0 ) { strcpy( stCisCustomerInfo.idno, acIdNo ); } if ( strlen ( acCustName ) > 0 ) { strcpy( stCisCustomerInfo.customname, acCustName ); } /* 取客户号 */ pubStoVCiscustomerinfo( &stCisCustomerInfo ); EXEC SQL SELECT customid INTO :ciscustomerinfo_customid FROM ciscustomerinfo WHERE idtype=:ciscustomerinfo_idtype AND idno=:ciscustomerinfo_idno AND customname=:ciscustomerinfo_customname; sprintf( g_acTrcMsg,"CustNo[%s]",ciscustomerinfo_customid ); TRCLOG3 if( SQLCODE && SQLCODE != SQLNOTFOUND ) { sprintf( g_acRspCode, "CMS112"); pubCrtRspInfo( "ciscustomerinfo",SQLCODE ); TRCLOG3 goto Exit; } if( SQLCODE == SQLNOTFOUND ) { sprintf( g_acRspCode, "CMS113"); pubCrtRspInfo( "ciscustomerinfo",SQLCODE ); TRCLOG3 goto Exit; } /* 取卡号 */ pubStoVCmsacctm( &stCmsAcctM ); EXEC SQL DECLARE acc_l_cur CURSOR FOR SELECT * FROM CMSACCTM WHERE custno=:ciscustomerinfo_customid ORDER BY cardno,acctseqno; /* 定义游标出错 */ if ( SQLCODE ) { strcpy( g_acRspCode, "CMS110" ); pubCrtRspInfo( "cmsacctm", SQLCODE ); TRCLOG3; ERRLOG goto Exit; } SQLOPENCUR(acc_l_cur,"acc_l_cur") /* 打开游表出错 */ if ( SQLCODE ) { strcpy( g_acRspCode, "CMS111" ); pubCrtRspInfo( "cmsacctm", SQLCODE ); TRCLOG3; ERRLOG goto Exit; } while ( TRUE ) { pubInitCmsacctm(); EXEC SQL FETCH acc_l_cur INTO R_CMSACCTM ; /* 取游表出错 */ if ( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy( g_acRspCode, "CMS112" ); pubCrtRspInfo( "cmsacctm", SQLCODE ); TRCLOG3; ERRLOG SQLCLOSECUR(acc_l_cur,"acc_l_cur") goto Exit; } /* 记录不存在 */ else if ( SQLCODE == SQLNOTFOUND ) break; /* 记录存在 */ pubVtoSCmsacctm( &stCmsAcctM ); if ( strlen (pcPasswd) ) { /* 按客户账号和款项代码获取账户信息 DPS API */ memset( &stDpsAccInfo, 0x00, sizeof( BASESUBACCTINFO ) ); iRtn = InqBaseSubAcct( pstPubcom, stCmsAcctM.acctno, stCmsAcctM.subacct, stCmsAcctM.ccy, "1100000000000000", "0","0", &stDpsAccInfo); if (iRtn) { strcpy( g_acRspCode, RSP_OK ); } if ( stCmsAcctM.status[0]=='2' || stCmsAcctM.status[0]=='1' ) { stDpsAccInfo.dAvailBal=0.0; stDpsAccInfo.dBal=0.0; } } /* 转换帐户属主 */ strcpy ( acAccOwner, stCmsAcctM.accowner ); switch ( acAccOwner[ BIT1_LEN ] ) { case BELONGFCARD: strcpy( acBuffer , "属于附属卡" ); break; case BELONGMAINCARD: strcpy( acBuffer , "属于主卡" ); break; default: acBuffer[ BIT1_LEN ] = acAccOwner[ BIT1_LEN ]; break; } /* 转换卡折标志 */ strcpy ( acCardBookFlag, stCmsAcctM.cardbookflag ); switch ( acCardBookFlag[ BIT1_LEN ] ) { case ACCOPENFLG_CARD: strcpy( acBuffer1 , "帐户无折" ); break; case ACCOPENFLG_BOOK: strcpy( acBuffer1 , "帐户有折" ); break; default: acBuffer1[ BIT1_LEN ] = acCardBookFlag[ BIT1_LEN ]; break; } /* 转换帐户状态 */ strcpy ( acStatus, stCmsAcctM.status ); switch ( acStatus[ BIT1_LEN ] ) { case NORMAL_STS: strcpy( acBuffer2 , "正常" ); break; case CANCEL_STS: strcpy( acBuffer2 , "销户" ); break; case MOVEOUT_STS: strcpy( acBuffer2 , "移出" ); break; case CHGCARD_STS: strcpy( acBuffer2 , "已换卡" ); break; default: acBuffer2[ BIT1_LEN ] = acStatus[ BIT1_LEN ]; break; } /* 转换币种 */ strcpy ( acCcy, stCmsAcctM.ccy ); TransMemo( "0025" , acCcy , acBuffer3); sprintf( g_acTrcMsg,"SQLCODE[%s][%s][%s][%s]", acBuffer, acBuffer1, acBuffer2, acBuffer3 ); TRCLOG4 strpack ( stCmsAcctM.acctno ); strpack ( stCmsAcctM.subacct ); strcpy ( stPrtdata.acCustNo, stCmsAcctM.custno ); strcpy ( stPrtdata.acCardNo, stCmsAcctM.cardno ); strcpy ( stPrtdata.acAcctSeqNo, stCmsAcctM.acctseqno); strcpy ( stPrtdata.acCcy, acBuffer3 ); strcpy ( stPrtdata.acPrdCod, stCmsAcctM.prdcod ); strcpy ( stPrtdata.acAcctNo, stCmsAcctM.acctno ); strcpy ( stPrtdata.acSubAcct, stCmsAcctM.subacct ); strcpy ( stPrtdata.acAccOwner, acBuffer ); strcpy ( stPrtdata.acIssueDate, stCmsAcctM.issuedate); strcpy ( stPrtdata.acIssueBrc, stCmsAcctM.issuebrc ); strcpy ( stPrtdata.acCardBookFlag, acBuffer1 ); strcpy ( stPrtdata.acStatus, acBuffer2 ); sprintf( g_acTrcMsg, "acCardNo[%s],acCcy[%s],acPrdCod[%s],acAcctNo[%s]," "acSubAcct[%s],acAccOwner[%s],acIssueDate[%s]" "acIssueBrc[%s],acCardBookFlag[%s],acStatus[%s]", stPrtdata.acCardNo, stPrtdata.acCcy, stPrtdata.acPrdCod, stPrtdata.acAcctNo, stPrtdata.acSubAcct, stPrtdata.acAccOwner, stPrtdata.acIssueDate, stPrtdata.acIssueBrc, stPrtdata.acCardBookFlag, stPrtdata.acStatus); TRCLOG4 if( iLine == 0 ) { PRTHEAD } PRTBODY if( iLine % OVERPAGE == 0 ) { PRTFOOT } sprintf( g_acTrcMsg, "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s", \ stPrtdata.acCardNo, stPrtdata.acCcy, \ stPrtdata.acPrdCod, stPrtdata.acAcctNo, \ stPrtdata.acSubAcct, stPrtdata.acAccOwner, \ stPrtdata.acIssueDate, stPrtdata.acIssueBrc, \ stPrtdata.acCardBookFlag, stPrtdata.acStatus ); TRCLOG4 } SQLCLOSECUR(acc_l_cur,"acc_l_cur") if( iLine < OVERPAGE && iLine != 0 ) { PRTFOOT } if( iLineCount == 0 ) { strcpy( g_acRspCode, "999998" ); 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 + -