📄 merch_m_rpt.ec
字号:
memset(merchids_card, 0, sizeof(merchids_card));
merch_num = 0;
/*
while ( merch_num < MAX_MERCH_NUM ) {
*/
while (1) {
$fetch merch_forg_cur2
into $merchid, $count:indi1, $tran_amt:indi2;
if ( SQLCODE == SQLNOTFOUND )
break;
if ( SQLCODE ) {
$close merch_forg_cur2;
daylog(ERROR, "fetch merch_forg_cur err[%d]", SQLCODE);
return ( -1 );
}
if ( indi1 != -1 && indi2 != -1 && count ) {
DelSpace(merchid);
get_sign_bank(merchid, bankid1, hostid1);
if (strcmp(acq_bank_id, bankid1) == 0) {
tmp_ret = check_merchids(merchid);
if (tmp_ret == 0) {
strcpy(merchids_card[merch_num].merchid, merchid);
merchids_card[merch_num].count = count;
merchids_card[merch_num].amount = tran_amt;
merch_num ++;
}
else {
merchids_card[merch_num].count = count;
merchids_card[merch_num].amount = tran_amt;
}
}
}
}
$close merch_forg_cur2;
}
/* 如果联行资料中的收单行没有商户发生交易, 则不统计 */
if (merchids_card[0].merchid[0] != 0) {
if (FileHead_merch_foreign_month(fp, start_date, end_date, acq_bank_id)) {
fclose(fp);
return(-2); /* Database operate error */
}
}
$DELETE FROM merchant_tmp;
if (SQLCODE) {
daylog(ERROR,"Delete merchant_tmp Error![%d]", SQLCODE);
fclose(fp);
return(-2);
}
merch_num = 0;
while (merchids_card[merch_num].merchid[0] != 0) {
strcpy(merchant_id, merchids_card[merch_num].merchid);
get_merchant_name(merchant_id, merchantname);
i = 0;
memset(card_amt, 0, sizeof(card_amt));
memset(card_cnt, 0, sizeof(card_cnt));
while (card_table1[i] != NULL && card_table1[i][0] != '\0') {
if (cur_flag == 1 || cur_flag == 2) {
sprintf(sqlstr,
"select count(*), sum(tran_amt) \
from cur_settle_ls \
where merchant_id = \'%s\' \
and card_type = \'%s\' \
and snd_settle_date >= \'%s\' \
and snd_settle_date <= \'%s\'",
merchant_id, card_table1[i],
start_date, end_date);
$prepare merch_cur3 from $sqlstr;
$declare merch_forg_cur3 cursor for merch_cur3;
$open merch_forg_cur3;
if (SQLCODE) {
daylog(ERROR, "Open merch_forg_cur3![%d]", SQLCODE);
fclose(fp);
return(-2);
}
while (1) {
$fetch merch_forg_cur3 into $count:indi1, $tran_amt:indi2;
if (SQLCODE == 100) break;
if (SQLCODE) {
daylog(ERROR, "Fetch merch_forg_cur3 error![%d]", SQLCODE);
$close merch_forg_cur3;
fclose(fp);
return(-2);
}
if ( indi1 != -1 &&
indi2 != -1 &&
count ) {
card_amt[i] += tran_amt;
card_cnt[i] += count;
}
}
$close merch_forg_cur3;
if (count) {
total_card_amt[i] += card_amt[i];
total_card_cnt[i] += card_cnt[i];
}
}
if (cur_flag == 0 || cur_flag == 2) {
sprintf(sqlstr,
"select count(*), sum(tran_amt) \
from his_settle_ls \
where merchant_id = \'%s\' \
and card_type = \'%s\' \
and snd_settle_date >= \'%s\' \
and snd_settle_date <= \'%s\'",
merchant_id, card_table1[i],
start_date, end_date);
$prepare merch_cur4 from $sqlstr;
$declare merch_forg_cur4 cursor for merch_cur4;
$open merch_forg_cur4;
if (SQLCODE) {
daylog(ERROR, "Open merch_forg_cur4![%d]", SQLCODE);
fclose(fp);
return(-2);
}
while (1) {
$fetch merch_forg_cur4 into $count:indi1, $tran_amt:indi2;
if (SQLCODE == 100) break;
if (SQLCODE) {
daylog(ERROR, "Fetch merch_forg_cur3 error![%d]", SQLCODE);
$close merch_forg_cur4;
fclose(fp);
return(-2);
}
if ( indi1 != -1 &&
indi2 != -1 &&
count ) {
card_amt[i] += tran_amt;
card_cnt[i] += count;
}
}
$close merch_forg_cur4;
if (count) {
total_card_amt[i] += card_amt[i];
total_card_cnt[i] += card_cnt[i];
}
}
i++;
}
#ifdef Wubin20020905_mod
fprintf(fp, "%-40s %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf\n", merchantname, card_amt[0], card_amt[1], card_amt[2], card_amt[3], card_amt[4], card_amt[5], card_amt[6],merchids_card[merch_num].amount);
fprintf(fp, "%-40s %14d %14d %14d %14d %14d %14d %14d %14d\n\n", " ", card_cnt[0], card_cnt[1], card_cnt[2], card_cnt[3], card_cnt[4], card_cnt[5], card_cnt[6],merchids_card[merch_num].count);
#else
strcpy(merch_m.merchant_id,merchant_id);
strcpy(merch_m.merchant_name,merchantname);
merch_m.credit_amt = card_amt[1];
merch_m.credit_cnt = card_cnt[1];
merch_m.debit_amt = card_amt[0];
merch_m.debit_cnt = card_cnt[0];
merch_m.visa_amt = card_amt[2];
merch_m.visa_cnt = card_cnt[2];
merch_m.mc_amt = card_amt[3];
merch_m.mc_cnt = card_cnt[3];
merch_m.ae_amt = card_amt[4];
merch_m.ae_cnt = card_cnt[4];
merch_m.dc_amt = card_amt[5];
merch_m.dc_cnt = card_cnt[5];
merch_m.jcb_amt = card_amt[6];
merch_m.jcb_cnt = card_cnt[6];
merch_m.total_amt = merchids_card[merch_num].amount;
merch_m.total_cnt = merchids_card[merch_num].count;
$insert into merchant_tmp values (:merch_m);
if ( SQLCODE != 0 ) {
daylog(ERROR, "create temp table merchant_tmp Error[%d]", SQLCODE);
return ( -1 );
}
#endif
total_tran_amt += merchids_card[merch_num].amount; /* 总计交易金额 */
total_tran_cnt += merchids_card[merch_num].count; /* 总计交易金额 */
merch_num++;
}
if (FileDetail_merch_foreign_month(fp) != 0)
{
daylog(ERROR,"FileDetail_merch_foreign_month Error!");
fclose(fp);
return(-2); /* Database operate error */
}
$DELETE FROM merchant_tmp;
if (SQLCODE) {
daylog(ERROR,"Delete merchant_tmp Error![%d]", SQLCODE);
fclose(fp);
return(-2);
}
/* 报表结尾 */
if (merchids_card[0].merchid[0] != 0) {
fprintf(fp, "----------------------------------------------------------------------------------------------------------------------------------------------------------------\n");
if (total_tran_cnt)
fprintf(fp, "%-40s %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf\n",
"合计金额: ",total_card_amt[0], total_card_amt[1], total_card_amt[2], total_card_amt[3], total_card_amt[4], total_card_amt[5], total_card_amt[6], total_tran_amt);
fprintf(fp, "%-40s %14d %14d %14d %14d %14d %14d %14d %14d\n\n\f", "合计笔数: ",total_card_cnt[0], total_card_cnt[1], total_card_cnt[2], total_card_cnt[3], total_card_cnt[4], total_card_cnt[5], total_card_cnt[6], total_tran_cnt);
}
bank_num++; /* 统计下一个银行 */
}
fclose(fp);
return(0);
}
int FileHead_merch_foreign_month(FILE *fp, char *start_date, char *end_date, char *acq_bank_id)
{
char date1[11],date2[11],bank_name[21];
str2date(date1, start_date, "/");
str2date(date2, end_date, "/");
get_bank_name1(acq_bank_id, bank_name);
fprintf(fp, "%37s 中国银行 BTS 系统\n", " ");
fprintf(fp, "%37s中行商户本外卡交易统计月报表\n\n", " ");
fprintf(fp, "收单行号:%s 收单行名: %s\n",acq_bank_id,bank_name);
fprintf(fp, "日期:%s 到 %s%103s单位:人民币元\n",date1,date2," ");
fprintf(fp, "================================================================================================================================================================\n");
fprintf(fp, "%-40s %14s %14s %14s %14s %14s %14s %14s %14s\n", "商户名称","借记卡","信用卡","VISA", "MC", "AE", "DC", "JCB", "合计");
fprintf(fp, "----------------------------------------------------------------------------------------------------------------------------------------------------------------\n");
return(0);
}
int check_merchids(char *merch_id)
{
int j;
for(j = 0; j < MAX_MERCH_NUM; j++) {
if (merchids_card[j].merchid[0] == 0)
return 0;
else {
if (strcmp(merchids_card[j].merchid, merch_id) == 0)
return 1;
}
}
return 0;
}
int FileDetail_merch_foreign_month(FILE *fp)
{
$struct Merch_st merch_m;
$char sql_str[1024];
sprintf(sql_str,"select * from merchant_tmp order by credit_amt,debit_amt");
EXEC SQL PREPARE sel_merchtmp FROM :sql_str;
if (SQLCODE < 0) {
daylog(ERROR, "PREPARE [%s] failed![%d]", sql_str, SQLCODE);
return(-1);
}
EXEC SQL DECLARE merchtmp CURSOR WITH HOLD FOR sel_merchtmp;
if (SQLCODE) {
daylog(ERROR, "DECLARE [%s] failed![%d]", sql_str, SQLCODE);
return(-1);
}
$open merchtmp;
if (SQLCODE) {
daylog(ERROR, "Error open merchtmp cursor![%d]", SQLCODE);
return(-1);
}
for(;;) {
$fetch merchtmp into $merch_m;
if (SQLCODE==100) break;
if (SQLCODE<0) {
daylog(ERROR, "Error fetch merchtmp![%d]", SQLCODE);
$close merchtmp;
return(-1);
}
fprintf(fp, "%-40s %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf %14.2lf\n", merch_m.merchant_name,merch_m.debit_amt,merch_m.credit_amt,merch_m.visa_amt,merch_m.mc_amt,merch_m.ae_amt,merch_m.dc_amt,merch_m.jcb_amt,merch_m.total_amt);
fprintf(fp, "%-40s %14d %14d %14d %14d %14d %14d %14d %14d\n\n", " ", merch_m.debit_cnt,merch_m.credit_cnt,merch_m.visa_cnt,merch_m.mc_cnt,merch_m.ae_cnt,merch_m.dc_cnt,merch_m.jcb_cnt,merch_m.total_cnt);
}
$close merchtmp;
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -