📄 cmslimit.sqc
字号:
} 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 + -