📄 cms503.sqc
字号:
&lConMinNum, &lConMaxNum ); /* 获取卡凭证号顺序号出错 */ if ( iRtn ) { ERRLOG goto Exit; } /* 计算卡凭证号 */ lCardVouNo = lConMinNum ; sprintf( stCmsMkFile.vouno, "%.*ld",MAX_VOUSEQNOLEN,lCardVouNo); /* 检查卡顺序号是否已经被使用 */ iRtn = cmsApiCheckVouNo( stCmsCardKind.voukind, stCmsCardKind.cardbin , stCmsMkFile.vouno ); if ( !iRtn ) break; else if ( iRtn != TRUE ) { ERRLOG goto Exit; } strcpy( g_acRspCode, RSP_OK ); memset( g_acRspMsg, 0x00, sizeof( g_acRspMsg ) ); } } else { /* 计算卡凭证号 */ lCardVouNo = lMinVouNum + lNum ; sprintf( stCmsMkFile.vouno, "%.*ld",MAX_VOUSEQNOLEN,lCardVouNo); } strcpy( stCmsMkFile.voukind, stCmsCardKind.voukind ); strcpy( stCmsCardInfo.precharcode, stCmsCardKind.cardbin ); /* 起始卡号 */ if ( lNum == 0 ) strcpy( stCmsPcdReg.scardno, stCmsCardInfo.cardno ); /* 起始凭证号 */ if ( lNum == 0 ) strcpy( stCmsPcdReg.svouno, stCmsMkFile.vouno ); /* 为卡片信息表结构赋值 */ strcpy( stCmsCardInfo.cardseqno, DEFAULTCARDSEQ ); strcpy( stCmsCardInfo.cardkind, stCmsCardKind.cardkind ); strcpy( stCmsCardInfo.cardidkind, stCmsCardKind.cardidkind); strcpy( stCmsCardInfo.cardobject, stCmsCardKind.cardobject); strcpy( stCmsCardInfo.cardidkindcomm, stCmsCardKind.cardidkindcomm); stCmsCardInfo.crdsts[BIT1_LEN] = CARDNGSTS; memset( stCmsCardInfo.cardstat, CZEROS, sizeof( stCmsCardInfo.cardstat ) - 1 ); strcpy( stCmsCardInfo.voukind, stCmsMkFile.voukind ); strcpy( stCmsCardInfo.vouno, stCmsMkFile.vouno ); strcpy( stCmsCardInfo.custno, stCmsPcdReg.custno ); strcpy( stCmsCardInfo.areacode, stBrcInfo.areacode ); strcpy( stCmsCardInfo.yearfeerank, stCmsCardKind.yearfeerank ); stCmsCardInfo.yfeeflag[ BIT1_LEN ] = TAKEFEEBYCARDKIND; stCmsCardInfo.billway[ BIT1_LEN ] = NOPRINTBILL; stCmsCardInfo.billaddtype[ BIT1_LEN ] = NO_ADDRESS; if ( stCmsPcdReg.aplyflg[ BIT1_LEN ] == PREAPLY ) stCmsCardInfo.markflg[0] = UNREGNAMECARD; else stCmsCardInfo.markflg[0] = REGNAMECARD; /* 偏移量 buxuyao */ /* 登记卡片信息表 */ iRtn = pubInstCmscardinfo( &stCmsCardInfo ); if ( iRtn ) { ERRLOG goto Exit; } } else if ( stCmsPcdReg.aplyflg[ BIT1_LEN ] == SINCHOOSEPLY ) { strcpy( stCmsMkFile.voukind, stCmsCardKind.voukind ); strcpy( stCmsMkFile.vouno, stCmsPcdReg.svouno ); strcpy( stCmsMkFile.voukind, stCmsPcdReg.voukind ); strcpy( stCmsCardInfo.precharcode, stCmsCardKind.cardbin ); strcpy( stCmsCardInfo.cardno, stCmsPcdReg.scardno ); strcpy( stCmsCardInfo.voukind, stCmsMkFile.voukind ); strcpy( stCmsCardInfo.vouno, stCmsMkFile.vouno ); /* 为卡片信息表结构赋值 */ strcpy( stCmsCardInfo.cardseqno, DEFAULTCARDSEQ ); strcpy( stCmsCardInfo.cardkind, stCmsCardKind.cardkind ); strcpy( stCmsCardInfo.cardidkind, stCmsCardKind.cardidkind); strcpy( stCmsCardInfo.cardobject, stCmsCardKind.cardobject); strcpy( stCmsCardInfo.cardidkindcomm, stCmsCardKind.cardidkindcomm); stCmsCardInfo.crdsts[BIT1_LEN] = CARDNGSTS; memset( stCmsCardInfo.cardstat, CZEROS, sizeof( stCmsCardInfo.cardstat ) - 1 ); stCmsCardInfo.cardstat[ BIT16_LEN ] = BIT16_CHOOSE; strcpy( stCmsCardInfo.custno, stCmsPcdReg.custno ); pubInitCiscustomerinfo(); strcpy( ciscustomerinfo_customid, stCmsPcdReg.custno ); strcpy( stCmsCardInfo.areacode, stBrcInfo.areacode ); strcpy( stCmsCardInfo.yearfeerank, stCmsCardKind.yearfeerank ); stCmsCardInfo.yfeeflag[ BIT1_LEN ] = TAKEFEEBYCARDKIND; stCmsCardInfo.billway[ BIT1_LEN ] = NOPRINTBILL; stCmsCardInfo.billaddtype[ BIT1_LEN ] = NO_ADDRESS; stCmsCardInfo.markflg[0] = UNREGNAMECARD; /* 登记卡片信息表 */ iRtn = pubInstCmscardinfo( &stCmsCardInfo ); if ( iRtn ) { ERRLOG goto Exit; } } else { strcpy( stCmsCardInfo.cardno, stCmsPcdReg.scardno ); strcpy( stCmsCardInfo.vouno, stCmsPcdReg.evouno ); strcpy( stCmsMkFile.vouno, stCmsPcdReg.svouno ); strcpy( stCmsMkFile.voukind, stCmsPcdReg.voukind ); if ( strlen(stCmsPcdReg.custname) && stCmsPcdReg.aplyflg[ BIT1_LEN ] == NAMEHOLDCARDAPLY) { stCmsCardInfo.markflg[0] = REGNAMECARD; } else { stCmsCardInfo.markflg[0] = UNREGNAMECARD; } /* 为卡片信息表结构赋值 */ stCmsCardInfo.crdsts[BIT1_LEN] = CARDNGSTS; pubStoVCmscardinfo( &stCmsCardInfo ); EXEC SQL UPDATE CMSCARDINFO SET crdsts = :cmscardinfo_crdsts, markflg = :cmscardinfo_markflg, vouno = :cmscardinfo_vouno WHERE cardno = :cmscardinfo_cardno; if ( SQLCODE ) { strcpy( g_acRspCode, "CMS114" ); pubCrtRspInfo( "cmscardinfo", SQLCODE ); ERRLOG goto Exit; } } memset( acFaceTranDate, 0, sizeof(acFaceTranDate)); memcpy( acFaceTranDate, pstPubcom->acTranDate8, 8 ); /* memcpy( acFaceTranDate, pstPubcom->acTranDate+5, 2); memcpy( acFaceTranDate+2, "/", 1); memcpy( acFaceTranDate+3, pstPubcom->acTranDate, 4); */ /* 按格式生成卡的制卡信息 */ memset( acTrack2, 0x00, sizeof( acTrack2 ) ); memset( acTrack3, 0x00, sizeof( acTrack3 ) ); if ( strlen(stCmsPcdReg.custname ) /* && ( stCmsPcdReg.aplyflg[ BIT1_LEN ] != SINCHOOSEPLY ) */) { memset( caSexName, 0x00, sizeof( caSexName ) ); memset( caCustomInfo, 0x00, sizeof( caCustomInfo ) ); pubInitCispersoninfo(); EXEC SQL SELECT sex INTO :cispersoninfo_sex FROM cispersoninfo WHERE customid = :cmspcdreg_custno; if (SQLCODE) { strcpy( caSexName, " "); /* strcpy( g_acRspCode, "CMS112" ); pubCrtRspInfo( "cispersoninfo", SQLCODE ); ERRLOG goto Exit; */ } if (cispersoninfo_sex[ 0 ] == '0') { strcpy( caSexName, "MR. "); } else if (cispersoninfo_sex[ 0 ] == '1') { strcpy( caSexName, "MS. "); } else { strcpy( caSexName, " "); } strcat(caCustomInfo, caSexName); strcat(caCustomInfo, stCmsPcdReg.custname); memset(stCmsPcdReg.custname, 0, sizeof(stCmsPcdReg.custname)); strcpy(stCmsPcdReg.custname, caCustomInfo); } iRtn = cmsApiGenMakeCardInfo( stCmsCardInfo.cardno, acBankTitle, stCmsPcdReg.custname, acFaceTranDate, stCmsCardInfo.vouno, &stCmsCardInitParam,stCmsMkFile.track1msg, acTrack2, acTrack3, stCmsMkFile.cardappr ); /* 生成制卡信息错 */ if ( iRtn ) { ERRLOG goto Exit; } /* 为制卡文件结构赋值 */ strpack( stCmsCardInitParam.track2premsg ); strpack( stCmsCardInitParam.track3premsg ); strpack( stCmsCardInitParam.track2aftmsg ); strpack( stCmsCardInitParam.track3aftmsg ); strpack( acTrack2 ); strpack( acTrack3 ); sprintf( stCmsMkFile.track2msg, "%s%s%s", stCmsCardInitParam.track2premsg, acTrack2, stCmsCardInitParam.track2aftmsg ); sprintf( stCmsMkFile.track3msg, "%s%s%s", stCmsCardInitParam.track3premsg, acTrack3, stCmsCardInitParam.track3aftmsg ); strcpy( stCmsMkFile.aplybrc, stCmsPcdReg.aplybrc ); strcpy( stCmsMkFile.aplydate, stCmsPcdReg.aplydate ); strcpy( stCmsMkFile.makedate, pstPubcom->acTranDate ); stCmsMkFile.serseqno = pstPubcom->lSerSeqNo; stCmsMkFile.cardphysort[ BIT1_LEN ] = stCmsCardKind.cardphysort[ BIT1_LEN ]; strcpy( stCmsMkFile.cardno, stCmsCardInfo.cardno ); strcpy( stCmsMkFile.cardkind, stCmsCardKind.cardkind ); stCmsMkFile.aplyflg[ BIT1_LEN ] = stCmsPcdReg.aplyflg[ BIT1_LEN ]; stCmsMkFile.makediskflg[ BIT1_LEN ] = NOMAKEFILE; strcpy( stCmsMkFile.cardcenterbrc, CARDBRNO ); /* 卡密码、查询密码、ic卡数据 */ /* 登记卡片制卡文件 */ iRtn = pubInstCmsmkfile( &stCmsMkFile ); if ( iRtn ) { ERRLOG goto Exit; } lNum ++; /*把实际生成卡的数量置 +1*/ } lFactCardNum += stCmsPcdReg.aplynum; if ( stCmsPcdReg.aplyflg[ BIT1_LEN ] == HOLDCARDAPLY \ || stCmsPcdReg.aplyflg[ BIT1_LEN ]== NAMEHOLDCARDAPLY ) lKeepCardNum += stCmsPcdReg.aplynum; if ( stCmsPcdReg.aplyflg[ BIT1_LEN ] == SINCHOOSEPLY ) lChosCardNum += stCmsPcdReg.aplynum; /* 修改预制卡登记簿 */ strcpy( stCmsPcdReg.ecardno, stCmsCardInfo.cardno ); strcpy( stCmsPcdReg.evouno, stCmsCardInfo.vouno ); stCmsPcdReg.processflg[ BIT1_LEN ] = MKFILE_DONE; stCmsPcdReg.dealseqno = pstPubcom->lSerSeqNo; strcpy( stCmsPcdReg.dealdate, pstPubcom->acTranDate ); pubStoVCmspcdreg( &stCmsPcdReg ); EXEC SQL UPDATE CMSPCDREG SET dealdate = :cmspcdreg_dealdate, dealseqno = :cmspcdreg_dealseqno, scardno = :cmspcdreg_scardno, ecardno = :cmspcdreg_ecardno, svouno = :cmspcdreg_svouno, evouno = :cmspcdreg_evouno, processflg = :cmspcdreg_processflg WHERE CURRENT of Reg_l_cur; /* 按游标修改错误 */ if ( SQLCODE && SQLCODE != SQLNOTFOUND ) { strcpy( g_acRspCode, "CMS114" ); pubCrtRspInfo( "cmspcdreg", SQLCODE ); ERRLOG goto Exit; } } /*判断实际生成卡的数量*/ if ( lFactCardNum == 0 ) { strcpy( g_acRspCode, "CMS216" ); pubCrtRspInfo( stCmsCardKind.cardkind ); ERRLOG goto Exit; } /* 子交易出口 */ setlong ( "Num" , &lFactCardNum ); setlong ( "Num1" , &lKeepCardNum ); setlong ( "Num2" , &lChosCardNum );Exit: SQLCLOSECUR(Reg_l_cur,"Reg_l_cur") strcpy( g_acTrcMsg, "子交易: 制卡处理结束.." ); TRCLOG4 if( !strcmp( g_acRspCode, RSP_OK ) ) return SUCCESS; else return FAILED ;}/******************************************************* ** 函数名称:nGetMkCardParam ** 功能描述:为生成卡号准备数据 ** 输入参数: ** pstPubcom ---- 公共结构 ** pstCmsRuleDef ---- 卡号规则定义表 ** pstCmsCardKind ---- 卡片种类表 ** 输出参数: ** pcField1 ---- 域1数值 ** pcField2 ---- 域2数值 ** pcField3 ---- 域3数值 ** pcField4 ---- 域4数值 ** pcField5 ---- 域5数值 ** pcField6 ---- 域6数值 ** pcField7 ---- 域7数值 ** pcField8 ---- 域8数值 ** 返回结果:int ** 0 ---- 成功 ** -1 ---- 失败*******************************************************/int nGetMkCardParam( pstPubcom, pstCmsRuleDef, pstCmsCardKind, pcField1, \ pcField2, pcField3, pcField4, pcField5, pcField6, pcField7, pcField8 )PUBCOM *pstPubcom;struct cmsruledef * pstCmsRuleDef; /* 卡号规则定义表 */struct cmscardkind * pstCmsCardKind; /* 卡片种类表 */char * pcField1; /* 域1数值 */char * pcField2; /* 域2数值 */char * pcField3; /* 域3数值 */char * pcField4; /* 域4数值 */char * pcField5; /* 域5数值 */char * pcField6; /* 域6数值 */char * pcField7; /* 域7数值 */char * pcField8; /* 域8数值 */{ int iNum; /* 计数器 */ char acTblName[ BIT31_LEN + 1 ]; /* 库表名称 */ char acWhrName[ BIT31_LEN + 1 ]; /* 条件名称 */ EXEC SQL BEGIN DECLARE SECTION; char acField[ BIT31_LEN + 1 ]; /* 对应pcFieldn */ char acStatment[ PACKBUF_LEN + 1 ]; /* sql语句 */ EXEC SQL END DECLARE SECTION; /* 初始化变量 */ iNum = 0; if ( iNum < pstCmsRuleDef->fldnum1 ) { memset( acTblName, 0x00, sizeof( acTblName ) ); memset( acStatment, 0x00, sizeof( acStatment ) ); memset( acField, 0x00, sizeof( acField ) ); memset( acWhrName, 0x00, sizeof( acWhrName ) ); if ( !strlen( pstCmsRuleDef->fldsrcfld1 ) ) { /* 卡号规则表数据错误 */ strcpy( g_acRspCode, "CMS105" ); pubCrtRspInfo( ); ERRLOG return FAILED; } if ( !strlen( pstCmsRuleDef->fldsrctbl1 ) ) strcpy( acTblName, "cmscardkind" ); else strcpy( acTblName, pstCmsRuleDef->fldsrctbl1 ); if ( !strlen( pstCmsRuleDef->fldwhr1 ) ) strcpy( acWhrName, "cardkind" ); else strcpy( acWhrName, pstCmsRuleDef->fldwhr1 ); if ( !strlen( pstCmsRuleDef->fldsign1 ) ) pstCmsRuleDef->fldsign1[ BIT1_LEN ] = SIGN_CARDKIND; if ( pstCmsRuleDef->fldsign1[ BIT1_LEN ] == SIGN_CARDKIND ) sprintf( acStatment, "select %s from %s where %s ='%s'", \ pstCmsRuleDef->fldsrcfld1,acTblName,acWhrName, pstCmsCardKind->cardkind ); else sprintf( acStatment, "select %s from %s where %s ='%s'", \ pstCmsRuleDef->fldsrcfld1,acTblName,acWhrName, pstPubcom->acBrc ); strcpy( g_acTrcMsg, acStatment ); TRCLOG2 EXEC SQL PREPARE pre_1 FROM :acStatment; /* 数据库操作错 */ sprintf( g_acTrcMsg, "SQLCODE=[%d]", SQLCODE ); TRCLOG2 if ( SQLCODE ) { strcpy( g_acRspCode, "CMS1A7" ); pubCrtRspInfo( SQLCODE ); ERRLOG return FAILED; } EXEC SQL DECLARE cur_1 CURSOR FOR pre_1; SQLOPENCUR(cur_1,"cur_1") /* 数据库操作错 */ if ( SQLCODE ) { strcpy( g_acRspCode, "CMS1A7" ); pubCrtRspInfo( SQLCODE ); ERRLOG return FAILED; } EXEC SQL FETCH cur_1 INTO :acField ; /* 数据库操作错 */ if ( SQLCODE ) { strcpy( g_acRspCode, "CMS1A7" ); pubCrtRspInfo( SQLCODE ); SQLCLOSECUR(cur_1,"cur_1") ERRLOG return FAILED; } SQLCLOSECUR(cur_1,"cur_1") strpack( acField ); strcpy( pcField1, acField ); iNum ++; } if ( iNum < pstCmsRuleDef->fldnum1 ) { memset( acTblName, 0x00, sizeof( acTblName ) ); memset( acStatment, 0x00, sizeof( acStatment ) ); memset( acField, 0x00, sizeof( acField ) ); memset( acWhrName, 0x00, sizeof( acWhrName ) ); if ( !strlen( pstCmsRuleDef->fldsrcfld2 ) ) { /* 卡号规则表数据错误 */ strcpy( g_acRspCode, "CMS105" ); pubCrtRspInfo( ); ERRLOG return FAILED; } if ( !strlen( pstCmsRuleDef->fldsrctbl2 ) ) strcpy( acTblName, "cmscardkind" ); else strcpy( acTblName, pstCmsRuleDef->fldsrctbl2 ); if ( !strlen( pstCmsRuleDef->fldwhr2 ) ) strcpy( acWhrName, "cardkind" ); else strcpy( acWhrName, pstCmsRuleDef->fldwhr2 ); if ( !strlen( pstCmsRuleDef->fldsign2 ) ) pstCmsRuleDef->fldsign2[ BIT1_LEN ] = SIGN_CARDKIND; if ( pstCmsRuleDef->fldsign2[ BIT1_LEN ] == SIGN_CARDKIND ) sprintf( acStatment, "select %s from %s where %s ='%s'", \ pstCmsRuleDef->fldsrcfld2,acTblName,acWhrName, pstCmsCardKind->cardkind ); else sprintf( acStatment, "select %s from %s where %s ='%s'", \ pstCmsRuleDef->fldsrcfld2,acTblName,acWhrName, pstPubcom->acBrc ); strcpy( g_acTrcMsg, acStatment ); TRCLOG2 EXEC SQL PREPARE pre_2 FROM :acStatment; /* 数据库操作错 */ if ( SQLCODE ) { strcpy( g_acRspCode, "CMS1A7" ); pubCrtRspInfo( SQLCODE ); ERRLOG return FAILED; } EXEC SQL DECLARE cur_2 CURSOR FOR pre_2; SQLOPENCUR(cur_2,"cur_2")
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -