📄 xj_rpt.ec
字号:
/****************************************************
* 中国银行网点代办建行卡明细,汇总报表
* 中国银行代办建行卡交易量报表
* 中国银行代办建行卡汇总报表
*
* 最后修改: 周国祥 2001/08/26
****************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "macro_def.h"
#include "all.h"
$include sqlca;
$include "db_struct.h";
typedef struct {
int tran_type;
char name[13];
} Tran_Name;
typedef struct {
int ZdoJ_num[2];
double ZdoJ_amt[2];
int JdoZ_num[2];
double JdoZ_amt[2];
} XJ_Total;
Tran_Name TranName[] = {
{PURCHASE ,"消 费"},
{WITHDRAWAL ,"取 现"},
{PRE_AUTH ,"预 授 权"},
{CONFIRM ,"确 认"},
{TRANS_OUT ,"转 出"},
{DEPOSIT ,"存 款"},
{ADJUST ,"帐务调整"},
{REFUND ,"退 货"},
{TRANS_IN ,"转 入"},
{POS_VOID ,"撤 消"},
/*================== WuBin 2001-4-12 11:37 ======Start==============
{AGENT_IN ,"代收交易"},
{AGENT_OUT ,"代付交易"},
=======代收付业务不包括在 NAS 6.0中======2001-4-12 11:37=======End===*/
{OFFLINE ,"离线交易"},
{-1, ""}
};
char *GetTranName( int TranType )
{
int i;
for(i = 0;TranName[i].tran_type != -1;i++){
if( TranName[i].tran_type == TranType )
return TranName[i].name;
}
return NULL;
}
int GetMerchName( char *merchant_id, char *merchant_name)
{
$char MerchId[16];
$char MerName[41];
strcpy( MerchId,merchant_id);
$select merchant_cname into :MerName
from merchant_base where merchant_id = :MerchId;
if( SQLCODE ) return -1;
DelSpace(MerName);
strcpy( merchant_name,MerName );
return 0;
}
/****中行代办建行卡汇总报表 ***/
int WriteTotal(char *filename, XJ_Total XJ, char *eDate, char *BankName)
{
FILE *fp;
fp = fopen( filename,"w");
if( fp == NULL ) return -1;
fprintf(fp, "%25.25s中国银行代办建行卡汇总报表\n", " ");
fprintf(fp, "行 名:%-40.40s 清算日期:%s\n", BankName, eDate);
fprintf(fp, "-------------------------------------------------------------------------------\n");
fprintf(fp, "%20.20s借 方%20.20s贷 方\n"," "," ");
fprintf(fp, "%16.16s%-10.10s%-12.12s%-10.10s%-10.10s%-12.12s\n",
" ", "笔 数", "金 额"," ", "笔 数", "金 额");
fprintf(fp, "中行代做建行: %-6d %-12.2lf%10.10s%-6d %-12.2lf\n",
XJ.ZdoJ_num[0],XJ.ZdoJ_amt[0],
" ",
XJ.ZdoJ_num[1],XJ.ZdoJ_amt[1] );
fprintf(fp, "建行代做中行: %-6d %-12.2lf%10.10s%-6d %-12.2lf\n",
XJ.JdoZ_num[0],XJ.JdoZ_amt[0],
" ",
XJ.JdoZ_num[1], XJ.JdoZ_amt[1]);
fprintf(fp, "-------------------------------------------------------------------------------\n");
fprintf(fp, "当日划帐金额:%14.2lf %12.2lf\n",
XJ.JdoZ_amt[0] - XJ.ZdoJ_amt[0],
XJ.JdoZ_amt[1] - XJ.ZdoJ_amt[1]);
fprintf(fp,"\n\n");
fclose(fp);
return 0;
}
int FillTotal( XJ_Total *XJ ,char *seDate)
{
$char sDate[10];
$S_tran_ls Settle;
memset( XJ,0,sizeof(XJ_Total) );
strcpy( sDate,seDate );
/*================== WuBin 2001-4-12 10:54 ======Start==============
$declare xj_total_cur cursor for
select * from settle_ls where
(T1_tran_flag = '0' or T1_tran_flag = '3')
and T1_tran_type != 9 and T1_saf_flag = '0'
and T1_snd_settle_flag = 'Y' and T1_snd_settle_date = :sDate;
===========================2001-4-12 10:54=======End==============*/
$declare xj_total_cur cursor for
select * from cur_settle_ls where
(tran_flag = '0' or tran_flag = '3')
and tran_type != 9/*REFUND???*/ and saf_flag = '0'
and snd_settle_flag = 'Y' and snd_settle_date = :sDate;
if( SQLCODE ) {
errcall(ERROR,"Declare cursor error");
return -1;
}
$open xj_total_cur;
if( SQLCODE ) {
errcall(ERROR,"Open cursor error[%d]",SQLCODE);
return -1;
}
while( 1 ){
$fetch xj_total_cur into :Settle;
if( SQLCODE ) break;
/*================== WuBin 2001-4-12 11:15 ======Start==============
* if( !strcmp(Settle.T1_bank_type,"05") ){
* if( Settle.T1_tran_type != REFUND &&
* Settle.T1_tran_type != DEPOSIT ){
* XJ->ZdoJ_num[0]++;
* XJ->ZdoJ_amt[0] += Settle.T1_tran_amt;
* }
* else {
* XJ->ZdoJ_num[1]++;
* XJ->ZdoJ_amt[1] += Settle.T1_tran_amt;
* }
* }
* else
* if( !strcmp(Settle.T1_bank_type,"04") ){
* if( Settle.T1_tran_type != REFUND &&
* Settle.T1_tran_type != DEPOSIT ){
* XJ->JdoZ_num[0] ++;
* XJ->JdoZ_amt[0] += Settle.T1_tran_amt;
* }
* else{
* XJ->JdoZ_num[1] ++;
* XJ->JdoZ_amt[1] += Settle.T1_tran_amt;
* }
* }
===========================2001-4-12 11:15=======End==============*/
del_st_space("tran_ls", &Settle);
if( !strcmp(Settle.bank_type, CCB_BANK/*"05"*/) ){
if( Settle.tran_type != REFUND &&
Settle.tran_type != DEPOSIT ){
XJ->ZdoJ_num[0]++;
XJ->ZdoJ_amt[0] += Settle.tran_amt;
}
else {
XJ->ZdoJ_num[1]++;
XJ->ZdoJ_amt[1] += Settle.tran_amt;
}
}
else
if( !strcmp(Settle.bank_type, BOC_BANK/*"04"*/) ){
if( Settle.tran_type != REFUND &&
Settle.tran_type != DEPOSIT ){
XJ->JdoZ_num[0] ++;
XJ->JdoZ_amt[0] += Settle.tran_amt;
}
else{
XJ->JdoZ_num[1] ++;
XJ->JdoZ_amt[1] += Settle.tran_amt;
}
}
}
$close xj_total_cur;
return 0;
}
int TotalReport(char *filename, char *eDate, char *BankName)
{
XJ_Total XJ;
if( FillTotal( &XJ ,eDate) < 0 ) return -1;
return WriteTotal( filename, XJ, eDate, BankName);
}
/****网点明细汇总报表 ***/
int OneDetailReport( FILE *fp,char *MerchantName,char *MerchantId,
char *TerminalId,char *eDate,char *eBankType)
{
$char MerchId[16],TermId[9],seDate[9],BankType[3];
XJ_Total XJ;
$S_tran_ls Settle;
char tmp_date[11]; /* YYYY/MM/DD */
char tmp_time[9]; /* hh:mm:ss */
memset( &XJ,0,sizeof(XJ_Total) );
strcpy( MerchId,MerchantId );
strcpy( TermId,TerminalId);
strcpy( seDate,eDate);
strcpy( BankType,eBankType);
/** Head **/
fprintf( fp,"%20.20s中国银行网点代办建行卡明细,汇总报表\n"," ");
fprintf( fp,
"网点名:%-18.18s 网点号:%-15.15s终端号:%-8.8s清算日期:%-8.8s\n",
MerchantName,MerchId,TermId,eDate);
fprintf( fp,"-------------------------------------------------------------------------------\n");
fprintf( fp,"%-25.25s%-10.10s%-14.14s%-10.10s%-20.20s\n",
" 卡 号","授权码","交易金额",
"交易种类","交易日期,时间");
/** Detail **/
/*================== WuBin 2001-4-12 11:19 ======Start==============
* $declare OneDetail_cur cursor for
* select * from settle_ls where
* T1_merchant_id = :MerchId
* and T1_terminal_id = :TermId
* and T1_snd_settle_date = :seDate
* and T1_bank_type = :BankType
* and (T1_tran_flag = '0' or T1_tran_flag = '3')
* and T1_tran_type != 9 and T1_saf_flag = '0'
* and T1_snd_settle_flag = 'Y' ;
===========================2001-4-12 11:19=======End==============*/
$declare OneDetail_cur cursor for
select * from cur_settle_ls where
merchant_id = :MerchId
and terminal_id = :TermId
and snd_settle_date = :seDate
and bank_type = :BankType
and (tran_flag = '0' or tran_flag = '3')
and tran_type != 9/*REFUND???*/ and saf_flag = '0'
and snd_settle_flag = 'Y' ;
if( SQLCODE ) return -1;
$open OneDetail_cur;
if( SQLCODE ) return -1;
while( 1 ) {
$fetch OneDetail_cur into :Settle;
if( SQLCODE )
break;
del_st_space("tran_ls", &Settle);
if( Settle.tran_type != REFUND &&
Settle.tran_type != DEPOSIT ){
XJ.ZdoJ_num[0]++;
XJ.ZdoJ_amt[0] += Settle.tran_amt;
}
else {
XJ.ZdoJ_num[1]++;
XJ.ZdoJ_amt[1] += Settle.tran_amt;
}
str2date(tmp_date, Settle.local_sys_date, "/");
str2time(tmp_time, Settle.local_sys_time, ":");
fprintf( fp,"%-25.25s%-10.10s%-14.2lf%-10.10s%-10.10s%-8.8s\n",
Settle.card_no,Settle.auth_no,Settle.tran_amt,
GetTranName( Settle.tran_type ),
tmp_date,tmp_time);
}
$close OneDetail_cur;
/** Tail **/
fprintf( fp,"-------------------------------------------------------------------------------\n");
fprintf(fp, "%25.25s借 方%20.20s贷 方\n"," "," ");
fprintf(fp, "%20.20s%-10.10s%-12.12s%-10.10s%-10.10s%-12.12s\n",
" ", "笔 数", "金 额"," ", "笔 数", "金 额");
fprintf(fp, "合计:%15.15s%-10d%-12.2lf %-10d%-12.2lf\n",
" ", XJ.ZdoJ_num[0],XJ.ZdoJ_amt[0],
XJ.ZdoJ_num[1], XJ.ZdoJ_amt[1]);
fprintf(fp ,"\n\n\f");
return 0;
}
int DetailReport(char *filename,char *eDate,char *eBankType)
{
FILE *fp;
$S_edc_terminal pos;
char merchant_name[41];
char TermId[10];
char MerchId[16];
fp = fopen( filename,"w");
if( fp == NULL ) return -1;
$declare pos_cur cursor for
select * from edc_terminal;
if( SQLCODE )
return -1;
$open pos_cur;
if( SQLCODE )
return -1;
while( 1 ){
$fetch pos_cur into :pos;
if( SQLCODE )
break;
del_st_space("edc_terminal", &pos);
strcpy( MerchId , pos.merchant_id );
strcpy( TermId, pos.terminal_id );
errcall(ERROR,"terminal_id:[%s][%s]",TermId,pos.terminal_id );
if( GetMerchName( MerchId ,merchant_name ) < 0 )
merchant_name[0] = '\0';
if( OneDetailReport( fp,merchant_name,MerchId,TermId,eDate,eBankType) < 0 ){
$close pos_cur;
fclose( fp );
return -1;
}
}
$close pos_cur;
fclose( fp );
return 0;
}
/** 交易量统计报表 **/
int TranSpanTime( char *filename,char *BankName,char *sDate,char *eDate)
{
FILE *fp;
XJ_Total XJ;
$char dsDate[10],deDate[10];
$S_tran_ls Settle;
fp = fopen( filename,"w" );
if( fp == NULL ) return -1;
memset( &XJ,0,sizeof(XJ_Total) );
/** Header **/
fprintf(fp, "%30.30s中国银行代办建行卡交易量报表\n", " ");
fprintf(fp, "行 名:%-40.40s清算时段:%s 至 %s\n",
BankName,sDate,eDate);
fprintf(fp, "------------------------------------------------------------------------------\n");
fprintf(fp, "%25.25s%-11.11s%20.20s%-14.14s\n",
" ", "网 点 交 易", " ", "自动柜员机交易");
/* Fill Date */
strcpy( dsDate,sDate );
strcpy( deDate,eDate );
/*================== WuBin 2001-4-12 11:27 ======Start==============
* $declare span_cur cursor for
* select * from settle_ls where
* (T1_tran_flag = '0' or T1_tran_flag = '3')
* and T1_tran_type != 9 and T1_saf_flag = '0'
* and T1_snd_settle_flag = 'Y' and T1_snd_settle_date >= :dsDate
* and T1_snd_settle_date <= :deDate;
===========================2001-4-12 11:27=======End==============*/
$declare span_cur cursor for
select * from cur_settle_ls where
(tran_flag = '0' or tran_flag = '3')
and tran_type != 9/*REFUND???*/ and saf_flag = '0'
and snd_settle_flag = 'Y' and snd_settle_date >= :dsDate
and snd_settle_date <= :deDate;
if( SQLCODE ) return -1;
$open span_cur;
if( SQLCODE ) return -1;
while( 1 ){
$fetch span_cur into :Settle;
if( SQLCODE )
break;
del_st_space("tran_ls", &Settle);
/*================== WuBin 2001-4-12 11:30 ======Start==============
* if( !strcmp(Settle.T1_bank_type,"05") ){
* if( strcmp(Settle.T1_mcc ,"6011" ) ){
* XJ.ZdoJ_num[0]++;
* XJ.ZdoJ_amt[0] += Settle.T1_tran_amt;
* }
* else {
* XJ.ZdoJ_num[1]++;
* XJ.ZdoJ_amt[1] += Settle.T1_tran_amt;
* }
* }
* else
* if( !strcmp(Settle.T1_bank_type,"04") ){
* if( strcmp(Settle.T1_mcc ,"6011" ) ){
* XJ.JdoZ_num[0] ++;
* XJ.JdoZ_amt[0] += Settle.T1_tran_amt;
* }
* else{
* XJ.JdoZ_num[1] ++;
* XJ.JdoZ_amt[1] += Settle.T1_tran_amt;
* }
* }
===========================2001-4-12 11:30=======End==============*/
if( !strcmp(Settle.bank_type,CCB_BANK/*"05"*/) ){
if( strcmp(Settle.mcc ,"6011" ) ){
XJ.ZdoJ_num[0]++;
XJ.ZdoJ_amt[0] += Settle.tran_amt;
}
else {
XJ.ZdoJ_num[1]++;
XJ.ZdoJ_amt[1] += Settle.tran_amt;
}
}
else
if( !strcmp(Settle.bank_type,BOC_BANK/*"04"*/) ){
if( strcmp(Settle.mcc ,"6011" ) ){
XJ.JdoZ_num[0] ++;
XJ.JdoZ_amt[0] += Settle.tran_amt;
}
else{
XJ.JdoZ_num[1] ++;
XJ.JdoZ_amt[1] += Settle.tran_amt;
}
}
}
$close span_cur;
/** Print data **/
fprintf(fp,
"中行代做建行: %10d %12.2lf %-10d %-12.2lf\n",
XJ.ZdoJ_num[0],XJ.ZdoJ_amt[0],
XJ.ZdoJ_num[1],XJ.ZdoJ_amt[1] );
fprintf(fp,
"建行代做中行: %10d %12.2lf %-10d %-12.2lf\n",
XJ.JdoZ_num[0],XJ.JdoZ_amt[0],
XJ.JdoZ_num[1],XJ.JdoZ_amt[1] );
fprintf(fp, "------------------------------------------------------------------------------\n");
fclose( fp );
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -