📄 cms011.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms011.SQC ** 所属子系统 : CMS ** 当前文件版本 : 4.0.0.0 ** 作者 : Feng ** 版本创建日期 : 2004/09/21 ** 功能描述 : 存单折移出卡检查子交易 ** 修改记录 : ** 修改人 修改日期 修改日期*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include "cmscode.h"#include "cmscardinfo.h"#include "cmsacctm.h"#include "dpstermprdinfo.h"#include "dpssaveprdinfo.h"EXEC SQL INCLUDE SQLCA;int cmsActOutCardChkPro( PUBCOM *pstPubcom ){ /*定义局部变量*/ struct cmscardinfo stCmsCardInfo; /* 卡片信息表 */ struct cmsacctm stCmsAcctM; /* 卡账户对照表 */ struct dpstermprdinfo stDpsTermPrd; /* 定期产品信息 */ struct dpssaveprdinfo stDpsSavePrd; /* 活期产品信息 */ char acCardStat[ BIT21_LEN ][BIT11_LEN]; /* 卡状态检查标志 */ char acPasswd[ PASSWD_LEN + 1 ]; /* 密码 */ char acFlag[ FLAG_LEN + 1 ]; /* 开户标志 */ char acCustomId[ CUSTNO_LEN + 1 ]; /* 卡客户号 */ char acVouKind[ VOUKIND_LEN + 1 ]; /* 凭证种类输入 */ char acVouKind1[ 10 + 1 ]; /* 凭证种类标准 */ char acVouKind2[ VOUKIND_LEN + 1 ]; /* 凭证种类标准 */ char acCustomId1[ CUSTNO_LEN + 1 ]; /* 账户客户号 */ double dTrsAmt=0.0; int iRtn; /* 函数返回值 */ int iNumx; /* 数组计数器 */ int iNumy; /* 数组计数器 */ strcpy( g_acTrcMsg, "子交易: 存单折移出卡检查处理开始.." ); TRCLOG4 /* 初始化 */ memset( &stCmsCardInfo, 0x00, sizeof( struct cmscardinfo ) ); /* 卡检查状态数组全置未不检查 */ for ( iNumx = 0; iNumx < BIT21_LEN; iNumx ++ ) for ( iNumy = 0; iNumy < BIT11_LEN; iNumy ++ ) acCardStat[iNumx][iNumy] = CHECK_NO; /* 取数据字典值 */ getstring( "CardNo", stCmsCardInfo.cardno ); /* 获取卡片信息表 */ iRtn = pubReadCmscardinfo( &stCmsCardInfo ); if ( iRtn ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "卡号[%s]不存在", stCmsCardInfo.cardno ); ERRLOG return FAILED; } /* 从字典获取其他数据 */ memset( acPasswd, 0x00, sizeof( acPasswd ) ); memset( acFlag, 0x00, sizeof( acFlag ) ); memset( acCustomId1, 0x00, sizeof( acCustomId1 ) ); memset( acCustomId, 0x00, sizeof( acCustomId ) ); memset( acVouKind, 0x00, sizeof( acVouKind ) ); memset( acVouKind1, 0x00, sizeof( acVouKind1 ) ); memset( acVouKind2, 0x00, sizeof( acVouKind2 ) ); getstring( "Passwd", acPasswd ); getstring( "AcctSeqNo", stCmsAcctM.acctseqno ); getstring( "Flag", acFlag ); getstring( "CustomId1", acCustomId1 ); getstring( "CustomId", acCustomId ); getstring( "VouKind", acVouKind ); getdouble( "TrsAmt", &dTrsAmt ); /* 检查卡状态是否正常 */ acCardStat[ BIT1_LEN ][ BIT1_LEN ] = CHECK_YES; /* 检查销卡 */ acCardStat[ BIT2_LEN ][ BIT1_LEN ] = CHECK_YES; /* 检查挂失 */ acCardStat[ BIT3_LEN ][ BIT1_LEN ] = CHECK_YES; /* 检查密挂 */ acCardStat[ BIT5_LEN ][ BIT1_LEN ] = CHECK_YES; /* 检查吞卡 */ acCardStat[ BIT6_LEN ][ BIT1_LEN ] = CHECK_YES; /* 检查拣拾 */ acCardStat[ BIT8_LEN ][ BIT1_LEN ] = CHECK_YES; /* 检查换卡 */ acCardStat[ BIT9_LEN ][ BIT1_LEN ] = CHECK_YES; /* 检查锁卡 */ acCardStat[ BIT13_LEN ][ BIT1_LEN ] = CHECK_YES; /* 检查欠费 */ acCardStat[ BIT14_LEN ][ BIT1_LEN ] = CHECK_YES; /* 换卡申请 */ iRtn = cmsApiChkCardStatIsNormal( &stCmsCardInfo, acCardStat ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查卡密码 */ iRtn = cmsApiChkCardPwd( &stCmsCardInfo, acPasswd, pstPubcom->acChannelId ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查主账户不能移出 */ if ( !strcmp( stCmsAcctM.acctseqno, MAINACCTSEQNO ) ) { strcpy( g_acRspCode, "CMS1A9" ); pubCrtRspInfo( ); ERRLOG return FAILED; } /* 检查主帐户移出必须为卡内无其他账户 */ /* if ( !strcmp( stCmsAcctM.acctseqno, MAINACCTSEQNO ) ) { iRtn = cmsApiChkCardNoHasOtherAcct( stCmsCardInfo.cardno ); if ( iRtn ) { ERRLOG return FAILED; } } */ /* 获取卡账户对照表 */ strcpy( stCmsAcctM.cardno, stCmsCardInfo.cardno ); iRtn = pubReadCmsacctm( &stCmsAcctM ); if ( iRtn ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "卡号[%s]账户序号[%s]不存在", stCmsCardInfo.cardno, stCmsAcctM.acctseqno ); ERRLOG return FAILED; } /* 检查卡帐户对照表状态是否正常 */ iRtn = cmsApiChkAcctStatusIsOK( &stCmsAcctM ); if ( iRtn ) { ERRLOG return FAILED; } /* 移出账户已经开户 */ if ( acFlag[ BIT1_LEN ] == '1' ) { /* 比较客户号 */ strpack( acCustomId1 ); strpack( acCustomId ); if ( strcmp( acCustomId, acCustomId1 ) ) { strcpy( g_acRspCode, "CMS1C3" ); pubCrtRspInfo( ); ERRLOG return FAILED; } } memset( &stDpsSavePrd, 0x00, sizeof( struct dpssaveprdinfo ) ); memset( &stDpsTermPrd, 0x00, sizeof( struct dpstermprdinfo ) ); strcpy( stDpsSavePrd.prdcode, stCmsAcctM.prdcod ); iRtn = pubReadDpssaveprdinfo( &stDpsSavePrd ); if ( iRtn && SQLCODE != SQLNOTFOUND ) { ERRLOG return FAILED; } else if ( !iRtn ) { strcpy( acVouKind1, stDpsSavePrd.opnvoukind ); strncpy( acVouKind2, stDpsSavePrd.opnvoukind, VOUKIND_LEN ); acVouKind2[VOUKIND_LEN]='\0'; } else if ( iRtn && SQLCODE == SQLNOTFOUND ) { strcpy( stDpsTermPrd.prdcode, stCmsAcctM.prdcod ); iRtn = pubReadDpstermprdinfo( &stDpsTermPrd ); if ( iRtn ) { ERRLOG return FAILED; } else { strcpy( acVouKind1, stDpsTermPrd.opnvoukind ); strncpy( acVouKind2, stDpsTermPrd.opnvoukind, VOUKIND_LEN ); acVouKind2[VOUKIND_LEN]='\0'; } } /* 检查移出凭证 */ iRtn = dpsFixVouCheck( stCmsAcctM.prdcod, acVouKind1, dTrsAmt, acVouKind2 ); if ( iRtn ) { ERRLOG return FAILED; } if ( !strlen( acVouKind2 ) ) { strncpy( acVouKind2, acVouKind1, VOUKIND_LEN ); acVouKind2[VOUKIND_LEN]='\0'; } if ( strcmp( acVouKind, acVouKind2 ) ) { strcpy( g_acRspCode, "CMS1D8" ); pubCrtRspInfo( acVouKind, acVouKind2 ); ERRLOG return FAILED; } /* 子交易出口 */ strcpy( g_acTrcMsg, "子交易: 存单折移出卡检查结束.." ); TRCLOG4 strcpy( g_acRspCode, RSP_OK ); return SUCCESS;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -