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

📄 cms511.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************************** *   源码文件名称 : cms511.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 "dpspassbook.h"EXEC SQL INCLUDE SQLCA;int cmsChgCardToNoBookPro( PUBCOM *pstPubcom ){	/*定义局部变量*/	struct	cmscardinfo			stCmsCardInfo;	/* 卡片信息表		*/	struct	cmsacctm			stCmsAcctM;		/* 卡账户对照表		*/	char	acCardStat[ BIT21_LEN ][BIT11_LEN];	/* 卡状态检查标志	*/	char	acPasswd[ PASSWD_LEN+1 ];			/* 密码				*/	char	acPasswd1[ PASSWD_LEN+1 ];			/* 存折密码			*/	char	acAcctNo[ ACCT_LEN + 1 ];			/* 存折账号			*/	char	acSubAcct[ ACCTT_LEN + 1 ];			/* 款项代码			*/	char	acVouKind[ VOUKIND_LEN + 1 ];		/* 凭证种类			*/	char	acVouNo[ VOUNO_LEN + 1 ];			/* 凭证号码			*/	char	acDrwType[ WTHCODE_LEN + 1 ];		/* 支取方式			*/	char	acSealNo[ SEALNO_LEN + 1 ];			/* 印鉴卡号			*/	char	acIdType[ IDTYPE_LEN + 1 ];			/* 证件类型			*/	char	acIdNo[ IDNO_LEN + 1 ];				/* 证件号码			*/	int		iRtn;								/* 函数返回值		*/	int		iNumx;								/* 数组计数器		*/	int		iNumy;								/* 数组计数器		*/	/* 初始化 */	memset( &stCmsCardInfo,		0x00,	sizeof( struct cmscardinfo ) );	memset( &stCmsAcctM,		0x00,	sizeof( struct cmsacctm ) );	memset( acPasswd,			0x00,	sizeof( acPasswd ) );	memset( acAcctNo,			0x00,	sizeof( acAcctNo ) );	memset( acSubAcct,			0x00,	sizeof( acSubAcct ) );	memset( acPasswd1,			0x00,	sizeof( acPasswd1 ) );	memset( acDrwType,			0x00,	sizeof( acDrwType ) );	memset( acSealNo,			0x00,	sizeof( acSealNo ) );	memset( acVouNo,			0x00,	sizeof( acVouNo ) );	memset( acVouKind,			0x00,	sizeof( acVouKind ) );	memset( acIdNo,				0x00,	sizeof( acIdNo ) );	memset( acIdType,			0x00,	sizeof( acIdType ) );	strcpy( g_acTrcMsg, "子交易: 有折卡换无折卡处理开始.." );	TRCLOG4	/* 取数据字典值 */	getstring( "CardNo",	stCmsCardInfo.cardno	);		/* 卡检查状态数组全置未不检查 */	for ( iNumx = 0; iNumx < BIT21_LEN; iNumx ++ )		for ( iNumy = 0; iNumy < BIT11_LEN; iNumy ++ )			acCardStat[iNumx][iNumy] = CHECK_NO;	/* 获取卡片信息表 */	iRtn = pubReadCmscardinfo( &stCmsCardInfo );	if ( iRtn )	{		if ( SQLCODE == SQLNOTFOUND )			sprintf( g_acRspMsg, "卡号[%s]不存在", stCmsCardInfo.cardno );		ERRLOG		return FAILED;	}	/* 从字典获取其他数据 */	getstring( "Passwd",	acPasswd	);	getstring( "AcctNo",	acAcctNo	);	getstring( "SubAcct",	acSubAcct	);	getstring( "Passwd1",	acPasswd1	);	getstring( "IdNo",		acIdNo		);	getstring( "IdType",	acIdType	);	getstring( "SealNo",	acSealNo	);	getstring( "VouKind",	acVouKind	);	getstring( "VouNo",		acVouNo		);	getstring( "DrwType",	acDrwType	);	/* 检查卡状态是否正常 */	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;	}	/* 检查卡是否为有折卡 */	iRtn = cmsApiChkCardHasBook( &stCmsCardInfo );	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 检查存折账户是否为卡主帐户 */	iRtn = cmsApiChkAcctIsCardMainAcct( &stCmsCardInfo, acAcctNo, acSubAcct );	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 为修改卡片信息表做赋值准备 */	strcpy( stCmsCardInfo.chgdate,			pstPubcom->acTranDate	);	stCmsCardInfo.hasbankbook[ BIT1_LEN ] = NOBANKBOOK;	/* 修改卡片信息标记录 */	pubInitCmscardinfo();	pubStoVCmscardinfo( &stCmsCardInfo );	EXEC SQL	UPDATE CMSCARDINFO				SET		chgdate = :cmscardinfo_chgdate,						hasbankbook = :cmscardinfo_hasbankbook				WHERE	cardno = :cmscardinfo_cardno;	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS114" );		/* 数据库更新错误 */		pubCrtRspInfo( "cmscardinfo",SQLCODE );		ERRLOG		return FAILED;	}	/* 获取卡账户对照表并锁住记录 */	strcpy( stCmsAcctM.cardno,		stCmsCardInfo.cardno		);	strcpy( stCmsAcctM.acctseqno,	stCmsCardInfo.acctseqno		);	iRtn = pubReadCmsacctm( &stCmsAcctM );	if ( iRtn )	{		if ( SQLCODE == SQLNOTFOUND )			sprintf( g_acRspMsg, "卡号[%s]帐户序号[%s]不存在",						stCmsCardInfo.cardno, stCmsCardInfo.acctseqno );		ERRLOG		return FAILED;	}	/* 为修改卡账户对照表准备数据 */	stCmsAcctM.cardbookflag[ BIT1_LEN ] = ACCOPENFLG_CARD; /* 帐户无折		*/	/* 修改卡账户对照表 */	pubInitCmsacctm();	pubStoVCmsacctm( &stCmsAcctM );	EXEC SQL	UPDATE CMSACCTM				SET		cardbookflag = :cmsacctm_cardbookflag				WHERE	cardno = :cmsacctm_cardno				AND		acctseqno = :cmsacctm_acctseqno;	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS114" );		/* 数据库更新错误 */		pubCrtRspInfo( "cmsacctm",SQLCODE );		ERRLOG		return FAILED;	}	EXEC SQL	DECLARE book_cur CURSOR FOR				SELECT	*				FROM	dpspassbook				WHERE	acctno = :cmsacctm_acctno				AND		subacct = :cmsacctm_subacct				AND		prtflg = '1';	SQLOPENCUR(book_cur,"book_cur")	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS114" );		sprintf( g_acRspMsg, "获取未打折明细数据库错[%d]", SQLCODE );		ERRLOG		return FAILED;	}	pubInitDpspassbook();	EXEC SQL	FETCH	book_cur				INTO	R_DPSPASSBOOK;	if ( SQLCODE && SQLCODE != SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS114" );		sprintf( g_acRspMsg, "获取未打折明细数据库错[%d]", SQLCODE );		ERRLOG	SQLCLOSECUR(book_cur,"book_cur")		return FAILED;	}	else if ( !SQLCODE )	{		strcpy( g_acRspCode, "CMS114" );		sprintf( g_acRspMsg, "尚有未打折明细,请做补登折[%s]", cmsacctm_acctno );		ERRLOG	SQLCLOSECUR(book_cur,"book_cur")		return FAILED;	}	SQLCLOSECUR(book_cur,"book_cur")	/* 调用存款api处理卡取消存折静态文件处理 */	iRtn = dpsCardCancleBooStaOper( acAcctNo, acVouKind, acVouNo, \				acDrwType, acSealNo, acIdType, acIdNo, acPasswd1 );	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 是否写子交易流水 */	iRtn = cmsApiInsTranLog( pstPubcom, &stCmsCardInfo, &stCmsAcctM, "换卡", "有折卡换无折卡" );	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 子交易出口 */ 	setstring( "AcctSeqNo",	stCmsCardInfo.acctseqno );	/* 账户序号	*/		strcpy( g_acTrcMsg, "子交易: 有折卡换无折卡处理结束.." );	TRCLOG4	strcpy( g_acRspCode,  RSP_OK );	return SUCCESS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -