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

📄 shdz_rpt.ec

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 EC
📖 第 1 页 / 共 2 页
字号:
	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 + -