📄 cms522.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms522.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 "cmsactiom.h"#include "cmsacctm.h"EXEC SQL INCLUDE SQLCA;int cmsActOutCardPro( PUBCOM *pstPubcom ){ /*定义局部变量*/ struct cmscardinfo stCmsCardInfo; /* 卡片信息表 */ struct cmsacctm stCmsAcctM; /* 卡账户对照表 */ struct cmsactiom stCmsActioM; /* 移出移出登记簿 */ int iRtn; /* 函数返回值 */ strcpy( g_acTrcMsg, "子交易: 存折单移出卡处理开始.." ); TRCLOG4 /* 初始化 */ memset( &stCmsCardInfo, 0x00, sizeof( struct cmscardinfo ) ); memset( &stCmsAcctM, 0x00, sizeof( struct cmsacctm ) ); memset( &stCmsActioM, 0x00, sizeof( struct cmsactiom ) ); /* 取数据字典值 */ getstring( "CardNo", stCmsCardInfo.cardno ); /* 获取卡片信息 */ iRtn = pubReadCmscardinfo( &stCmsCardInfo ); if ( iRtn ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "卡号[%s]不存在", stCmsCardInfo.cardno ); ERRLOG return FAILED; } /* 从字典获取其他字段 */ getstring( "AcctSeqNo", stCmsAcctM.acctseqno ); getstring( "AcctNo1", stCmsActioM.acctno ); getstring( "IdType", stCmsActioM.idtype ); getstring( "IdNo", stCmsActioM.idcode ); getstring( "CustomName",stCmsActioM.custname ); /* 获取卡账户对照表并锁住记录 */ strcpy( stCmsAcctM.cardno, stCmsCardInfo.cardno ); pubStoVCmsacctm( &stCmsAcctM ); EXEC SQL DECLARE Acc_l_cur CURSOR FOR SELECT * FROM CMSACCTM WHERE cardno = :cmsacctm_cardno AND acctseqno = :cmsacctm_acctseqno FOR UPDATE; /* 定义游标错误 */ if ( SQLCODE ) { strcpy( g_acRspCode, "CMS110" ); pubCrtRspInfo( "cmsacctm", SQLCODE ); ERRLOG return FAILED; } SQLOPENCUR(Acc_l_cur,"Acc_l_cur") /* 打开游标错误 */ if ( SQLCODE ) { strcpy( g_acRspCode, "CMS111" ); pubCrtRspInfo( "cmsacctm", SQLCODE ); ERRLOG return FAILED; } pubInitCmsacctm(); EXEC SQL FETCH Acc_l_cur INTO R_CMSACCTM ; /* 取游标错误 */ if ( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy( g_acRspCode, "CMS112" ); pubCrtRspInfo( "cmsacctm", SQLCODE ); ERRLOG SQLCLOSECUR(Acc_l_cur,"Acc_l_cur") return FAILED; } /* 记录不存在 */ else if ( SQLCODE == SQLNOTFOUND ) { strcpy( g_acRspCode, "CMS113" ); sprintf( g_acRspMsg, "卡号[%s]帐户序号[%s]不存在", cmsacctm_cardno, cmsacctm_acctseqno ); ERRLOG SQLCLOSECUR(Acc_l_cur,"Acc_l_cur") return FAILED; } pubVtoSCmsacctm( &stCmsAcctM ); /* 为修改卡账户对照表准备数据 */ strcpy( stCmsAcctM.closebrc, pstPubcom->acBrc ); strcpy( stCmsAcctM.closeteller, pstPubcom->acTeller ); strcpy( stCmsAcctM.closedate, pstPubcom->acTranDate ); stCmsAcctM.status[ BIT1_LEN ] = MOVEOUT_STS; /* 移出 */ /* 修改卡账户对照表 */ pubInitCmsacctm(); pubStoVCmsacctm( &stCmsAcctM ); EXEC SQL UPDATE CMSACCTM SET ( U_CMSACCTM ) = ( W_CMSACCTM ) WHERE CURRENT OF Acc_l_cur; if ( SQLCODE ) { strcpy( g_acRspCode, "CMS114" ); /* 数据库更新错误 */ pubCrtRspInfo( "cmsacctm",SQLCODE ); ERRLOG SQLCLOSECUR(Acc_l_cur,"Acc_l_cur") return FAILED; }; SQLCLOSECUR(Acc_l_cur,"Acc_l_cur") /* 为增加移出移出登记簿做赋值准备 */ getdouble( "Bal", &stCmsActioM.balance ); strcpy( stCmsActioM.cardno, stCmsCardInfo.cardno ); strcpy( stCmsActioM.trandate, pstPubcom->acTranDate ); stCmsActioM.serseqno = pstPubcom->lSerSeqNo; sprintf( stCmsActioM.vouchno, "%s%0*ld", pstPubcom->acTranDate8, \ SERSEQNO_LEN, stCmsActioM.serseqno ); strcpy( stCmsActioM.acctseqno, stCmsAcctM.acctseqno ); strcpy( stCmsActioM.busskind, stCmsAcctM.busskind ); strcpy( stCmsActioM.ccy, stCmsAcctM.ccy ); strcpy( stCmsActioM.prdcod, stCmsAcctM.prdcod ); strcpy( stCmsActioM.subacct, stCmsAcctM.subacct ); strcpy( stCmsActioM.issuebrc, stCmsCardInfo.issuebrc ); strcpy( stCmsActioM.brc, pstPubcom->acBrc ); strcpy( stCmsActioM.teller, pstPubcom->acTeller ); stCmsActioM.opflg[ BIT1_LEN ] = MOVEOUT; /* 移出 */ /* 插入账户移入移出登记簿 */ iRtn = pubInstCmsactiom( &stCmsActioM ); if ( iRtn ) { ERRLOG return FAILED; } /* 是否写子交易流水 */ iRtn = cmsApiInsTranLog( pstPubcom, &stCmsCardInfo, &stCmsAcctM, "移出", "存单折移出卡" ); if ( iRtn ) { ERRLOG return FAILED; } /* 子交易出口 */ strcpy( g_acTrcMsg, "子交易: 存折单移出卡处理结束.." ); TRCLOG4 strcpy( g_acRspCode, RSP_OK ); return SUCCESS;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -