⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xj_rpt.ec

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 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 + -