gen_rpt.ec

来自「在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便」· EC 代码 · 共 1,244 行 · 第 1/3 页

EC
1,244
字号
/****************************************************
 *	中心对帐错帐报表 gen_cr() -- cen_rpt()
 *	EDC 对帐错帐报表 gen_er() -- edc_rpt()
 *	全辖交易平衡报表 gen_br() -- bal_rpt()
 *	回扣利益明细报表 gen_mr() -- mx_rpt()
 *	回扣利益分配报表 gen_hr() -- hz_rpt()
 *	全辖交易对帐报表 gen_jydz() -- jydz_rpt(),jyds_rpt()
 *	全辖清算对帐报表 gen_qsdz() -- qsdz_rpt(),qsds_rpt()
 *	信用卡银行报表 gen_c_qsdz() -- c_qsdz_rpt()
 *	******商户网点对帐报表 gen_shdz() -- shdz_rpt()
 *	******人民币卡日对帐单 gen_c_shdz() -- c_shdz_rpt()
 *	******国际卡日对帐单 gen_w_shdz() -- wk_rpt()
 *	全辖交易明细清单 gen_debit_jymx()
 *
 * 最后修改:	周国祥 2001/08/24
 ****************************************************/
/*================== WuBin 2001-8-28 23:49 ======Start==============
银联长城卡清算报表 gen_yl_gw() -- yl_gw_rpt()
银联长城卡月清算报表 gen_yl_gw_month() -- yl_gw_month_rpt()
中行商户交易本外卡月报表 gen_merch_foreign_month() -- merch_foreign_month_rpt()
中行外卡EDC交易月报表 gen_edc_foreign_month() -- edc_foreign_month_rpt()
===========================2001-8-28 23:49=======End==============*/

#include <stdio.h>
#include <curses.h>
#include "all.h"
#include "tool.h"

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

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

/********************************************************************
功能:产生中心对帐错帐报表
********************************************************************/
int gen_cr()
{
	WINDOW	*my_win;
	char	rpt[128], filename[128];
	char	logic_date[9];
	char	e_logic_date[9];
	char	settle_date[9];
	int	ret;
	$S_sys_param sys;

	$select * into :sys from sys_param;
	if (SQLCODE) {
		daylog(ERROR, "Select sys_param error![%d]", SQLCODE);
		return(-1);
	}
	del_st_space("sys_param", &sys);
	if (!strcmp(sys.bank_id, sys.adm_bank_id))
		return(0);

	sprintf(rpt, "%s/prt/%s/debit.cen_err", getenv("WORKDIR"), G_bankid);

	sprintf(filename, "/tmp/.gen_cr.%d", getpid());
	scr_dump(filename);

	disp_below("中心对帐错帐报表");
	clear_wline(stdscr, LINES-1);
	h_prompt(LINES-1, 1, "                                                                 < ESC 退出 > ", 0, 0);
	h_prompt(LINES-1, 1, "中心对帐错帐报表", 0, 0);
	my_win = newwin(19, 80, 3, 0);
	mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	wrefresh(my_win);

	set_prompt(PROMPT_OFF);

#ifndef wyz020429_mod
	getdatef(logic_date,"");
#else
	get_settle_date(settle_date);
	strcpy(logic_date, settle_date);
#endif
	mvwprintw(my_win, 2, 4, "请输入对帐日期: [%s]", logic_date);
	if (in_item(my_win, "", 2, 21, logic_date, 8, NULL, NULL, 0, 0) !=
	    ENTER) goto end_cr;

	strcpy(e_logic_date, logic_date);
	mvwprintw(my_win, 3, 4, "请确认对帐日期: [%s]", e_logic_date);
	if (in_item(my_win, "", 3, 21, e_logic_date, 8, NULL, NULL, 0, 0) !=
	    ENTER) goto end_cr;

#ifdef Wubin20020827_del
	if (strcmp(logic_date, e_logic_date) != 0) 
		goto end_cr;
#endif

	daylog(DEBUG, "正在生成中心对帐错帐报表, 对帐日期: %s, 请稍候 ...",
	       logic_date);

	mvwprintw(my_win, 4, 4, "正在生成中心对帐错帐报表, 请稍候 ...");
	wrefresh(my_win);

	/* cen_rpt() in cen_rpt.ec */
	ret = cen_rpt(rpt, sys, logic_date);
	switch (ret) {
	    case -1:
		h_winprompt(my_win, 17, 4, "生成中心对帐错帐报表出错!", 1, 0);
		goto end_cr;
	    case -2:
		h_winprompt(my_win, 17, 4, "数据库操作错误!", 1, 0);
		goto end_cr;
	}

	daylog(DEBUG, "中心对帐错帐报表生成成功!");
	print_file(my_win, 6, 17, 1, rpt);

end_cr:
	delwin(my_win);
	scr_restore(filename);
	unlink(filename);
	return(0);
}

