📄 cms014.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms014.SQC ** 所属子系统 : CMS ** 当前文件版本 : 4.0.0.0 ** 作者 : Feng ** 版本创建日期 : 2004/09/21 ** 功能描述 : 挂失补发检查子交易 ** 修改记录 : ** 修改人 修改日期 修改说明 ** Feng 2006-01-16 凭证信息的输出*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include "cmscode.h"#include "cmscardinfo.h"#include "pubvouinfo.h"EXEC SQL INCLUDE SQLCA;int cmsLostAndOpenNewCardChkPro( PUBCOM *pstPubcom ){ /*定义局部变量*/ struct cmscardinfo stCmsCardInfo; /* 卡片信息表 */ struct cmscardinfo stNewCardInfo; /* 新卡片信息表 */ char acCardStat[ BIT21_LEN ][BIT11_LEN]; /* 卡状态检查标志 */ char acPasswd[ PASSWD_LEN + 1 ]; /* 密码 */ char acFlag[ FLAG_LEN + 1 ]; /* 凭证收回标志 */ /* 0不收回1收回 */ int iRtn; /* 函数返回值 */ int iNumx; /* 数组计数器 */ int iNumy; /* 数组计数器 */ strcpy( g_acTrcMsg, "子交易: 挂失补发检查处理开始.." ); TRCLOG4 /* 初始化 */ memset( &stCmsCardInfo, 0x00, sizeof( struct cmscardinfo ) ); memset( &stNewCardInfo, 0x00, sizeof( struct cmscardinfo ) ); memset( acPasswd, 0x00, sizeof( acPasswd ) ); memset( acFlag, 0x00, sizeof( acFlag ) ); acFlag[ BIT1_LEN ] = FLAG_RTNCLOSE; /* 卡检查状态数组全置未不检查 */ 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; } /* 从字典获取其他数据 */ getstring( "CardNo1", stNewCardInfo.cardno ); getstring( "Passwd", acPasswd ); /* 检查卡状态是否正常 */ acCardStat[ BIT1_LEN ][ BIT1_LEN ] = CHECK_YES; /* 检查销卡 */ acCardStat[ BIT2_LEN ][ BIT3_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[ BIT4_LEN ][ BIT1_LEN ] = CHECK_YES; /* 检查冻结 */ acCardStat[ BIT11_LEN ][ BIT1_LEN ] = CHECK_YES; /* 检查银行止付 */ acCardStat[ BIT12_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 = cmsApiChkIsUnnameCard( &stCmsCardInfo ); if ( iRtn ) { ERRLOG return FAILED; } */ /* 检查卡密码 */ iRtn = cmsApiChkCardPwd( &stCmsCardInfo, acPasswd, pstPubcom->acChannelId ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查是否存在中间业务委托 */ iRtn = cmsApiChkCardAgentState( &stCmsCardInfo ); if ( iRtn ) { ERRLOG return FAILED; } /* 获取新卡的卡片信息表记录 */ iRtn = pubReadCmscardinfo( &stNewCardInfo ); if ( iRtn ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "卡号[%s]不存在", stNewCardInfo.cardno ); ERRLOG return FAILED; } /* 检查新卡状态是否为待领卡状态 */ iRtn = cmsApiChkCardStatIsReadyOpen( &stNewCardInfo ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查新卡是否为非记名卡 */ iRtn = cmsApiChkIsUnnameCard( &stNewCardInfo ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查两个卡号是否为同一个卡片种类API */ iRtn = cmsApiChkIsSameCardKind( stCmsCardInfo.cardkind, \ stNewCardInfo.cardkind ); if ( iRtn ) { ERRLOG return FAILED; } /* 获取凭证名称 */ pubInitPubvouinfo(); strcpy( pubvouinfo_voukind, stNewCardInfo.voukind ); EXEC SQL SELECT vouname INTO :pubvouinfo_vouname FROM pubvouinfo WHERE voukind = :pubvouinfo_voukind; if ( SQLCODE ) { strcpy( g_acRspCode, "999996" ); /* 数据库读错误 */ pubCrtRspInfo( "pubvouinfo",SQLCODE ); ERRLOG return FAILED; } strpack( pubvouinfo_vouname ); /* 子交易出口 */ setstring( "Flag", acFlag ); /* 凭证标志 */ setstring( "VouKind", stCmsCardInfo.voukind ); /* 凭证种类 */ /* Feng Modify in 2006-01-16 Begin */ setstring( "VouNo", stCmsCardInfo.vouno ); /* 凭证号码 */ setstring( "PreCharCode", stCmsCardInfo.precharcode ); /* 冠字号码 */ setstring( "NewVouKind", stNewCardInfo.voukind ); /* 新凭证种类 */ setstring( "NewVouNo", stNewCardInfo.vouno ); /* 新凭证号码 */ setstring( "PreCharCod1", stNewCardInfo.precharcode ); /* 冠字号码 */ /* Feng Modify in 2006-01-16 End */ setstring( "VouName", pubvouinfo_vouname ); strcpy( g_acTrcMsg, "子交易: 挂失补发检查结束.." ); TRCLOG4 strcpy( g_acRspCode, RSP_OK ); return SUCCESS;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -