⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cms007.sqc

📁 一整套完整的银行卡系统源代码
💻 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 + -