mx_rpt.ec

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

EC
159
字号
/****************************************************
 *	回扣利益明细报表 mx_rpt()
 *	called by gen_mr()--in gen_rpt.ec
 *
 * 最后修改:	周国祥 2001/08/24
 ****************************************************/
#include <stdio.h>
#include <math.h>
#include "all.h"
#include "macro_def.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;

extern void get_tip(S_tran_ls *, double *, double *);

extern int get_son();
extern int check_son();

extern char G_cen_bankid[12];
extern char G_bankid[12];

int mx_rpt(filename, logic_date, bankid, hostid)
char *filename;
$parameter char *logic_date;
char *bankid, *hostid;
{
	FILE *fp;
	$S_tran_ls ls;
	double sd, fk;
	char son_bankid[48][12];
	char son_hostid[48][3];

	if (get_son(bankid, hostid, son_bankid, son_hostid) < 0)
		return(-2);

	if (!(fp = fopen(filename, "w"))) {
		daylog(ERROR, "Open %s for write error!", filename);
		return(-1);	/* File operate error */
	}
	if (FileHead_MR(fp, logic_date)) {
		fclose(fp);
		return(-2);	/* Database operate error */
	}

$ifdef wyz020514_mod;
	$declare mx_cur cursor for
	select * from cur_tran_ls
	where acq_bank_id != iss_bank_id
	and tran_type in (1,2,3,5,6,7,8,9,10,14)
	and saf_flag = '0'
	and tran_flag = '0'
	and manual_flag = 'N'
	and resp_code like '00%'
	and snd_settle_date = :logic_date
	and card_type = '02'
	order by card_no;
$else;
	$declare mx_cur cursor for
	select * from cur_settle_ls
	where acq_bank_id != iss_bank_id
	and snd_settle_date = :logic_date
	and card_type = '02'
	order by card_no;

	if (SQLCODE) {
		daylog(ERROR, "Declare failed![%d]", SQLCODE);
		fclose(fp);
		return(-2);
	}
$endif;

	$open mx_cur;
	if (SQLCODE) {
		daylog(ERROR, "Open mx_cur error![%d]", SQLCODE);
		fclose(fp);
		return(-2);
	}

	while (1) {
		$fetch mx_cur into :ls;
		if (SQLCODE == 100) break;
		if (SQLCODE) {
			daylog(ERROR, "Fetch mx_cur error![%d]", SQLCODE);
			$close mx_cur;
			fclose(fp);
			return(-2);	/* Database operate error */
		}
		del_st_space("tran_ls", &ls);
		if (!check_son(ls.acq_bank_id, ls.acq_host_id, son_bankid, son_hostid)) {
			strcpy(ls.acq_bank_id, BOC_CENTER /*"0004"*/);
			strcpy(ls.acq_host_id, "00");
		}
		if (!check_son(ls.iss_bank_id, "00", son_bankid, son_hostid)) {
			strcpy(ls.iss_bank_id, BOC_CENTER /*"0004"*/);
		}
		get_tip(&ls, &sd, &fk);
		FileDetail_MR(fp, &ls, sd, -fk);
	}
	$close mx_cur;

	FileTail_MR(fp);
	fclose(fp);
	return(0);
}

int FileHead_MR(FILE *fp, char *logic_date)
{
	$S_sys_param sys;
	char date[11], time[9];
	char	bank_name[128];
	char	logic_date1[11];	/* YYYY/MM/DD */

	$select * into :sys from sys_param;
	if (SQLCODE) {
		daylog(ERROR, "Select sys_param error!");
		return(-1);
	}
	del_st_space("sys_param", &sys);
	getdatef(date, "/");
	gettimef(time, ":");
	fprintf(fp, "%46s中国银行BTS系统\n", " ");
	fprintf(fp, "%46s回扣利益明细报表\n", " ");
	str2date(logic_date1, logic_date, "/");
	fprintf(fp, "BTS-504%80s清算日期: %s\n", " ", logic_date1);

	get_bank_name(G_bankid, "00", bank_name);
	fprintf(fp, "%-5.5s%-85s%s %s\n", G_bankid, bank_name, date, time);
	fprintf(fp, "-------------------------------------------------------------------------------------------------------------\n");
	fprintf(fp, "%-21s %6s %-8s %14s %-10s %-8s %6s %6s %6s %6s %8s\n", "卡  号", "中  心", "交易类型", "交易金额", "交易日期", "交易时间", "收单行", "应  付", "发卡行", "应  收", "中 心 应");
	fprintf(fp, "%-21s %6s %-8s %14s %-10s %-8s %6s %6s %6s %6s %8s\n", "      ", "流水号", "        ", "        ", "        ", "        ", "      ", "手续费", "      ", "手续费", "收手续费");
	fprintf(fp, "-------------------------------------------------------------------------------------------------------------\n");
	return(0);
}

int FileDetail_MR(FILE *fp, S_tran_ls *pls, double sd, double fk)
{
	char buf[10];
	char	tmp_date[11];	/* YYYY/MM/DD */
	char	tmp_time[9];	/* hh:mm:ss */

	str2date(tmp_date, pls->local_sys_date, "/");
	str2time(tmp_time, pls->local_sys_time, ":");

	type2buf(pls->tran_type, buf);
	fprintf(fp, "%-6.6s-%-4.4s-%-9.9s %6ld %-8s %14.2lf %-10s %-8s %-6.6s %6.2lf %-6.6s %6.2lf %8.2lf\n", pls->card_no, pls->card_no + 6, pls->card_no + 10, pls->host_ls_no, buf, pls->tran_amt, tmp_date, tmp_time, pls->acq_bank_id, sd, pls->iss_bank_id, fk, sd - fk);
	return(0);
}

int FileTail_MR(FILE *fp)
{
	fprintf(fp, "-------------------------------------------------------------------------------------------------------------\n");
	return(0);
}

⌨️ 快捷键说明

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