📄 cmslimit.sqc
字号:
strcpy( g_acRspCode, "CMS115" ); pubCrtRspInfo( dCashLimitAmt, dAmt ); ERRLOG SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } break; /* 存款 */ case MODE_DEPOSIT: /* 存款金额超过存款限额 */ sprintf( g_acTrcMsg, "22dDepoLimitAmt - dAmt[%lf] fabs( dDepoLimitAmt - ZEROS )[%lf]",dDepoLimitAmt - dAmt,fabs( dDepoLimitAmt - ZEROS ) ); TRCLOG4 if ( ( dDepoLimitAmt - dAmt ) < -0.005 && ( fabs( dDepoLimitAmt - ZEROS ) > 0.005 ) ) { strcpy( g_acRspCode, "CMS116" ); pubCrtRspInfo( dDepoLimitAmt, dAmt ); ERRLOG SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } break; /* 消费 */ case MODE_CONSUME: /* 消费金额超过消费限额 */ sprintf( g_acTrcMsg, "33dConLimitAmt - dAmt[%lf] fabs( dConLimitAmt - ZEROS )[%lf]",dConLimitAmt - dAmt,fabs( dConLimitAmt - ZEROS ) ); TRCLOG4 if ( ( dConLimitAmt - dAmt ) < -0.005 && ( fabs( dConLimitAmt - ZEROS ) > 0.005 ) ) { strcpy( g_acRspCode, "CMS117" ); pubCrtRspInfo( dConLimitAmt, dAmt ); ERRLOG SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } break; /* 转出 */ case MODE_TRANSFEROUT: /* 转出金额超过转出限额 */ sprintf( g_acTrcMsg, "33dTranOutLimitAmt - dAmt[%lf] fabs( dTranOutLimitAmt - ZEROS )[%lf]",dTranOutLimitAmt - dAmt,fabs( dTranOutLimitAmt - ZEROS ) ); TRCLOG4 if ( ( dTranOutLimitAmt - dAmt ) < -0.005 && ( fabs( dTranOutLimitAmt - ZEROS ) > 0.005 ) ) { strcpy( g_acRspCode, "CMS118" ); pubCrtRspInfo( dTranOutLimitAmt, dAmt ); ERRLOG SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } break; } } } /* 周期长度非0,需要检查合计数目和次数 */ else { /* 按每种的卡片种类的键值获取卡交易统计表 */ memset ( &stCmsTTotal, 0x00, sizeof( struct cmsttotal ) ); strcpy ( stCmsTTotal.cardno, pcCardNo ); strcpy ( stCmsTTotal.trandevtype, caSameTranDevType ); strcpy ( stCmsTTotal.ccy, pcCCY ); strcpy ( stCmsTTotal.startdate, pcTranDate ); strcpy ( stCmsTTotal.enddate, pcTranDate ); stCmsTTotal.period = stCmsKTLimt.period; sprintf( g_acTrcMsg, "[stCmsTTotal cond] cardno[%s] trandevtype[%s] ccy[%s] startdate[%s] enddate[%s] period[%d]",stCmsTTotal.cardno, stCmsTTotal.trandevtype, stCmsTTotal.ccy, stCmsTTotal.startdate, stCmsTTotal.enddate, stCmsTTotal.period ); TRCLOG4 pubStoVCmsttotal( &stCmsTTotal ); EXEC SQL DECLARE tot1_l_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; /* 定义游标错误 if ( SQLCODE ) { strcpy ( g_acRspCode, "CMS110" ); pubCrtRspInfo( "cmsttotal", SQLCODE ); ERRLOG SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } */ SQLOPENCUR(tot1_l_cur,"tot1_l_cur") /* 打开游标错误 */ if ( SQLCODE ) { strcpy( g_acRspCode, "CMS111" ); pubCrtRspInfo( "cmsttotal", SQLCODE ); ERRLOG SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } /* 循环处理每条起始日期小于且结束日期大于当前业务日期的记录 */ iCurDateNum = 0; while ( 1 ) { pubInitCmsttotal(); EXEC SQL FETCH tot1_l_cur INTO R_CMSTTOTAL; /* 取游标错误 */ if ( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy( g_acRspCode, "CMS112" ); pubCrtRspInfo( "cmsttotal", SQLCODE ); ERRLOG SQLCLOSECUR(tot1_l_cur,"tot1_l_cur") SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } else if ( SQLCODE == SQLNOTFOUND ) break; pubVtoSCmsttotal( &stCmsTTotal ); sprintf( g_acTrcMsg, "[stCmsTTotal] withdrawamt[%lf] depositamt[%lf] conamt[%lf] tranoutamt[%lf] traninamt[%lf] withdrawtimes[%d] deposittimes[%d] contimes[%d] tranouttimes[%d] tranintimes[%d] startdate[%s] enddate[%s]",stCmsTTotal.withdrawamt, stCmsTTotal.depositamt, stCmsTTotal.conamt, stCmsTTotal.tranoutamt, stCmsTTotal.traninamt, stCmsTTotal.withdrawtimes, stCmsTTotal.deposittimes, stCmsTTotal.contimes, stCmsTTotal.tranouttimes, stCmsTTotal.tranintimes, stCmsTTotal.startdate, stCmsTTotal.enddate ); TRCLOG4 /* 记录以当前业务日期为起始日期的记录数目,以决定是否增加 以当前业务日期为起始日期新的纪录 */ if ( !strcmp( stCmsTTotal.startdate, pcTranDate ) ) iCurDateNum ++; /* 判断交易类型, 下面ZEROS=0表示对金额不限制 */ switch ( cMode ) { /* 取款 */ case MODE_WITHDRAW: /* 正常情况的处理 */ if ( cFlag == FLAG_NORMAL ) { /* 取款合计金额超过取款限额 */ sprintf( g_acTrcMsg, "44dCashLimitAmt - dAmt - stCmsTTotal.withdrawamt[%lf] fabs( dCashLimitAmt - ZEROS )[%lf]",dCashLimitAmt - dAmt - stCmsTTotal.withdrawamt,fabs( dCashLimitAmt - ZEROS ) ); TRCLOG4 if ( ( dCashLimitAmt - dAmt - \ stCmsTTotal.withdrawamt ) < -0.005 \ && ( fabs( dCashLimitAmt - ZEROS ) > 0.005 ) ) { strcpy( g_acRspCode, "CMS115" ); pubCrtRspInfo( dCashLimitAmt, dAmt ); ERRLOG SQLCLOSECUR(tot1_l_cur,"tot1_l_cur") SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } stCmsTTotal.withdrawamt += dAmt; /* 取款次数超过限制 */ sprintf( g_acTrcMsg, "44iCashLimitTime - stCmsTTotal.withdrawtimes - 1[%d] (iCashLimitTime - ZEROS )[%d]",iCashLimitTime - stCmsTTotal.withdrawtimes - 1, iCashLimitTime - ZEROS ); TRCLOG4 if ( iCashLimitTime - stCmsTTotal.withdrawtimes \ -1 < 0 && iCashLimitTime > ZEROS ) { strcpy( g_acRspCode, "CMS119" ); pubCrtRspInfo( iCashLimitTime, \ stCmsTTotal.withdrawtimes +1 ); ERRLOG SQLCLOSECUR(tot1_l_cur,"tot1_l_cur") SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } stCmsTTotal.withdrawtimes ++; } /* 抹帐情况的处理 */ else { stCmsTTotal.withdrawamt -= dAmt; if (stCmsTTotal.withdrawamt < -0.005) stCmsTTotal.withdrawamt = 0.00; stCmsTTotal.withdrawtimes -= 1; if (stCmsTTotal.withdrawtimes < 0) stCmsTTotal.withdrawtimes = 0; } sprintf( g_acTrcMsg, "[stCmsTTotal] withdrawamt[%lf] depositamt[%lf] conamt[%lf] tranoutamt[%lf] traninamt[%lf] withdrawtimes[%d] deposittimes[%d] contimes[%d] tranouttimes[%d] tranintimes[%d] startdate[%s] enddate[%s]",stCmsTTotal.withdrawamt, stCmsTTotal.depositamt, stCmsTTotal.conamt, stCmsTTotal.tranoutamt, stCmsTTotal.traninamt, stCmsTTotal.withdrawtimes, stCmsTTotal.deposittimes, stCmsTTotal.contimes, stCmsTTotal.tranouttimes, stCmsTTotal.tranintimes, stCmsTTotal.startdate, stCmsTTotal.enddate ); TRCLOG4 break; /* 存款 */ case MODE_DEPOSIT: /* 正常情况的处理 */ if ( cFlag == FLAG_NORMAL ) { /* 存款合计金额超过存款限额 */ sprintf( g_acTrcMsg, "66dDepoLimitAmt - dAmt - stCmsTTotal.depositamt[%lf] fabs( dDepoLimitAmt - ZEROS )[%lf]",dDepoLimitAmt - dAmt - stCmsTTotal.depositamt,fabs( dDepoLimitAmt - ZEROS ) ); TRCLOG4 if ( ( dDepoLimitAmt - dAmt - \ stCmsTTotal.depositamt) < -0.005 && ( fabs( dDepoLimitAmt - ZEROS ) > 0.005 ) ) { strcpy( g_acRspCode, "CMS116" ); pubCrtRspInfo( dDepoLimitAmt, dAmt ); ERRLOG SQLCLOSECUR(tot1_l_cur,"tot1_l_cur") SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } stCmsTTotal.depositamt += dAmt; /* 存款次数超过限制 */ sprintf( g_acTrcMsg, "66iDepoLimitTime - stCmsTTotal.deposittimes - 1[%d] (iDepoLimitTime - ZEROS )[%d]",iDepoLimitTime - stCmsTTotal.deposittimes - 1, iDepoLimitTime - ZEROS ); TRCLOG4 if ( iDepoLimitTime - stCmsTTotal.deposittimes \ -1 < 0 && iDepoLimitTime > ZEROS ) { strcpy( g_acRspCode, "CMS120" ); pubCrtRspInfo( iDepoLimitTime, \ stCmsTTotal.deposittimes +1 ); ERRLOG SQLCLOSECUR(tot1_l_cur,"tot1_l_cur") SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } stCmsTTotal.deposittimes ++; } /* 抹帐情况的处理 */ else { stCmsTTotal.depositamt -= dAmt; if (stCmsTTotal.depositamt < -0.005) stCmsTTotal.depositamt = 0.00; stCmsTTotal.deposittimes -= 1; if (stCmsTTotal.deposittimes < 0) stCmsTTotal.deposittimes = 0; } sprintf( g_acTrcMsg, "[stCmsTTotal] withdrawamt[%lf] depositamt[%lf] conamt[%lf] tranoutamt[%lf] traninamt[%lf] withdrawtimes[%d] deposittimes[%d] contimes[%d] tranouttimes[%d] tranintimes[%d] startdate[%s] enddate[%s]",stCmsTTotal.withdrawamt, stCmsTTotal.depositamt, stCmsTTotal.conamt, stCmsTTotal.tranoutamt, stCmsTTotal.traninamt, stCmsTTotal.withdrawtimes, stCmsTTotal.deposittimes, stCmsTTotal.contimes, stCmsTTotal.tranouttimes, stCmsTTotal.tranintimes, stCmsTTotal.startdate, stCmsTTotal.enddate ); TRCLOG4 break; /* 消费 */ case MODE_CONSUME: /* 正常情况的处理 */ if ( cFlag == FLAG_NORMAL ) { /* 消费合计金额超过消费限额 */ sprintf( g_acTrcMsg, "77dConLimitAmt - dAmt - stCmsTTotal.conamt [%lf] fabs( dConLimitAmt - ZEROS )[%lf]",dConLimitAmt - dAmt - stCmsTTotal.conamt ,fabs( dConLimitAmt - ZEROS ) ); TRCLOG4 if ( ( dConLimitAmt - dAmt - \ stCmsTTotal.conamt ) < -0.005 && ( fabs( dConLimitAmt - ZEROS ) > 0.005 ) ) { strcpy( g_acRspCode, "CMS117" ); pubCrtRspInfo( dConLimitAmt, dAmt ); ERRLOG SQLCLOSECUR(tot1_l_cur,"tot1_l_cur") SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } stCmsTTotal.conamt += dAmt; /* 消费次数超过限制 */ sprintf( g_acTrcMsg, "77iConLimitTime - stCmsTTotal.contimes -1[%d] (iConLimitTime - ZEROS )[%d]",iConLimitTime - stCmsTTotal.contimes - 1, iConLimitTime - ZEROS ); TRCLOG4 if ( iConLimitTime - stCmsTTotal.contimes -1 \ < 0 && iConLimitTime > ZEROS ) { strcpy( g_acRspCode, "CMS121" ); pubCrtRspInfo( iConLimitTime, \ stCmsTTotal.contimes +1 ); ERRLOG SQLCLOSECUR(tot1_l_cur,"tot1_l_cur") SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } stCmsTTotal.contimes ++; } /* 抹帐情况的处理 */ else { stCmsTTotal.conamt -= dAmt; if (stCmsTTotal.conamt < -0.005) stCmsTTotal.conamt = 0.00; stCmsTTotal.contimes -= 1; if (stCmsTTotal.contimes < 0) stCmsTTotal.contimes = 0; } sprintf( g_acTrcMsg, "[stCmsTTotal] withdrawamt[%lf] depositamt[%lf] conamt[%lf] tranoutamt[%lf] traninamt[%lf] withdrawtimes[%d] deposittimes[%d] contimes[%d] tranouttimes[%d] tranintimes[%d] startdate[%s] enddate[%s]",stCmsTTotal.withdrawamt, stCmsTTotal.depositamt, stCmsTTotal.conamt, stCmsTTotal.tranoutamt, stCmsTTotal.traninamt, stCmsTTotal.withdrawtimes, stCmsTTotal.deposittimes, stCmsTTotal.contimes, stCmsTTotal.tranouttimes, stCmsTTotal.tranintimes, stCmsTTotal.startdate, stCmsTTotal.enddate ); TRCLOG4 break; /* 转出 */ case MODE_TRANSFEROUT: /* 正常情况的处理 */ if ( cFlag == FLAG_NORMAL ) { /* 转出合计金额超过转出限额 */ sprintf( g_acTrcMsg, "88dTranOutLimitAmt - dAmt - stCmsTTotal.tranoutamt[%lf] fabs( dTranOutLimitAmt - ZEROS )[%lf]",dTranOutLimitAmt - dAmt - stCmsTTotal.tranoutamt,fabs( dTranOutLimitAmt - ZEROS ) ); TRCLOG4 if (( dTranOutLimitAmt - dAmt - \ stCmsTTotal.tranoutamt ) < -0.005 && ( fabs( dTranOutLimitAmt - ZEROS ) > 0.005 )) { strcpy( g_acRspCode, "CMS118" ); pubCrtRspInfo( dTranOutLimitAmt, dAmt ); ERRLOG SQLCLOSECUR(tot1_l_cur,"tot1_l_cur") SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } stCmsTTotal.tranoutamt += dAmt; /* 转出次数超过限制 */ sprintf( g_acTrcMsg, "88iTranOutLimitTime - stCmsTTotal.tranouttimes -1[%d] (iTranOutLimitTime - ZEROS )[%d]",iTranOutLimitTime - stCmsTTotal.tranouttimes - 1, iTranOutLimitTime - ZEROS ); TRCLOG4 if ( iTranOutLimitTime - \ stCmsTTotal.tranouttimes -1 < 0 \ && iTranOutLimitTime > ZEROS ) { strcpy( g_acRspCode, "CMS122" ); pubCrtRspInfo( iTranOutLimitTime, \ stCmsTTotal.tranouttimes +1 ); ERRLOG SQLCLOSECUR(tot1_l_cur,"tot1_l_cur") SQLCLOSECUR(KTlmt_l_cur,"KTlmt_l_cur") return FAILED; } stCmsTTotal.tranouttimes ++; } /* 抹帐情况的处理 */ else { stCmsTTotal.tranoutamt -= dAmt; if (stCmsTTotal.tranoutamt < -0.005) stCmsTTotal.tranoutamt = 0.00; stCmsTTotal.tranouttimes -= 1; if (stCmsTTotal.tranouttimes < 0) stCmsTTotal.tranouttimes = 0; } sprintf( g_acTrcMsg, "[stCmsTTotal] withdrawamt[%lf] depositamt[%lf] conamt[%lf] tranoutamt[%lf] traninamt[%lf] withdrawtimes[%d] deposittimes[%d] contimes[%d] tranouttimes[%d] tranintimes[%d] startdate[%s] enddate[%s]",stCmsTTotal.withdrawamt, stCmsTTotal.depositamt, stCmsTTotal.conamt, stCmsTTotal.tranoutamt, stCmsTTotal.traninamt, stCmsTTotal.withdrawtimes, stCmsTTotal.deposittimes, stCmsTTotal.contimes, stCmsTTotal.tranouttimes, stCmsTTotal.tranintimes, stCmsTTotal.startdate, stCmsTTotal.enddate ); TRCLOG4 break; /* 转入 */ case MODE_TRANSFERIN: /* 正常情况的处理 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -