⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 merch_m_rpt.ec

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 EC
📖 第 1 页 / 共 2 页
字号:
	
			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 + -