📄 cms007.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms007.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 "cmscardkind.h"#include "dmstellervoulib.h"EXEC SQL INCLUDE SQLCA;int cmsCloseMainCardChkPro( PUBCOM *pstPubcom ){ /*定义局部变量*/ struct cmscardinfo stCmsCardInfo; /* 卡片信息表 */ char acCardStat[ BIT21_LEN ][BIT11_LEN]; /* 卡状态检查标志 */ char cUpdFlag; /* 修改卡片信息标志 */ char acPasswd[ PASSWD_LEN + 1 ]; /* 密码 */ char acCheckFlag[ BIT8_LEN + 1 ]; /* 检查卡片种类标志 */ struct cmscardkind stCmsCardKind; /* 卡片种类表 */ char acOprType[ FLAG_LEN + 1 ]; /* 销卡方式 */ /* 0 正常销卡 */ /* 1 挂失销卡 */ char acVouSign[ FLAG_LEN + 1 ]; /* 凭证处理方式 */ char acVouName[ VOUNAME_LEN + 1 ]; /* 凭证名称 */ int iRtn; /* 函数返回值 */ int iNumx; /* 数组计数器 */ int iNumy; /* 数组计数器 */ strcpy( g_acRspCode, RSP_OK ); strcpy( g_acTrcMsg, "子交易: 主卡销卡检查处理开始.." ); TRCLOG4 /* 初始化 */ memset( &stCmsCardInfo, 0x00, sizeof( struct cmscardinfo ) ); memset( &stCmsCardKind, 0x00, sizeof( struct cmscardkind ) ); memset( acCheckFlag, 0x00, sizeof( acCheckFlag ) ); memset( acPasswd, 0x00, sizeof( acPasswd ) ); cUpdFlag = UPD_NO; /* 卡检查状态数组全置未不检查 */ for ( iNumx = 0; iNumx < BIT21_LEN; iNumx ++ ) for ( iNumy = 0; iNumy < BIT11_LEN; iNumy ++ ) acCardStat[iNumx][iNumy] = CHECK_NO; /* 取数据字典值 */ getstring( "CardNo", stCmsCardInfo.cardno ); getstring( "Passwd", acPasswd ); getstring( "OprType", acOprType ); /* 获取卡片信息表 */ iRtn = pubReadCmscardinfo( &stCmsCardInfo ); if ( iRtn ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "卡号[%s]不存在", stCmsCardInfo.cardno ); ERRLOG goto Exit; } /* 检查卡状态是否正常 */ acCardStat[ BIT1_LEN ][ BIT1_LEN ] = CHECK_YES; acCardStat[ BIT2_LEN ][ BIT1_LEN ] = CHECK_YES; if ( acOprType[ BIT1_LEN ] == LOSTCLOSE ) /* 挂失销卡 */ acCardStat[ BIT2_LEN ][ BIT3_LEN ] = CHECK_YES; acCardStat[ BIT3_LEN ][ BIT1_LEN ] = CHECK_YES; acCardStat[ BIT4_LEN ][ BIT1_LEN ] = CHECK_YES; acCardStat[ BIT5_LEN ][ BIT1_LEN ] = CHECK_YES; acCardStat[ BIT6_LEN ][ BIT1_LEN ] = CHECK_YES; acCardStat[ BIT7_LEN ][ BIT1_LEN ] = CHECK_YES; acCardStat[ BIT8_LEN ][ BIT1_LEN ] = CHECK_YES; acCardStat[ BIT9_LEN ][ BIT1_LEN ] = CHECK_YES; acCardStat[ BIT10_LEN ][ BIT1_LEN ] = CHECK_YES; acCardStat[ BIT11_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 goto Exit; } /* 检查卡密码 */ iRtn = cmsApiChkCardPwd( &stCmsCardInfo, acPasswd, pstPubcom->acChannelId ); if ( iRtn ) { ERRLOG goto Exit; } /* 检查卡是否为主卡 */ iRtn = cmsApiChkCardNoIsMain( &stCmsCardInfo ); if ( iRtn ) { ERRLOG goto Exit; } /* 检查是否还有附卡未销卡 */ iRtn = cmsApiChkCardNoHasAcceCard( &stCmsCardInfo ); if ( iRtn ) { ERRLOG goto Exit; } /* 检查是否存在主账户以外的账户 */ iRtn = cmsApiChkCardNoHasOtherAcct( stCmsCardInfo.cardno ); if ( iRtn ) { ERRLOG goto Exit; } /* 检查是否存在中间业务委托 */ iRtn = cmsApiChkCardAgentState( &stCmsCardInfo ); if ( iRtn ) { ERRLOG goto Exit; } /* 获取卡片种类表 */ iRtn = cmsApiGetCmsCardKind( stCmsCardInfo.cardkind, &stCmsCardKind ); if ( iRtn ) { ERRLOG goto Exit; } /* 检查卡片种类(全部属性)API是否为启用标志、检查卡种交易类型 */ /* 检查业务发生地、是否是记名卡 */ acCheckFlag[ BIT1_LEN ] = CHECK_YES; /* 检查启用标志 */ acCheckFlag[ BIT2_LEN ] = CHECK_YES; /* 检查卡种交易类型 */ acCheckFlag[ BIT3_LEN ] = CHECK_YES; /* 检查业务发生地 */ acCheckFlag[ BIT4_LEN ] = CHECK_NO; /* 检查发卡对象 单/个 */ acCheckFlag[ BIT5_LEN ] = CHECK_NO; /* 检查记名标志 */ acCheckFlag[ BIT6_LEN ] = CHECK_NO; /* 不检查挂失标志 */ iRtn = cmsApiChkCardKind( &stCmsCardKind, acCheckFlag, LOGCANCELACC, pstPubcom->acChannelId, CZEROS, CZEROS, CZEROS, "" ); if ( iRtn ) { ERRLOG goto Exit; } /* 检查客户持卡数量是否超限并累计客户持卡数量 */ iRtn = cmsApiChkCustCardNumLimit( stCmsCardInfo.custno, \ &stCmsCardKind, MAIN_CARD, FLAG_REVERSE ); if ( iRtn ) { ERRLOG goto Exit; } /* 检查凭证是否未付出 */ memset( acVouSign, 0x00, sizeof( acVouSign ) ); if ( 0 ) { pubInitDmstellervoulib(); strcpy( dmstellervoulib_voukind, stCmsCardInfo.voukind ); dmsCalNewVouno( stCmsCardInfo.vouno, 0, dmstellervoulib_vouno ); strcpy( dmstellervoulib_precharcode, "" ); dmstellervoulib_flag[ BIT1_LEN ]= VOU_USED; EXEC SQL SELECT * INTO R_DMSTELLERVOULIB FROM dmstellervoulib WHERE voukind = :dmstellervoulib_voukind AND precharcode = :dmstellervoulib_precharcode AND vouno = :dmstellervoulib_vouno AND flag = :dmstellervoulib_flag; if ( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy( g_acRspCode, "999996" ); /* 数据库读错误 */ pubCrtRspInfo( "dmstellervoulib",SQLCODE ); pubErrLog( __LINE__, __FILE__, g_acRspMsg ); goto Exit; } else if ( SQLCODE == SQLNOTFOUND ) { /* 不处理凭证销号 */ strcpy( acVouSign, STR_NO ); } else { /* 处理凭证销号 */ strcpy( acVouSign, STR_YES ); } } strcpy( acVouSign, STR_YES ); if ( stCmsCardInfo.cardattr[ BIT1_LEN ] != BURNCARD && stCmsCardInfo.cardattr[ BIT1_LEN ] != LAKECARD && acOprType[ BIT1_LEN ] != LOSTCLOSE ) /* 挂失销卡 */ strcpy( acVouName, " 收:借记卡废卡" ); /* 子交易出口 */ setstring( "Flag1", acVouSign ); /* 凭证处理方式 */ setstring( "VouKind", stCmsCardInfo.voukind ); /* 凭证种类 */ /* Feng Modify in 2006-01-16 Begin */ setstring( "VouNo", stCmsCardInfo.vouno ); /* 凭证号码 */ setstring( "PreCharCode", stCmsCardInfo.precharcode ); /* 冠字号码 */ setstring( "VouType1", stCmsCardKind.blankvoukind ); /* 废卡凭证种类 */ setstring( "VouNo1", stCmsCardInfo.vouno ); /* 废卡凭证号码 */ /* Feng Modify in 2006-01-16 End */ setstring( "VouName", acVouName ); /* 表外收入 */ setstring( "AcctNo", stCmsCardInfo.acctno ); /* 客户账号 */ setstring( "SubAcct", stCmsCardInfo.subacct ); /* 款项代码 */ setstring( "BookFlag", stCmsCardInfo.hasbankbook ); /* 有折标志 */ setstring( "CardAttr", stCmsCardInfo.cardattr ); /* 卡属性 */ setstring( "CardObject",stCmsCardInfo.cardobject ); /* 发卡对象 */Exit: strcpy( g_acTrcMsg, "子交易: 主卡销卡检查结束.." ); TRCLOG4 if( !strcmp( g_acRspCode, RSP_OK ) ) return SUCCESS; else return FAILED ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -