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

📄 charge_settle.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			lpfree(lparm,ret);						cDatabase->Commit();			StrReturn(-1,lsTemp);		}				   		   	break;	   		   	case 3:	   		   	//修改帐户一次性费用表中以前结清数据		sprintf(lsSql,		"UPDATE LBAS.ACCT_ONCE_FEE  "		"SET state='B',  "			"state_date=sysdate  "		"WHERE acct_id= %s	AND  "		" edit_time >sysdate and "			"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);		}	   		   		   	//修改帐户一次性费用表数据		sprintf(lsSql,		"UPDATE LBAS.ACCT_ONCE_FEE  "		"SET state='A',  "			"state_date=sysdate  "		"WHERE acct_id= %s	AND  "		" edit_time>sysdate  and "			   "state='1'  "		,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,		"UPDATE LBAS.SERV_ONCE_FEE  "			"SET state='B',  "			"state_date=sysdate,  "			"acct_id = %s,  "			"acct_seq_nbr = %s  "		" 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.state='F0A' AND  "			"a.state='A')  "		,acct_id,acct_seq_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);			lpfree(lparm,ret);						cDatabase->Commit();			StrReturn(-1,lsTemp);		}	   		   		   	//修改帐户一次性费用表数据		sprintf(lsSql,		"UPDATE LBAS.SERV_ONCE_FEE  "		"SET state='A',  "			"state_date=sysdate,  "			"acct_id = %s,  "			"acct_seq_nbr = %s  "		" 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.state='F0A' AND  "			"a.state='1')  "		,acct_id,acct_seq_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);			lpfree(lparm,ret);						cDatabase->Commit();			StrReturn(-1,lsTemp);		}	   		   		   	break;	   		   	case 4:	   		   	//修改托收节余		sprintf(lsSql,		"UPDATE COMIT_BALANCE  "		"SET state='02',  "			"state_date=sysdate,  "			"pay_serial_nbr = %s  "		"WHERE acct_id= %s AND  "			"state='01'"		,pay_serial_nbr,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 COMIT_BALANCE  "		"VALUES (SEQ_COMIT_BALANCE.NEXTVAL,%s,%s,0,  "			"to_number('%s')*100,(-100)*to_number('%s'),  "			"'0A',%s,  "			"sysdate,'01',%s)  "		,acct_id,acct_seq_nbr,charge,charge,staff_id,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);			lpfree(lparm,ret);						cDatabase->Commit();			StrReturn(-1,lsTemp);		}				break;				case 5:			   	//插入预付款记录		sprintf(lsSql,		"INSERT INTO BALANCE_HIST_ADMIN  "		"VALUES (SEQ_BALANCE_HIST_ADMIN.NEXTVAL,%s,(-100)*to_number('%s'),'A',%s,0,sysdate,NULL,'01')  "		,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);		}								//更新销帐库预付款金额		sprintf(lsSql,		"UPDATE B_ACCT  "		"SET balance = 0  "		"WHERE acct_id = %s AND  "			"state = '10A'  "		,acct_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);		}			   			//更新计费库预付款金额		sprintf(lsSql,		"UPDATE LBAS.ACCT  "		"SET balance = 0  "		"WHERE acct_id = %s AND  "			"state = '10A'  "		,acct_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);		}	   		   		   	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,  "			"to_number('%s')*100,(-100)*to_number('%s'),  "			"'0A',sysdate,'01',%s)  "		,acct_id,charge,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,	   "INSERT INTO B_CANCEL_ACCT (cancel_id,acct_id,bill_item_id,  "	   	"charge,state,state_time,pay_serial_nbr,bill_serial_nbr)  "	   "VALUES (seq_b_cancel_acct.nextval,%s,%s,to_number('%s'),  "	   	"'C0P',sysdate,%s,%s )  "	   ,acct_id,bill_item_id,charge,pay_serial_nbr,bill_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);	   if(strcmp(bill_item_id,"2")==0)	   {	   	strcpy(change,charge);	   }		   //Case开始	   switch(atoi(bill_item_id))	   {              	case 1:              		   	sprintf(lsSql,	   	" UPDATE B_ACCT_ITEM_O "	   	"  set state='20P', "	   	"   bill_serial_nbr=%s "	   	" where serv_id = %s and "	   	 " state in ('20C','20Q','20Y','20T')"	   	 ,bill_serial_nbr,serv_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 3:	         	         //修改用户一次性费用表中以前结清数据		sprintf(lsSql,		"UPDATE LBAS.SERV_ONCE_FEE  "		"SET state='B',  "			"state_date=sysdate,  "			"acct_id = %s,  "			"acct_seq_nbr = %s  "		" 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.serv_id=%s and "			"b.state='F0A' AND  "			"a.state='A')  "		,acct_id,acct_seq_nbr,serv_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,		"UPDATE LBAS.SERV_ONCE_FEE  "		"SET state='A',  "			"state_date=sysdate,  "			"acct_id = %s,  "			"acct_seq_nbr = %s  "		" 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.serv_id=%s and "			"b.state='F0A' AND  "			"a.state='1')  "		,acct_id,acct_seq_nbr,serv_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();

⌨️ 快捷键说明

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