jyds_rpt.ec
来自「在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便」· EC 代码 · 共 207 行
EC
207 行
/****************************************************
* 地市行交易明细报表 jyds_rpt()
* called by gen_jydz() -- 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;
typedef struct {
double credit_amt;
double debit_amt;
int credit_cnt;
int debit_cnt;
} S_jyds;
int jyds_rpt(file, logic_date)
char *file;
$parameter char *logic_date;
{
FILE *fp;
S_jyds total;
char bankid[12];
$S_tran_ls ls;
if (!(fp = fopen(file, "w"))) {
daylog(ERROR, "Open %s error!", file);
return(-1); /* File operate error */
}
if (FileHead_jyds(fp, logic_date, bankid)) {
fclose(fp);
return(-2); /* Database operate error */
}
memset(&total, 0, sizeof(S_jyds));
$ifdef wyz020508_mod;
$declare jy_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 jy_cur cursor for
select * from cur_settle_ls
where acq_bank_id != iss_bank_id
and manual_flag = 'N'
and resp_code like '00%'
and snd_settle_date = :logic_date
and card_type = '02'
order by card_no;
$endif;
$open jy_cur;
if (SQLCODE) {
daylog(ERROR, "Open jy_cur error![%d]", SQLCODE);
fclose(fp);
return(-2);
}
FetBufSize = 32000;
while (1) {
$fetch jy_cur into :ls;
if (SQLCODE == 100) break;
if (SQLCODE) {
daylog(ERROR, "Fetch jy_cur error![%d]", SQLCODE);
$close jy_cur;
fclose(fp);
return(-2);
}
del_st_space("tran_ls", &ls);
FileDetail_jyds(fp, ls, &total, bankid);
}
$close jy_cur;
FileTail_jyds(fp, &total);
fclose(fp);
return(0);
}
int FileHead_jyds(FILE *fp, char *logic_date, char *bankid)
{
char date[11], time[9];
$S_sys_param sys;
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, "%42s中国银行BTS系统借记卡\n", " ");
fprintf(fp, "%42s地市行交易明细报表\n", " ");
str2date(logic_date1, logic_date, "/");
fprintf(fp, "BTS-900%77s清算逻辑日: %s\n", " ", logic_date1);
#ifdef wyz020427_mod
get_bank_name(sys.bank_id, sys.host_id, bank_name);
fprintf(fp, "%-5.5s%-82s%s %s\n", sys.bank_id, bank_name, date, time);
#else
get_bank_name(G_bankid, "00", bank_name);
fprintf(fp, "%-5.5s%-82s%s %s\n", G_bankid, bank_name, date, time);
#endif
fprintf(fp, "----------------------------------------------------------------------------------------------------------\n");
fprintf(fp, "%-21s %-8s %14s %6s %-15s %-8s %-6s %-6s %-10s %-8s\n", "卡 号", "交易类型", "交易金额", "授权码", "商户号", "EDC 号", "收单行", "发卡行", "交易日期", "交易时间");
fprintf(fp, "----------------------------------------------------------------------------------------------------------\n");
#ifdef wyz020427_mod
strcpy(bankid, sys.bank_id);
#else
strcpy(bankid, G_bankid);
#endif
return(0);
}
int FileDetail_jyds(FILE *fp, S_tran_ls ls, S_jyds *ptotal, char *bankid)
{
char buf[16];
int flag;
char tmp_date[11], tmp_time[9];
$char sign_bankid[12];
$char merch_id[16];
$ifdef wyz020427_mod;
$else;
strcpy(merch_id, ls.merchant_id);
$select sign_bank_id
into :sign_bankid from merchant_base
where merchant_id = :merch_id;
if (SQLCODE) {
daylog(ERROR, "Get %s error!", merch_id);
if (strcmp(G_cen_bankid, G_bankid))
return 0;
} else {
DelSpace(sign_bankid);
if (strcmp(G_cen_bankid, G_bankid)) {
if (strcmp(G_bankid, sign_bankid))
return 0;
}
}
$endif;
str2date(tmp_date, ls.local_sys_date, "/");
str2time(tmp_time, ls.local_sys_time, ":");
type2buf(ls.tran_type, buf);
fprintf(fp, "%-6.6s-%-4.4s-%-9.9s %-8s %14.2lf %6s %-15.15s %-8.8s %-6.6s %-6.6s %-10s %-8s\n", ls.card_no, ls.card_no + 6, ls.card_no + 10, buf, ls.tran_amt, ls.auth_no, ls.merchant_id, ls.terminal_id, ls.acq_bank_id, ls.iss_bank_id, tmp_date, tmp_time);
flag = strcmp(ls.acq_bank_id, bankid);
switch (ls.tran_type) {
case PURCHASE:
case WITHDRAWAL:
case CONFIRM:
case TRANS_OUT:
if (flag) {
ptotal->debit_cnt++;
ptotal->debit_amt += ls.tran_amt;
} else {
ptotal->credit_cnt++;
ptotal->credit_amt += ls.tran_amt;
}
break;
case REFUND:
case DEPOSIT:
if (flag) {
ptotal->credit_cnt++;
ptotal->credit_amt += ls.tran_amt;
} else {
ptotal->debit_cnt++;
ptotal->debit_amt += ls.tran_amt;
}
break;
}
return(0);
}
int FileTail_jyds(FILE *fp, S_jyds *ptotal)
{
fprintf(fp, "----------------------------------------------------------------------------------------------------------\n");
if (ptotal->credit_cnt + ptotal->debit_cnt)
fprintf(fp, "%s %s %14.2lf %s %6d %s %14.2lf %s %6d\n\n", "总 计", "贷记金额", ptotal->credit_amt, "贷记笔数", ptotal->credit_cnt, "借记金额", ptotal->debit_amt, "借记笔数", ptotal->debit_cnt);
return(0);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?