📄 credit_rpt.ec
字号:
/*******************************************************
* 信用卡报表 (目前暂不使用, 由其它分项文件替代)
*
* 最后修改: 周国祥 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 + -