📄 cmsb27.sqc
字号:
/******************************************************************** ** 源码文件名称 : cmsB27.SQC ** 函数名称 : cms21B027 ** 所属子系统 : CMS ** 当前文件版本 : 1.0.0.0 ** 作 者 : guoyun ** 版本创建日期 : 2004/10/14 ** 功能描述 : 非本行商户的POS汇总表 ** 修改记录 : ** 修改人 修改日期 修改日期*********************************************************************/#include "sysdefine.h"#include <stdio.h>#include "pubcom.h"#include "funcapi.h"#include "code.h"#include "attrdef.h"#include "cmscode.h"#include "cmstxdethis.h"#include "cmsmerchantinfo.h"#include "pubbranchinfo.h"#include "errlog.h"EXEC SQL INCLUDE sqlca;#define OVERPAGE 53 /* 满页行数 */ #define OVERLINE 5 /* 换行行数 */ #define LIMIT 50struct prtdata{ char acBer[BIT9_LEN +1]; /* 序号 */ char acMid[BIT16_LEN +1]; /* 商户代码 */ char acMctName[70 +1]; /* 商户名称 */ char acInterAccno[32 +1]; /* 内部帐号 */ char acSettleAccno[32 +1]; /* 结算帐号 */ char acOpnBankName[70 +1]; /* 开户行名 */ char acCount[BIT9_LEN + 1]; /* 交易笔数 */ char acAmt[TXAMT_LEN + 1]; /* 交易金额 */ char acMidAmt[TXAMT_LEN + 1]; /* 入帐金额 */ char acCcyComm[BIT40_LEN + 1]; /* 币种 */ char acBegDate[DATE_LEN + 1 ]; /* 起始日期 */ char acEdDate[DATE_LEN + 1 ]; /* 终止日期 */ char acTotalCount[BIT9_LEN + 1]; /* Total交易笔数 */ char acTotalAmt[TXAMT_LEN + 1]; /* Total交易金额 */ char acTotalMidAmt[TXAMT_LEN + 1]; /* Total入帐金额 */ char acPage[10 + 1]; /* 页数 */};/* 打印表头 */#define PRTHEAD \ prtline( fp,"title1:%s", acBankname ); \ iLineCount = iLineCount + 2; \ prtline( fp, "title2:%s|%s|%s|%s|%s|%s|%s", \ acYear,acMonth,acDate,acYear1, \ acMonth1,acDate1,stPrtdata.acCcyComm ); \ iLineCount = iLineCount + 1; \ prtline( fp, "head1:" ); \ iLineCount = iLineCount + 2; \ iLine += 5;#define PRTBODY \ prtline( fp, "body1:%s|%s|%.*s|%s|%s|%.*s|%s|%s|%s", \ stPrtdata.acBer, stPrtdata.acMid, \ 36,stPrtdata.acMctName, stPrtdata.acInterAccno, \ stPrtdata.acSettleAccno, \ 20,stPrtdata.acOpnBankName,stPrtdata.acCount, \ stPrtdata.acAmt, stPrtdata.acMidAmt); \ iLineCount++; \ iLine++; #define PRTBODY1 \ prtline( fp, "body2:"); \ iLineCount++; \ iLine++; #define PRTFOOT1 \ prtline( fp, "body3:"); \ iLineCount = iLineCount + 2; \ iPage++; \ iLine = 0 ; #define PRTFOOT \ prtline( fp, "sub1:%s|%s|%s", stPrtdata.acTotalCount, \ stPrtdata.acTotalAmt, stPrtdata.acTotalMidAmt);\ iLineCount = iLineCount + 3; \ prtline( fp, "bottm:%s|%s", \ pstPubcom->acTeller, stPrtdata.acPage ); \ iLineCount++; \ prtline( fp, "next:%s",pstPubcom->acTranDate ); \ iLineCount++; \ iPage++; \ iLine = 0 ; int cms21B027(pstPubcom)struct pubcom *pstPubcom;{ EXEC SQL BEGIN DECLARE SECTION; char acBeginDate[DATE_LEN + 1 ]; /* 起始日期 */ char acEndDate[DATE_LEN + 1 ]; /* 终止日期 */ char acSelStr[512]; char acCcy[CCY_LEN + 1]; char acChName[CUSTNAME_LEN + 1]; char acOpnBankName[CUSTNAME_LEN + 1]; char acMctName[CUSTNAME_LEN + 1]; char acInterAccno[ACCT_LEN + 1]; char acSettleAccno[ACCT_LEN + 1]; char acMid[MID_LEN + 1]; EXEC SQL END DECLARE SECTION; long lNumber = 0; /* 交易笔数小计 */ double dAmt = 0.0; /* 交易金额小计 */ double dMidAmt = 0.0; /* 入帐交易金额小计 */ long lTNumber = 0; /* 交易笔数合计 */ double dTAmt = 0.0; /* 交易金额合计 */ double dTMidAmt = 0.0; /* 入帐交易金额合计 */ FILE *fp, *fmtfp; /* 文件指针 */ int iLineCount = 0 ; int i, iPage , iLine, iNum, iFlag=0; char acWhrStr[ 512 ]; char acFileName[ 101 ]; char acFmtFile[ 101 ]; char acPage[ 5 ]; char acAmt[ 18 ]; char acTAmt[ 18 ]; char acTNumber[ 8 ]; char acNumber[ 5 ]; char acBankname[ 41 ]; char acYear[BIT5_LEN + 1]; char acMonth[BIT3_LEN + 1]; char acDate[BIT3_LEN + 1]; char acYear1[BIT5_LEN + 1]; char acMonth1[BIT3_LEN + 1]; char acDate1[BIT3_LEN + 1]; struct prtdata stPrtdata; struct cmstxdethis stCmsTxDetHis; /* 外围交易登记簿历史表 */ struct cmsmerchantinfo stCmsMerchantInfo; /* 商户基本资料 */ memset( acSelStr, 0x00, sizeof( acSelStr ) ); memset( acWhrStr, 0x00, sizeof( acWhrStr ) ); memset( acBankname, 0x00, sizeof( acBankname ) ); memset( acYear, 0x00, sizeof( acYear ) ); memset( acMonth, 0x00, sizeof( acMonth ) ); memset( acDate, 0x00, sizeof( acDate ) ); memset( acYear1, 0x00, sizeof( acYear1 ) ); memset( acMonth1, 0x00, sizeof( acMonth1 ) ); memset( acDate1, 0x00, sizeof( acDate1 ) ); memset( &stCmsTxDetHis, 0x00, sizeof( struct cmstxdethis )); memset( &stPrtdata, 0x00, sizeof( struct prtdata )); memset( &stCmsMerchantInfo, 0x00, sizeof( struct cmsmerchantinfo )); if ( pubGetBaseInfo("BANKNAME", acBankname ) ) FUNCERR_PRO /* 取数据字典 */ getstring( "BeginDate1", acBeginDate ); getstring( "EndDate1", acEndDate ); sprintf( g_acTrcMsg, "acBeginDate[%s],acEndDate[%s],pstPubcom->acBrcType[%s]", acBeginDate,acEndDate,pstPubcom->acBrcType ); TRCLOG4 /*检查交易机构是否为中心机构,如果不是,不能做此交易 */ if ((strcmp( pstPubcom->acBrcType, BRCTYPE_CRDCENTER)) && (strcmp( pstPubcom->acBrcType, BRCTYPE_CLSCENTER))) { strcpy( g_acRspCode, "CMS214" ); pubCrtRspInfo( ); ERRLOG goto Exit; } fp = (FILE *)BeginFile( pstPubcom, NULL ); if ( fp == NULL ) { strcpy( g_acRspCode, "DPS902" ); pubCrtRspInfo( ); ERRLOG goto Exit; } sprintf( acFmtFile, "%s/fmt/cmsB27.fmt", getenv("HOME") ); sprintf( g_acFmtFile, acFmtFile ); if ( ( fmtfp=fopen(acFmtFile,"r") ) == NULL ) { strcpy( g_acRspCode, "DPS902" ); strcpy( g_acTrcMsg, acFmtFile ); TRCLOG4 sprintf( g_acRspMsg, "打开格式文件[%s]错", acFmtFile ); ERRLOG goto Exit ; } iLine = 0 ; iPage = 1 ; iNum = 0 ; sprintf( acSelStr, "select * from cmstxdethis where 1=1 and trandevtype='22' and trankind in ('006','014') and validf='0' and mid in (select mid from cmsmerchantinfo where opnflg='1') " ); if (strcmp(acBeginDate, INITDATE) > 0) { sprintf( acSelStr + strlen(acSelStr), "and trandate >= '%s' ", acBeginDate ); } if (strcmp(acEndDate, INITDATE) > 0) { sprintf( acSelStr + strlen(acSelStr), "and trandate <= '%s' ", acEndDate ); } sprintf( acSelStr + strlen(acSelStr), "ORDER BY mid" ); sprintf( g_acTrcMsg,"%s", acSelStr ); TRCLOG4 EXEC SQL PREPARE pre1_cur FROM :acSelStr; if ( SQLCODE ) { strcpy( g_acRspCode, "CMS1A7" ); pubCrtRspInfo( SQLCODE ); ERRLOG goto Exit; } EXEC SQL DECLARE report_cur CURSOR FOR pre1_cur; if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS110" ); pubCrtRspInfo("cmstxdethis",SQLCODE ); ERRLOG goto Exit ; } SQLOPENCUR(report_cur,"report_cur") if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS111" ); pubCrtRspInfo("cmstxdethis",SQLCODE ); ERRLOG goto Exit ; } /* 日期为18991231忽略 */ if ( strcmp ( acBeginDate, INITDATE ) ) { strcpy( stPrtdata.acBegDate, acBeginDate ); memcpy(acYear, stPrtdata.acBegDate, 4); memcpy(acMonth,stPrtdata.acBegDate + 5, 2); memcpy(acDate, stPrtdata.acBegDate + 8, 2); } if ( strcmp ( acEndDate, INITDATE ) ) { strcpy( stPrtdata.acEdDate, acEndDate ); memcpy(acYear1, stPrtdata.acEdDate, 4); memcpy(acMonth1,stPrtdata.acEdDate + 5, 2); memcpy(acDate1, stPrtdata.acEdDate + 8, 2); } while ( TRUE ) { memset( &stPrtdata, 0x00, sizeof( struct prtdata )); pubInitCmstxdethis(); EXEC SQL FETCH report_cur INTO W_CMSTXDETHIS; if (SQLCODE == SQLNOTFOUND) break; if (SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS112" ); pubCrtRspInfo("cmstxdethis",SQLCODE ); ERRLOG goto Exit ; } pubVtoSCmstxdethis(&stCmsTxDetHis); /* 打表头 */ if( iFlag == 0 ) { memset( acMid, 0x00, sizeof(acMid) ); memset( acChName, 0x00, sizeof(acChName) ); memset( acCcy, 0x00, sizeof(acCcy) ); strcpy( acMid, stCmsTxDetHis.mid ); strcpy( acCcy, stCmsTxDetHis.ccy ); strpack(acMid); strpack(acCcy); EXEC SQL SELECT chname INTO :acChName FROM pubcurrencyinfo WHERE ccy = :acCcy; if ( SQLCODE ) { strcpy( g_acRspCode, "CMS113" ); pubCrtRspInfo( "pubcurrencyinfo",SQLCODE ); ERRLOG goto Exit; } strpack(acChName); strcpy(stPrtdata.acCcyComm, acChName); PRTHEAD iFlag = 1; } if (strcmp(acCcy, stCmsTxDetHis.ccy)) { memset( acChName, 0x00, sizeof(acChName) ); memset( acCcy, 0x00, sizeof(acCcy) ); strcpy( acCcy, stCmsTxDetHis.ccy ); EXEC SQL SELECT chname INTO :acChName FROM pubcurrencyinfo WHERE ccy = :acCcy; if ( SQLCODE ) { strcpy( g_acRspCode, "CMS113" ); pubCrtRspInfo( "pubcurrencyinfo",SQLCODE ); ERRLOG goto Exit; } strpack(acChName); strcpy(stPrtdata.acCcyComm, acChName); sprintf( stPrtdata.acTotalCount, "%ld", lTNumber ); sprintf( stPrtdata.acTotalAmt, "%.2lf", dTAmt ); sprintf( stPrtdata.acTotalMidAmt, "%.2lf", dTMidAmt ); sprintf( stPrtdata.acPage, "%ld", iPage); PRTFOOT PRTHEAD iPage = 1; iNum = 0; lTNumber=0; dTAmt=0.0; dTMidAmt=0.0; lNumber=0; dAmt=0.0; dMidAmt=0.0; } if (strcmp(acMid, stCmsTxDetHis.mid)) { memset(acOpnBankName, 0, sizeof(acOpnBankName)); memset(acMctName, 0, sizeof(acMctName)); memset(acSettleAccno, 0, sizeof(acSettleAccno)); memset(acInterAccno, 0, sizeof(acInterAccno)); EXEC SQL SELECT mctname,midaccno,settleaccno,opnbankname INTO :acMctName, :acInterAccno, :acSettleAccno, :acOpnBankName FROM cmsmerchantinfo WHERE mid = :acMid; if ( SQLCODE ) { strcpy( g_acRspCode, "CMS113" ); pubCrtRspInfo( "cmsmerchantinfo",SQLCODE ); ERRLOG goto Exit; } strpack( acMctName ); strpack( acSettleAccno ); strpack( acInterAccno ); strpack( acOpnBankName ); iNum ++; sprintf( stPrtdata.acBer, "%d", iNum ); strcpy( stPrtdata.acMid, acMid ); strcpy( stPrtdata.acMctName, acMctName ); strcpy( stPrtdata.acInterAccno,acInterAccno ); strcpy( stPrtdata.acSettleAccno,acSettleAccno ); strcpy( stPrtdata.acOpnBankName,acOpnBankName ); sprintf( stPrtdata.acCount, "%ld", lNumber ); sprintf( stPrtdata.acAmt, "%.2lf", dAmt ); sprintf( stPrtdata.acMidAmt, "%.2lf", dMidAmt ); PRTBODY1 PRTBODY strcpy( acMid, stCmsTxDetHis.mid); lNumber=0; dAmt=0.0; dMidAmt=0.0; } sprintf( g_acTrcMsg,"stCmsTxDetHis.tranamt[%lf], stCmsTxDetHis.bankgetfee[%lf]", stCmsTxDetHis.tranamt, stCmsTxDetHis.bankgetfee); TRCLOG4 lNumber += 1; dAmt += stCmsTxDetHis.tranamt; dMidAmt = dMidAmt + stCmsTxDetHis.tranamt - stCmsTxDetHis.bankgetfee; lTNumber += 1; dTAmt += stCmsTxDetHis.tranamt; dTMidAmt = dTMidAmt + stCmsTxDetHis.tranamt - stCmsTxDetHis.bankgetfee; sprintf( g_acTrcMsg,"dAmt[%lf], dMidAmt[%lf], dTAmt[%lf] dTMidAmt[%lf]", dAmt, dMidAmt, dTAmt, dTMidAmt); TRCLOG4 /* 翻页并且初始化页合计变量 */ if ( iLine % OVERPAGE == 0 ) { PRTFOOT1 PRTHEAD } } memset(acOpnBankName, 0, sizeof(acOpnBankName)); memset(acMctName, 0, sizeof(acMctName)); memset(acSettleAccno, 0, sizeof(acSettleAccno)); memset(acInterAccno, 0, sizeof(acInterAccno)); EXEC SQL SELECT mctname,midaccno,settleaccno,opnbankname INTO :acMctName, :acInterAccno, :acSettleAccno, :acOpnBankName FROM cmsmerchantinfo WHERE mid = :acMid; if ( SQLCODE ) { strcpy( g_acRspCode, "CMS113" ); pubCrtRspInfo( "cmsmerchantinfo",SQLCODE ); ERRLOG goto Exit; } strpack( acMctName ); strpack( acSettleAccno ); strpack( acInterAccno ); strpack( acOpnBankName ); iNum ++; sprintf( stPrtdata.acBer, "%d", iNum ); strcpy( stPrtdata.acMid, acMid ); strcpy( stPrtdata.acMctName, acMctName ); strcpy( stPrtdata.acInterAccno,acInterAccno ); strcpy( stPrtdata.acSettleAccno,acSettleAccno ); strcpy( stPrtdata.acOpnBankName,acOpnBankName ); sprintf( stPrtdata.acCount, "%ld", lNumber ); sprintf( stPrtdata.acAmt, "%.2lf", dAmt ); sprintf( stPrtdata.acMidAmt, "%.2lf", dMidAmt ); PRTBODY1 PRTBODY sprintf( stPrtdata.acTotalCount, "%ld", lTNumber ); sprintf( stPrtdata.acTotalAmt, "%.2lf", dTAmt ); sprintf( stPrtdata.acTotalMidAmt, "%.2lf", dTMidAmt ); sprintf( stPrtdata.acPage, "%ld", iPage); PRTFOOT if( iLineCount == 0 ) { strcpy( g_acRspCode, "999998" ); sprintf( g_acRspMsg, "无满足条件的纪录!" ); ERRLOG goto Exit ; }Exit: fclose( fp ); fclose( fmtfp ); SQLCLOSECUR(report_cur,"report_cur") if( !strcmp( g_acRspCode, RSP_OK ) ) { SetInqFormid(pstPubcom, "") ; return SUCCESS; } else return FAILED ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -