📄 shdz_rpt.ec
字号:
if (ls.tran_type == WITHDRAWAL) {
wd_rpt_item[i].debit_amt+=ls.tran_amt;
wd_rpt_item[i].debit_num++;
wd_rpt_total.debit_amt+=ls.tran_amt;
wd_rpt_total.debit_num++;
}
else
if (ls.tran_type == POS_VOID && ls.void_tran_type == WITHDRAWAL) {
wd_rpt_item[i].credit_amt+=ls.tran_amt;
wd_rpt_item[i].credit_num++;
wd_rpt_total.credit_amt+=ls.tran_amt;
wd_rpt_total.credit_num++;
}
else
if (ls.tran_type == POS_VOID && ls.void_tran_type == DEPOSIT) {
wd_rpt_item[i].debit_amt+=ls.tran_amt;
wd_rpt_item[i].debit_num++;
wd_rpt_total.debit_amt+=ls.tran_amt;
wd_rpt_total.debit_num++;
}
if ((wd_rpt_item[i].credit_num + wd_rpt_item[i].debit_num) == 1)
FileHead_wd_mx(&(wd_rpt_item[i]));
FileDetail_wd_mx();
}
void end_term_rpt ( MER_RPT_ITEM *m_r_item , TER_RPT_ITEM *ter_ptr )
{
CARD_ITEM *p;
FileTail_mer_bc_mx ( m_r_item->m_id , ter_ptr );
FileTail_edc_bc_mx ( m_r_item->m_id , ter_ptr );
FileHead_mer_card_hz ( m_r_item->m_id , ter_ptr );
p = ter_ptr->card_item;
while ( p != NULL ) {
FileDetail_mer_card_hz ( m_r_item , ter_ptr , p );
p = p->next;
}
FileTail_mer_card_hz ( m_r_item->m_id , ter_ptr );
}
void end_merchant_rpt ()
{
int i;
TER_RPT_ITEM *p;
CARD_ITEM *c;
FileHead_mer_bhz ();
for ( i = 0 ; i < mer_rpt_cnt ; i++ ) {
if ( mer_rpt_item[i].pur_num == 0 ) {
daylog(DEBUG, "mer_rpt_item[%d].mer_id[%s]", i, mer_rpt_item[i].m_id);
continue;
}
FileHead_edc_bhz ( &(mer_rpt_item[i]) );
FileDetail_mer_bhz ( &(mer_rpt_item[i]) );
p = mer_rpt_item[i].ter_ptr;
while ( p != NULL ) {
end_term_rpt ( &(mer_rpt_item[i]) , p );
FileDetail_edc_bhz ( &(mer_rpt_item[i]) , p );
p=p->next;
}
c = mer_rpt_item[i].card_item;
FileHead_mer_bc_mx_total ( &(mer_rpt_item[i]) );
while ( c != NULL ) {
FileDetail_mer_bc_mx_total ( &(mer_rpt_item[i]) , \
c );
c = c->next;
}
FileTail_mer_bc_mx_total ( &(mer_rpt_item[i]) );
FileTail_edc_bhz ( &(mer_rpt_item[i]) );
}
FileTail_mer_bhz ( &mer_rpt_total );
}
void end_wd_rpt ()
{
int i;
FileHead_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_wd_mx ( &(wd_rpt_item[i]) );
FileDetail_wd_hz ( &(wd_rpt_item[i]) );
}
FileTail_wd_hz ( &wd_rpt_total );
}
/****************************
生成网点日对帐表
*****************************/
int shdz_rpt(void *mer_list, int mer_cnt)
{
$char sql[2048];
$char tmp[128];
$char s_s_date[20] , e_s_date[20];
$int cnt;
$char sign_bankid[12];
int i;
int ret=0;
init_all();
$select * into $sy from sys_param;
if (SQLCODE) {
daylog(ERROR, "Error select sys_param![%d]", SQLCODE);
return(-1);
}
del_st_space("sys_param", &sy);
strcpy ( s_s_date , s_logic_date );
strcpy ( e_s_date , e_logic_date );
$ifndef wyz_mod_020408;
$select count(*) into $cnt from cur_settle_ls
where snd_settle_date >= $s_s_date and snd_settle_date <= $e_s_date;
if (SQLCODE < 0) {
daylog(ERROR, "Fetch cur_settle_ls error!");
free_all();
return(-1);
}
if (SQLCODE == 100)
strcpy ( tmp , "his_settle_ls" );
else {
if ( cnt == 0 )
strcpy(tmp, "his_settle_ls");
else
strcpy(tmp, "cur_settle_ls");
}
$else;
if ((ret = check_which_table(s_s_date, e_s_date)) == 0) {
strcpy(tmp, "cur_settle_ls");
}
else if (ret == 1) {
strcpy(tmp, "his_settle_ls");
}
else {
daylog(ERROR, "判断使用当前清算流水表或历史清算流水表失败!");
free_all();
return -1;
}
$endif;
getdatef(cre_date, "/");
getdatef(cre_time, ":");
switch ( shdz_rpt_flag ) {
case FOREIGN_RPT:
sprintf ( rpt_head , "国际卡" );
sprintf ( rpt_file_head , "frgn" );
#ifdef wyz020502_mod
sprintf ( sql , "select * from %s \
where acq_bank_id = '%s' \
and card_type > '50' \
and snd_settle_date <= '%s' \
and snd_settle_date >= '%s'",
tmp, sy.bank_id, e_logic_date, s_logic_date);
#else
sprintf ( sql , "select * from %s \
where acq_bank_id = '%s' \
and card_type > '50' \
and snd_settle_date <= '%s' \
and snd_settle_date >= '%s'",
tmp, G_cen_bankid,
e_logic_date, s_logic_date);
#endif
break;
case CREDIT_RPT:
sprintf ( rpt_head , "信用卡" );
sprintf ( rpt_file_head , "credit" );
sprintf ( sql , "select * from %s \
where acq_bank_id = '%s' \
and card_type = '%s' \
and snd_settle_date <= '%s' \
and snd_settle_date >= '%s'",
tmp, G_cen_bankid, CREDIT_CARD,
e_logic_date, s_logic_date);
break;
case DEBIT_RPT:
sprintf ( rpt_head , "借记卡" );
sprintf ( rpt_file_head , "debit" );
sprintf ( sql , "select * from %s \
where acq_bank_id = '%s' \
and card_type = '%2.2s' \
and snd_settle_date <= '%s' \
and snd_settle_date >= '%s'",
tmp, G_cen_bankid, DEBIT_CARD,
e_logic_date, s_logic_date);
break;
default:
return -1;
}
#ifdef wyz020502_mod
if ( mer_cnt > 0 ) {
strcpy ( sql+strlen(sql) , "and merchant_id in ( " );
for ( i=0 ; i < mer_cnt ; i++ ) {
sprintf ( tmp , "%s," , (char *)((long )mer_list+11*i) );
strcpy ( sql+strlen(sql) , tmp );
}
strcpy ( sql+strlen(sql)-1 , ")" );
}
#else
/*现在的系统状况,只允许一个商户, 而且不适应15位商户号*/
if (mer_cnt == 1) {
strcpy(sql+strlen(sql), "and merchant_id =");
strcpy(sql+strlen(sql), mer_list);
}
#endif
$prepare s_sql from :sql;
if (SQLCODE) {
daylog(ERROR, "PREPARE Failed![%d]", SQLCODE);
free_all();
return(-1);
}
$declare settle_rpt cursor for s_sql;
if (SQLCODE) {
daylog(ERROR, "DECLARE Failed![%d]", SQLCODE);
free_all();
return(-1);
}
$open settle_rpt;
if (SQLCODE) {
daylog(ERROR, "OPEN Failed![%d]", SQLCODE);
free_all();
return(-1);
}
FetBufSize = 32000;
while (1) {
$fetch settle_rpt into $ls;
if (SQLCODE == 100) break;
if (SQLCODE < 0) {
daylog(ERROR, "Error fetch settle_rpt![%d]", SQLCODE);
$close settle_rpt;
free_all();
close_all_file();
return(-1);
}
del_st_space("tran_ls", &ls);
$ifdef wyz020502_mod;
$else;
EXEC SQL SELECT sign_bank_id INTO :sign_bankid
FROM merchant_base
WHERE merchant_id = :ls.merchant_id;
if (SQLCODE == 100) {
if (strcmp(G_cen_bankid, G_bankid)) {
continue;
}
}
else if (SQLCODE) {
daylog(ERROR, "Select sign_bank_id failed(%d)", SQLCODE);
$close settle_rpt;
free_all();
close_all_file();
return(-1);
}
else {
if (strcmp(G_cen_bankid, G_bankid)) {
DelSpace(sign_bankid);
if (strcmp(G_bankid, sign_bankid)) {
/*daylog(DEBUG, "非不行签约商户");*/
continue;
}
}
}
/*Move here from merchant_rpt_proc(), wd_rpt_proc() */
if (strcmp(G_cen_bankid, ls.acq_bank_id)||
!memcmp(ls.terminal_id, "TRM", 3) ||
!memcmp(ls.mcc, "6010", 4))
continue;
$endif;
merchant_rpt_proc ();
wd_rpt_proc ();
}
$close settle_rpt;
end_merchant_rpt ();
end_wd_rpt ();
free_all();
close_all_file();
create_wd_mx ();
create_edc_bc_mx ();
create_edc_bhz ();
create_mer_bc_mx ();
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -