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

📄 charge_settle.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			isqlcode=cDatabase->GetSqlCode();		//	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());					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_settle",lsTemp,lsErr)!=1)					strcat(lsTemp,lsErr);				lpfree(lparm,ret);						cDatabase->Commit();				StrReturn(-1,lsTemp);			}	   			   			   	break;		   			   	case 6:		   				//更新分期付款记录			sprintf(lsSql,			"UPDATE INSTALMENT_BALANCE  "			"SET state = '02'  "			"WHERE acct_id = %s AND  "				"state = '01'  "			,acct_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_settle",lsTemp,lsErr)!=1)					strcat(lsTemp,lsErr);				lpfree(lparm,ret);						cDatabase->Commit();				StrReturn(-1,lsTemp);			}						//插入分期付款记录			sprintf(lsSql,			"INSERT INTO INSTALMENT_BALANCE  "			"VALUES (SEQ_INSTALMENT_BALANCE.NEXTVAL,%s,0,NULL,  "				"0,100*to_number('%s'),  "				"'0B',sysdate,'01',%s)  "			,acct_id,charge,staff_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_settle",lsTemp,lsErr)!=1)					strcat(lsTemp,lsErr);				lpfree(lparm,ret);							cDatabase->Commit();				StrReturn(-1,lsTemp);			}		   			   			   	break;		   				   }		   //Case结束		   		   //更新销户结清历史记录		   sprintf(lsSql,		   "UPDATE B_CANCEL_ACCT   "		   "SET state='C0R'  "		   "WHERE acct_id = %s  AND  "		   	"bill_item_id = %s AND  "		   	"state = 'C0P'  "		   ,acct_id,bill_item_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_settle",lsTemp,lsErr)!=1)				strcat(lsTemp,lsErr);			lpfree(lparm,ret);					cDatabase->Commit();			StrReturn(-1,lsTemp);		   }		   		   //插入销户回退历史记录		   sprintf(lsSql,		   "INSERT INTO B_CANCEL_ACCT (cancel_id,acct_id,bill_item_id,  "		   	"charge,state,state_time,bill_serial_nbr,pay_serial_nbr)  "		   "VALUES (seq_b_cancel_acct.nextval,%s,%s,-1*to_number('%s'),  "		   	"'C0S',sysdate,%s,%s )  "		   ,acct_id,bill_item_id,charge,ls_bill_serial_nbr,pay_serial_nbr);			//	   //userlog(lsSql);		   cDatabase->DoSql(lsSql);		   isqlcode=cDatabase->GetSqlCode();	//	   //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());				   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_settle",lsTemp,lsErr)!=1)				strcat(lsTemp,lsErr);			lpfree(lparm,ret);						cDatabase->Commit();			StrReturn(-1,lsTemp);		   }	   		      						}        }        else        {        	for(i=0;i<row;i++)		{		   j=i*col;		   		   strcpy(bill_item_id,lparm[j+1]);		   strcpy(charge,lparm[j+2]);		   sum_charge=sum_charge+atof(charge);		   		   //Case开始		   switch(atoi(bill_item_id))		   {		      case 1:		      					 				   	sprintf(lsSql,		   	" update  B_ACCT_ITEM_O "		   	" set state='20C' "		   	" where serv_id = %s and "		   	" bill_serial_nbr = %s and "		   	 " state in ('20P')"		   	 ,serv_id,ls_bill_serial_nbr);		   	 		        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_settle",lsTemp,lsErr)!=1)					strcat(lsTemp,lsErr);				lpfree(lparm,ret);							cDatabase->Commit();				StrReturn(-1,lsTemp);			} 					   	sprintf(lsSql," begin lbas.p_a_serv_realtime_back('%s','%s',%s,:returncode ); end;",areacode,acc_nbr,billing_cycle_id); 	                //userlog(lsSql);	                char ls_return[40];			strcpy(ls_return,cDatabase->ExecProc(lsSql));			if(ls_return[0]>'9') 			{			    StrReturn(-1,ls_return);			}			break;		       case 3:		   			   			   	//修改用户一次性费用表数据			sprintf(lsSql,			"UPDATE LBAS.SERV_ONCE_FEE  "				"SET state='1',  "				"state_date=sysdate,  "			" WHERE rowid in (SELECT a.rowid "			"FROM  LBAS.SERV_ONCE_FEE a,LBAS.SERV b  "			"WHERE a.serv_id=b.serv_id AND  "				"a.serv_seq_nbr=b.serv_seq_nbr	AND  "				" b.acct_id=%s and "				"b.state='F0A' AND  "				"a.state='A')  "			,acct_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_settle",lsTemp,lsErr)!=1)					strcat(lsTemp,lsErr);				lpfree(lparm,ret);						cDatabase->Commit();				StrReturn(-1,lsTemp);			}		   			   	break;	         }		   //Case结束		   		   //更新销户结清历史记录		   sprintf(lsSql,		   "UPDATE B_CANCEL_ACCT   "		   "SET state='C0R'  "		   "WHERE serv_id = %s  AND  "		   	"bill_item_id = %s AND  "		   	"state = 'C0P'  "		   ,serv_id,bill_item_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_settle",lsTemp,lsErr)!=1)				strcat(lsTemp,lsErr);			lpfree(lparm,ret);					cDatabase->Commit();			StrReturn(-1,lsTemp);		   }		   		   //插入销户回退历史记录		   sprintf(lsSql,		   "INSERT INTO B_CANCEL_ACCT (cancel_id,acct_id,bill_item_id,  "		   	"charge,state,state_time,bill_serial_nbr,pay_serial_nbr,serv_id)  "		   "VALUES (seq_b_cancel_acct.nextval,%s,%s,-1*to_number('%s'),  "		   	"'C0S',sysdate,%s,%s,%s)  "		   ,acct_id,bill_item_id,charge,ls_bill_serial_nbr,pay_serial_nbr,serv_id);			//	   //userlog(lsSql);		   cDatabase->DoSql(lsSql);		   isqlcode=cDatabase->GetSqlCode();	//	   //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());				   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_settle",lsTemp,lsErr)!=1)				strcat(lsTemp,lsErr);			lpfree(lparm,ret);						cDatabase->Commit();			StrReturn(-1,lsTemp);		   }	   		      						}        }				   			lpfree(lparm,ret);        //更新销帐记录        sprintf(lsSql,        " UPDATE BILL "        " set state = '40R', "        " state_date = sysdate "        " where bill_serial_nbr=to_number('%s') "        ,ls_bill_serial_nbr);                //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_settle",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);			cDatabase->Commit();		StrReturn(-1,lsTemp);	}		        	//更新付款记录	sprintf(lsSql,	"UPDATE PAYMENT  "	"SET state = 'C0R',  "		 "state_date = sysdate  "	"WHERE pay_serial_nbr = to_number('%s')  "	,ls_pay_serial_nbr);	////	//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_settle",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);			cDatabase->Commit();		StrReturn(-1,lsTemp);	}		//插入付款记录	sprintf(lsSql,	"INSERT INTO PAYMENT  "	"VALUES ( %s,%s,%s,'11','0B',  "			 "%s,%f*(-100),sysdate,to_number('%s'),  "			 "'C0S',sysdate,null,null)  "	,pay_serial_nbr,acct_id,acct_seq_nbr,pay_serial_nbr,sum_charge,staff_id);	////	//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();//	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		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_settle",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);			cDatabase->Commit();		StrReturn(-1,lsTemp);	}					cDatabase->Commit();	StrReturn(0,"销户回退成功!");	}//-----------------------------------------------------------------//服务PTGetTotal实现函数,传入参数staff_id,acct_id//取结清回退费用信息//-----------------------------------------------------------------void CSettle::PTGetTotal(){	char  lsSql[2048],lsTemp[500],lsErr[500],lsReturn[2048];	int   i,isqlcode,lpnum,rpnum;	char  acct_id[50],staff_id[20],pay_serial_nbr[30];	char  *lparm[4],tch[2];		//userlog(pInp);	lpnum=2;	rpnum=GetInputParm(pInp,lparm,50);	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n");		if(WriteLog(cDatabase,"-1","w_p_settle",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);	}	strcpy(staff_id,lparm[0]);	strcpy(acct_id,lparm[1]);	sprintf(acct_id,"%s",acct_id);	lpfree(lparm,rpnum);	sprintf(lsSql,      "SELECT B_CANCEL_ACCT.acct_id,   "             "sum(B_CANCEL_ACCT.charge) charge,   "             "B_CANCEL_ACCT.state,   "             "B_CANCEL_ACCT.state_time,   "             "to_char(B_CANCEL_ACCT.pay_serial_nbr)  "        "FROM B_CANCEL_ACCT  "       "WHERE ( B_CANCEL_ACCT.acct_id = %s )  "         "and ( B_CANCEL_ACCT.state = 'C0P' )  "       "group by B_CANCEL_ACCT.acct_id,   "             "B_CANCEL_ACCT.state,    "             "B_CANCEL_ACCT.state_time,   "             "B_CANCEL_ACCT.pay_serial_nbr  "       "order by B_CANCEL_ACCT.state_time DESC "	,acct_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_settle",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());	}	}//-----------------------------------------------------------------//服务PTGetSettleItem实现函数,传入参数staff_id,pay_serial_nbr//取结清回退项目费用信息//-----------------------------------------------------------------void CSettle::PTGetSettleItem(){	char  lsSql[2048],lsTemp[500],lsErr[500],lsReturn[2048];	int   i,isqlcode,lpnum,rpnum;	char  staff_id[20],pay_serial_nbr[30];	char  *lparm[4],tch[2];		//userlog(pInp);	lpnum=2;	rpnum=GetInputParm(pInp,lparm,50);	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n");		if(WriteLog(cDatabase,"-1","w_p_settle",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);	}	strcpy(staff_id,lparm[0]);	strcpy(pay_serial_nbr,lparm[1]);	lpfree(lparm,rpnum);	sprintf(lsSql,      "SELECT B_CANCEL_ACCT.acct_id,   "             "B_CANCEL_ACCT.bill_item_id,   "             "B_CANCEL_ACCT.charge,   "             "B_CANCEL_ACCT.state,   "             "B_CANCEL_ACCT.s

⌨️ 快捷键说明

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