end_day_rpt.ec
来自「在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便」· EC 代码 · 共 2,216 行 · 第 1/4 页
EC
2,216 行
delwin(my_win);
scr_restore(filename);
return(0);
}
/*
* EDC 批次流水表
*/
int edc_batch_wat_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/.edc_batch_wat_rpt.%d", getpid());
scr_dump(filename);
disp_below("EDC 批次流水表");
clear_wline(stdscr, LINES-1);
h_prompt(LINES-1, 1, " < ESC 退出 > ", 0, 0);
h_prompt(LINES-1, 1, "EDC 批次流水表", 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, "正在生成edc_bat_wat_rpt报表, 日期: %s--%s, 请稍候 ...", s_date1, e_date1 );
mvwprintw(my_win, 6, 4, "正在生成报表, 请稍候 ...");
wrefresh(my_win);
intflag ++ ;
break;
case 2:
strcpy(path, getenv("WORKDIR"));
sprintf(rpt, "%s/prt/edc_bat_wat_rpt.%s", path,e_date+8);
sprintf(str_system,"%s/bin/prt/edc_bat_wat_rpt %s %s %s",
path, rpt, s_date, e_date);
ret = system( str_system );
if (ret < 0)
{
daylog(DEBUG, "生成EDC 批次流水表出错!, 日期: %s--%s", s_date1, e_date1 );
h_winprompt(my_win, 17, 4, "生成EDC 批次流水表出错!", 1, 0);
}
else
print_file( my_win, 9, 17, 1, rpt );
wrefresh(my_win);
intflag ++;
break;
}
}
delwin(my_win);
scr_restore(filename);
return(0);
}
int ah_gen_shop_r_rpt(filename, mer_list, mer_cnt, card_enable)
char *filename;
void * mer_list;
int mer_cnt;
long card_enable;
{
Edc_shop_dz cards[SETTLE_CARDS_NUM+1] = {
{"威士卡", }, {"万事达卡",},
{"运通卡", }, {"大莱卡", },
{"JCB 卡", },
{"长城信用卡",}, {"长城借计卡",},
{"银联信用卡",}, {"他行信用卡",}, {"他行借计卡",},
{"总 计",} };
$char sql[1024];
$char tmp[128];
$int cnt;
long enable;
$S_merchant_card s_c;
$char s_s_date[11],e_s_date[11];
$char card_type[50];
char foreign[40],credit[5],debit[5];
char mer_id[16], ter_id[9];
int i;
long batch_no;
FILE *fp;
if ( ! ( fp = fopen( filename, "w") ) ) {
daylog ( ERROR, "Open %s file error !", filename );
return( -1 );
}
enable = card_enable;
memset( card_type, 0, sizeof( card_type ) );
memset( foreign, 0, sizeof( foreign ) );
memset( credit, 0, sizeof( credit ) );
memset( debit, 0, sizeof( debit ) );
if ( enable & FOREIGN ){
sprintf( foreign, "%s", "\'51\',\'52\',\'53\',\'54\',\'55\'" );
strcat( card_type, foreign );
}
if ( enable & CREDIT ){
if( card_type[0] == 0 )
strcpy( credit, "\'01\'" );
else
strcpy( credit, ",\'01\'");
strcat( card_type, credit );
}
if ( enable & DEBIT ){
if( card_type[0] == 0 )
strcpy( debit, "\'02\'");
else
strcpy( debit, ",\'02\'");
strcat( card_type, debit );
}
$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 );
/*================== WuBin 2001-9-18 14:58 ======Start==============*/
$drop table _TEMPTABLE_;
/* select debit ls */
$select * from cur_tran_ls
where logic_date >= :s_s_date
and logic_date <= :e_s_date
and acq_bank_id = :sy.bank_id
and edc_err_flag = '0'
and saf_flag = '0'
and tran_flag = '0'
and trans_type not in ( 4, 12 )
and resp_code = '00'
and card_type = '01'
into temp _TEMPTABLE_;
if ( SQLCODE < 0 ) {
daylog( ERROR, "create temp table error![%d]", SQLCODE );
fclose( fp );
return( -1 );
}
$insert into _TEMPTABLE_ select * from his_tran_ls
where logic_date >= :s_s_date
and logic_date <= :e_s_date
and acq_bank_id = :sy.bank_id
and edc_err_flag = '0'
and saf_flag = '0'
and tran_flag = '0'
and trans_type not in ( 4, 12 )
and resp_code = '00'
and card_type = '02';
if ( SQLCODE < 0 ) {
daylog( ERROR, "insert temp table err![%d]", SQLCODE );
fclose( fp );
return( -1 );
}
$insert into _TEMPTABLE_ select * from his_settle_ls
where snd_settle_date >= :s_s_date
and snd_settle_date <= :e_s_date
and acq_bank_id = :sy.bank_id
and edc_err_flag ='0'
and saf_flag = '0'
and tran_flag = '0'
and trans_type not in ( 4, 12 )
and card_type <> '02'
and resp_code = '00' ;
if ( SQLCODE < 0 ) {
daylog( ERROR, "insert from his_settle_ls err![%d]",SQLCODE);
fclose( fp );
return( -1 );
}
$insert into _TEMPTABLE_ select * from cur_settle_ls
where snd_settle_date >= :s_s_date
and snd_settle_date <= :e_s_date
and acq_bank_id = :sy.bank_id
and edc_err_flag ='0'
and saf_flag = '0'
and tran_flag = '0'
and trans_type not in ( 4, 12 )
and card_type <> '02'
and resp_code = '00';
if ( SQLCODE < 0 ) {
daylog( ERROR, "insert from cur_settle_ls err![%d]", SQLCODE );
fclose( fp );
return( -1 );
}
sprintf ( sql , "select count(*) from _TEMPTABLE_ \
where acq_bank_id = '%s' \
and saf_flag = '0' \
and tran_type not in ( %d,%d ) \
and resp_code = '00' \
and card_type in ( %s ) ",
sy.bank_id ,PRE_AUTH, POS_VOID, card_type );
if( select_num(sql, &cnt) < 0 ) {
daylog( ERROR, "select _TEMPTABLE_ cnt err![%s]", sql );
fclose( fp );
return( -1 );
}
memset(sql, 0, sizeof(sql));
sprintf ( sql , "select * from _TEMPTABLE_ \
where acq_bank_id = '%s' \
and saf_flag = '0' \
and tran_type not in ( %d,%d ) \
and resp_code = '00' \
and card_type in ( %s ) ",
sy.bank_id ,PRE_AUTH, POS_VOID, card_type );
FileHead_shop_r_rpt( fp, sy );
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, card_type, card_no, tran_amt ");
$prepare ah_s_sql from :sql;
if (SQLCODE) {
daylog(ERROR, "Prepare ah_s_sql error![%d][%s]", SQLCODE, sql);
fclose(fp);
return(-1);
}
$declare ah_shop_r_rpt cursor for ah_s_sql;
if (SQLCODE) {
daylog(ERROR, "Unable declare ah_shop_r_rpt cursor![%d]", SQLCODE);
fclose(fp);
return(-1);
}
$open ah_shop_r_rpt;
if (SQLCODE) {
daylog(ERROR, "Unable open ah_shop_r_rpt![%d]", SQLCODE);
fclose(fp);
return(-1);
}
mer_id[0] = ter_id[0] = 0;
batch_no = -1;
/*===========================2001-9-18 14:58=======End==============*/
while (1) {
$fetch ah_shop_r_rpt into $ls;
if (SQLCODE == 100) break;
if (SQLCODE < 0) {
daylog(ERROR, "Error fetch ah_shop_r_rpt![%d]", SQLCODE);
$close ah_shop_r_rpt;
fclose(fp);
return(-1);
}
del_st_space("tran_ls", &ls);
if (strcmp(ls.merchant_id, mer_id) ) {
/* 不同商户分组打印 */
if (batch_no != -1) {
FileTail_shop_r_rpt(fp, cards);
}
if (strcmp(ls.merchant_id, mer_id)) {
/* 不同商户打印商户号、商户名子表头 */
$select merchant_cname
into :tmp from merchant_base
where merchant_id = :ls.merchant_id;
if (SQLCODE) {
daylog(WARN, "Fetch name of %s error!",
ls.merchant_id);
strcpy(tmp, "Unknown");
}
DelSpace(tmp);
for ( i = 0; i < SETTLE_CARDS_NUM; i ++ ) {
cards[i].cnt = 0;
cards[i].amt = 0.00;
cards[i].fee = 0.00;
cards[i].rebate = 0.00;
}
#ifdef Wubin_del_20011207
$select * into :s_c from merchant_card
where merchant_id = :ls.merchant_id;
if (SQLCODE) {
daylog(WARN, "Fetch fee of %s error!",
ls.merchant_id);
}
del_st_space("merchant_card", &s_c);
#endif
get_rebate(ls.merchant_id, VISA_CARD, &cards[CARD_VISA].rebate);
get_rebate(ls.merchant_id, MC_CARD, &cards[CARD_MC].rebate);
get_rebate(ls.merchant_id, AE_CARD, &cards[CARD_AE].rebate);
get_rebate(ls.merchant_id, DINER_CARD, &cards[CARD_DINER].rebate);
get_rebate(ls.merchant_id, JCB_CARD, &cards[CARD_JCB].rebate);
get_rebate(ls.merchant_id, CREDIT_CARD, &cards[CARD_BOC_CRE].rebate);
get_rebate(ls.merchant_id, DEBIT_CARD, &cards[CARD_BOC_DE].rebate);
/* 他行回扣率暂依长城卡的回扣率为准 */
cards[CARD_BOC_UN_CRE].rebate = cards[CARD_BOC_CRE].rebate; /* 银联卡, 回扣率同长城卡 wubin 20010900 */
cards[CARD_OTH_CRE].rebate = cards[CARD_BOC_CRE].rebate;
cards[CARD_OTH_DE].rebate = cards[CARD_BOC_DE].rebate;
}
strcpy(mer_id, ls.merchant_id);
strcpy(ter_id, ls.terminal_id);
batch_no = ls.batch_no;
FileSubHead_shop_r_rpt(fp, ls, tmp);
}
if (ls.tran_amt != 0 ) {
add_rpt_total(ls, cards);
if (fp) FileDetail_shop_r_rpt(fp, ls);
}
}
if (batch_no != -1)
FileTail_shop_r_rpt(fp, cards);
$close ah_shop_r_rpt;
fclose( fp );
return(0);
}
/*---------------- tran_ls 表 ----------------------------------
从tran_ls表中获得交易统计
ENTRY: sqlstring 此串中必须使用 select count(*) from
RETURN: -1, FAIL
0, SUCC, RESULT-->num
-------------------------------------------------------------*/
int select_num( sqlstring, num )
char *sqlstring;
int *num;
{
EXEC SQL BEGIN DECLARE SECTION;
char sqlstr[1024];
int num0;
EXEC SQL END DECLARE SECTION;
strcpy( sqlstr, sqlstring );
num0 = 0;
EXEC SQL PREPARE sel_num FROM :sqlstr;
if( SQLCODE < 0 ) {
daylog(ERROR, "PREPARE sel_num err[%ld][%s]",SQLCODE, sqlstr);
return(-1);
}
EXEC SQL DECLARE sel_num_ls CURSOR FOR sel_num;
if( SQLCODE < 0 ) {
daylog(ERROR,"DECLARE sel_num_ls err[%ld][%s]",SQLCODE,sqlstr);
return(-1);
}
EXEC SQL OPEN sel_num_ls;
if( SQLCODE < 0 ) {
daylog(ERROR, "OPEN sel_num_ls err[%ld][%s]",SQLCODE, sqlstr);
return(-1);
}
EXEC SQL FETCH sel_num_ls INTO :num0;
if( SQLCODE < 0 ) {
daylog(ERROR, "FETCH sel_num_ls err[%ld][%s]",SQLCODE, sqlstr);
EXEC SQL CLOSE sel_num_ls;
return(-1);
}
EXEC SQL CLOSE sel_num_ls;
*num = num0;
return( 0 );
}
int mer_batch_wat_prt() /**201.商户批次明细表 **/
{}
int edc_err_bat_wat_rpt() /**202.EDC异常批次明细 **/
{}
int mer_err_bat_wat_prt() /**203.商户异常批次明细 **/
{}
int edc_batch_rpt() /**204.EDC 批次统计表 **/
{}
int mer_batch_rpt() /**205.商户批次统计表 **/
{}
int mer_total_rpt() /**206.商户批次汇总表 **/
{}
int prt3831_rpt()
{
return ( prt_main("prt3831") );
}
int prt3833_rpt()
{
return ( prt_main("prt3833") );
}
int prt3834_rpt()
{
return ( prt_main("prt3834") );
}
int prt3835_rpt()
{
return ( prt_main("prt3835") );
}
int prt3836_rpt()
{
return ( prt_main("prt3836") );
}
int prt3837_rpt()
{
return ( prt_main("prt3837") );
}
int prt3838_rpt()
{
return ( prt_main("prt3838") );
}
int prt3840_rpt()
{
return ( prt_main("prt3840") );
}
int prt3841_rpt()
{
return ( prt_main("prt3841") );
}
int prt3842_rpt()
{
return ( prt_main("prt3842") );
}
int prt3843_rpt()
{
return ( prt_main("prt3843") );
}
int prt_3c_rpt()
{
return ( prt_main("prt3c") );
}
int prt_3d_rpt()
{
return ( prt_main("prt3d") );
}
int lp_err_settle()
{
return ( prt_main("lp_err_settle") );
}
int prt_main( char * prgname )
{
char command[300], filename[100];
int inttmp;
sprintf( command,"%s/bin/prt/%s",getenv("WORKDIR"), prgname );
sprintf( filename, "/tmp/.prt_main.%d", getpid() );
if( ( inttmp = open(command,O_RDONLY) ) < 0 )
return(0);
else
close ( inttmp );
strcat ( command , " " );
strcat ( command , G_oper_no );
strcat ( command , " " );
strcat ( command , filename);
scr_dump( filename);
db_close();
system(command);
if (db_open() == -1) {
daylog(ERROR, "Error Open Database!");
exit(-1);
}
scr_restore(filename);
unlink(filename);
touchwin(curscr);
wrefresh(curscr);
return(0);
}
int get_bank_acct_id(char *bankid)
{
$char bankacct_id[12];
char que_str[200];
memset(bankid, 0, sizeof(bankid));
memset(bankacct_id, 0, sizeof(bankacct_id));
readtab("sysparam.tab", "BANK_ACCT", "DEFAULT_BANK", bankacct_id);
DelSpace(bankacct_id);
sprintf(que_str,
"select count(*) from bank_acct \
where bank_id = \'%s\' ", bankacct_id);
if (query_count(que_str))
strcpy(bankid, bankacct_id);
else
strcpy(bankid, "0004");
return(0);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?