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

📄 charge_ncpatch.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		strcat(lsTemp,cDatabase->data->GetColData(i,1));		strcat(lsTemp,"\n");	}			StrReturn(100,lsTemp);}//------------------------------------------------------------------------//服务PSSiteQfSum调用函数//取帐目周期数据,参数staff_id//------------------------------------------------------------------------void CNCpatch::GetSiteQfSum(){	char lsSql[2048],lsTemp[1024],lsErr[500],lstmp[20];	char staff_id[40],site_id[30],start_date[50],end_date[50];	int i,isqlcode,lpnum,rpnum;	long len,lrow,row;	char *lparm[3];	lpnum=3;		rpnum=GetInputParm(pInp,lparm,50);	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		strcpy(lsTemp,"解析客户端传入参数失败,可能参数数据或传输格式不正确!\n");		StrReturn(-2,lsTemp);	}	sprintf(staff_id,"%s",lparm[0]);	sprintf(start_date,"%ld",atol(lparm[1]));	sprintf(end_date,"%ld",atol(lparm[2]));		lpfree(lparm,rpnum);			//取营业点标识	sprintf(lsSql,	"SELECT site_id  "	  "FROM STAFF  "	"WHERE staff_id = %s  "        ,staff_id);		cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();			if(isqlcode<0 || cDatabase->GetRowCount()!=1)	{			strcpy(lsTemp,"取营业点标识出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		strcpy(site_id,cDatabase->data->GetColData(1,1));		//删除营业点未交费统计中间表记录	sprintf(lsSql,"delete b_stat_exchange where staff_id = %s",staff_id);		cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();		if(isqlcode<0)	{		strcpy(lsTemp,"删除营业点未交费统计中间表记录出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		//检索本营业点可以收取的局向	sprintf(lsSql,"select a.exchange_id "			" from b_site_exchange a "			" where a.site_id=%s " 			" and a.flag=1 "		,site_id ); 		cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();		if(isqlcode<0)	{		strcpy(lsTemp,"检索本营业点可以收取的局向出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_charge",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	lrow=cDatabase->GetRowCount();	if(lrow>=1)	{		sprintf(lsSql,"insert into b_stat_exchange (staff_id,exchange_id) "			"select %s,a.exchange_id "			" from b_site_exchange a"			" where a.site_id=%s " 			" and a.flag=1 "		,staff_id,site_id ); 			cDatabase->DoSql(lsSql);		isqlcode=cDatabase->GetSqlCode();				if(isqlcode<0)		{			strcpy(lsTemp,"检索本营业点可以收取的局向出错!\n");			strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");			if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);			cDatabase->Commit();			StrReturn(-1,lsTemp);		}			}	else if(lrow==0)	{		sprintf(lsSql,"insert into b_stat_exchange (staff_id,exchange_id) "			"select %s,a.exchange_id "			" from exchange a,b_site b "			" where a.area_id=b.area_id "			" and b.site_id = %s "			" and a.exchange_id not in ( "			" select c.exchange_id "			" from b_site_exchange c "			" where c.site_id=%s " 			" and c.flag=0) "		,staff_id,site_id,site_id ); 			cDatabase->DoSql(lsSql);		isqlcode=cDatabase->GetSqlCode();				if(isqlcode<0)		{			strcpy(lsTemp,"检索本营业点可以收取的局向出错!\n");			strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");			if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);			cDatabase->Commit();			StrReturn(-1,lsTemp);		}			}			//检索营业点未交费数据	sprintf(lsSql," SELECT a.billing_cycle_id,a.invo_item_id, sum(NVL(a.charge,0))/100.00 "  			      "	FROM B_ACCT_ITEM_O a "   		      "	WHERE a.state IN ('20Q','20Y','20Z','20C','20T','20S') " 		      	      " and a.billing_cycle_id between %s and %s " 				      "	and exists (select 1 "				       " from b_serv b,b_stat_exchange c " 				       " where b.exchange_id = c.exchange_id "				       " and c.staff_id= %s"				       " and	b.acct_id = a.acct_id ) " 			" GROUP BY a.billing_cycle_id,a.invo_item_id " 			" order by a.billing_cycle_id,a.invo_item_id " 			,start_date,end_date,staff_id ); 			 	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();		if(isqlcode<0)	{		strcpy(lsTemp,"检索营业点未交费数据出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}				cDatabase->Commit();	if(isqlcode==0 && cDatabase->GetRowCount()==0) StrReturn(100,NULL);	StrReturn(0,cDatabase->GetData());}void CNCpatch::GetAreaQfAll(long StaffID,long AreaID){	char lsSql[2048],lsTemp[1024],lsErr[500];	int isqlcode;	char staff_id[20];	char ls_max_acct[10],ls_min_acct[10];	long ll_max_acct,ll_min_acct;		sprintf(lsSql,	" SELECT nvl(max_acct_id,0) "        " FROM LBAS.AREA "        " WHERE area_id =%d "        ,AreaID ); 	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{			strcpy(lsTemp,"检索营业区最大合同号出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	cDatabase->Commit();	if(cDatabase->GetRowCount()==0) StrReturn(100,"没有找到营业区最大合同号!");	strcpy(ls_max_acct,cDatabase->data->GetColData(1,1));	ll_max_acct=atol(ls_max_acct);		sprintf(lsSql,	" select nvl(max(max_acct_id),1) "	" from LBAS.AREA "	" where max_acct_id < %ld "	,ll_max_acct);		cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{			strcpy(lsTemp,"检索营业区最小合同号出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	cDatabase->Commit();	if(cDatabase->GetRowCount()==0) StrReturn(100,"没有找到营业区最小合同号!");	strcpy(ls_min_acct,cDatabase->data->GetColData(1,1));	ll_min_acct=atol(ls_min_acct);		sprintf(lsSql,	" Select BILLING_CYCLE_ID, "	" sum(charge)*0.01,   "	" count(distinct acct_id) "	" from B_ACCT_ITEM_O  "	" where acct_id >= %ld "	" and acct_id <= %ld "	" and state in ('20C','20Q','20T','20Y')"	" group by BILLING_CYCLE_ID "	,ll_min_acct,ll_max_acct);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();		if(isqlcode<0)	{			strcpy(lsTemp,"检索营业区总欠费出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	cDatabase->Commit();	if(cDatabase->GetRowCount()==0) StrReturn(100,"没有找到营业区总欠费!");	StrReturn(0,cDatabase->GetData());	}void CNCpatch::GetAreaQfNoDossier(long StaffID,long AreaID,long type){	char lsSql[2048],lsTemp[1024],lsErr[500];	int isqlcode;	char staff_id[20];	sprintf(staff_id,"%ld",StaffID);			sprintf(lsSql,      " SELECT  domain_payment_method.PAYMENT_METHOD_NAME,    "      "  B_ACCT_ITEM_O.BILLING_CYCLE_ID,    "      " sum(b_acct_item_o.charge)*0.01, "      " count(distinct B_ACCT.acct_id) "      " FROM B_ACCT,   "      "   B_ACCT_ITEM_O, "      "  domain_payment_method  "      "  WHERE  B_ACCT_ITEM_O.ACCT_ID = B_ACCT.ACCT_ID and   "      "  B_ACCT_ITEM_O.ACCT_SEQ_NBR =B_ACCT.ACCT_SEQ_NBR and "      "  B_ACCT.AREA_ID = %d AND  "      "  B_ACCT_ITEM_O.STATE in ('20C','20Q','20Y','20T') AND   "      "  (B_ACCT.STATE = '10X' ) and "      "   domain_payment_method.payment_method=B_ACCT.payment_method   "      "   GROUP BY domain_payment_method.PAYMENT_METHOD_NAME,   "      "  B_ACCT_ITEM_O.BILLING_CYCLE_ID "      "  order by    domain_payment_method.PAYMENT_METHOD_NAME,B_ACCT_ITEM_O.BILLING_CYCLE_ID "      ,AreaID);             userlog("无档1");       userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	//userlog("检索返回行数:%d",cDatabase->GetRowCount());			if(isqlcode<0)	{			strcpy(lsTemp,"检索营业区欠费出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	cDatabase->Commit();	if(cDatabase->GetRowCount()==0) StrReturn(100,"没有营业区欠费记录!");	StrReturn(0,cDatabase->GetData());}void CNCpatch::GetPrepay(long billing_cycle_id){	char lsSql[2048],lsTemp[1024],lsErr[500];	int isqlcode;	char staff_id[20];			sprintf(lsSql,      " SELECT  b.BILLING_CYCLE_ID,    "      " c.name, "      " sum(b.charge)*0.01, "      " count(distinct a.acct_id) "      " FROM B_ACCT a,   "      "   B_ACCT_ITEM_O b, "      "   B_AREA c "      "  WHERE  a.ACCT_ID = b.ACCT_ID and   "      "  a.ACCT_SEQ_NBR =b.ACCT_SEQ_NBR and "      "  b.billing_cycle_id=%ld and "       "  b.acct_item_type_id=3 and "      "  a.area_id=c.area_id and "      "  a.STATE = '10A'  "      "   GROUP BY b.BILLING_CYCLE_ID,c.name "      ,billing_cycle_id);             userlog(lsSql);       cDatabase->DoSql(lsSql);       isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());	//userlog("检索返回行数:%d",cDatabase->GetRowCount());			if(isqlcode<0)	{			strcpy(lsTemp,"检索营业区预付抵扣出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_sta_prepay",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	cDatabase->Commit();	if(cDatabase->GetRowCount()==0) StrReturn(100,"没有营业区预付抵扣记录!");	StrReturn(0,cDatabase->GetData());}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -