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

📄 credit_rpt.ec

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 EC
📖 第 1 页 / 共 2 页
字号:
		wd_rpt_item[i].credit_num = 0;
		wd_rpt_item[i].debit_amt = 0.0;
		wd_rpt_item[i].debit_num = 0;
	}
	
	if ( ls.tran_type == WITHDRAWAL ) {
		wd_rpt_item[i].credit_amt+=ls.tran_amt;
		wd_rpt_item[i].credit_num++;
		wd_rpt_total2.credit_amt+=ls.tran_amt;
		wd_rpt_total2.credit_num++;
	}
	else 
	if ( ls.tran_type == DEPOSIT ) {
		wd_rpt_item[i].debit_amt+=ls.tran_amt;
		wd_rpt_item[i].debit_num++;
		wd_rpt_total2.debit_amt+=ls.tran_amt;
		wd_rpt_total2.debit_num++;
	}
	
	if ( (wd_rpt_item[i].credit_num+\
	wd_rpt_item[i].debit_num) == 1 ) 
		FileHead_cre_wd_mx ( &(wd_rpt_item[i]) );
	
	FileDetail_cre_wd_mx ();
}

int search_bankid ( char *dst_bankid, char *dst_hostid, int *dst )
{
$char	b_id[12] , b_id2[12];
$char	h_id[3] , h_id2[3];
char	head_bank_id2[12][12];
char	head_host_id2[12][3];
int	head_bank_cnt2=0;
int	i,j,b_i;
int	adjust_dst=0;

	memset ( head_bank_id2 , 0 , sizeof(head_bank_id) );

	strcpy ( b_id , dst_bankid );
	strcpy ( h_id , dst_hostid );

	for ( i=0 ; i < 12 ; i++ ) {
		strcpy ( head_bank_id2[i] , b_id );
		strcpy ( head_host_id2[i] , h_id );
		head_bank_cnt2++;

		for ( j=0 ; j < head_bank_cnt ; j++ )
			if ( !strcmp (head_bank_id[j], b_id ) &&
			     !strcmp(head_host_id[j], h_id) )
				break;
		
		if ( j < head_bank_cnt ) break;

		$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 ) {
			j--;
			adjust_dst=1;
			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_id2[i]) &&
		     !strcmp(h_id, head_host_id2[i]) ) {
			j = head_bank_cnt-1;
			break;
		}
	}

	if ( j == 0 && i == 0 ) b_i=0;
	else
	if ( j == 0 ) {
		for ( j=1 ; j < bank_rpt_cnt ; j++ )
			if (!strcmp(head_bank_id2[i-1], bank_rpt_item[j].bank_id) &&
			    !strcmp(head_host_id2[i-1], bank_rpt_item[j].host_id) ) 
				break;

		b_i = j;
		j = 0;
	}
	else
		b_i=bank_rpt_cnt-1;
			
	*dst = j+i+adjust_dst;

	return b_i;
}

void bank_rpt_proc ()
{
int sd_i , fk_i;
int sd_d , fk_d;

	sd_i = search_bankid ( ls.acq_bank_id, ls.acq_host_id, &sd_d );
	fk_i = search_bankid ( ls.iss_bank_id, ls.acq_host_id, &fk_d );
	
	if ( sd_d+fk_d > 1 ) {
		if ( sd_d > 0 && fk_d != 0 ) {
		bank_rpt_item[fk_i].in_fee_amt+=(0.3/(sd_d+fk_d-1))*(sd_d);
		bank_rpt_item[fk_i].in_fee_num+=(sd_d>0);
		bank_rpt_total2.in_fee_amt+=(0.3/(sd_d+fk_d-1))*(sd_d);
		bank_rpt_total2.in_fee_num+=(fk_d>0);
		}

		if ( sd_d-1 > 0 ) {
		bank_rpt_item[sd_i].out_fee_amt+=(0.3/(sd_d+fk_d-1))*(sd_d-1);
		bank_rpt_item[sd_i].out_fee_num+=(sd_d-1)>0;
		bank_rpt_total2.out_fee_amt+=(0.3/(sd_d+fk_d-1))*(sd_d-1);
		bank_rpt_total2.out_fee_num+=(sd_d-1)>0;
		}
	}
	
	if ( sd_i != fk_i ) 	
	switch ( ls.tran_type ) {
	case DEPOSIT:
	case REFUND:
		cre_tip = get_qs_tip ( ls );

		bank_rpt_item[sd_i].up_debit_amt += ls.tran_amt+cre_tip;
		bank_rpt_item[sd_i].up_debit_num++;
	
		bank_rpt_total2.up_debit_amt += ls.tran_amt+cre_tip;
		bank_rpt_total2.up_debit_num++;

		bank_rpt_item[fk_i].down_credit_amt += ls.tran_amt+cre_tip;
		bank_rpt_item[fk_i].down_credit_num++;
		
		bank_rpt_total2.down_credit_amt += ls.tran_amt+cre_tip;
		bank_rpt_total2.down_credit_num++;
		
		break;

	case PURCHASE:
	case WITHDRAWAL:
		cre_tip = get_qs_tip ( ls );

		bank_rpt_item[sd_i].up_credit_amt += ls.tran_amt+cre_tip;
		bank_rpt_item[sd_i].up_credit_num++;
		
		bank_rpt_total2.up_credit_amt += ls.tran_amt+cre_tip;
		bank_rpt_total2.up_credit_num++;

		bank_rpt_item[fk_i].down_debit_amt += ls.tran_amt+cre_tip;
		bank_rpt_item[fk_i].down_debit_num++;
		
		bank_rpt_total2.down_debit_amt += ls.tran_amt+cre_tip;
		bank_rpt_total2.down_debit_num++;
		
		break;
	}

	if ( sd_i != fk_i ) {
		if ( ( bank_rpt_item[sd_i].up_debit_num+\
		bank_rpt_item[sd_i].up_credit_num ) == 1 )
			FileHead_bank_up_mx ( &(bank_rpt_item[sd_i]) );
		
		FileDetail_bank_up_mx ( &(bank_rpt_item[sd_i]) );
		
		if ( ( bank_rpt_item[fk_i].down_credit_num+\
		bank_rpt_item[fk_i].down_debit_num ) == 1 )
			FileHead_bank_down_mx ( &(bank_rpt_item[fk_i]) );
		
		FileDetail_bank_down_mx ( &(bank_rpt_item[fk_i]) );
	}
	
	if ( sd_i == fk_i ) {
		if ( first_flag == 0 ) {
			first_flag = 1;
//			FileHead_cre_bank_bd_mx ( &(bank_rpt_item[sd_i]) );
		}
		
//		FileDetail_cre_bank_bd_mx ();
	}
}

/*================== WuBin 2001-8-20 13:11 ======Start==============
void end_merchant_rpt ()
===========================2001-8-20 13:11=======End==============*/
void end_merchant_rpt1 ()
{
int	i;
TER_RPT_ITEM	*p;

	FileHead_cre_mer_hz ();

	for ( i = 0 ; i < mer_rpt_cnt ; i++ ) {
		if ( mer_rpt_item[i].pur_num == 0 ) continue;
		
		FileTail_cre_mer_mx ( &(mer_rpt_item[i]) );

		p = mer_rpt_item[i].ter_ptr;
	
		while ( p != NULL ) {
			FileDetail_cre_mer_hz ( p , mer_rpt_item[i].m_id );
			p=p->next;
		}
	}

	FileTail_cre_mer_hz ( &mer_rpt_total2 );
}

/*================== WuBin 2001-8-20 13:12 ======Start==============
void end_wd_rpt ()
===========================2001-8-20 13:12=======End==============*/
void end_wd_rpt1 ()
{
int	i;

	FileHead_cre_wd_hz ();

	for ( i = 0 ; i < wd_rpt_cnt ; i++ ) {
		if ( ( wd_rpt_item[i].credit_num+wd_rpt_item[i].debit_num )\
		== 0 ) 
			continue;
		
		FileTail_cre_wd_mx ( &(wd_rpt_item[i]) );
		FileDetail_cre_wd_hz ( &(wd_rpt_item[i]) );
	}

	FileTail_cre_wd_hz ( &wd_rpt_total2 );
}

