📄 posls.ec
字号:
/***************************************************
* 根据卡号显示交易流水
*
* 周国祥 2001/04/14 针对新库表进行修改
* ????尚有交易类型须根据现在定义确定
* 最后修改: 周国祥 2001/08/24
***************************************************/
#include <stdio.h>
#include <curses.h>
#include "mytools.h"
$include "db_struct.h"
EXEC SQL INCLUDE sqlca;
EXEC SQL WHENEVER SQLERROR CALL error_handler;
EXEC SQL WHENEVER SQLWARNING CALL warning_handler;
EXEC SQL WHENEVER NOT FOUND CALL notfound_handler;
$extern S_tran_ls tran_ls;
/*
* 根据卡号显示交易流水
*/
int disp_posls(card_no)
$parameter char *card_no;
{
WINDOW *disp_win;
$S_tran_ls disp_tran_ls[11];
char date[11], retmsg[9], filename[256];
int i = 0, j;
/*
* 检查卡的合法性。
* chk_card()把bank_type,card_type通过后两个参数传回,
* 此处用不到这两个类型,故用date[]作为参数
*/
if (chk_card(card_no, date, date))
return(-1);
getdatef(date, "");
dateadd(date, -9, date);
$ifdef zgx010824_modi;
EXEC SQL DECLARE disp_cur CURSOR FOR
SELECT * FROM tran_ls
WHERE card_no = $card_no
AND tran_type in (2,3,4,5,8,9,10,11)
/*
AND refunded = 'N'
*/
AND tran_flag = 'O'
ORDER BY local_sys_date DESC, local_sys_time DESC;
$else;
EXEC SQL DECLARE disp_cur CURSOR FOR
SELECT * FROM cur_tran_ls
WHERE card_no = $card_no
AND tran_type in (1,2,3,5,6,7,8,9,10,14)
AND saf_flag = '0'
AND tran_flag not in ('2','3','4') /* 已撤消冲正退货 */
ORDER BY local_sys_date DESC, local_sys_time DESC;
$endif;
EXEC SQL OPEN disp_cur;
if (SQLCODE) {
errcall(ERROR, "Open disp_cur error!");
return(-1);
}
while (1) {
EXEC SQL FETCH disp_cur INTO :disp_tran_ls[i];
if (SQLCODE == 100)
break;
if (SQLCODE) {
EXEC SQL CLOSE disp_cur;
errcall(ERROR, "Fetch disp_cur error!");
return(-1);
}
del_st_space("tran_ls", &(disp_tran_ls[i]));
/*
* 最近10笔或最近10天的流水
*/
if ((i > 9) || strcmp(disp_tran_ls[i].local_sys_date, date) < 0)
break;
i++;
}
EXEC SQL CLOSE disp_cur;
/*
* 不满10笔,从历史流水表中读取最近10天的交易,到满10笔为止
*/
if (i < 10) {
EXEC SQL DECLARE disp_cur_2 CURSOR FOR
SELECT * FROM his_tran_ls
WHERE card_no = $card_no
AND tran_type in (1,2,3,5,6,7,8,9,10,14)
AND saf_flag = '0'
AND tran_flag not in ('2','3','4') /* 已撤消冲正退货 */
ORDER BY local_sys_date DESC, local_sys_time DESC;
EXEC SQL OPEN disp_cur_2;
if (SQLCODE)
errcall(ERROR, "Open disp_cur_2 error!");
else {
while (1) {
EXEC SQL FETCH disp_cur_2 INTO :disp_tran_ls[i];
if (SQLCODE == 100)
break;
if (SQLCODE) {
errcall(ERROR, "Fetch disp_cur_2 error!");
break;
}
del_st_space("tran_ls", &(disp_tran_ls[i]));
if ((i > 9) || strcmp(disp_tran_ls[i].local_sys_date, date) < 0)
break;
i++;
}
EXEC SQL CLOSE disp_cur_2;
}
}
sprintf(filename, "/tmp/.telauth.%d", getpid());
scr_dump(filename);
disp_win = newwin(16, 64, 4, 8);
wrefresh(disp_win);
Box0(disp_win, 16, 64);
mvwprintw(disp_win, 1, 4,
"商户编号 交易日期 交易时间 交易金额 回应信息");
mvwprintw(disp_win, 2, 4,
"-------------------------------------------------------");
if (i == 0) {
mvwprintw(disp_win, 5, 4,
" 该卡最近十天内没有交易! ");
} else
for (j = 0; j < i; j++) {
get_retmsg(disp_tran_ls[j].resp_code, retmsg);
mvwprintw(disp_win, 3 + j, 4,
"%-12.12s%-12.12s%-8.8s%13.2lf %-8.8s",
disp_tran_ls[j].merchant_id,disp_tran_ls[j].local_sys_date,
disp_tran_ls[j].local_sys_time, disp_tran_ls[j].tran_amt,
retmsg );
}
mvwprintw(disp_win, 13, 4,
"-------------------------------------------------------");
mvwprintw(disp_win, 14, 4,
" 按任意键返回 ... ");
wrefresh(disp_win);
getkey(disp_win);
delwin(disp_win);
scr_restore(filename);
unlink(filename);
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -