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

📄 credit_rpt.ec

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 EC
📖 第 1 页 / 共 2 页
字号:
/*******************************************************
 *	信用卡报表 (目前暂不使用, 由其它分项文件替代)
 *
 * 最后修改:	周国祥 2001/08/19
 *******************************************************/
#include "all.h"
#include <math.h>
#include <stdlib.h>

#include "macro_def.h"
#include "credit_rpt.h"

$include sqlca;
$include "db_struct.h";

EXEC SQL WHENEVER SQLERROR CALL error_handler;
EXEC SQL WHENEVER SQLWARNING CALL warning_handler;
EXEC SQL WHENEVER NOT FOUND CALL notfound_handler;

BANK_RPT_ITEM	*bank_rpt_item=NULL;
int bank_rpt_cnt=0;
BANK_RPT_TOTAL bank_rpt_total2 = { 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0, 0.0, 0 };

MER_RPT_ITEM	*mer_rpt_item=NULL;
int	mer_rpt_cnt=0;

MER_RPT_TOTAL	mer_rpt_total2={0.0, 0};

WD_RPT_ITEM	*wd_rpt_item=NULL;
WD_RPT_TOTAL	wd_rpt_total2 = { 0.0 , 0 , 0.0 , 0 };
int	wd_rpt_cnt=0;

int first_flag=0;
double	cre_tip;

$S_sys_param	sy;
$S_tran_ls	ls;

char	head_bank_id[12][12], head_host_id[12][3];
int	head_bank_cnt;
char	logic_date[11] , cre_date[11] , cre_time[9];

int init_bank_rpt_item ()
{
int 	i;
$int 	cnt;
$char	b_id[12], b_id2[12], b_name[31];
$char	h_id[3], h_id2[3];

	$select * into $sy from sys_param;
	
	if ( SQLCODE ) {
		errcall ( ERROR , "Error select sys_param %d" , SQLCODE );
		return -1;
	}
	del_st_space("sys_param", &sy);
	
	$select count(*) into $cnt from bank_info 
	where adm_bank_id = $sy.bank_id and adm_host_id = $sy.host_id
	and (bank_id != $sy.bank_id or host_id != $sy.host_id);
	
	if ( SQLCODE == 0 && sqlca.sqlerrd[2] == 0 )
		cnt = 0;
	else if ( SQLCODE < 0 ) {
		errcall ( ERROR , "Error select count(*) from bank_info %d" ,\
		SQLCODE );
		return -1;
	}

	cnt+=2;	
	
	bank_rpt_cnt = cnt;

	bank_rpt_item = (BANK_RPT_ITEM *)malloc	(sizeof(BANK_RPT_ITEM)*cnt);
	
	if ( bank_rpt_item == NULL ) {
		errcall ( ERROR , "Error malloc null !" );
		return -1;
	}

	memset ( (void *)bank_rpt_item , '\0' , sizeof(BANK_RPT_ITEM)*cnt );
	
	strcpy ( bank_rpt_item[0].bank_id , sy.bank_id );
	strcpy ( bank_rpt_item[0].host_id , sy.host_id );
	get_bank_name(sy.bank_id, sy.host_id, b_name);
	strcpyn ( bank_rpt_item[0].bank_name , b_name , 30 );

	bank_rpt_item[0].up_credit_amt = 0.;
	bank_rpt_item[0].up_debit_amt = 0.;
	bank_rpt_item[0].down_credit_amt = 0.;
	bank_rpt_item[0].down_debit_amt = 0.;
	bank_rpt_item[0].in_fee_amt = 0.;
	bank_rpt_item[0].out_fee_amt = 0.;

	
	strcpy ( bank_rpt_item[cnt-1].bank_id , sy.adm_bank_id );
	strcpy ( bank_rpt_item[cnt-1].host_id , sy.adm_host_id );
	get_bank_name(sy.adm_bank_id, sy.adm_host_id, b_name);
	strcpy ( bank_rpt_item[cnt-1].bank_name , b_name );
	bank_rpt_item[cnt-1].up_credit_amt = 0.;
	bank_rpt_item[cnt-1].up_debit_amt = 0.;
	bank_rpt_item[cnt-1].down_credit_amt = 0.;
	bank_rpt_item[cnt-1].down_debit_amt = 0.;
	bank_rpt_item[cnt-1].in_fee_amt = 0.;
	bank_rpt_item[cnt-1].out_fee_amt = 0.;
	cnt--;

	if ( cnt > 0 ) {	
		$declare bank_rpt_cur cursor for 
		select bank_id, host_id, bank_name from bank_info 
		where adm_bank_id = $sy.bank_id
		and   adm_host_id = $sy.host_id
		and   (bank_id != $sy.bank_id or host_id != $sy.host_id);
		
		if ( SQLCODE ) {
			errcall ( ERROR , "Error declare bank_rpt cursor %d ",\
			SQLCODE );

			return -1; 
		}
		
		$open bank_rpt_cur;
		
		if ( SQLCODE ) {	
			errcall ( ERROR , "Error open bank_rpt %d " , SQLCODE );
			return -1;
		}

		for ( i = 1 ; i < cnt ; i++ ) {	
			$fetch bank_rpt_cur into $b_id, $h_id, $b_name;
			
			if ( SQLCODE == 100 )
				break;
	
			if ( SQLCODE ) {
				errcall ( ERROR , "Error fetch %d " , SQLCODE );
				$close bank_rpt_cur;
				return -1;
			}
			DelSpace(b_id);
			DelSpace(h_id);
			DelSpace(b_name);
			
			strcpy ( bank_rpt_item[i].bank_id , b_id );
			strcpy ( bank_rpt_item[i].host_id , h_id );
			strcpy ( bank_rpt_item[i].bank_name , b_name );

			bank_rpt_item[i].up_credit_amt = 0.;
			bank_rpt_item[i].up_debit_amt = 0.;
			bank_rpt_item[i].down_credit_amt = 0.;
			bank_rpt_item[i].down_debit_amt = 0.;
			bank_rpt_item[i].in_fee_amt = 0.;
			bank_rpt_item[i].out_fee_amt = 0.;
		}
	}
	
	$close bank_rpt_cur;
	
	memset ( head_bank_id , 0 , sizeof(head_bank_id) );
	
	strcpy ( b_id , bank_rpt_item[0].bank_id );
	strcpy ( h_id , bank_rpt_item[0].host_id );

	for ( i=0 , head_bank_cnt=0 ; i < 12 ; i++ ) {
		strcpy ( head_bank_id[i] , b_id );
		strcpy ( head_host_id[i] , h_id );
		head_bank_cnt++;

		$select adm_bank_id, adm_host_id into $b_id2, $h_id2
		from bank_info
		where bank_id = $b_id and host_id = $h_id;

		if ( SQLCODE ) {
			errcall ( ERROR , "Unable select head %s-%s  %d ", b_id, h_id, SQLCODE );
			break;
		}
		DelSpace(b_id2);
		DelSpace(h_id2);

		strcpy ( b_id , b_id2 );
		strcpy ( h_id , h_id2 );
	
		if ( !strcmp(b_id, head_bank_id[i]) &&
		     !strcmp(h_id, head_host_id[i]) )
			break;
	}

	return 0;
}

/************** 	Wubin2001-8-20
TER_RPT_ITEM *search_ter_rpt ( MER_RPT_ITEM *mer_rpt_item , char *t_id )
*****************/
TER_RPT_ITEM *search_ter_rpt1 ( MER_RPT_ITEM *mer_rpt_item , char *t_id )
{
TER_RPT_ITEM *p;

	p=mer_rpt_item->ter_ptr;

	while ( p != NULL ) { 
		if ( !memcmp ( t_id , p->t_id , 8 ) ) 
			return p;
		
		p=p->next;
	}
	
	return NULL;
}


/*================== WuBin 2001-8-20 13:06 ======Start==============
void insert_ter_rpt ( MER_RPT_ITEM *mer_rpt_item , TER_RPT_ITEM *ter_rpt_item )
===========================2001-8-20 13:06=======End==============*/
void insert_ter_rpt1 ( MER_RPT_ITEM *mer_rpt_item , TER_RPT_ITEM *ter_rpt_item )
{
TER_RPT_ITEM *p;
	
	if ( mer_rpt_item->ter_ptr == NULL ) {
		mer_rpt_item->ter_ptr = ter_rpt_item;
		return;
	}

	p = mer_rpt_item->ter_ptr;
	
	while ( p->next != NULL ) p = p->next;
	
	p->next = ter_rpt_item;
}

