📄 cmsb12.sqc
字号:
/******************************************************************** ** 源码文件名称 : cmsB12.SQC ** 函数名称 : cms21B012 ** 所属子系统 : CMS ** 当前文件版本 : 1.0.0.0 ** 作 者 : XuZy ** 版本创建日期 : 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 "cmsreport01.h"#include "cmsmerchantinfo.h"#include "pubbranchinfo.h"#include "errlog.h"EXEC SQL INCLUDE sqlca;#define OVERPAGE 31 /* 满页行数 */ #define OVERLINE 5 /* 换行行数 */ #define LIMIT 36struct prtdata{ char acBer[BIT9_LEN +1]; /* 序号 */ char acMid[BIT16_LEN +1]; /* 商户代码 */ char acMctMcc[BIT5_LEN +1]; /* 商户类型 */ char acMctName[70 +1]; /* 商户名称 */ char acTranName[70 +1]; /* 交易名称 */ char acCount[BIT9_LEN + 1]; /* 交易笔数 */ char acAmt[TXAMT_LEN + 1]; /* 交易金额 */ char acCardKindComm[BIT40_LEN + 1]; /* 交易类型 */ char acCcyComm[BIT40_LEN + 1]; /* 币种 */ char acBegDate[DATE_LEN + 1 ]; /* 起始日期 */ char acEdDate[DATE_LEN + 1 ]; /* 终止日期 */ };#define PRTLINE \ if( prtline( fp, acFmtFile,acPrtData ) ) \ FUNCERR_PRO \ iLineCount++;/* 打印表头 */#define PRTHEAD \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp,"title:%s" , acBankname); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "title0:%s|%s|%s|%s|%s|%s|%s|%s", \ stPrtdata.acCardKindComm, acYear,acMonth,acDate, acYear1,acMonth1,acDate1,stPrtdata.acCcyComm ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "head:" ); \ iLineCount++; \ iLine ++ ;/* 打印数据 */#define PRTBODY0 \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "body:" ); \ iLineCount++; \#define PRTBODY \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "body0:%s|%s|%s|%.*s|%s|%s|%s", \ stPrtdata.acBer, stPrtdata.acMctMcc, \ stPrtdata.acMid, 40,stPrtdata.acMctName, \ stPrtdata.acTranName, stPrtdata.acCount, \ stPrtdata.acAmt); \ iLineCount++; \ iLine++; \ iNum++;/* 打印页表尾 */#define PRTFOOT \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "foot:" ); \ iLineCount++; \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "foot0:%s|%s", \ acNumber, acAmt ); \ iLineCount++;#define PRTFOOTO \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "footo:" ); \ iLineCount++; \ prtline( fp, "foot2:%s|%s", \ acTNumber, acTAmt ); \ iLineCount++; \ prtline( fp, "foot3:" ); \ iLineCount++; \ iLine = 0 ; #define BOTTM \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "bottm:%s|%s|%s|%s|%s", \ acPage, pstPubcom->acTeller,acYear3,acMonth3,acDate3 ); \ iLineCount++; \ iPage ++ ; iLine = 0 ; #define PRTFOOTF \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "head0:" ); \ iLineCount++;#define PRTFOOTM \ memset( acPrtData, 0x00, sizeof( acPrtData ) ); \ prtline( fp, "head1:" ); \ iLineCount++; int cms21B012(pstPubcom)struct pubcom *pstPubcom;{ EXEC SQL BEGIN DECLARE SECTION; char acBrc[BRC_LEN +1]; /* 机构代码 */ char acBeginDate[DATE_LEN + 1 ]; /* 起始日期 */ char acEndDate[DATE_LEN + 1 ]; /* 终止日期 */ char acType[BIT2_LEN + 1]; /* 机构类型 */ char acSelStr[512]; char acCcy[3 + 1]; char acCardKind[8 + 1]; char acMctMcc1[4 + 1]; EXEC SQL END DECLARE SECTION; long lNumber = 0; /* 交易笔数小计 */ double dAmt = 0.0; /* 交易金额小计 */ long lTNumber = 0; /* POS交易笔数小计 */ double dTAmt = 0.0; /* POS交易金额小计 */ FILE *fp, *fmtfp; /* 文件指针 */ int iLineCount = 0 ; int i, iPage , iLine, iNum, iFlag; char acWhrStr[ 512 ]; char acFileName[ 101 ]; char acFmtFile[ 101 ]; char acPrtData[ 4096 ]; char acPage[ 5 ]; char acAmt[ 18 ]; char acTAmt[ 18 ]; char acTNumber[ 8 ]; char acNumber[ 5 ]; char acBankname[ 41 ]; char acTmpCcy[BIT4_LEN + 1]; char acTmpCardKind[BIT9_LEN + 1]; char acTmpMctMcc[BIT5_LEN + 1]; 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]; char acYear3[BIT5_LEN + 1]; char acMonth3[BIT3_LEN + 1]; char acDate3[BIT3_LEN + 1]; struct prtdata stPrtdata; struct cmsreport01 stCmsReport01; /* POS交易统计表 */ memset( acSelStr, 0x00, sizeof( acSelStr ) ); memset( acWhrStr, 0x00, sizeof( acWhrStr ) ); memset( acBrc, 0x00, sizeof( acBrc ) ); memset( acPage, 0x00, sizeof( acPage ) ); memset( &stCmsReport01, 0x00, sizeof( struct cmsreport01 )); memset( &stPrtdata, 0x00, sizeof( struct prtdata )); 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( acYear3, 0x00, sizeof( acYear3 ) ); memset( acMonth3, 0x00, sizeof( acMonth3 ) ); memset( acDate3, 0x00, sizeof( acDate3 ) ); if ( pubGetBaseInfo("BANKNAME", acBankname ) ) FUNCERR_PRO /* 取数据字典 */ getstring( "BeginDate1", acBeginDate ); getstring( "EndDate1", acEndDate ); sprintf( g_acTrcMsg, "BeginDate1[%s],EndDate1[%s]", acBeginDate,acEndDate ); TRCLOG4 /* 赋打印时间 */ strncpy(acYear3, pstPubcom->acTranDate8, 4); strncpy(acMonth3, pstPubcom->acTranDate8 + 4, 2); strncpy(acDate3, pstPubcom->acTranDate8 + 6, 4); /*检查交易机构是否为中心机构,如果不是,不能做此交易 */ if (strcmp( pstPubcom->acBrcType, BRCTYPE_CRDCENTER)) { 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/cmsB12.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 ; iFlag = 0 ; iPage = 1 ; iNum = 1 ; sprintf( acSelStr, "select * from cmsreport01 where 1=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 cardkind ,ccy, mctmcc, mid, frnttrancode, trandate" ); 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("cmsreport01",SQLCODE ); ERRLOG goto Exit ; } SQLOPENCUR(report_cur,"report_cur") if(SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS111" ); pubCrtRspInfo("cmsreport01",SQLCODE ); ERRLOG goto Exit ; } while ( TRUE ) { pubInitCmsreport01(); EXEC SQL FETCH report_cur INTO W_CMSREPORT01; if (SQLCODE == SQLNOTFOUND) break; if (SQLCODE) { sprintf( g_acTrcMsg,"SQLCODE[%d]", SQLCODE); TRCLOG4 strcpy( g_acRspCode, "CMS112" ); pubCrtRspInfo("cmsreport01",SQLCODE ); ERRLOG goto Exit ; } pubVtoSCmsreport01(&stCmsReport01); /* 日期为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); } /* 表第一次打印取信息(当币种、卡种、商户变化时使用) */ if (iFlag == 0) { memset( acTmpMctMcc, 0x00, sizeof(acTmpMctMcc) ); memset( acTmpCardKind, 0x00, sizeof(acTmpCardKind) ); memset( acTmpCcy, 0x00, sizeof(acTmpCcy) ); strcpy( acTmpMctMcc, stCmsReport01.mctmcc ); strcpy( acTmpCardKind, stCmsReport01.cardkind ); strcpy( acTmpCcy, cmsreport01_ccy ); strpack(acTmpCcy); strpack(acTmpMctMcc); strpack(acTmpCardKind); } /* 向结构体中赋值 */ memset( &stPrtdata, 0x00, sizeof( struct prtdata )); strcpy( stPrtdata.acMid, stCmsReport01.mid ); strcpy( stPrtdata.acMctMcc, stCmsReport01.mctmcc ); strcpy( stPrtdata.acMctName, stCmsReport01.mctname ); strcpy( stPrtdata.acTranName, stCmsReport01.frnttrancomm ); strcpy( stPrtdata.acCardKindComm, stCmsReport01.cardkindcomm ); strcpy( stPrtdata.acCcyComm, stCmsReport01.ccycomm ); sprintf( stPrtdata.acCount, "%d", stCmsReport01.count ); sprintf( stPrtdata.acAmt, "%.2lf", stCmsReport01.amt ); strpack( stPrtdata.acCardKindComm ); strpack( stPrtdata.acCcyComm ); sprintf( g_acTrcMsg, "iLine=[%d]", iLine); TRCLOG4 /* 打表头 */ if( iFlag == 0 ) { PRTHEAD iFlag ++; } /* 币种、卡种变换重新打印 */ if (strcmp(acTmpCcy, stCmsReport01.ccy) != 0 || strcmp(acTmpCardKind , stCmsReport01.cardkind) != 0) { /* 打印商户小计 */ sprintf( acNumber, "%ld", lNumber ); sprintf( acAmt, "%.2lf", dAmt ); PRTFOOT /* 给下一个商户小计赋初值 */ lNumber = 0; dAmt = 0.00; /* 打印合计 */ sprintf( acTNumber, "%ld", lTNumber ); sprintf( acTAmt, "%.2lf", dTAmt ); sprintf( acPage, "%d", iPage ); /* 打印 */ PRTFOOTO BOTTM memset( acTmpCardKind, 0x00, sizeof(acTmpCardKind) ); memset( acTmpCcy, 0x00, sizeof(acTmpCcy) ); memset( acTmpMctMcc, 0x00, sizeof(acTmpMctMcc) ); strcpy( acTmpCardKind, stCmsReport01.cardkind ); strcpy( acTmpCcy, stCmsReport01.ccy ); strcpy( acTmpMctMcc, stCmsReport01.mctmcc ); /* 给行号赋初值 */ iNum = 1; iPage = 1; PRTHEAD /* 给下一张表合计赋初值 */ lTNumber = 0; dTAmt = 0.00; } /* 商户转换变换的打印 */ if (strcmp(acTmpMctMcc, stCmsReport01.mctmcc) != 0 ) { /* 打印完成的商户小计数据 */ sprintf( acNumber, "%ld", lNumber ); sprintf( acAmt, "%.2lf", dAmt ); sprintf( g_acTrcMsg, "bcde10"); TRCLOG4 PRTFOOT /* 给下一个商户小计赋初值 */ lNumber = 0; dAmt = 0.00; } /* 赋行号 */ sprintf( stPrtdata.acBer, "%d", iNum ); /* 打印数据带 */ if (strcmp(acTmpMctMcc, stCmsReport01.mctmcc) != 0) { PRTFOOTF; PRTBODY memset( acTmpMctMcc, 0x00, sizeof(acTmpMctMcc) ); strcpy( acTmpMctMcc, stCmsReport01.mctmcc ); } else { PRTBODY0; PRTBODY } /* 商户小计 */ lNumber += stCmsReport01.count; dAmt += stCmsReport01.amt; /* 总合计 */ lTNumber += stCmsReport01.count; dTAmt += stCmsReport01.amt; /* 赋页数 */ sprintf( acPage, "%d", iPage ); /* 翻页并且初始化页合计变量 */ if ( iLine % OVERPAGE == 0 ) { PRTFOOTM; BOTTM; PRTHEAD } } if( iLineCount == 0 ) { strcpy( g_acRspCode, "999998" ); sprintf( g_acRspMsg, "无满足条件的纪录!" ); ERRLOG goto Exit ; } /* 打印表尾 */ sprintf( acNumber, "%ld", lNumber ); sprintf( acAmt, "%.2lf", dAmt ); PRTFOOT sprintf( acTNumber, "%ld", lTNumber ); sprintf( acTAmt, "%.2lf", dTAmt ); PRTFOOTO BOTTMExit: 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 + -