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

📄 posls.ec

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 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 + -