void merchant_rpt_proc ()
{
$double	fee_percent;
double	tmp_fee;
$char	mer_name[41];
int	i;
void	*temp;
TER_RPT_ITEM	*ter_ptr;

	if (strcmp(sy.bank_id, ls.acq_bank_id) ||
	!memcmp ( ls.mcc , "6010" , 4 ) )
		return ;

	for ( i=0 ; i < mer_rpt_cnt ; i++ )
		if ( !memcmp ( mer_rpt_item[i].m_id , ls.merchant_id , \
		10 ) )
			break;
	
	if ( i == mer_rpt_cnt ) {
		temp = malloc ( sizeof(MER_RPT_ITEM)*(++mer_rpt_cnt) );
		memcpy ( temp , mer_rpt_item ,\
		sizeof(MER_RPT_ITEM)*(mer_rpt_cnt-1) );
		if ( mer_rpt_item != NULL ) 
			free ( mer_rpt_item );
	
		mer_rpt_item = (MER_RPT_ITEM *)temp;
		
		strcpy ( mer_rpt_item[i].m_id , ls.merchant_id );
	
$ifdef zgx010819_modi;
		$select rmbc_rebate into $fee_percent from shop_card
		where merchant_id = $ls.merchant_id;
		
		if ( SQLCODE ) {
			errcall ( ERROR , "Error select rmbc_rebate %s %d " , \
			ls.merchant_id , SQLCODE );
			
			fee_percent = 0.0;
		}
		mer_rpt_item[i].fee_percent = fee_percent/100.0;
$else;
		get_rebate(ls.merchant_id, CREDIT_CARD, &fee_percent);
		mer_rpt_item[i].fee_percent[5] = fee_percent;
$endif;
		
		$select merchant_cname into $mer_name from merchant_base
		where merchant_id = $ls.merchant_id;
		
		if ( SQLCODE ) {
			errcall ( ERROR , "Error select merchant_name %s %d ", \
			ls.merchant_id , SQLCODE );
			
			strcpy ( mer_name , "UNKNOWN" );
		}
		DelSpace(mer_name);
		
		strcpy ( mer_rpt_item[i].m_name , mer_name );
		
		mer_rpt_item[i].pur_amt = 0.0;
		mer_rpt_item[i].pur_num = 0;
		mer_rpt_item[i].fee = 0.0;
		
		mer_rpt_item[i].ter_ptr = NULL;
	}
	
	ter_ptr=search_ter_rpt1 ( &(mer_rpt_item[i]) , ls.terminal_id );
	
	if ( ter_ptr == NULL ) {
		ter_ptr = malloc ( sizeof(TER_RPT_ITEM) );
		
		if ( ter_ptr == NULL ) {
			errcall ( ERROR , "Error malloc ter_rpt !" );
			return ;
		}

		strcpy ( ter_ptr->t_id , ls.terminal_id ); 
		ter_ptr->pur_amt = 0.0;
		ter_ptr->pur_num = 0;
		ter_ptr->next = NULL;

		insert_ter_rpt1 ( &(mer_rpt_item[i]) , ter_ptr );
	}

	mer_rpt_item[i].pur_amt+=ls.tran_amt;
	mer_rpt_item[i].pur_num++;
	ter_ptr->pur_amt+=ls.tran_amt;
	ter_ptr->pur_num++;
	
	mer_rpt_total2.pur_amt+=ls.tran_amt;
	mer_rpt_total2.pur_num++;
	
/*
	mer_rpt_item[i].fee += ((double )((long )((ls.tran_amt * (mer_rpt_item[i].fee_percent)) * 100.0 + 0.5))) /100.0;
*/
	tmp_fee = (ls.tran_amt * (mer_rpt_item[i].fee_percent[5] * 100.0) + 0.5) / 100.0;
	mer_rpt_item[i].fee += tmp_fee;
	
	if ( mer_rpt_item[i].pur_num == 1 )
		FileHead_cre_mer_mx ( &(mer_rpt_item[i]) );
	
	FileDetail_cre_mer_mx ();
}

void wd_rpt_proc ()
{
$char	mer_name[41];
int	i;
void	*temp;

	if ( strcmp ( sy.bank_id , ls.acq_bank_id ) || \
	memcmp ( ls.mcc , "6010" , 4 ) ) 
		return ;

	for ( i=0 ; i < wd_rpt_cnt ; i++ )
		if ( !memcmp ( wd_rpt_item[i].m_id , ls.merchant_id , \
		10 ) )
			break;
	
	if ( i == wd_rpt_cnt ) {
		temp = malloc ( sizeof(WD_RPT_ITEM)*(++wd_rpt_cnt) );
		memcpy ( temp , wd_rpt_item ,\
		sizeof(WD_RPT_ITEM)*(wd_rpt_cnt-1) );
		if ( wd_rpt_item != NULL ) 
			free ( wd_rpt_item );
	
		wd_rpt_item = (WD_RPT_ITEM *)temp;
		
		strcpy ( wd_rpt_item[i].m_id , ls.merchant_id );
		
		$select merchant_cname into $mer_name from merchant_base
		where merchant_id = $ls.merchant_id;
		
		if ( SQLCODE ) {
			errcall ( ERROR , "Error select merchant_name %s %d ",\
			ls.merchant_id , SQLCODE );
			
			strcpy ( mer_name , "UNKNOWN" );
		}
		
		strcpy ( wd_rpt_item[i].m_name , mer_name );
	
		wd_rpt_item[i].credit_amt = 0.0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -