gen_dz_rpt.ec

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

EC
625
字号
/****************************************************
 *	人民币卡网点日对帐报表gen_wddz()
 *	人民币卡商户日对帐报表gen_shdz()
 *		商户批次明细报表
 *		EDC 批次明细报表
 *		EDC 批次汇总报表
 *	国际卡商户日对帐报表gen_frgn_shdz()
 *	人民币卡商户批汇总报表gen_shbhz()
 *	人民币卡商户入帐报表gen_bank_shdz()
 *
 * 最后修改:	周国祥 2001/08/24
 ****************************************************/
#include <stdio.h>
#include <curses.h>
#include "all.h"
#include "tool.h"
#include "credit_rpt.h"

$include "db_struct.h"
$include sqlca;

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

int	shdz_rpt_flag;

extern long print_enable;

extern char logic_date[] , s_logic_date[] , e_logic_date[];

int gen_wddz()
{
	$S_sys_param	sys;
	char cmd[300];
	WINDOW *my_win;
	SETTLE_RESULT	s_r;
	FILE		*fp;
	char		tmp_file[128];
	int	ret, his_flag=0;
	char	filename[128];
	char	settle_date[9];
	char	mer_id[20];
	int	mer_cnt;
	char	credit_mx[128] , debit_mx[128];
	char	credit_hz[128] , debit_hz[128];

	sprintf(filename, "/tmp/.gen_wddz.%d", getpid());
	scr_dump(filename);
	
	$select * into $sys from sys_param ;
	
	if ( SQLCODE ) {
		daylog(ERROR, "Unable select sys_param %d!", SQLCODE);
		return -1;
	}

	del_st_space("sys_param", &sys);

	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);

	print_enable=0;
	print_enable|=WD_MX|WD_HZ;

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

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

	strcpy ( e_logic_date , s_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_shdz;

#ifdef Wubin20020827_del
	if (strcmp(s_logic_date, e_logic_date) != 0) {
		goto end_shdz;
	}
#endif
	
	if (strcmp(s_logic_date, settle_date) < 0)
		his_flag = 1;
	else
		his_flag = 0;

	memset(mer_id, 0, sizeof(mer_id));	
	mvwprintw(my_win, 4, 4, "请输入商户编号: [%15s]", " ");
	if (in_item(my_win, "", 4, 21, mer_id, 15, NULL, NULL, 0, 0) !=
	    ENTER) goto end_shdz;

	DelSpace(mer_id);
	if ( mer_id[0] > '9' || mer_id[0] < '0' )
		mer_cnt = 0;
	else
		mer_cnt = 1;

	daylog(DEBUG, "正在生成人民币卡网点日对帐报表, 清算日期: %s-%s, 请稍候 ...", s_logic_date , e_logic_date );

	mvwprintw(my_win, 6, 4, "正在生成人民币卡网点日对帐报表, 请稍候 ...");
	
	wrefresh(my_win);
	
	shdz_rpt_flag=DEBIT_RPT;
	ret = shdz_rpt( mer_id , mer_cnt );
	if (ret < 0) {
		h_winprompt(my_win, 17, 4, "生成借记卡报表出错!", 1, 0);
		goto end_shdz;
	}

	shdz_rpt_flag=CREDIT_RPT;
	ret = shdz_rpt( mer_id , mer_cnt );
	if (ret < 0) {
		h_winprompt(my_win, 17, 4, "生成信用卡报表出错!", 1, 0);
		goto end_shdz;
	}

	daylog(DEBUG, "人民币卡网点日对帐报表生成成功!");

	sprintf(credit_mx, "%s/prt/%s/credit.wd_mx", getenv("WORKDIR"), G_bankid);
	sprintf(credit_hz, "%s/prt/%s/credit.wd_hz", getenv("WORKDIR"), G_bankid);
	
	sprintf(debit_mx, "%s/prt/%s/debit.wd_mx", getenv("WORKDIR"), G_bankid);
	sprintf(debit_hz, "%s/prt/%s/debit.wd_hz", getenv("WORKDIR"), G_bankid);
	
	print_file(my_win, 8, 17, 4,\
	credit_hz , credit_mx , debit_hz , debit_mx );

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

/*
 * 生成商户对帐表
 */
int gen_shdz()
{
	$S_sys_param sys;
	char cmd[300];
	WINDOW *my_win;
	SETTLE_RESULT	s_r;
	FILE		*fp;
	char		tmp_file[128];
	char filename[128], path[80];
	char file[6][80], mer_id[20];
	int mer_cnt, ret, i;
	static char pflag[3], first=1;
	char *pfile[3] = {"mer_bc_mx", "edc_bc_mx", "edc_bhz"};

	if ( first ) {
		first = 0;
		memset ( pflag , 1 , 3 );
	}

	sprintf(filename, "/tmp/.gen_shdz.%d", getpid());
	scr_dump(filename);
	
	$select * into $sys from sys_param ;
	if ( SQLCODE ) {
		errcall ( ERROR , "Unable select sys_param %d !" ,\
		SQLCODE );
		return -1;
	}
	del_st_space("sys_param", &sys);

	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 wyz_mod_020408
	getdatef(s_logic_date, "");
#else
	get_settle_date(s_logic_date);
#endif

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

	strcpy ( e_logic_date , s_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_shdz;
	
#ifdef Wubin20020827_del
	if (strcmp(s_logic_date, e_logic_date) != 0) {
		goto end_shdz;
	}
#endif
	
	strcpy ( mer_id , "" );	
	mvwprintw(my_win, 4, 4, "请输入商户编号: [%15s]", " ");
	if (in_item(my_win, "", 4, 21, mer_id, 15, NULL, NULL, 0, 0) !=
	    ENTER) goto end_shdz;

	if ( mer_id[0] > '9' || mer_id[0] < '0' )
		mer_cnt = 0;
	else
		mer_cnt = 1;
	
	print_enable=0;
	print_enable|=MER_BC_MX|EDC_BC_MX|EDC_BHZ;

	createsbox ( 10 , 30 , 8 , 1 , 1 , "请选择生成报表类型      " );
	
	additem ( 0 , "商户批次明细报表" , pflag[0] );
	additem ( 0 , "EDC 批次明细报表" , pflag[1] );
	additem ( 0 , "EDC 批次汇总报表" , pflag[2] );
	
	clear_wline(stdscr, LINES-1);
	mvwprintw(stdscr, LINES-1, 23, "切换: Space  确认: Enter  取消: ESC");
	refresh();

	ret = dispsbox();
	
	if ( ret != 0 ) {
		freesbox();
	        goto end_shdz;
	}
	else {
		print_enable = 0;
		for ( i=0 ; i < 3 ; i++ ) {
			getitemflag ( 0 , i , &(pflag[i]) );
			if ( pflag[i] == 1 ) {
				switch ( i ) {
				case 0:
				print_enable |= MER_BC_MX;
				break;
				case 1:
				print_enable |= EDC_BC_MX;
				break;
				case 2:
				print_enable |= EDC_BHZ;
				break;
				}
			}
		}
		freesbox();
	}
			
	daylog(DEBUG, "正在生成人民币卡商户日对帐报表, 清算日期: %s-%s, 请稍候 ...", s_logic_date , e_logic_date );

	mvwprintw(my_win, 6, 4, "正在生成人民币卡商户日对帐报表, 请稍候 ...");
	
	wrefresh(my_win);
	
	shdz_rpt_flag=DEBIT_RPT;
	ret = shdz_rpt( mer_id , mer_cnt );
	if (ret < 0) {
		h_winprompt(my_win, 17, 4, "生成借记卡报表出错!", 1, 0);
		goto end_shdz;
	}

	shdz_rpt_flag=CREDIT_RPT;
	ret = shdz_rpt( mer_id , mer_cnt );
	if (ret < 0) {
		h_winprompt(my_win, 17, 4, "生成信用卡报表出错!", 1, 0);
		goto end_shdz;
	}

	daylog(DEBUG, "人民币卡商户日对帐报表生成成功!");

	strcpy(path, getenv("WORKDIR"));
	memset(file, 0, sizeof(file));
	for (i = 0; i < 3; i++) {
		if (pflag[i] == 1) {
			sprintf(file[2*i], "%s/prt/%s/credit.%s", path, G_bankid, pfile[i]);
			sprintf(file[2*i+1], "%s/prt/%s/debit.%s", path, G_bankid, pfile[i]);
		}
	}
	print_file(my_win, 8, 17, 6, file[0], file[2],
		   file[4], file[1], file[3], file[5]);
			
end_shdz:
	delwin(my_win);
	scr_restore(filename);
	unlink(filename);
	return(0);
}

/*
 * 外卡商户对帐
 */
int gen_frgn_shdz()
{
	$S_sys_param sys;
	char cmd[300];
	WINDOW *my_win;
	SETTLE_RESULT	s_r;
	FILE		*fp;

⌨️ 快捷键说明

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