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

📄 cms515.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
字号:
/******************************************************************** *   源码文件名称 : cms515.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 "cmscardkind.h"#include "cmschgm.h"#include "cmsacctm.h"#include "ciscustomerinfo.h"#include "dpssaveaccdyninfo.h"EXEC SQL INCLUDE SQLCA;int cmsLostAndOpenNewCardPro( PUBCOM *pstPubcom ){	/*定义局部变量*/	struct	cmscardinfo			stCmsCardInfo;	/* 卡片信息表		*/	struct	cmscardinfo			stNewCardInfo;	/* 新卡片信息表		*/	struct	cmschgm				stCmsChgM;		/* 挂失补发登记簿		*/    struct  cmsacctm            stCmsAcctM;    	/* 卡账户对照表     */    struct  ciscustomerinfo     stCisCustInfo; 	/* 客户基本信息     */    struct  dpssaveaccdyninfo   stDpsSaveDyn; 	/* 活期动态信息     */	char	acPasswd[ PASSWD_LEN + 1];			/* 新密码			*/	char	acAgentIdType[ IDTYPE_LEN + 1];		/* 代理人证件类型	*/	char	acAgentIdNo[ IDNO_LEN + 1];			/* 代理人证件号码	*/	int		iRtn;								/* 函数返回值		*/	strcpy( g_acTrcMsg, "子交易: 挂失补发处理开始.." );	TRCLOG4	/* 初始化 */	memset( &stCmsCardInfo,	0x00,	sizeof( struct cmscardinfo ) );	memset( &stNewCardInfo,	0x00,	sizeof( struct cmscardinfo ) );	memset( &stCmsChgM,		0x00,	sizeof( struct cmschgm ) );    memset( &stCmsAcctM,	0x00,	sizeof( struct cmsacctm ) );    memset( &stCisCustInfo,	0x00,	sizeof( struct ciscustomerinfo ) );    memset( &stDpsSaveDyn,	0x00,	sizeof( struct dpssaveaccdyninfo ) );	memset( acPasswd,			0x00,	sizeof( acPasswd ) );	/* 取数据字典值 */	getstring( "CardNo",	stCmsCardInfo.cardno	);	getstring( "CardNo1",	stNewCardInfo.cardno	);		/* 获取卡片信息并锁住记录 */	pubStoVCmscardinfo( &stCmsCardInfo );	EXEC SQL	DECLARE Inf_l_cur CURSOR FOR 				SELECT * FROM CMSCARDINFO				WHERE cardno = :cmscardinfo_cardno				FOR UPDATE;	/* 定义游标错误    if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS110" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	} */	SQLOPENCUR(Inf_l_cur,"Inf_l_cur")	/* 打开游标错误 */	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS111" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	}	pubInitCmscardinfo();	EXEC SQL	FETCH Inf_l_cur INTO R_CMSCARDINFO ;	/* 取游标错误 */	if ( SQLCODE && SQLCODE != SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS112" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG	SQLCLOSECUR(Inf_l_cur,"Inf_l_cur")		return FAILED;	}	/* 记录不存在 */	else if ( SQLCODE == SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS113" );		sprintf( g_acRspMsg, "卡号[%s]不存在", stCmsCardInfo.cardno );		ERRLOG	SQLCLOSECUR(Inf_l_cur,"Inf_l_cur")		return FAILED;	}	pubVtoSCmscardinfo( &stCmsCardInfo );	/* 从字典获取其他数据 */	getstring( "Passwd1",		acPasswd				);	getstring( "IdType1",		stCmsChgM.idtype		);	getstring( "IdNo1",			stCmsChgM.idcode		);	getstring( "CustomName1",	stCmsChgM.custname		);	/* 为修改卡片信息表做赋值准备 */	strcpy( stCmsCardInfo.chgdate,		pstPubcom->acTranDate	);	stCmsCardInfo.cardstat[ BIT8_LEN ] = BIT8_CARDLOST;	stCmsCardInfo.cardstat[ BIT2_LEN ] = BIT2_CARDOK;	/*	strcpy( stCmsCardInfo.oldcardno,	stCmsCardInfo.cardno );	*/	strcpy( stCmsCardInfo.newcardno,	stNewCardInfo.cardno );	/* 修改卡片信息标记录 */	pubInitCmscardinfo();	pubStoVCmscardinfo( &stCmsCardInfo );	EXEC SQL	UPDATE CMSCARDINFO				SET		( U_CMSCARDINFO ) = ( W_CMSCARDINFO )				WHERE	CURRENT OF Inf_l_cur;	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS114" );		/* 数据库更新错误 */		pubCrtRspInfo( "cmscardinfo",SQLCODE );		ERRLOG	SQLCLOSECUR(Inf_l_cur,"Inf_l_cur")		return FAILED;	}	SQLCLOSECUR(Inf_l_cur,"Inf_l_cur")	/* 修改所有主卡卡号为旧卡号的卡片信息主卡卡号为新卡号 */	if ( stCmsCardInfo.cardflg[ BIT1_LEN ] == MAIN_CARD )	{		strcpy( stCmsCardInfo.oldcardno,	stCmsCardInfo.cardno );		pubStoVCmscardinfo( &stCmsCardInfo );		EXEC SQL	UPDATE CMSCARDINFO					SET		maincardno = :cmscardinfo_newcardno					WHERE	maincardno = :cmscardinfo_oldcardno					AND		cardno != :cmscardinfo_oldcardno;		if ( SQLCODE && SQLCODE != SQLNOTFOUND )		{			strcpy( g_acRspCode, "CMS114" );			/* 数据库更新错误 */			pubCrtRspInfo( "cmscardinfo",SQLCODE );			ERRLOG			return FAILED;		}	}	else /* 附卡检查主卡证件和代理人证件是否一致 */	{		memset( acAgentIdType,	0x00,	sizeof( acAgentIdType ) );		memset( acAgentIdNo,	0x00,	sizeof( acAgentIdNo ) );    	memset( &stCisCustInfo,	0x00,	sizeof( struct ciscustomerinfo ) );				getstring( "IdType2",	acAgentIdType	);		getstring( "IdNo2",		acAgentIdNo		);		strcpy( cmscardinfo_maincardno, stCmsCardInfo.maincardno );		EXEC SQL	SELECT	a.custno, b.idno, b.idtype					INTO	:ciscustomerinfo_customid, 							:ciscustomerinfo_idno,							:ciscustomerinfo_idtype					FROM	CMSCARDINFO a, CISCUSTOMERINFO b					WHERE	a.cardno = :cmscardinfo_maincardno					AND		a.custno = b.customid;		if ( SQLCODE )		{			strcpy( g_acRspCode, "999996" );			/* 数据库查询错误 */			pubCrtRspInfo( "cmscardinfo",SQLCODE );			ERRLOG			return FAILED;		}		strpack( ciscustomerinfo_customid );		strpack( ciscustomerinfo_idno );		strpack( ciscustomerinfo_idtype );		if ( strcmp( acAgentIdType, ciscustomerinfo_idtype ) 				&& strlen( acAgentIdType ) )		{			strcpy( g_acRspCode, "CMS1D5" );			/* 主卡证件类型错误 */			pubCrtRspInfo( );			ERRLOG			return FAILED;		}		if ( strcmp( acAgentIdNo, ciscustomerinfo_idno ) 				&& strlen( acAgentIdNo ) )		{			strcpy( g_acRspCode, "CMS1D6" );			/* 主卡证件号码错误 */			pubCrtRspInfo( );			ERRLOG			return FAILED;		}	}	/* 获取新卡卡片信息并锁住记录 */	pubStoVCmscardinfo( &stNewCardInfo );	EXEC SQL	DECLARE Info_l_cur CURSOR FOR 				SELECT * FROM CMSCARDINFO				WHERE cardno = :cmscardinfo_cardno				FOR UPDATE;	/* 定义游标错误    if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS110" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	} */	SQLOPENCUR(Info_l_cur,"Info_l_cur")	/* 打开游标错误 */	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS111" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG		return FAILED;	}	pubInitCmscardinfo();	EXEC SQL	FETCH Info_l_cur INTO R_CMSCARDINFO ;	/* 取游标错误 */	if ( SQLCODE && SQLCODE != SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS112" );		pubCrtRspInfo( "cmscardinfo", SQLCODE );		ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")		return FAILED;	}	/* 记录不存在 */	else if ( SQLCODE == SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS113" );		sprintf( g_acRspMsg, "新卡号[%s]不存在", stNewCardInfo.cardno );		ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")		return FAILED;	}	pubVtoSCmscardinfo( &stNewCardInfo );	/* 挂失补发更新卡片信息赋值 API*/	iRtn = cmsApiChgCardSetValue( &stCmsCardInfo, &stNewCardInfo );	if ( iRtn )	{		ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")		return FAILED;	}	/* 为修改卡片信息表做赋值准备 */	strcpy( stNewCardInfo.chgdate,		pstPubcom->acTranDate	);	strcpy( stNewCardInfo.oldcardno,	stCmsCardInfo.cardno );    strcpy( stNewCardInfo.cardflg, stCmsCardInfo.cardflg );	stNewCardInfo.crdsts[ BIT1_LEN ] = CARDOKSTS;	/* 新密码处理 --> stNewCardInfo.passwd */	/*	strcpy( stNewCardInfo.passwd,		acPasswd );	*/	sprintf( g_acTrcMsg, "passwd[%s]DB[%s]",acPasswd,stNewCardInfo.passwd);	TRCLOG3	if ( OverPINBLOCK( acPasswd, stNewCardInfo.cardno, stNewCardInfo.passwd ))	{		ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")		return FAILED;	}	/* 修改卡片信息表记录 */	pubInitCmscardinfo();	pubStoVCmscardinfo( &stNewCardInfo );	EXEC SQL	UPDATE CMSCARDINFO				SET		( U_CMSCARDINFO ) = ( W_CMSCARDINFO )				WHERE	CURRENT OF Info_l_cur;	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS114" );		/* 数据库更新错误 */		pubCrtRspInfo( "cmscardinfo",SQLCODE );		ERRLOG	SQLCLOSECUR(Info_l_cur,"Info_l_cur")		return FAILED;	}	SQLCLOSECUR(Info_l_cur,"Info_l_cur")	/* 挂失补发更新卡账户对照表 */	iRtn = cmsApiChgCardSetAcct( &stCmsCardInfo, &stNewCardInfo );	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 为增加换卡登记簿做赋值准备 */	strcpy( stCmsChgM.oldcardno,	stCmsCardInfo.cardno	);	strcpy( stCmsChgM.newcardno,	stNewCardInfo.cardno	);	strcpy( stCmsChgM.chgdate,		pstPubcom->acTranDate	);	stCmsChgM.serseqno = pstPubcom->lSerSeqNo;	sprintf( stCmsChgM.vouchno,	"%s%0*ld", pstPubcom->acTranDate8, \					SERSEQNO_LEN, stCmsChgM.serseqno		);	strcpy( stCmsChgM.issuebrc,		stCmsCardInfo.issuebrc	);	strcpy( stCmsChgM.chgbrc,		pstPubcom->acBrc		);	strcpy( stCmsChgM.chgteller,	pstPubcom->acTeller		);	stCmsChgM.chgflg[ BIT1_LEN ] = LOSTCHGCARD;	stCmsChgM.status[ BIT1_LEN ] = NORMAL_STS;	/* 换卡增加卡号顺序号文件 */	iRtn = cmsApiChgCardCmsSeqNo( stCmsCardInfo.cardno, stNewCardInfo.cardno );	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 插入换卡登记簿 */	iRtn = pubInstCmschgm( &stCmsChgM );	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 登记账号索引表 */	iRtn = pubRegAcctNoIdx( stNewCardInfo.cardno, STR_CMS );	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 查询余额 */	strcpy( stDpsSaveDyn.subacct, stNewCardInfo.subacct );	if ( pubReadDpssaveaccdyninfo( &stDpsSaveDyn ) )	{		ERRLOG		return FAILED;	}	/* 是否写子交易流水 */	iRtn = cmsApiInsTranLog( pstPubcom, &stNewCardInfo, &stCmsAcctM, "补卡", "挂失补卡" );	if ( iRtn )	{		ERRLOG		return FAILED;	}	/* 子交易出口 */ 	setstring( "VouchNo", stCmsChgM.vouchno ); /* 登记簿编号	*/    setdouble( "Bal",     &stDpsSaveDyn.bal); 		strcpy( g_acTrcMsg, "子交易: 挂失补发处理结束.." );	TRCLOG4	strcpy( g_acRspCode,  RSP_OK );	return SUCCESS;}

⌨️ 快捷键说明

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