void end_bank_rpt ()
{
int	i;

/*	if ( first_flag != 0 )
		FileTail_cre_bank_bd_mx ();
*/
	
	FileHead_bank_up_hz ();
	FileHead_bank_down_hz ();
	FileHead_bank_in_fee ();
	FileHead_bank_out_fee ();
	
	for ( i=0 ; i < bank_rpt_cnt ; i++ ) {
		if ( i == bank_rpt_cnt-1 && \
		!strcmp ( bank_rpt_item[0].bank_id , bank_rpt_item[i].bank_id ) )
			break;

		if ( (bank_rpt_item[i].up_credit_num+\
		bank_rpt_item[i].up_debit_num) != 0 ) {
			FileTail_bank_up_mx ( &(bank_rpt_item[i]) );
			FileDetail_bank_up_hz ( &(bank_rpt_item[i]) );
		}
		
		if ( (bank_rpt_item[i].down_credit_num+\
		bank_rpt_item[i].down_debit_num) != 0 ) {
			FileTail_bank_down_mx ( &(bank_rpt_item[i]) );
			FileDetail_bank_down_hz ( &(bank_rpt_item[i]) );
		}
		
		if ( bank_rpt_item[i].in_fee_num != 0 )
			FileDetail_bank_in_fee ( &(bank_rpt_item[i]) );
		
		if ( bank_rpt_item[i].out_fee_num != 0 ) 
			FileDetail_bank_out_fee ( &(bank_rpt_item[i]) );
	}
	
	FileTail_bank_up_hz ( &bank_rpt_total2 );
	FileTail_bank_down_hz ( &bank_rpt_total2 );
	FileTail_bank_in_fee ( &bank_rpt_total2 );
	FileTail_bank_out_fee ( &bank_rpt_total2 );
}

static void free_all ()
{
TER_RPT_ITEM	*p , *p1;
int	i;

	if ( mer_rpt_item != NULL ) {
		for ( i=0 ; i < mer_rpt_cnt ; i++ ) {
			p = mer_rpt_item[i].ter_ptr;

			while ( p != NULL ) {
				p1 = p;
				p = p->next;
				free ( p1 );
			}
		}
		
		free ( mer_rpt_item );
	}
	
	if ( wd_rpt_item != NULL )
		free ( wd_rpt_item );
	
	if ( bank_rpt_item != NULL )
		free ( bank_rpt_item );
}
				
int gen_credit_rpt ()
{
int	first=0;

	if ( init_bank_rpt_item () < 0 ) {
		errcall ( ERROR , "Unable init bank_rpt item !" );
		return -1;
	}
	
	getdatef ( cre_date , "" );
	gettimef ( cre_time , "" );
	
	$declare settle_rpt cursor for
	select * from cur_settle_ls
	where card_type = '01';		/* 信用卡01 */
	
	if ( SQLCODE ) {
		errcall ( ERROR , "Unable decalre settle_rpt cursor %d" , \
		SQLCODE );
		return -1;
	}
	
	$open settle_rpt;
	
	if ( SQLCODE ) {	
		errcall ( ERROR , "Unable open settle_rpt %d " , SQLCODE );
		return -1;
	}
	
	while ( 1 ) {
		$fetch settle_rpt into $ls;
		
		if ( SQLCODE == 100 ) break;
		
		if ( SQLCODE < 0 ) {
			errcall ( ERROR , "Error fetch settle_rpt %d" ,\
			 SQLCODE );
			
			$close settle_rpt;
			free_all ();
			close_all_file ();

			return -1;
		}
		del_st_space("tran_ls", &ls);
		
		if ( first == 0 ) {
			strcpy ( logic_date , ls.snd_settle_date );
			first = 1;
		}
		
		merchant_rpt_proc ();
		wd_rpt_proc ();
		bank_rpt_proc ();
	}
	
	end_merchant_rpt ();
	end_wd_rpt ();
/*================== WuBin 2001-8-20 13:20 ======Start==============
	end_bank_rpt ();
===========================2001-8-20 13:20=======End==============*/
	end_bank_rpt1 ();
	
	free_all ();
	close_all_file ();
	
	create_cre_mer_mx ();
	create_cre_wd_mx ();
	create_cre_bank_up_mx ();
	create_cre_bank_down_mx ();
}

⌨️ 快捷键说明

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