📄 settle.ec.ah
字号:
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 + -