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

📄 charge_format.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	"from   ACCT_BILL_FORMAT  "	"where  acct_id=%s  "	,acct_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_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);				cDatabase->Commit();		StrReturn(-1,lsTemp);	}	else if(isqlcode==0 && cDatabase->GetRowCount()==0)	{		bill_format_id=bill_format_def;	}	else	{		bill_format_id=cDatabase->GetData();	}		sprintf(lsSql,     "SELECT B_ACCT_ITEM_O.acct_id,    "            "BILL_ACCT_ITEM_TYPE.bill_item_type_id,  "            "BILL_ITEM_TYPE.name ,  "            "B_ACCT_ITEM_O.billing_cycle_id,   "            "B_ACCT.customer_name,   "            "sum(charge)/100  "       "FROM B_ACCT_ITEM_O,   "            "BILL_ACCT_ITEM_TYPE,   "            "BILL_ITEM_TYPE,   "            "B_ACCT  "    "  WHERE ( BILL_ACCT_ITEM_TYPE.bill_item_type_id = BILL_ITEM_TYPE.bill_item_type_id ) and  "            "( B_ACCT_ITEM_O.acct_item_type_id = BILL_ACCT_ITEM_TYPE.acct_item_type_id ) and  "            "( B_ACCT.acct_id = B_ACCT_ITEM_O.acct_id ) and  "            "( BILL_ITEM_TYPE.bill_format_id = %s ) AND  "            "( B_ACCT.acct_id = %s ) AND  "            "( B_ACCT.state = '10A' ) AND  "            "( B_ACCT_ITEM_O.billing_cycle_id = %s )   "   "GROUP BY B_ACCT_ITEM_O.acct_id,   "            "BILL_ACCT_ITEM_TYPE.bill_item_type_id,  "            "BILL_ITEM_TYPE.name ,  "            "B_ACCT_ITEM_O.billing_cycle_id,   "            "B_ACCT.customer_name   "	,bill_format_id,acct_id,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_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);					cDatabase->Commit();		StrReturn(-1,lsTemp);	}	else if(isqlcode==0 && cDatabase->GetRowCount()==0) 	{		cDatabase->Commit();		StrReturn(100,"帐单为空!");	}	else 	{		cDatabase->Commit();		StrReturn(0,cDatabase->GetData());		}	}//-----------------------------------------------------------------//服务PFBuildForAcc实现函数,传入参数staff_id,acc_nbr,billing_cycle_id//根据电话号码生成帐单//-----------------------------------------------------------------void CFormat::PFBuildForAcc(){	char lsSql[1100],lsTemp[1024],lsErr[300];	int  i,isqlcode,lpnum,rpnum;	char billing_cycle_id[20],acc_nbr[20],staff_id[20],*bill_format_id;	char bill_format_def[2],*serv_id;	char *lparm[3];		sprintf(bill_format_def,"1");	//取参数开始	lpnum=3;		rpnum=GetInputParm(pInp,lparm,50);	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n");		if(WriteLog(cDatabase,"-1","w_p_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);	}	strcpy(staff_id,lparm[0]);	strcpy(acc_nbr,lparm[1]);	strcpy(billing_cycle_id,lparm[2]);	lpfree(lparm,rpnum);		//取参数结束		sprintf(lsSql,	"select serv_id  "	"from   B_SERV  "	"where  acc_nbr='%s'  "	"and    state not in ('F0X','F0O') "	,acc_nbr);		//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_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);				cDatabase->Commit();		StrReturn(-1,lsTemp);	}	else if(isqlcode==0 && cDatabase->GetRowCount()==0)	{		sprintf(lsTemp,"无此有效电话号码!\n");		cDatabase->Commit();		StrReturn(100,lsTemp);	}		serv_id=cDatabase->GetData();	sprintf(lsSql,	"select 'ok'  "	"from B_ACCT_ITEM_O  "	"where serv_id=%s  "	"and   billing_cycle_id=%s  "	,serv_id,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_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);				cDatabase->Commit();		StrReturn(-1,lsTemp);	}	else if(isqlcode==0 && cDatabase->GetRowCount()==0)	{		sprintf(lsTemp,"该电话号码下本帐期无费用!\n");		cDatabase->Commit();		StrReturn(100,lsTemp);	}		sprintf(lsSql,	"select bill_format_id   "	"from SERV_BILL_FORMAT  "	"where serv_id=%s  "	,serv_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_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);				cDatabase->Commit();		StrReturn(-1,lsTemp);	}	else if(isqlcode==0 && cDatabase->GetRowCount()==0)	{		bill_format_id=bill_format_def;	}	else	{		bill_format_id=cDatabase->GetData();	}		sprintf(lsSql,     "SELECT BILL_ACCT_ITEM_TYPE.bill_item_type_id,  "            "BILL_ITEM_TYPE.name ,   "            "B_ACCT_ITEM_O.billing_cycle_id,   "            "B_SERV.serv_name,   "            "sum(charge)/100, "            "B_SERV.acc_nbr   "       "FROM B_ACCT_ITEM_O,   "            "BILL_ACCT_ITEM_TYPE,   "            "BILL_ITEM_TYPE,   "            "B_SERV "      "WHERE ( BILL_ACCT_ITEM_TYPE.bill_item_type_id = BILL_ITEM_TYPE.bill_item_type_id ) and  "            "( B_ACCT_ITEM_O.acct_item_type_id = BILL_ACCT_ITEM_TYPE.acct_item_type_id ) and  "            "( B_SERV.serv_id = B_ACCT_ITEM_O.serv_id ) and  "            "( BILL_ITEM_TYPE.bill_format_id = %s) AND  "            "( B_SERV.serv_id = %s) AND  "            "( B_SERV.state <> 'F0X' ) AND  "            "( B_ACCT_ITEM_O.billing_cycle_id = %s )   "   "GROUP BY BILL_ACCT_ITEM_TYPE.bill_item_type_id, "   	    "BILL_ITEM_TYPE.name ,  "            "B_ACCT_ITEM_O.billing_cycle_id,   "            "B_SERV.serv_name,   "            "B_SERV.acc_nbr   "	,bill_format_id,serv_id,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_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);				cDatabase->Commit();		StrReturn(-1,lsTemp);	}	else if(isqlcode==0 && cDatabase->GetRowCount()==0) 	{		cDatabase->Commit();		StrReturn(100,"帐单为空!");	}	else 	{		cDatabase->Commit();		StrReturn(0,cDatabase->GetData());		}	}//-----------------------------------------------------------------//服务PFGetMaxF实现函数,参数staff_id//取"BILL_FORMAT_O"最大bill_format_id//-----------------------------------------------------------------void CFormat::PFGetMaxF(){	char lsSql[100],lsTemp[1024],lsErr[300];	char staff_id[20];	int isqlcode;			strcpy(staff_id,pInp);				strcpy(lsSql,  "SELECT NVL(max(bill_format_id)+1,1)  "    "FROM BILL_FORMAT_O  "        );		//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,"取BILL_FORMAT_O最大bill_format_id出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);				cDatabase->Commit();		StrReturn(-1,lsTemp);	}	else if(isqlcode==0 && cDatabase->GetRowCount()==0) 	{		cDatabase->Commit();		StrReturn(100,NULL);	}	else 	{		cDatabase->Commit();		StrReturn(isqlcode,cDatabase->GetData());		}}//-----------------------------------------------------------------//服务PFGetMaxIT实现函数,参数staff_id//取"BILL_ITEM_TYPE"最大bill_item_type_id//-----------------------------------------------------------------void CFormat::PFGetMaxIT(){	char lsSql[100],lsTemp[1024],lsErr[300];	char staff_id[20];	int isqlcode;			strcpy(staff_id,pInp);				strcpy(lsSql,  "SELECT NVL(max(bill_item_type_id),100) "    "FROM BILL_ITEM_TYPE  "        );		//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,"取BILL_ITEM_TYPE最大bill_item_type_id出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);				cDatabase->Commit();		StrReturn(-1,lsTemp);	}	else if(isqlcode==0 && cDatabase->GetRowCount()==0) 	{		cDatabase->Commit();		StrReturn(100,NULL);	}	else 	{		cDatabase->Commit();		StrReturn(isqlcode,cDatabase->GetData());		}}//-----------------------------------------------------------------//服务PFDelFor实现函数,传入参数staff_id,bill_format_id//删除bill_format_id相关数据//-----------------------------------------------------------------void CFormat::PFDelFor(){	char lsSql[100],lsTemp[1024],lsErr[300];	int isqlcode;	char bill_format_id[20],staff_id[20];	char *lparm[3];	int i,lpnum,rpnum;		lpnum=2;	rpnum=GetInputParm(pInp,lparm,50);	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n");		if(WriteLog(cDatabase,"-1","w_p_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);	}	strcpy(staff_id,lparm[0]);	strcpy(bill_format_id,lparm[1]);	lpfree(lparm,rpnum);		//userlog("\ndelete data for bill_format_id: %s",bill_format_id);		cDatabase->BeginTran();		sprintf(lsSql,   "delete from BILL_ACCT_ITEM_TYPE "    "where bill_format_id=%s  "	 ,bill_format_id);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"删除帐单帐目出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);				cDatabase->Commit();		StrReturn(-1,lsTemp);	}	sprintf(lsSql,   "delete from BILL_ITEM_TYPE  "    "where bill_format_id=%s   "	 ,bill_format_id);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"删除帐单项出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_bill_format",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);				cDatabase->Commit();		StrReturn(-1,lsTemp);	}	sprintf(lsSql,

⌨️ 快捷键说明

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