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

📄 cmslimit.sqc

📁 一整套完整的银行卡系统源代码
💻 SQC
📖 第 1 页 / 共 4 页
字号:
	}		pubInitCmslimitreg();		EXEC SQL	FETCH reg_cur INTO R_CMSLIMITREG;	if( SQLCODE && SQLCODE != SQLNOTFOUND )	{		sprintf(g_acRspCode,"CMS112");		pubCrtRspInfo("cmslimitreg",SQLCODE);		ERRLOG;		SQLCLOSECUR(reg_cur,"reg_cur")		return FAILED;	}	else if ( SQLCODE == SQLNOTFOUND )	{			strcpy( g_acRspCode, "000000" );		SQLCLOSECUR(reg_cur,"reg_cur")		return SUCCESS;	}	else	{		pubVtoSCmslimitreg( &stCmsLimitReg );		cmslimitreg_flag[ BIT1_LEN ] = YES;		EXEC SQL	UPDATE CMSLIMITREG					SET flag = :cmslimitreg_flag					WHERE CURRENT OF reg_cur;		if ( SQLCODE )		{			sprintf(g_acRspCode,"CMS112");			pubCrtRspInfo("cmslimitreg",SQLCODE);			ERRLOG;			SQLCLOSECUR(reg_cur,"reg_cur")			return FAILED;		}		SQLCLOSECUR(reg_cur,"reg_cur")	}			/* 获取卡片信息表 */	strcpy( stCmsCardInfo.cardno, pcCardNo );	iRtn = pubReadCmscardinfo( &stCmsCardInfo );	if ( iRtn )	{		if ( SQLCODE == SQLNOTFOUND )		{			strcpy(g_acRspCode,"CMS302");			pubCrtRspInfo( pcCardNo );		}		ERRLOG		return FAILED;	}	/* 检查附卡交易总限额 */	if ( ( stCmsCardInfo.cardflg[ BIT1_LEN ] == SUBMAIN_CARD )		&& ( cCDFlag == CDFLAG_D || cCDFlag == CDFLAG_C ) )	{		if ( cCDFlag == CDFLAG_D )			stCmsCardInfo.acduseamt -= dAmt;		else			stCmsCardInfo.acduseamt += dAmt;		if ( stCmsCardInfo.acduseamt <0.005 )			stCmsCardInfo.acduseamt = 0.0;		/* 修改卡片信息表 */		iRtn = pubModiCmscardinfo( &stCmsCardInfo );		/* 修改出错 */		if ( iRtn )		{			ERRLOG			return FAILED;		}	}	strcpy ( stCmsKTLimt.cardkind,		stCmsLimitReg.cardkind	);	strcpy ( stCmsKTLimt.trandevtype,	stCmsLimitReg.trandevtype );	strcpy ( stCmsKTLimt.ccy,			stCmsLimitReg.ccy );	/* 从卡片种类交易限额表获取记录 */	pubStoVCmsktlimt( &stCmsKTLimt );	EXEC SQL	SELECT	distinct(sametrandevtype)				INTO    :cmsktlimt_sametrandevtype				FROM	cmsktlimt				WHERE	cardkind = :cmsktlimt_cardkind				AND		trandevtype = :cmsktlimt_trandevtype				AND		ccy = :cmsktlimt_ccy;	/* 定义游标错 */	if ( SQLCODE && SQLCODE != SQLNOTFOUND )	{		strcpy( g_acRspCode, "CMS110" );		pubCrtRspInfo( "cmsktlimt", SQLCODE );		ERRLOG		return FAILED;	}	strcpy( caSameTranDevType, cmsktlimt_sametrandevtype );	sprintf( g_acTrcMsg, "cmsktlimt_sametrandevtype[%s]",cmsktlimt_sametrandevtype );	TRCLOG4	EXEC SQL	DECLARE KTlmt_2_cur CURSOR FOR				SELECT	*				FROM	cmsktlimt				WHERE	cardkind = :cmsktlimt_cardkind				AND		trandevtype = :cmsktlimt_sametrandevtype				AND		ccy = :cmsktlimt_ccy				ORDER BY period;	SQLOPENCUR(KTlmt_2_cur,"KTlmt_2_cur")	/* 打开游标错 */	if ( SQLCODE )	{		strcpy( g_acRspCode, "CMS111" );		pubCrtRspInfo( "cmsktlimt", SQLCODE );		ERRLOG		return FAILED;	}	while ( 1 )	{		/* 获取卡片种类的每种交易限额标准 */		pubInitCmsktlimt();		EXEC SQL	FETCH KTlmt_2_cur INTO R_CMSKTLIMT;		/* 取游标错误 */		if ( SQLCODE && SQLCODE != SQLNOTFOUND )		{			strcpy( g_acRspCode, "CMS112" );			pubCrtRspInfo( "cmsktlimt", SQLCODE );			ERRLOG	SQLCLOSECUR(KTlmt_2_cur,"KTlmt_2_cur")			return FAILED;		}		else if ( SQLCODE == SQLNOTFOUND )			break;		pubVtoSCmsktlimt( &stCmsKTLimt );		/* 周期长度非0,需要检查合计数目和次数 */		/* 按每种的卡片种类的键值获取卡交易统计表 */		memset ( &stCmsTTotal,	0x00, sizeof( struct cmsttotal ) );		strcpy ( stCmsTTotal.cardno,		pcCardNo		);		strcpy ( stCmsTTotal.trandevtype,	caSameTranDevType	);		strcpy ( stCmsTTotal.ccy,			pcCCY			);		strcpy ( stCmsTTotal.startdate,		pstPubcom->acTranDate	);		strcpy ( stCmsTTotal.enddate,		pstPubcom->acTranDate	);		stCmsTTotal.period = stCmsKTLimt.period;		pubStoVCmsttotal( &stCmsTTotal );		EXEC SQL	DECLARE tot1_2_cur CURSOR FOR					SELECT	*					FROM	cmsttotal					WHERE	cardno = :cmsttotal_cardno					AND		trandevtype = :cmsttotal_trandevtype					AND		ccy = :cmsttotal_ccy					AND		period = :cmsttotal_period					AND		startdate <= :cmsttotal_startdate					AND		enddate >= :cmsttotal_enddate	/*				ORDER BY startdate */					FOR UPDATE;	SQLOPENCUR(tot1_2_cur,"tot1_2_cur")		/* 打开游标错误 */		if ( SQLCODE )		{			strcpy( g_acRspCode, "CMS111" );			pubCrtRspInfo( "cmsttotal", SQLCODE );			ERRLOG	SQLCLOSECUR(KTlmt_2_cur,"KTlmt_2_cur")			return FAILED;		}				/* 循环处理每条起始日期小于且结束日期大于当前业务日期的记录 */		iCurDateNum = 0;		while ( 1 )		{			pubInitCmsttotal();			EXEC SQL	FETCH tot1_2_cur INTO R_CMSTTOTAL;			/* 取游标错误 */			if ( SQLCODE && SQLCODE != SQLNOTFOUND )			{				strcpy( g_acRspCode, "CMS112" );				pubCrtRspInfo( "cmsttotal", SQLCODE );				ERRLOG	SQLCLOSECUR(tot1_2_cur,"tot1_2_cur")	SQLCLOSECUR(KTlmt_2_cur,"KTlmt_2_cur")				return FAILED;			}			else if ( SQLCODE == SQLNOTFOUND )				break;			pubVtoSCmsttotal( &stCmsTTotal );			/* 抹帐情况的处理 */			switch ( stCmsLimitReg.tranmode[ BIT1_LEN ] )			{				/* 取款 */				case MODE_WITHDRAW:					if ( cCDFlag == CDFLAG_D )					{						stCmsTTotal.withdrawamt -= dAmt;						if (stCmsTTotal.withdrawamt < -0.005)							stCmsTTotal.withdrawamt = 0.00;						stCmsTTotal.withdrawtimes -= 1;						if (stCmsTTotal.withdrawtimes < 0)							stCmsTTotal.withdrawtimes = 0;					}					else					{						stCmsTTotal.withdrawamt += dAmt;						if (stCmsTTotal.withdrawamt < -0.005)							stCmsTTotal.withdrawamt = 0.00;						stCmsTTotal.withdrawtimes += 1;						if (stCmsTTotal.withdrawtimes < 0)							stCmsTTotal.withdrawtimes = 0;					}					break;				/* 存款 */				case MODE_DEPOSIT:					if ( cCDFlag == CDFLAG_C )					{						stCmsTTotal.depositamt -= dAmt;						if (stCmsTTotal.depositamt < -0.005)							stCmsTTotal.depositamt = 0.00;						stCmsTTotal.deposittimes -= 1;						if (stCmsTTotal.deposittimes < 0)							stCmsTTotal.deposittimes = 0;					}					else					{						stCmsTTotal.depositamt += dAmt;						if (stCmsTTotal.depositamt < -0.005)							stCmsTTotal.depositamt = 0.00;						stCmsTTotal.deposittimes += 1;						if (stCmsTTotal.deposittimes < 0)							stCmsTTotal.deposittimes = 0;					}					break;				/* 消费 */				case MODE_CONSUME:					if ( cCDFlag == CDFLAG_D )					{						stCmsTTotal.conamt -= dAmt;						if (stCmsTTotal.conamt < -0.005)							stCmsTTotal.conamt = 0.00;						stCmsTTotal.contimes -= 1;						if (stCmsTTotal.contimes < 0)							stCmsTTotal.contimes = 0;					}					else					{						stCmsTTotal.conamt += dAmt;						if (stCmsTTotal.conamt < -0.005)							stCmsTTotal.conamt = 0.00;						stCmsTTotal.contimes += 1;						if (stCmsTTotal.contimes < 0)							stCmsTTotal.contimes = 0;					}					break;				/* 转出 */				case MODE_TRANSFEROUT:					if ( cCDFlag == CDFLAG_D )					{						stCmsTTotal.tranoutamt -= dAmt;						if (stCmsTTotal.tranoutamt < -0.005)							stCmsTTotal.tranoutamt = 0.00;						stCmsTTotal.tranouttimes -= 1;						if (stCmsTTotal.tranouttimes < 0)							stCmsTTotal.tranouttimes = 0;					}					else					{						stCmsTTotal.tranoutamt += dAmt;						if (stCmsTTotal.tranoutamt < -0.005)							stCmsTTotal.tranoutamt = 0.00;						stCmsTTotal.tranouttimes += 1;						if (stCmsTTotal.tranouttimes < 0)							stCmsTTotal.tranouttimes = 0;					}					break;				/* 转入 */				case MODE_TRANSFERIN:					if ( cCDFlag == CDFLAG_C )					{						stCmsTTotal.traninamt -= dAmt;						if (stCmsTTotal.traninamt < -0.005)							stCmsTTotal.traninamt = 0.00;						stCmsTTotal.tranintimes -= 1;						if (stCmsTTotal.tranintimes < 0)							stCmsTTotal.tranintimes = 0;					}					else					{						stCmsTTotal.traninamt += dAmt;						if (stCmsTTotal.traninamt < -0.005)							stCmsTTotal.traninamt = 0.00;						stCmsTTotal.tranintimes += 1;						if (stCmsTTotal.tranintimes < 0)							stCmsTTotal.tranintimes = 0;					}					break;			}			pubStoVCmsttotal( &stCmsTTotal );			EXEC SQL UPDATE cmsttotal 					SET ( U_CMSTTOTAL ) = ( W_CMSTTOTAL ) 					WHERE CURRENT of tot1_2_cur;			/* 按游标修改错误 */		    if ( SQLCODE )			{				strcpy( g_acRspCode, "CMS114" );				pubCrtRspInfo( "cmsttotal", SQLCODE );				ERRLOG	SQLCLOSECUR(tot1_2_cur,"tot1_2_cur")	SQLCLOSECUR(KTlmt_2_cur,"KTlmt_2_cur")				return FAILED;			}		}	SQLCLOSECUR(tot1_2_cur,"tot1_2_cur")	}	SQLCLOSECUR(KTlmt_2_cur,"KTlmt_2_cur")	/* 累计积分 */	iRtn = cmsApiAccumTotal( pstPubcom, stCmsCardInfo.cardno, \			dAmt, stCmsLimitReg.ccy, stCmsLimitReg.cdtrantype, \			stCmsLimitReg.mid, stCmsLimitReg.mctmcc, \			stCmsCardInfo.issuebrc, stCmsCardInfo.custno, '1' );	if ( iRtn )	{		ERRLOG		return FAILED;	}		sprintf( g_acTrcMsg, "cmsApiCardTranLimitAmtReverse end " );	TRCLOG2	strcpy( g_acRspCode, "000000" );	return SUCCESS;}

⌨️ 快捷键说明

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