📄 cms034.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms034.SQC ** 所属子系统 : CMS ** 当前文件版本 : 4.0.0.0 ** 作者 : guoyun ** 版本创建日期 : 2004/10/25 ** 功能描述 : 无折卡换有折卡处理子交易 ** 修改记录 : ** 修改人 修改日期 修改日期*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include "cmscode.h"#include "cmscardinfo.h"#include "cmsacctm.h"#include "cmscardkind.h"#include "dpssaveprdinfo.h"EXEC SQL INCLUDE SQLCA;int cmsChgNoBookToCardPro( PUBCOM *pstPubcom ){ /*定义局部变量*/ int iRtn; /* 函数返回值 */ int iNumx; /* 数组计数器 */ int iNumy; /* 数组计数器 */ char acCardStat[ BIT21_LEN ][BIT11_LEN]; /* 卡状态检查标志 */ char acCheckFlag[ BIT8_LEN + 1 ]; /* 检查卡片种类标志 */ struct cmscardinfo stCmsCardInfo; /* 卡片信息表 */ struct cmsacctm stCmsAcctM; /* 卡帐户对照表 */ struct dpssaveprdinfo stDpsSavePrd; /* 活期产品信息 */ struct cmscardkind stCmsCardKind; /* 卡片种类表 */ char acCardNo[ CARDNO_LEN + 1 ]; /* 卡号 */ char acPasswd[ PASSWD_LEN+1 ]; /* 密码 */ char acPasswd1[ PASSWD_LEN+1 ]; /* 存折密码 */ char acPasswd2[ PASSWD_LEN+1 ]; /* 存折密码 */ char acAcctNo[ ACCT_LEN + 1 ]; /* 存折账号 */ char acSubAcct[ ACCTT_LEN + 1 ]; /* 款项代码 */ char acVouKind[ VOUKIND_LEN + 1 ]; /* 凭证种类 */ char acVouNo[ VOUNO_LEN + 1 ]; /* 凭证号码 */ char acPreCharCode[ PRECHARCODE_LEN + 1 ]; /* 冠字号码 */ char acDrwType[ WTHCODE_LEN + 1 ]; /* 支取方式 */ char acSealNo[ SEALNO_LEN + 1 ]; /* 印鉴卡号 */ char acIdType[ IDTYPE_LEN + 1 ]; /* 证件类型 */ char acIdNo[ IDNO_LEN + 1 ]; /* 证件号码 */ char acVouKind1[ VOUKIND_LEN + 1 ]; /* 凭证种类标准 */ strcpy( g_acTrcMsg, "子交易: 无折卡换有折卡处理子交易开始.." ); TRCLOG4 /* 初始化 */ memset( &stCmsCardInfo, 0x00, sizeof( struct cmscardinfo ) ); memset( &stCmsAcctM, 0x00, sizeof( struct cmsacctm ) ); memset( &stCmsCardKind, 0x00, sizeof( struct cmscardkind ) ); memset( acCardNo, 0x00, sizeof( acCardNo ) ); memset( acCardStat, 0x00, sizeof( acCardStat ) ); memset( acCheckFlag, 0x00, sizeof( acCheckFlag ) ); memset( acPasswd, 0x00, sizeof( acPasswd ) ); memset( acAcctNo, 0x00, sizeof( acAcctNo ) ); memset( acSubAcct, 0x00, sizeof( acSubAcct ) ); memset( acPasswd1, 0x00, sizeof( acPasswd1 ) ); memset( acPasswd2, 0x00, sizeof( acPasswd2 ) ); memset( acDrwType, 0x00, sizeof( acDrwType ) ); memset( acSealNo, 0x00, sizeof( acSealNo ) ); memset( acVouNo, 0x00, sizeof( acVouNo ) ); memset( acVouKind, 0x00, sizeof( acVouKind ) ); memset( acPreCharCode, 0x00, sizeof( acPreCharCode ) ); memset( acIdNo, 0x00, sizeof( acIdNo ) ); memset( acIdType, 0x00, sizeof( acIdType ) ); memset( acVouKind1, 0x00, sizeof( acVouKind1 ) ); /* 取数据字典值 */ getstring( "CardNo", acCardNo ); getstring( "AcctNo", acAcctNo ); getstring( "SubAcct", acSubAcct ); getstring( "DrwType", acDrwType ); getstring( "IdNo1", acIdNo ); getstring( "IdType1", acIdType ); getstring( "SealNo", acSealNo ); getstring( "Passwd", acPasswd ); getstring( "Passwd1", acPasswd1 ); getstring( "VouKind", acVouKind ); getstring( "VouNo", acVouNo ); getstring( "PreCharCode", acPreCharCode ); /* 获取卡片信息 */ strcpy( stCmsCardInfo.cardno, acCardNo); iRtn = pubReadCmscardinfo( &stCmsCardInfo ); if ( iRtn ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "卡号[%s]不存在", stCmsCardInfo.cardno ); ERRLOG return FAILED; } /* 卡检查状态数组中第一维中的第一个字符全置为'1',则检查卡片状态是否正常 */ for ( iNumx = 0; iNumx < BIT21_LEN; iNumx ++ ) for ( iNumy = 0; iNumy < BIT11_LEN; iNumy ++ ) { if ( iNumy == 0 ) acCardStat[iNumx][iNumy] = CHECK_YES; else acCardStat[iNumx][iNumy] = CHECK_NO; } acCardStat[BIT15_LEN][BIT2_LEN] = CHECK_YES; /* 检查卡状态是否正常 */ iRtn = cmsApiChkCardStatIsNormal( &stCmsCardInfo, acCardStat ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查卡是否为个人卡API, 不是个人卡返回错误*/ iRtn = cmsApiChkIsPersonCard( &stCmsCardInfo ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查卡号是否为主卡,不是主卡返回错误 */ iRtn = cmsApiChkCardNoIsMain( &stCmsCardInfo ); if ( iRtn ) { ERRLOG return FAILED; } /* 获取卡片种类表 */ iRtn = cmsApiGetCmsCardKind( stCmsCardInfo.cardkind, &stCmsCardKind ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查卡密码 */ iRtn = cmsApiChkCardPwd( &stCmsCardInfo, acPasswd, pstPubcom->acChannelId ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查卡片种类(全部属性)API是否为启用标志、检查卡种交易类型、检查业务发生地 */ acCheckFlag[ BIT1_LEN ] = CHECK_YES; /* 检查启用标志 */ acCheckFlag[ BIT2_LEN ] = CHECK_YES; /* 检查卡种交易类型 */ acCheckFlag[ BIT3_LEN ] = CHECK_YES; /* 检查业务发生地 */ acCheckFlag[ BIT4_LEN ] = CHECK_NO; /* 检查发卡对象 单/个 */ acCheckFlag[ BIT5_LEN ] = CHECK_NO; /* 检查记名标志 */ acCheckFlag[ BIT6_LEN ] = CHECK_NO; /* 不检查挂失标志 */ iRtn = cmsApiChkCardKind( &stCmsCardKind, acCheckFlag, LOGOTHER, pstPubcom->acChannelId, PERSONALCARD, REGNAMECARD, CZEROS, "" ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查卡内是否存在主帐户外的账户 iRtn = cmsApiChkCardNoHasOtherAcct( stCmsCardInfo.cardno ); if ( iRtn ) { strcpy( g_acRspCode, "CMS1C7" ); pubCrtRspInfo( stCmsCardInfo.cardno ); ERRLOG return FAILED; } */ /* 检查卡是否为无折卡 */ if ( stCmsCardInfo.hasbankbook[ BIT1_LEN ] == BANKBOOK ) { strcpy( g_acRspCode, "CMS1C6" ); pubCrtRspInfo( stCmsCardInfo.cardno ); ERRLOG return FAILED; } /* 检查卡是否为非专用卡 */ if ( stCmsCardInfo.cardattr[ BIT1_LEN ] == BURNCARD || stCmsCardInfo.cardattr[ BIT1_LEN ] == LAKECARD ) { strcpy( g_acRspCode, "CMS1E1" ); pubCrtRspInfo( stCmsCardInfo.cardno ); ERRLOG return FAILED; } /* 获取卡帐户信息 */ strcpy( stCmsAcctM.cardno, acCardNo); strcpy( stCmsAcctM.acctseqno, stCmsCardInfo.acctseqno ); iRtn = pubReadCmsacctm( &stCmsAcctM ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查卡内账户是否捆绑折 */ if ( stCmsAcctM.cardbookflag[ BIT1_LEN ] == ACCOPENFLG_BOOK ) { strcpy( g_acRspCode, "CMS1C8" ); pubCrtRspInfo( stCmsAcctM.acctno ); ERRLOG return FAILED; } stCmsCardInfo.hasbankbook[0] = BANKBOOK; strcpy( stCmsCardInfo.chgdate, pstPubcom->acTranDate ); iRtn = pubModiCmscardinfo( &stCmsCardInfo ); if ( iRtn ) { ERRLOG return FAILED; } stCmsAcctM.cardbookflag[0] = ACCOPENFLG_BOOK; iRtn = pubModiCmsacctm( &stCmsAcctM ); if ( iRtn ) { ERRLOG return FAILED; } /* 检查移出凭证 */ memset( &stDpsSavePrd, 0x00, sizeof( struct dpssaveprdinfo ) ); strcpy( stDpsSavePrd.prdcode, stCmsAcctM.prdcod ); iRtn = pubReadDpssaveprdinfo( &stDpsSavePrd ); if ( iRtn ) { ERRLOG return FAILED; } strncpy( acVouKind1, stDpsSavePrd.opnvoukind, VOUKIND_LEN ); acVouKind1[VOUKIND_LEN]='\0'; if ( strcmp( acVouKind, acVouKind1 ) ) { strcpy( g_acRspCode, "CMS1D8" ); pubCrtRspInfo( acVouKind, acVouKind1 ); ERRLOG return FAILED; } /* 密码处理 --> stCmsCardInfo.passwd */ sprintf( g_acTrcMsg, "passwd[%s]",acPasswd1); TRCLOG3 /* if ( OverPINBLOCK( acPasswd1, acAcctNo, acPasswd2 )) { ERRLOG return FAILED; } */ /* 调用存款API 处理卡补折 */ iRtn = dpsCarAddBooStaOper( pstPubcom, acAcctNo, acPreCharCode, acVouKind, \ acVouNo, acDrwType, acSealNo, acIdType, acIdNo, acPasswd1 ); 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 + -