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

📄 charge_balance0908.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
*/		//userlog(paymaxno);		//if(strcmp(checknbr,NULL)==0||strcmp(checknbr,"")==0) strcpy(paymethod,"11");	//else strcpy(paymethod,"12");	/*	sprintf(lsSql,	"INSERT INTO PAYMENT   "	"(pay_serial_nbr,acct_id,acct_seq_nbr,payment_method,operation_type,   "	"oper_serial_nbr,amount,pay_date,staff_id,state,state_date,chequ_nbr,card_nbr)  "	"VALUES(%s,%s,%s,'%s','10',  "	"null,%s, sysdate,%s,'C0C',sysdate,'%s','')  "	,hist_id,acct_id,acct_seq_nbr,paymethod,amount,staff_id,checknbr);*/	sprintf(lsSql,	"INSERT INTO PAYMENT   "	"(pay_serial_nbr,acct_id,acct_seq_nbr,payment_method,operation_type,   "	"oper_serial_nbr,amount,pay_date,staff_id,state,state_date,chequ_nbr,card_nbr)  "	"select %s,%s,%s,payment_method,'10',  "	"null,%s, sysdate,%s,'C0C',sysdate,'%s','' from lbas.acct  "	"where acct_id=%s and acct_seq_nbr=%s  "	,hist_id,acct_id,acct_seq_nbr,amount,staff_id,checknbr,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,"向销帐库的PAYMENT表中插入付款记录时出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		//开户成功取系统时间返回	if(GetSystime(cDatabase,systime,lsErr)!=1 || systime==NULL)	{		strcpy(lsTemp,"开户取系统时间出错!\n");		strcat(lsTemp,lsErr);		WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);	}			cDatabase->Commit();	StrReturn(0,systime);			}//------------------------------------------------------------------------//服务 PBEraseBalance 实现函数,预付款返销//传入参数gl_staff_id,balance.acct_id,ls_hist_id,ls_charge,ls_present//------------------------------------------------------------------------void CBalance::EraseBalance(){	char lsSql[2048],lsTemp[1024],lsErr[500];	char *lparm[10];	char staff_id[10],acct_id[15],hist_id[10],amount[15];	int i,isqlcode,lpnum,rpnum,rt;	long ll_temp_balance;	char t_balance[20],t_advance[20],t_present[20],paymaxno[20];		strcpy(lsTemp,pInp);	lpnum=6;	rpnum=GetInputParm(lsTemp,lparm,100);//	//userlog("erase!");	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		cDatabase->Rollback();		strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n");		if(WriteLog(cDatabase,"-1","w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);	}	strcpy(staff_id,lparm[0]);	strcpy(acct_id,lparm[1]);	strcpy(hist_id,lparm[2]);//	strcpy(t_balance,lparm[3]);//	strcpy(t_advance,lparm[4]);//	strcpy(t_present,lparm[5]);	lpfree(lparm,rpnum);		sprintf(lsSql," select nvl(amount,0),nvl(balance,0),nvl(present,0) from balance_hist_admin "	              " where balance_hist_admin_id=%s "	              " and   acct_id=%s "	              " and   state='01' "	              ,hist_id,acct_id );	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());			if(isqlcode<0) 	{			strcpy(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"获取预付流水信息出错!\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	if(isqlcode==100 && cDatabase->GetRowCount()==0) 	{		strcpy(lsTemp,"该合同号有效流水信息不存在!\n");		StrReturn(-1,lsTemp);	}		strcpy(t_advance,cDatabase->data->GetColData(1,1));	strcpy(t_present,cDatabase->data->GetColData(1,3));		ll_temp_balance=atol(t_advance)+atol(t_present);	sprintf(t_balance,"%ld",ll_temp_balance);		 	sprintf(lsSql,"update balance_hist_admin "	              " set state='02' "	              " where balance_hist_admin_id=%s "	              " and acct_id=%s "	              " and state='01' "	              ,hist_id,acct_id);	//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());			if(isqlcode<0) 	{			strcpy(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"设置记录表状态出错!\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}				sprintf(lsSql,"update balance_hist_eff_exp "	              " set state='02', "	              " state_date=sysdate "	              " where balance_hist_admin_id=%s "	              " and acct_id=%s "	              " and state='01' "	              ,hist_id,acct_id);	//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());			if(isqlcode<0) 	{			strcpy(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"设置记录表状态出错!\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}			sprintf(lsSql," insert into erase_bill_list "	              " (erase_bill_list_id, "	              " billing_cycle_id, "	              " bill_serial_nbs,"	              " r_bill_serial_nbs,"	              " staff_id,"	              " pay_date,"	              " state)"	              " values( seq_erase_bill_list.nextval,1,1,1,%s,sysdate,'1') ",staff_id);	//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());			if(isqlcode<0) 	{			strcpy(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		sprintf(lsSql,"update balance_table_admin "	              " set total_amount=total_amount - %s, "	              " advance=advance - %s, "	              " present=present - %s  "	              " where acct_id=%s "	              ,t_balance,t_advance,t_present,acct_id);	              //	//userlog(lsSql);              	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());			if(isqlcode<0) 	{			strcpy(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"更新台帐表出错!\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		              			sprintf(lsSql," update lbas.acct "	              " set balance = balance- %s "	              " where acct_id=%s "	              " and state='10A' "	              ,t_balance,acct_id);	//userlog(lsSql);              	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());			if(isqlcode<0) 	{			strcpy(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"更新表lbas.acct总余额出错!\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		              		            	sprintf(lsSql," update b_acct "	              " set balance=balance- %s "	              " where acct_id=%s "	              " and state='10A' "	              ,t_balance,acct_id);	//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());			if(isqlcode<0) 	{			strcpy(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"更新表b_acct总余额出错!\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		      	sprintf(lsSql," update payment "	              " set state='C0R' "	              " where pay_serial_nbr=%s"	              " and acct_id=%s "	              ,hist_id,acct_id); //       //userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());			if(isqlcode<0) 	{			strcpy(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"更新支付表出错!\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	//插入预付款的付款记录	rt=GetMaxPayNo(cDatabase,staff_id,paymaxno,lsErr);	if(rt!=1)	{		strcpy(lsTemp,"生成预付款付款记录流水号时出错!\n");		strcat(lsTemp,lsErr);		strcat(lsTemp,"\n");		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);			}	//userlog(paymaxno);	sprintf(lsSql," select sum(amount) from bill "	              " where  acct_id=%s "	              " and pay_serial_nbr=%s "	              " and staff_id=%s "	              " and state='40C'"	              ,acct_id,hist_id,staff_id);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	              		if(isqlcode<0) 	{			strcpy(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"获取销帐金额失败\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}	char writeoff_amount[11];	if(isqlcode==100  || cDatabase->GetRowCount()==0) 	{		strcpy(writeoff_amount,"0");	}	else	{		strcpy(writeoff_amount, cDatabase->GetData());		if(writeoff_amount[0]==0 || writeoff_amount[0]==' ' )			strcpy(writeoff_amount,"0");	}			/*	sprintf(lsSql,	"INSERT INTO PAYMENT   "	"(pay_serial_nbr,acct_id,acct_seq_nbr,payment_method,operation_type,   "	"oper_serial_nbr,amount,pay_date,staff_id,state,state_date,chequ_nbr,card_nbr)  "	"select %s,acct_id,acct_seq_nbr,payment_method,'10',  "	"null,-(%s-%s), sysdate,%s,'C0S',sysdate,'',''  "	" from payment where acct_id=%s and pay_serial_nbr=%s "	,paymaxno,t_advance,writeoff_amount,staff_id,acct_id,hist_id);*/	sprintf(lsSql,	"INSERT INTO PAYMENT   "	"(pay_serial_nbr,acct_id,acct_seq_nbr,payment_method,operation_type,   "	"oper_serial_nbr,amount,pay_date,staff_id,state,state_date,chequ_nbr,card_nbr)  "	"select %s,acct_id,acct_seq_nbr,payment_method,'10',  "	"%s,-(%s), sysdate,%s,'C0S',sysdate,'',''  "	" from payment where acct_id=%s and pay_serial_nbr=%s "	,paymaxno,hist_id,t_advance,staff_id,acct_id,hist_id);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());		if(isqlcode<0) 	{			strcpy(lsTemp,"向销帐库的PAYMENT表中插入付款记录时出错!\n");		strcat(lsTemp,cDatabase->GetSqlErrText());		strcat(lsTemp,"\n");		cDatabase->Rollback();		if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-1,lsTemp);	}		              	cDatabase->Commit();	//存取成功将系统时间返回		StrReturn(0,lsTemp);			}//------------------------------------------------------------------------//服务PBDelBal实现函数,预付款销户//传入参数staff_id,acct_id,acct_seq_nbr,checknbr//------------------------------------------------------------------------void CBalance::DelBalUser(){	char lsSql[2048],lsTemp[1024],lsErr[500];	char *lparm[10];	char staff_id[10],acct_id[15],acct_seq_nbr[4],checknbr[50];	char paymaxno[30],paymethod[4],amount[15],systime[20];	int i,isqlcode,lpnum,rpnum;	int rt;		char present[15];		strcpy(lsTemp,pInp);	//userlog(lsTemp);	lpnum=4;		rpnum=GetInputParm(lsTemp,lparm,100);	if(rpnum!=lpnum)	{		lpfree(lparm,rpnum);		cDatabase->Rollback();		strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n");		if(WriteLog(cDatabase,"-1","w_p_balance",lsTemp,lsErr)!=1)			strcat(lsTemp,lsErr);		cDatabase->Commit();		StrReturn(-2,lsTemp);	}	strcpy(staff_id,lparm[0]);	strcpy(acct_id,lparm[1]);	strcpy(acct_seq_nbr,lparm[2]);	strcpy(checknbr,lparm[3]);		lpfree(lparm,rpnum);			cDatabase->BeginTran();		//检查合同号是否存在于预付款帐户中	sprintf(lsSql,	"SELECT acct_id   "	"FROM BALANCE_TABLE_ADMIN   "	"WHERE acct_id = %s AND  "		"state = '1'  "	,acct_id);		//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatab

⌨️ 快捷键说明

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