📄 cms005.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms005.SQC ** 所属子系统 : CMS ** 当前文件版本 : 1.0.0.0 ** 作者 : UCCB ALEX ** 版本创建日期 : 2004/10/09 ** 功能描述 : 申请附卡检查子交易 ** 修改记录 : ** 修改人 修改日期 修改说明 ** Feng 2006-01-16 卡凭证信息的输出和选号发卡的检查*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include "cmscode.h"#include "cmscardinfo.h"#include "cmscardkind.h"#include "pubvouinfo.h"EXEC SQL INCLUDE SQLCA;int cmsOpenAcceCardChkPro( PUBCOM *pstPubcom ){ /*定义局部变量*/ char acPassWd[PASSWD_LEN+1] ; /*密码*/ char acHappen[PASSWD_LEN+1] ; /*业务发生地*/ char acCheckFlag[BIT21_LEN][BIT11_LEN]; /*卡状态检查标志*/ char acCustomId[ CUSTNO_LEN + 1 ]; /* 附卡客户号码 */ char acMarkFlg[ FLAG_LEN + 1 ]; /* 记名卡/非记名卡标志 */ struct cmscardinfo stCardInfo; struct cmscardinfo stFCardInfo; struct cmscardkind stCardKind; strcpy( g_acTrcMsg, "子交易: 附卡申请检查子交易..." ); TRCLOG4 memset( &stCardInfo, 0x00, sizeof ( struct cmscardinfo ) ); memset( &stFCardInfo, 0x00, sizeof ( struct cmscardinfo ) ); memset( &stCardKind, 0x00, sizeof ( struct cmscardkind ) ); memset( acCheckFlag, 0x00, sizeof ( acCheckFlag ) ); memset( acCustomId, 0x00, sizeof( acCustomId ) ); memset( acMarkFlg, 0x00, sizeof( acMarkFlg ) ); /* 取数据字典值 */ getstring("CardNo", stCardInfo.cardno ); /*卡号 */ getstring("CustomId",acCustomId ); /*卡号 */ getstring("FCardNo",stFCardInfo.cardno ); /*卡号 */ getstring("PassWd", acPassWd ); /*卡密码*/ getstring("MarkFlg", acMarkFlg ); strcpy ( acHappen,pstPubcom->acChannelId ); /*业务发生地*/ /* 获取主卡片信息表 */ if( pubReadCmscardinfo( &stCardInfo ) ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "主卡号[%s]不存在", stCardInfo.cardno ); ERRLOG goto Exit; } /* 获取卡片种类表 */ strcpy( stCardKind.cardkind, stCardInfo.cardkind ); if( pubReadCmscardkind( &stCardKind ) ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "卡片种类[%s]不存在", stCardInfo.cardkind ); ERRLOG goto Exit; } /*检查是否为主卡*/ if( cmsApiChkCardNoIsMain( &stCardInfo ) ) { ERRLOG; goto Exit; } /*置卡状态检查标志*/ acCheckFlag[BIT1_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT2_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT3_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT4_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT5_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT6_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT7_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT8_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT9_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT11_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT13_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT14_LEN][BIT1_LEN]=CHECK_YES; /*检查主卡状态是否正常*/ if( cmsApiChkCardStatIsNormal( &stCardInfo, acCheckFlag ) ) { ERRLOG; goto Exit; } strcpy( g_acTrcMsg, "cardstat end!" ); TRCLOG3 /*判断主卡密码是否正确*/ if( cmsApiChkCardPwd( &stCardInfo,acPassWd,acHappen ) ) { ERRLOG goto Exit; } /* 比较单位附卡的客户号和主卡客户号是否相同 */ if ( stCardInfo.cardobject[ BIT1_LEN ] == UNITCARD ) { strpack( stCardInfo.custno ); strpack( acCustomId ); if ( strcmp( stCardInfo.custno, acCustomId ) ) { strcpy( g_acRspCode, "CMS1E4" ); pubCrtRspInfo( ); ERRLOG goto Exit; } } /* 获取附卡片信息表 */ if( pubReadCmscardinfo( &stFCardInfo ) ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "附卡号[%s]不存在", stFCardInfo.cardno ); ERRLOG goto Exit; } /* 获取卡片种类表 */ memset( &stCardKind, 0x00, sizeof ( struct cmscardkind ) ); strcpy( stCardKind.cardkind, stFCardInfo.cardkind ); if( pubReadCmscardkind( &stCardKind ) ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "卡片种类[%s]不存在", stFCardInfo.cardkind ); ERRLOG goto Exit; } /* 检查卡号是否为记名卡非记名卡 */ if ( stCardKind.markflg[ BIT1_LEN ] != ALLREGCARD ) { if ( stCardKind.markflg[ BIT1_LEN ] != stFCardInfo.markflg[0] ) { strcpy( g_acRspCode, "CMS1B4" ); pubCrtRspInfo( stCardKind.cardkind ); ERRLOG return FAILED; } } /*检查是否为待领卡状态*/ if( cmsApiChkCardStatIsReadyOpen( &stFCardInfo ) ) { ERRLOG goto Exit; } /* 检查主卡和附卡的发卡对象是否相同 */ if ( stFCardInfo.cardobject[ BIT1_LEN ] != stCardInfo.cardobject[ BIT1_LEN ] ) { strcpy( g_acRspCode, "CMS1E9" ); pubCrtRspInfo( ); ERRLOG goto Exit; } /*检查客户持附卡数是否超限 修改客户持附卡数*/ if(cmsApiChkCustCardNumLimit( acCustomId, &stCardKind,\ SUBMAIN_CARD, FLAG_NORMAL) ) { ERRLOG goto Exit; } /* Feng Add in 2006-01-16 Begin */ /* 检查单张选号卡需要核对客户号码 */ if ( stFCardInfo.cardstat[ BIT16_LEN ] == BIT16_CHOOSE ) { /* 检查是否为同一客户 */ if ( strcmp( acCustomId, stFCardInfo.custno ) ) { strcpy( g_acRspCode, "CMS1E7" ); sprintf( g_acRspMsg, "此卡为选号卡,不属于该客户" ); ERRLOG goto Exit; } } /* Feng Add in 2006-01-16 End */ /* 获取凭证名称 */ pubInitPubvouinfo(); strcpy( pubvouinfo_voukind, stFCardInfo.voukind ); EXEC SQL SELECT vouname INTO :pubvouinfo_vouname FROM pubvouinfo WHERE voukind = :pubvouinfo_voukind; if ( SQLCODE ) { strcpy( g_acRspCode, "999996" ); /* 数据库读错误 */ pubCrtRspInfo( "pubvouinfo",SQLCODE ); ERRLOG goto Exit; } strpack( pubvouinfo_vouname ); /* 子交易出口 */ setstring( "CardKind" , stFCardInfo.cardkind ); setstring( "VouKind" , stFCardInfo.voukind ); /* Feng Modify in 2006-01-16 Begin */ setstring( "VouNo" , stFCardInfo.vouno ); setstring( "PreCharCode", stFCardInfo.precharcode );/* 冠字号码 */ /* Feng Modify in 2006-01-16 Begin */ setstring( "VouName" , pubvouinfo_vouname ); setstring( "AcctNo" , stFCardInfo.acctno ); strcpy( g_acTrcMsg, "子交易: 附卡申请检查结束.." ); TRCLOG4Exit: if( !strcmp( g_acRspCode, RSP_OK ) ) return SUCCESS; else return FAILED ; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -