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

📄 settle.0812.ec

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 EC
📖 第 1 页 / 共 5 页
字号:
	disp_log_day(DISP_LOG, ERROR, "切换本地逻辑日失败, 按任意键继续");
	getch();
	delwin(my_win);
	scr_restore(screen);
	unlink(screen);
	return(0);
    }

    DelSpace(logic_date);
    strcpy(sys.logic_date, logic_date);

#ifdef zgx020418_modi
    set_reload_num();
#else
    /* 须将reload标志的设置处理传到BTS主机上进行 */
    /* act_set_reload_num() in msg_switch/msgsw_lib.c中 */
    act_set_reload_num();
#endif

    disp_log_day(DISP_LOG, DEBUG, "延时六十秒, 等待最后一笔交易完成 ...");
    sleep(60);
    disp_log_day(DISP_LOG, DEBUG, "正在进行清算处理, 请稍候 ...");

     /*
      * 传流水记录到清算流水表中
      * 修改处理cur_tran_ls中非成功交易的时机为转入cur_settle_ls
      * 前处理
      */

    if (pre_posls_to_history()) {
	s_r.result = -2;
	strcpy(s_r.settle_date, tmp_date);
	strcpy(s_r.logic_date, logic_date);
	strcpy(s_r.settle_op, G_oper_no);
	strcpy(s_r.update_date, tmp_date);
	strcpy(s_r.update_time, tmp_time);

	line = PGS_LEE;
	disp_log_day(DISP_LOG, ERROR,
		"清算处理失败, 请立即联系系统管理员! 按任意键继续");

    }
    else {
	if (posls_to_settle()) {
		s_r.result = -3;
		strcpy(s_r.settle_date, tmp_date);
		strcpy(s_r.logic_date, logic_date);
		strcpy(s_r.settle_op, G_oper_no);
		strcpy(s_r.update_date, tmp_date);
		strcpy(s_r.update_time, tmp_time);

		line = PGS_LEE;
		disp_log_day(DISP_LOG, ERROR,
			"清算处理失败, 请立即联系系统管理员! 按任意键继续");
	} else {
	/*
	 * 清算处理成功
	 */
		s_r.result = 0;
		strcpy(s_r.settle_date, tmp_date);
		strcpy(s_r.logic_date, logic_date);
		strcpy(s_r.settle_op, G_oper_no);
		strcpy(s_r.update_date, tmp_date);
		strcpy(s_r.update_time, tmp_time);

		line = PGS_LEE;
		disp_log_day(DISP_LOG, DEBUG,
			"日终清算处理成功, 按任意键继续");
	}
    }

    fwrite(&s_r, sizeof(SETTLE_RESULT), 1, fp);
    fclose(fp);

    /*如果转流水成功,进一步处理*/
    if (s_r.result == 0) {
	/*产生入帐文件*/
	if (bd_edcrpt() != -1)
		crt_edcrpt();
	/*产生日终银行对帐报表*/
	/*产生日终商户对帐报表*/
	/*产生日终银行对帐报表*/
    }

    getch();
    delwin(my_win);
    scr_restore(screen);
    unlink(screen);
    return(0);
}

/*
 * 上传清算文件
 */
int settle_up()
{
    char filename[256];
    $S_sys_param sys;

    $select * into :sys from sys_param;
    if (SQLCODE) {
	daylog(ERROR, "Unable select sys_param table!");
	return(-1);
    }
    del_st_space("sys_param", &sys);
    if ((!strcmp(sys.bank_id, sys.adm_bank_id)) && (!strcmp(sys.host_id, sys.adm_host_id))) return(0);

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

    disp_below("上传清算文件");
    clear_wline(stdscr, LINES-1);
    my_win = newwin(18, 80, 3, 0);
    mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
    wrefresh(my_win);

    line = COL_LEE;

    disp_log_day(DISP_LOG, DEBUG, "正在上传清算文件, 请稍候 ...");
    if (up_settle_file()) {
	line = PGS_LEE;
	disp_log_day(DISP_LOG, ERROR, "上传失败, 按任意键继续");
    } else {
	line = PGS_LEE;
	disp_log_day(DISP_LOG, DEBUG, "已转交后台邮件系统处理, 按任意键继续");
    }
    getch();
    delwin(my_win);
    scr_restore(filename);
    unlink(filename);
    return(0);
}

/*
 * 下传清算文件
 */
int settle_down()
{
    char filename[256];
    $S_sys_param sys;

    $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 adm_bank_id = \'%s\' and adm_host_id = \'%s\'", sys.bank_id,sys.host_id);
    if (!query_count(filename)) return(0);

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

    disp_below("下传清算文件");
    clear_wline(stdscr, LINES-1);
    my_win = newwin(18, 80, 3, 0);
    mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
    wrefresh(my_win);
    line = COL_LEE;

    disp_log_day(DISP_LOG, DEBUG, "正在下传清算文件, 请稍候 ...");
    if (down_settle_file()) {
	line = PGS_LEE;
	disp_log_day(DISP_LOG, ERROR, "下传失败, 按任意键继续");
    } else {
	line = PGS_LEE;
	disp_log_day(DISP_LOG, DEBUG, "已转交后台邮件系统处理, 按任意键继续");
    }
    getch();
    delwin(my_win);
    scr_restore(filename);
    unlink(filename);
    return(0);
}

/*
 * 分行上传文件汇总
 */
int settle_get_up()
{
    char filename[256];
    $S_sys_param sys;

    $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 adm_bank_id = \'%s\' and adm_host_id = \'%s\'", sys.bank_id,sys.host_id);
    if (!query_count(filename)) return(0);

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

    disp_below("分行上传文件汇总");
    clear_wline(stdscr, LINES-1);
    my_win = newwin(18, 80, 3, 0);
    mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
    wrefresh(my_win);

    line = COL_LEE;

    disp_log_day(DISP_LOG, DEBUG, "正在进行分行上传文件汇总, 请稍候 ...");
    line++;
    if (load_settle_file(0)) {
	line = PGS_LEE;
	disp_log_day(DISP_LOG, ERROR, "汇总失败, 按任意键继续");
    } else {
	line = PGS_LEE;
	disp_log_day(DISP_LOG, DEBUG, "汇总成功, 按任意键继续");
    }
    getch();
    delwin(my_win);
    scr_restore(filename);
    unlink(filename);
    return(0);
}

/*
 * 中心下传文件汇总
 */
int settle_get_down()
{
    char filename[256];
    $S_sys_param sys;

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

    if ((!strcmp(sys.bank_id, sys.adm_bank_id)) && (!strcmp(sys.host_id, sys.adm_host_id))) return(0);

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

    disp_below("中心下传文件汇总");
    clear_wline(stdscr, LINES-1);
    my_win = newwin(18, 80, 3, 0);
    mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
    wrefresh(my_win);

    line = COL_LEE;

    disp_log_day(DISP_LOG, DEBUG, "正在进行中心下传文件汇总, 请稍候 ...");
    line++;
    if (load_settle_file(1)) {
	line = PGS_LEE;
	disp_log_day(DISP_LOG, ERROR, "汇总失败, 按任意键继续");
    } else {
	line = PGS_LEE;
	disp_log_day(DISP_LOG, DEBUG, "汇总成功, 按任意键继续");
    }
    getch();
    delwin(my_win);
    scr_restore(filename);
    unlink(filename);
    return(0);
}

/*
 * 清算流水转出
 */
int bd_stl_out()
{
    char filename[256], path[256];

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

    disp_below("清算流水转出");
    clear_wline(stdscr, LINES-1);
    my_win = newwin(18, 80, 3, 0);
    mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
    wrefresh(my_win);

    line = COL_LEE;

    disp_log_day(DISP_LOG, DEBUG, "正在进行清算流水转出, 请稍候 ...");
    line++;
    if (down_bd_stl_file()) {
	line = PGS_LEE;
	disp_log_day(DISP_LOG, ERROR, "清算流水转出失败, 按任意键继续");
    } else {
	sprintf(path, "%s/box/mx/local", getenv("WORKDIR"));
	line = PGS_LEE;
	disp_log_day(DISP_LOG, DEBUG, "清算流水成功转出至路径 %s 下, 按任意键继续", path);
    }
    getch();
    delwin(my_win);
    scr_restore(filename);
    unlink(filename);
    return(0);
}

static int disp_log_day(flag, logfile, logline, type, format, va_alist)
int flag;
char *logfile;
int logline;
int type;
char *format;
va_dcl
{
	va_list args;
	char str[128];

	va_start(args);
	if (flag != DISP_ONLY)
		daylog(logfile, logline, type, format, args);
	if (flag != LOG_ONLY) {
		vsprintf(str, format, args);
		if (line > PGS_LEE) {
			clear_screen(my_win);
			line = COL_LEE;
		}
		h_winprompt(my_win, line++, ROW_LEE, str, 0, 0);
	}
	va_end(args);
	return(0);
}

/*
 * 锁定EDC批次,以使该批交易暂不参加清算
 */
int lock_edc_batch()
{
	WINDOW	*my_win;
	char	rpt[128], filename[128], logic_date[11];
	char	batch_no[10];
	$char	term_id[10];
	$int	b_no;
	int	ret;

	sprintf(filename, "/tmp/.lock_edc_batch.%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);

	sprintf(term_id, "%8.8s", " ");

	mvwprintw(my_win, 2, 4, "请输入 EDC 号: [%s]", term_id);
	if (in_item(my_win, "", 2, 20, term_id, 8, NULL, NULL, 0, 0) != ENTER)
		goto end_lock_edc;

	if (term_id[0] == '\0' || term_id[0] == ' ')
		goto end_lock_edc;

	sprintf(batch_no, "%6.6s", " ");	
	mvwprintw(my_win, 3, 4, "请输入批次号: [%s]", batch_no);
	if (in_item(my_win, "", 3, 19, batch_no, 6, NULL, NULL, 0, 0) != ENTER)
		goto end_lock_edc;

	if (batch_no[0] == '\0' || batch_no[0] == ' ')
		goto end_lock_edc;

	mvwprintw(my_win, 4, 4, "正在锁定批次, 请稍候 ...");
	wrefresh(my_win);

	b_no = atoi(batch_no);

	/* 暂置EDC错帐标志为'1'(EDC多此笔交易) */
	$update cur_settle_ls set edc_err_flag = '1'
	where terminal_id = $term_id and batch_no = $b_no and edc_err_flag='0';
	
	if (SQLCODE) {
		mvwprintw(my_win, 5, 4, "锁定批次失败!");
		wrefresh(my_win);
		daylog(ERROR, "Unable lock edc batch![%s][%d]", term_id, b_no);
		getch();
		goto end_lock_edc;
	}

	mvwprintw(my_win, 5, 4, "锁定批次 %d / %d 笔交易成功!",
		  b_no, sqlca.sqlerrd[2]);
	wrefresh(my_win);
	getch();

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

/*
 * 解锁EDC批次
 */
int unlock_edc_batch()
{
	WINDOW	*my_win;
	char	filename[128];
	char	batch_no[10];
	$char	term_id[10];
	$int	b_no;
	int	ret;

	sprintf(filename, "/tmp/.unlock_edc_batch.%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);

	sprintf(term_id, "%8.8s", " ");

	mvwprintw(my_win, 2, 4, "请输入 EDC 号: [%s]", term_id);
	if (in_item(my_win, "", 2, 20, term_id, 8, NULL, NULL, 0, 0) != ENTER)
		goto end_unlock_edc;

	if (term_id[0] == '\0' || term_id[0] == ' ')
		goto end_unlock_edc;

	sprintf(batch_no, "%6.6s", " ");
	mvwprintw(my_win, 3, 4, "请输入批次号: [%s]", batch_no);
	if (in_item(my_win, "", 3, 19, batch_no, 6, NULL, NULL, 0, 0) != ENTER)
		goto end_unlock_edc;

	mvwprintw(my_win, 4, 4, "正在解锁批次, 请稍候 ...");
	wrefresh(my_win);

	if (batch_no[0] == '\0' || batch_no[0] == ' ')
		goto end_unlock_edc;

	b_no = atoi(batch_no);

	$update cur_settle_ls set edc_err_flag = '0'
	where terminal_id = $term_id and batch_no = $b_no  and edc_err_flag='1';

	if (SQLCODE) {
		mvwprintw(my_win, 5, 4, "解锁批次失败!");
		wrefresh(my_win);
		daylog(ERROR, "Unable lock edc batch![%s][%d]", term_id, b_no);
		getch();
		goto end_unlock_edc;
	}

	mvwprintw(my_win, 5, 4, "解锁批次 %d / %d 笔交易成功!",
		  b_no, sqlca.sqlerrd[2]);
	wrefresh(my_win);
	getch();

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

/*******************************************************************
功能:
  根据日终结算结果文件判断,清算报表使用当前清算流水表(cur_settle_ls)
  还是使用历史清算流水表(his_settle_ls)
输入:
	char *start_date	起始日期
	char *end_date		结束日期
输出:
	0	使用cur_settle_ls
	1	使用his_settle_ls
	-1	操作失败
*********************************************************************/
i

⌨️ 快捷键说明

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