end_day_rpt.ec
来自「在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便」· EC 代码 · 共 2,216 行 · 第 1/4 页
EC
2,216 行
total_dzje += count_dzje;
count_bs = 0;
count_je = 0;
count_dzje = 0;
}
#ifdef wyz_mod_011230
count_bs ++;
count_je += ls.tran_amt;
#else
count_bs ++;
switch (ls.tran_type) {
case REFUND:
count_je -= ls.tran_amt;
break;
default:
count_je += ls.tran_amt;
break;
}
#endif
DelSpace(ls.card_type);
cardtype = atoi(ls.card_type);
switch (cardtype) {
case 51:
count_dzje += (ls.tran_amt * visa);
break;
case 52:
count_dzje += (ls.tran_amt * master);
break;
case 53:
count_dzje += (ls.tran_amt * ae);
break;
case 54:
count_dzje += (ls.tran_amt * din);
break;
case 55:
count_dzje += (ls.tran_amt * jcb);
break;
}
if (fp) FileDetail_bank_d_rpt(fp, ls);
}
total_bs += count_bs;
total_je += count_je;
total_dzje += count_dzje;
total_dzje = (total_je - total_dzje);
FileSubHead_bank_d_rpt(fp, mer_id, count_bs, count_je);
FileTail_bank_d_rpt(fp);
FileTail_bank_d_rpt_fg_total(fp, total_bs, total_je, total_dzje );
$close bank_d_rpt_fg;
fclose( fp );
return(0);
}
int gen_bank_d_rpt_cre ( char *filename, void * mer_list, int mer_cnt )
{
$char sql[2048];
$char tmp[30];
$int cnt;
$S_merchant_card s_c;
$char s_s_date[11],e_s_date[11];
$char sign_bankid[12];
char mer_id[16], ter_id[9];
double count_je, total_je;
int i, count_bs, total_bs;
long batch_no;
FILE *fp;
int ret=0;
if ( ! ( fp = fopen( filename, "w") ) ) {
daylog ( ERROR, "Open %s file error !", filename );
return( -1 );
}
$select * into $sy from sys_param;
if (SQLCODE) {
daylog(ERROR, "Error select sys_param![%d]", SQLCODE);
fclose(fp);
return(-1);
}
del_st_space("sys_param", &sy);
strcpy( s_s_date, s_date );
strcpy( e_s_date, e_date );
$ifndef wyz_mod_020408;
$select count(*) into $cnt from cur_settle_ls
where snd_settle_date >= $s_s_date
and snd_settle_date <= $e_s_date;
if ( SQLCODE < 0 ) {
daylog( ERROR, "Fetch cur_settle_ls error!" );
fclose( fp );
return( -1 );
}
if ( SQLCODE == 100 )
strcpy( tmp, "his_settle_ls" );
else {
if ( cnt == 0 )
strcpy( tmp, "his_settle_ls" );
else
strcpy( tmp, "cur_settle_ls" );
}
$else;
if ((ret = check_which_table(s_s_date, e_s_date)) == 0) {
strcpy(tmp, "cur_settle_ls");
}
else if (ret == 1) {
strcpy(tmp, "his_settle_ls");
}
else {
daylog( ERROR, "判断使用当前清算流水表或历史清算流水表失败!" );
fclose( fp );
return( -1 );
}
$endif;
FileHead_bank_d_rpt( fp, sy, "信用卡" );
#ifdef wyz_mod_020403
sprintf ( sql , "select * from %s \
where snd_settle_date <= '%s' \
and snd_settle_date >= '%s' \
and acq_bank_id = '%s' \
and edc_err_flag = '0' \
and tran_flag = '0' \
and saf_flag = '0' \
and tran_type not in ( %d, %d ) \
and card_type in ( '%s' ) ",
tmp, e_date, s_date,
sy.bank_id, PRE_AUTH, POS_VOID, CREDIT_CARD );
if ( mer_cnt > 0 ) {
strcpy ( sql+strlen(sql) , "and merchant_id in ( " );
for ( i=0 ; i < mer_cnt ; i++ ) {
sprintf ( tmp , "%s," , (char *)((long )mer_list+11*i) );
strcpy ( sql+strlen(sql) , tmp );
}
strcpy ( sql+strlen(sql)-1 , ") " );
}
strcpy( sql+strlen(sql), "order by merchant_id, terminal_id, batch_no, card_no, tran_amt ");
#else
sprintf ( sql , "select * from %s \
where snd_settle_date <= '%s' \
and snd_settle_date >= '%s' \
and card_type = ('%s')",
tmp, e_date, s_date, CREDIT_CARD);
if ( mer_cnt > 0 ) {
strcpy(sql+strlen(sql), "and merchant_id = ");
strcpy(sql+strlen(sql), mer_list);
}
strcpy( sql+strlen(sql), "order by merchant_id, terminal_id, batch_no, invoice_no");
#endif
$prepare cre_sql from :sql;
$declare bank_d_rpt_cre cursor for cre_sql;
if (SQLCODE) {
daylog(ERROR, "Unable declare bank_d_rpt_cre cursor![%d]", SQLCODE);
fclose(fp);
return(-1);
}
$open bank_d_rpt_cre;
if (SQLCODE) {
daylog(ERROR, "Unable open bank_d_rpt_cre![%d]", SQLCODE);
fclose(fp);
return(-1);
}
count_bs = total_bs = 0;
count_je = total_je = 0;
mer_id[0] = ter_id[0] = 0;
batch_no = -1;
FetBufSize = 32000;
while (1) {
$fetch bank_d_rpt_cre into $ls;
if (SQLCODE == 100) break;
if (SQLCODE < 0) {
daylog(ERROR, "Error fetch bank_d_rpt_cre![%d]", SQLCODE);
$close bank_d_rpt_cre;
fclose(fp);
return(-1);
}
del_st_space("tran_ls", &ls);
if (strcmp(ls.merchant_id, mer_id) ) {
$select merchant_cname, sign_bank_id
into :tmp, :sign_bankid from merchant_base
where merchant_id = :ls.merchant_id;
if (SQLCODE) {
daylog(WARN, "Fetch name of %s error!",
ls.merchant_id);
#ifdef wyz020427_mod
#else
if (strcmp(G_cen_bankid, G_bankid))
continue;
else
#endif
strcpy(tmp, "Unknown");
}
DelSpace(tmp);
#ifdef wyz020427_mod
#else
DelSpace(sign_bankid);
if (strcmp(G_cen_bankid, G_bankid)) {
if (strcmp(G_bankid, sign_bankid))
continue;
}
#endif
if ( mer_id[0] )
FileSubHead_bank_d_rpt(fp, mer_id, count_bs, count_je);
strcpy(mer_id, ls.merchant_id);
strcpy(ter_id, ls.terminal_id);
total_bs += count_bs;
total_je += count_je;
count_bs = 0;
count_je = 0;
}
#ifdef wyz_mod_011230
count_bs ++;
count_je += ls.tran_amt;
#else
count_bs ++;
switch (ls.tran_type) {
case REFUND:
count_je -= ls.tran_amt;
break;
default:
count_je += ls.tran_amt;
break;
}
#endif
if (fp) FileDetail_bank_d_rpt(fp, ls);
}
total_bs += count_bs;
total_je += count_je;
FileSubHead_bank_d_rpt(fp, mer_id, count_bs, count_je);
FileTail_bank_d_rpt(fp);
FileTail_bank_d_rpt_total(fp, total_bs, total_je );
$close bank_d_rpt_cre;
fclose( fp );
return(0);
}
int gen_bank_d_rpt_deb ( char *filename, void * mer_list, int mer_cnt )
{
$char sql[2048];
$char tmp[30];
$int cnt;
$S_merchant_card s_c;
$char s_s_date[11],e_s_date[11];
$char sign_bankid[12];
char mer_id[16], ter_id[9];
double count_je, total_je;
int i, count_bs, total_bs;
long batch_no;
FILE *fp;
int ret=0;
if ( ! ( fp = fopen( filename, "w") ) ) {
daylog ( ERROR, "Open %s file error !", filename );
return( -1 );
}
$select * into $sy from sys_param;
if (SQLCODE) {
daylog(ERROR, "Error select sys_param![%d]", SQLCODE);
fclose(fp);
return(-1);
}
del_st_space("sys_param", &sy);
strcpy( s_s_date, s_date );
strcpy( e_s_date, e_date );
$ifdef wyz_mod_020408;
$select count(*) into $cnt from cur_settle_ls where
snd_settle_date >= $s_s_date and snd_settle_date <= $e_s_date;
if ( SQLCODE < 0 ) {
daylog( ERROR, "Fetch cur_settle_ls error!" );
fclose( fp );
return( -1 );
}
if ( SQLCODE == 100 )
strcpy( tmp, "his_settle_ls" );
else {
if ( cnt == 0 )
strcpy( tmp, "his_settle_ls" );
else
strcpy( tmp, "cur_settle_ls" );
}
$else;
if ((ret = check_which_table(s_s_date, e_s_date)) == 0) {
strcpy(tmp, "cur_settle_ls");
}
else if (ret == 1) {
strcpy(tmp, "his_settle_ls");
}
else {
daylog( ERROR, "判断使用当前清算流水表或历史清算流水表失败!" );
fclose( fp );
return( -1 );
}
$endif;
FileHead_bank_d_rpt( fp, sy, "借记卡" );
#ifdef wyz_mod_020403
sprintf ( sql , "select * from %s \
where snd_settle_date <= '%s' \
and snd_settle_date >= '%s' \
and acq_bank_id = '%s' \
and edc_err_flag = '0' \
and tran_flag = '0' \
and saf_flag = '0' \
and tran_type not in ( %d, %d ) \
and card_type in ( '%s' ) ",
tmp, e_date, s_date,
sy.bank_id, PRE_AUTH, POS_VOID, DEBIT_CARD );
if ( mer_cnt > 0 ) {
strcpy ( sql+strlen(sql) , "and merchant_id in ( " );
for ( i=0 ; i < mer_cnt ; i++ ) {
sprintf ( tmp , "%s," , (char *)((long )mer_list+11*i) );
strcpy ( sql+strlen(sql) , tmp );
}
strcpy ( sql+strlen(sql)-1 , ") " );
}
strcpy( sql+strlen(sql), "order by merchant_id, terminal_id, batch_no, card_no, tran_amt ");
#else
sprintf ( sql , "select * from %s \
where snd_settle_date <= '%s' \
and snd_settle_date >= '%s' \
and card_type = ('%s')",
tmp, e_date, s_date, DEBIT_CARD);
if ( mer_cnt > 0 ) {
strcpy(sql+strlen(sql), "and merchant_id = ");
strcpy(sql+strlen(sql), mer_list);
}
strcpy( sql+strlen(sql), "order by merchant_id, terminal_id, batch_no, invoice_no");
#endif
$prepare deb_sql from :sql;
$declare bank_d_rpt_deb cursor for deb_sql;
if (SQLCODE) {
daylog(ERROR, "Unable declare bank_d_rpt_deb cursor![%d]", SQLCODE);
fclose(fp);
return(-1);
}
$open bank_d_rpt_deb;
if (SQLCODE) {
daylog(ERROR, "Unable open bank_d_rpt_deb![%d]", SQLCODE);
fclose(fp);
return(-1);
}
count_bs = total_bs = 0;
count_je = total_je = 0;
mer_id[0] = ter_id[0] = 0;
batch_no = -1;
FetBufSize = 32000;
while (1) {
$fetch bank_d_rpt_deb into $ls;
if (SQLCODE == 100) break;
if (SQLCODE < 0) {
daylog(ERROR, "Error fetch bank_d_rpt_deb![%d]", SQLCODE);
$close bank_d_rpt_deb;
fclose(fp);
return(-1);
}
del_st_space("tran_ls", &ls);
if (strcmp(ls.merchant_id, mer_id) ) {
$select merchant_cname, sign_bank_id
into :tmp, :sign_bankid from merchant_base
where merchant_id = :ls.merchant_id;
if (SQLCODE) {
daylog(WARN, "Fetch name of %s error!",
ls.merchant_id);
#ifdef wyz020427_mod
#else
if (strcmp(G_cen_bankid, G_bankid))
continue;
else
#endif
strcpy(tmp, "Unknown");
}
DelSpace(tmp);
#ifdef wyz020427_mod
#else
DelSpace(sign_bankid);
if (strcmp(G_cen_bankid, G_bankid)) {
if (strcmp(G_bankid, sign_bankid))
continue;
}
#endif
if ( mer_id[0] )
FileSubHead_bank_d_rpt(fp, mer_id, count_bs, count_je);
strcpy(mer_id, ls.merchant_id);
strcpy(ter_id, ls.terminal_id);
total_bs += count_bs;
total_je += count_je;
count_bs = 0;
count_je = 0;
}
count_bs ++;
switch (ls.tran_type) {
case REFUND:
count_je -= ls.tran_amt;
break;
default:
count_je += ls.tran_amt;
break;
}
if (fp)
FileDetail_bank_d_rpt(fp, ls);
}
total_bs += count_bs;
total_je += count_je;
FileSubHead_bank_d_rpt(fp, mer_id, count_bs, count_je);
FileTail_bank_d_rpt(fp);
FileTail_bank_d_rpt_total(fp, total_bs, total_je );
$close bank_d_rpt_deb;
fclose( fp );
return(0);
}
/*
* 交易流水表
*/
all_water_rpt()
{
$S_sys_param sys;
WINDOW *my_win;
char filename[128], path[80];
char ter_id[9];
char rpt[120], str_system[210];
int ret, i , intflag ;
sprintf(filename, "/tmp/.water_rpt.%d", getpid());
scr_dump(filename);
disp_below("交易流水表");
clear_wline(stdscr, LINES-1);
h_prompt(LINES-1, 1, " < ESC 退出 > ", 0, 0);
h_prompt(LINES-1, 1, "交易流水表", 0, 0);
my_win = newwin(19, 80, 3, 0);
mvwprintw(my_win, 0, 0, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
wrefresh(my_win);
set_prompt(PROMPT_OFF);
for(intflag = 0; intflag >= 0 && intflag < 3;)
{
switch (intflag)
{
case 0:
getdatef(s_date, "");
mvwprintw(my_win, 2, 4, "请输入起始日期: [%s]", s_date);
if (in_item(my_win, "", 2, 21, s_date, 8, NULL, NULL, 0, 0) !=
ENTER)
{
delwin(my_win);
scr_restore(filename);
return(0);
}
str2date(s_date1, s_date, "/");
intflag ++;
break;
case 1:
getdatef(e_date, "");
mvwprintw(my_win, 3, 4, "请输入结束日期: [%s]", e_date);
if (in_item(my_win, "", 3, 21, e_date, 8, NULL, NULL, 0, 0) !=
ENTER)
{
intflag --;
break;
}
str2date(e_date1, e_date, "/");
daylog(DEBUG, "正在生成water_rpt报表, 日期: %s--%s, 请稍候 ...", s_date, e_date );
mvwprintw(my_win, 6, 4, "正在生成报表, 请稍候 ...");
wrefresh(my_win);
intflag ++ ;
break;
case 2:
strcpy(path, getenv("WORKDIR"));
sprintf(rpt, "%s/prt/water_rpt.%s", path,e_date+8);
sprintf(str_system,"%s/bin/prt/water_rpt %s %s %s",
path, rpt, s_date, e_date);
ret = system( str_system );
if (ret < 0)
{
daylog(DEBUG, "生成交易流水表出错!, 日期: %s--%s", s_date1, e_date1 );
h_winprompt(my_win, 17, 4, "生成交易流水表出错!", 1, 0);
}
else
print_file( my_win, 9, 17, 1, rpt );
wrefresh(my_win);
intflag ++;
break;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?