/********************************************************************
功能:EDC 对帐错帐报表
********************************************************************/
int gen_er()
{
	WINDOW *my_win;
	char rpt[128], filename[128], logic_date[11];
	char e_logic_date[11];
	char settle_date[11];
	$S_sys_param sys;
	int ret;

	$select * into :sys from sys_param;
	if (SQLCODE) {
		daylog(ERROR, "Unable select sys_param table!");
		return(-1);
	}
	del_st_space("sys_param", &sys);

	sprintf(rpt, "%s/prt/%s/debit.edc_err", getenv("WORKDIR"), G_bankid);

	sprintf(filename, "/tmp/.gen_er.%d", getpid());
	scr_dump(filename);

	disp_below("EDC 对帐错帐报表");
	clear_wline(stdscr, LINES-1);
	h_prompt(LINES-1, 1, "                                                                 < ESC 退出 > ", 0, 0);
	h_prompt(LINES-1, 1, "EDC 对帐错帐报表", 0, 0);
	my_win = newwin(19, 80, 3, 0);
	mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	wrefresh(my_win);

	set_prompt(PROMPT_OFF);

#ifndef wyz020429_mod
	getdatef(logic_date,"");
#else
	get_settle_date(settle_date);
	strcpy(logic_date, settle_date);
#endif
	mvwprintw(my_win, 2, 4, "请输入对帐日期: [%s]", logic_date);
	if (in_item(my_win, "", 2, 21, logic_date, 8, NULL, NULL, 0, 0) !=
	    ENTER) goto end_er;

	strcpy(e_logic_date, logic_date);
	mvwprintw(my_win, 3, 4, "请确认对帐日期: [%s]", e_logic_date);
	if (in_item(my_win, "", 3, 21, e_logic_date, 8, NULL, NULL, 0, 0) !=
	    ENTER) goto end_er;

#ifdef Wubin20020827_del
	if (strcmp(logic_date, e_logic_date) != 0)
		goto end_er;
#endif

	daylog(DEBUG, "正在生成 EDC 对帐错帐报表, 对帐日期: %s, 请稍候 ...",
	       logic_date);

	mvwprintw(my_win, 4, 4, "正在生成 EDC 对帐错帐报表, 请稍候 ...");
	daylog(DEBUG, "正在生成EDC 对帐错帐报表...");
	wrefresh(my_win);

	/* edc_rpt() in edc_rpt.ec */
	ret = edc_rpt(rpt, sys, logic_date);
	switch (ret) {
	    case -1:
		h_winprompt(my_win, 17, 4, "生成EDC 对帐错帐报表出错!", 1, 0);
		goto end_er;
	    case -2:
		h_winprompt(my_win, 17, 4, "数据库操作错误!", 1, 0);
		goto end_er;
	}

	daylog(DEBUG, "EDC 对帐错帐报表生成成功!");
	print_file(my_win, 6, 17, 1, rpt);

end_er:
	delwin(my_win);
	scr_restore(filename);
	unlink(filename);
	return(0);
}

/********************************************************************
功能: 全辖交易平衡报表
********************************************************************/
int gen_br()
{
	WINDOW *my_win;
	char rpt[128], filename[128], logic_date[11];
	char e_logic_date[11];
	char settle_date[11];
	$S_sys_param sys;
	int ret;

	$select * into :sys from sys_param;
	if (SQLCODE) {
		daylog(ERROR, "Unable select sys_param table!");
		return(-1);
	}
	del_st_space("sys_param", &sys);

	sprintf(filename, "select count(*) from bank_info where bank_id != adm_bank_id and adm_bank_id = \'%s\'", sys.bank_id);
	ret = query_count(filename);
	if (!ret) return(0);

	sprintf(rpt, "%s/prt/%s/balance.rpt", getenv("WORKDIR"), G_bankid);

	sprintf(filename, "/tmp/.gen_br.%d", getpid());
	scr_dump(filename);

	disp_below("全辖交易平衡报表");
	clear_wline(stdscr, LINES-1);
	h_prompt(LINES-1, 1, "                                                                 < ESC 退出 > ", 0, 0);
	h_prompt(LINES-1, 1, "全辖交易平衡报表", 0, 0);
	my_win = newwin(19, 80, 3, 0);
	mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	wrefresh(my_win);

	set_prompt(PROMPT_OFF);

#ifndef wyz020429_mod
	getdatef(logic_date,"");
#else
	get_settle_date(settle_date);
	strcpy(logic_date, settle_date);
#endif

	mvwprintw(my_win, 2, 4, "请输入清算日期: [%s]", logic_date);
	if (in_item(my_win, "", 2, 21, logic_date, 8, NULL, NULL, 0, 0) !=
	    ENTER) goto end_br;

	strcpy(e_logic_date, logic_date);
	mvwprintw(my_win, 3, 4, "请确认清算日期: [%s]", e_logic_date);
	if (in_item(my_win, "", 3, 21, e_logic_date, 8, NULL, NULL, 0, 0) !=
	    ENTER) goto end_br;

#ifdef Wubin20020827_del
	if (strcmp(logic_date, e_logic_date) != 0)
		goto end_br;
#endif

	daylog(DEBUG, "正在生成全辖交易平衡报表, 清算日期: %s, 请稍候 ...",
	       logic_date);

	mvwprintw(my_win, 4, 4, "正在生成全辖交易平衡报表, 请稍候 ...");
	wrefresh(my_win);

	/* bal_rpt() in bal_rpt.ec */
	ret = bal_rpt(rpt, logic_date);
	switch (ret) {
	    case -1:
		h_winprompt(my_win, 17, 4, "生成报表出错!", 1, 0);
		goto end_br;
	    case -2:
		h_winprompt(my_win, 17, 4, "数据库操作错误!", 1, 0);
		goto end_br;
	}

	daylog(DEBUG, "全辖交易平衡报表生成成功!");
	print_file(my_win, 6, 17, 1, rpt);

end_br:
	delwin(my_win);
	scr_restore(filename);
	unlink(filename);
	return(0);
}

/********************************************************************
功能:回扣利益明细报表
********************************************************************/
int gen_mr()
{
	WINDOW *my_win;
	char rpt[128], filename[128], logic_date[11];
	char e_logic_date[11];
	char settle_date[11];
	$S_sys_param sys;
	int ret;

	$select * into :sys from sys_param;
	if (SQLCODE) {
		daylog(ERROR, "Unable select sys_param table!");
		return(-1);
	}
	del_st_space("sys_param", &sys);

	sprintf(filename, "select count(*) from bank_info where bank_id != adm_bank_id and adm_bank_id = \'%s\'", sys.bank_id);
	ret = query_count(filename);
	if (!ret) return(0);

	sprintf(rpt, "%s/prt/rebate_mx.rpt", getenv("WORKDIR"));

	sprintf(filename, "/tmp/.gen_mr.%d", getpid());
	scr_dump(filename);

	disp_below("回扣利益明细报表");
	clear_wline(stdscr, LINES-1);
	h_prompt(LINES-1, 1, "                                                                 < ESC 退出 > ", 0, 0);
	h_prompt(LINES-1, 1, "回扣利益明细报表", 0, 0);
	my_win = newwin(19, 80, 3, 0);
	mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	wrefresh(my_win);

	set_prompt(PROMPT_OFF);

#ifndef wyz020429_mod
	getdatef(logic_date,"");
#else
	get_settle_date(settle_date);
	strcpy(logic_date, settle_date);
#endif
	mvwprintw(my_win, 2, 4, "请输入清算日期: [%s]", logic_date);
	if (in_item(my_win, "", 2, 21, logic_date, 8, NULL, NULL, 0, 0) !=
	    ENTER) goto end_mr;

	strcpy(e_logic_date, logic_date);
	mvwprintw(my_win, 3, 4, "请确认清算日期: [%s]", e_logic_date);
	if (in_item(my_win, "", 3, 21, e_logic_date, 8, NULL, NULL, 0, 0) !=
	    ENTER) goto end_mr;

#ifdef Wubin20020827_del
	if (strcmp(logic_date, e_logic_date) != 0)
		goto end_mr;

#endif
	daylog(DEBUG, "正在生成回扣利益明细报表, 清算日期: %s, 请稍候 ...",
	       logic_date);

	mvwprintw(my_win, 4, 4, "正在生成回扣利益明细报表, 请稍候 ...");
	wrefresh(my_win);

	/* mx_rpt() in mx_rpt.ec */
	ret = mx_rpt(rpt, logic_date, sys.bank_id, sys.host_id);
	switch (ret) {
	    case -1:
		h_winprompt(my_win, 17, 4, "生成报表出错!", 1, 0);
		goto end_mr;
	    case -2:
		h_winprompt(my_win, 17, 4, "数据库操作错误!", 1, 0);
		goto end_mr;
	}

	daylog(DEBUG, "回扣利益明细报表生成成功!");
	print_file(my_win, 6, 17, 1, rpt);

end_mr:
	delwin(my_win);
	scr_restore(filename);
	unlink(filename);
	return(0);
}

/********************************************************************
功能: 回扣利益分配报表
********************************************************************/
int gen_hr()
{
	WINDOW *my_win;
	char rpt[128], filename[128], logic_date[11];
	char e_logic_date[11];
	char settle_date[11];
	$S_sys_param sys;
	int ret;

	$select * into :sys from sys_param;
	if (SQLCODE) {
		daylog(ERROR, "Unable select sys_param table!");
		return(-1);
	}
	del_st_space("sys_param", &sys);
	
	sprintf(filename, "select count(*) from bank_info where bank_id != adm_bank_id and adm_bank_id = \'%s\'", sys.bank_id);
	ret = query_count(filename);
	if (!ret) return(0);

	sprintf(rpt, "%s/prt/%s/rebate_hz.rpt", getenv("WORKDIR"), G_bankid);

	sprintf(filename, "/tmp/.gen_hr.%d", getpid());
	scr_dump(filename);

	disp_below("回扣利益分配报表");
	clear_wline(stdscr, LINES-1);
	h_prompt(LINES-1, 1, "                                                                 < ESC 退出 > ", 0, 0);
	h_prompt(LINES-1, 1, "回扣利益分配报表", 0, 0);
	my_win = newwin(19, 80, 3, 0);
	mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
	wrefresh(my_win);

	set_prompt(PROMPT_OFF);

#ifndef wyz020429_mod
	getdatef(logic_date,"");
#else
	get_settle_date(settle_date);

⌨️ 快捷键说明

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