📄 cms035.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms035.SQC ** 所属子系统 : CMS ** 当前文件版本 : 1.0.0.0 ** 作者 : guoyun ** 版本创建日期 : 2004/10/28 ** 功能描述 : 保号换记名卡申请处理子交易 ** 修改记录 : ** 修改人 修改日期 修改说明 ** Feng 2006-01-16 增加废卡登记簿处理*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include <stdio.h>#include <stdlib.h>#include <math.h>#include "cmscode.h"#include "cmspcdreg.h"#include "cmscardinfo.h"#include "cmsacctm.h"#include "cmscardkind.h"#include "cmscardcancelt.h"#include "ciscustomerinfo.h"EXEC SQL INCLUDE SQLCA;int cmsChgNameCardAplyPro( PUBCOM *pstPubcom ){ /*定义局部变量*/ int iRtn; /* 函数返回值 */ int iNumx; /* 数组计数器 */ int iNumy; /* 数组计数器 */ char acCardStat[ BIT21_LEN ][BIT11_LEN]; /* 卡状态检查标志 */ char acCheckFlag[ BIT8_LEN + 1 ]; /* 检查卡片种类标志 */ char acBuf[ CONDITION_LEN + 1 ]; /* 临时存储区 */ char acPasswd[ PASSWD_LEN+1 ]; /* 密码 */ char acFlag[ FLAG_LEN + 1 ]; /* 换卡类型 */ /* 0: 记名卡保号换记名卡 */ /* 1: 非记名卡保号换记名卡 */ struct cmspcdreg stPcdReg ; /* 预制卡申请登记表 */ struct cmscardinfo stCmsCardInfo; /* 卡片信息表 */ struct cmscardkind stCmsCardKind; /* 卡片种类表 */ struct cmsacctm stCmsAcctM; /* 卡账户对照表 */ struct cmscardcancelt stCmsCant; /* 作废销毁登记簿 */ struct ciscustomerinfo stCustomInfo; /* 客户信息 */ strcpy( g_acTrcMsg, "子交易: 保号换记名卡申请处理子交易开始.." ); TRCLOG4 memset( &stPcdReg , 0x00, sizeof ( struct cmspcdreg ) ); memset( &stCmsCardInfo, 0x00, sizeof ( struct cmscardinfo ) ); memset( &stCmsCardKind, 0x00, sizeof( struct cmscardkind ) ); memset( &stCmsAcctM, 0x00, sizeof( struct cmsacctm ) ); memset( acCheckFlag, 0x00, sizeof( acCheckFlag ) ); memset( acCardStat, 0x00, sizeof( acCardStat ) ); memset( acPasswd, 0x00, sizeof( acPasswd ) ); /* 卡检查状态数组中第一维中的第一个字符全置为'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; /* 取数据字典值 */ getstring("CardNo", stCmsCardInfo.cardno ); getstring("Flag1", acFlag ); /* 获取卡片信息表 */ iRtn = pubReadCmscardinfo( &stCmsCardInfo ); if ( iRtn ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "卡号[%s]不存在", stCmsCardInfo.cardno ); ERRLOG return FAILED; } /* 检查卡状态是否正常 */ iRtn = cmsApiChkCardStatIsNormal( &stCmsCardInfo, acCardStat ); if ( iRtn ) { ERRLOG return FAILED; } /* 从字典获取其他数据 */ getstring( "Passwd", acPasswd ); getstring( "CustomName", stPcdReg.custname ); /* 名称 */ /* 获取卡片种类表 */ 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_YES; /* 检查记名标志 */ acCheckFlag[ BIT6_LEN ] = CHECK_NO; /* 不检查挂失标志 */ iRtn = cmsApiChkCardKind( &stCmsCardKind, acCheckFlag, LOGOTHER, pstPubcom->acChannelId, PERSONALCARD, REGNAMECARD, CZEROS, "" ); if ( iRtn ) { ERRLOG return FAILED; } if ( acFlag[ BIT1_LEN ] == '0' ) /* 记名卡保号换记名卡 */ { /* 检查卡片是否为记名卡 */ iRtn = cmsApiChkIsNameCard( &stCmsCardInfo ); if ( iRtn ) { ERRLOG return FAILED; } } else if ( acFlag[ BIT1_LEN ] == '1' ) /* 非记名卡保号换记名卡 */ { /* 检查卡是否为非记名卡 */ iRtn = cmsApiChkIsUnnameCard( &stCmsCardInfo ); if ( iRtn ) { ERRLOG return FAILED; } } /* 检查卡片是否为个人卡 */ iRtn = cmsApiChkIsPersonCard( &stCmsCardInfo ); if ( iRtn ) { ERRLOG return FAILED; } /* 修改卡片信息表卡片状态为正常换卡申请 */ strcpy( stCmsCardInfo.chgdate, pstPubcom->acTranDate ); stCmsCardInfo.cardstat[BIT14_LEN] = BIT14_CARDCHGAPLY; pubStoVCmscardinfo( &stCmsCardInfo ); /* 修改卡帐户对照表记录 */ EXEC SQL UPDATE CMSCARDINFO SET cardstat = :cmscardinfo_cardstat, chgdate = :cmscardinfo_chgdate WHERE cardno = :cmscardinfo_cardno; /* 修改出错 */ if ( SQLCODE ) { strcpy( g_acRspCode, "CMS114" ); pubCrtRspInfo( "cmscardinfo", SQLCODE ); ERRLOG return FAILED; } /*写预制卡登记簿 */ stPcdReg.serseqno = pstPubcom->lSerSeqNo; /* 流水号 */ sprintf( stPcdReg.vouchno,"%s%08ld",pstPubcom->acTranDate8,stPcdReg.serseqno); strcpy( stPcdReg.wishdate, pstPubcom->acTranDate );/* 希望制卡日期 */ strcpy( stPcdReg.aplydate, pstPubcom->acTranDate ); /* 申请日期 */ strcpy( stPcdReg.aplybrc, pstPubcom->acBrc ); /* 申请机构 */ strcpy( stPcdReg.aplyteller,pstPubcom->acTeller ); /* 申请柜员 */ strcpy( stPcdReg.authteller,pstPubcom->acAteller ); /* 授权柜员 */ strcpy ( stPcdReg.cardkind, stCmsCardKind.cardkind ); /* 卡片种类 */ stPcdReg.aplynum = 1; /* 申请数量 */ strcpy ( stPcdReg.voukind, stCmsCardKind.voukind ); /* 凭证种类 */ strcpy( stPcdReg.custno, stCmsCardInfo.custno); /* 客户号 */ stPcdReg.aplyflg[BIT1_LEN]=NAMECHGCARDAPLY; /* 正常换卡申请 */ stPcdReg.applflg[BIT1_LEN]=APPLYREG; /* 状态标志 */ stPcdReg.processflg[BIT1_LEN]=MKFILE_UNDONE; /* 处理标志 */ if( pubInstCmspcdreg( &stPcdReg ) ) { ERRLOG return FAILED; } memset( &stCustomInfo, 0x00, sizeof( stCustomInfo ) ); strcpy( stCustomInfo.customid ,stCmsCardInfo.custno ); if ( pubReadCiscustomerinfo( &stCustomInfo ) ) { ERRLOG return FAILED; } /* Feng Add in 2006-01-16 Begin */ /* 插入卡作废销毁登记簿 */ memset( &stCmsCant, 0x00, sizeof( struct cmscardcancelt ) ); strcpy( stCmsCant.canceldate, pstPubcom->acTranDate ); stCmsCant.serseqno = pstPubcom->lSerSeqNo; strcpy( stCmsCant.cardno, stCmsCardInfo.cardno ); strcpy( stCmsCant.cardkind, stCmsCardInfo.cardkind ); strcpy( stCmsCant.voukind, stCmsCardKind.blankvoukind ); strcpy( stCmsCant.precharcode, stCmsCardInfo.precharcode ); strcpy( stCmsCant.vouno, stCmsCardInfo.vouno ); sprintf( stCmsCant.vouchno, "%s%0*ld", pstPubcom->acTranDate8, \ SERSEQNO_LEN, stCmsCant.serseqno ); stCmsCant.flag[ BIT1_LEN ] = FLAG_INVALID; stCmsCant.cardflg[ BIT1_LEN ] = stCmsCardInfo.cardflg[ BIT1_LEN ]; strcpy( stCmsCant.custname, stCustomInfo.customname ); strcpy( stCmsCant.idtype, stCustomInfo.idtype ); strcpy( stCmsCant.idcode, stCustomInfo.idno ); strcpy( stCmsCant.cancelbrc, pstPubcom->acBrc ); strcpy( stCmsCant.cancelteller,pstPubcom->acTeller ); iRtn = pubInstCmscardcancelt( &stCmsCant ); if ( iRtn ) { ERRLOG return FAILED; } /* Feng Add in 2006-01-16 End */ /*写子交易流水*/ iRtn = cmsApiInsTranLog( pstPubcom, &stCmsCardInfo, &stCmsAcctM, "换卡", "保号换记名卡申请" ); if ( iRtn ) { ERRLOG return FAILED; } /* 子交易出口 */ setstring( "VouchNo", stPcdReg.vouchno ); /* 登记簿编号 */ setstring( "VouKind", stCmsCardInfo.voukind ); /* 凭证种类 */ setstring( "VouNo", stCmsCardInfo.vouno ); /* 凭证号码 */ strcpy( g_acTrcMsg, "子交易: 保号换记名卡申请处理子交易结束.." ); TRCLOG4 strcpy( g_acRspCode, RSP_OK ); return SUCCESS;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -