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

📄 charge_erase.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		cDatabase->Commit();		StrReturn(-1,lsTemp);	}        sprintf(acct_id,cDatabase->GetData());	                	cDatabase->BeginTran();	sprintf(lsSql," UPDATE /*+ all_rows */  B_ACCT_ITEM_O "	                 " SET state=decode(state,'20P','20C','20R','20Q','20X','20T','20U','20Y','20W','20S','20V','20Z',state), "	                 " state_date=sysdate "	               " WHERE acct_id=%s "	               " and bill_serial_nbr = %s "	                 " AND state in ('20P','20R','20X','20U','20W','20V')"	,acct_id,bill_serial_nbr);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"修改帐目状态出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}		sprintf(lsSql,	" INSERT INTO intf_acct_item(Acct_item_id,Billing_cycle_id,Acct_id, "					" Serv_id,Acct_item_type_id,Charge,Action,Action_date) "					" SELECT to_char(acct_item_id),to_char(billing_cycle_id),to_char(acct_id),to_char(serv_id), "					" to_char(acct_item_type_id),charge,'02',sysdate "					" FROM  B_ACCT_ITEM_O "						               " WHERE acct_id=%s "	               " AND bill_serial_nbr = %s "					" AND acct_item_type_id not in (1,999999,999998) "	                 " AND state in ('20C','20Q','20T','20Y','20S','20Z')"	,acct_id,bill_serial_nbr);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"插入实时帐务渠道数据接口表出错!");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}        sprintf(lsSql," delete from b_acct_item_sell where acct_id=%s and bill_serial_nbr=%s "                     ,acct_id,bill_serial_nbr );        cDatabase->DoSql(lsSql);               	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"删除b_acct_item_sell表中记录出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}	       	sprintf(lsSql,"SELECT acct_id,billing_cycle_id,charge FROM B_ACCT_ITEM_O WHERE bill_serial_nbr=%s AND acct_item_type_id = 999999 and special_acct_flag='4' ",bill_serial_nbr);	//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"查找预付费抵消帐目出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}		if(cDatabase->GetRowCount()==1)	{		rtrim(ltrim(strcpy(acct_id,cDatabase->data->GetColData(1,1))));		rtrim(ltrim(strcpy(billing_cycle_id,cDatabase->data->GetColData(1,2))));		rtrim(ltrim(strcpy(charge,cDatabase->data->GetColData(1,3))));						sprintf(lsSql,"DELETE B_ACCT_ITEM_O WHERE bill_serial_nbr=%s AND acct_item_type_id = 999999 and special_acct_flag='4' ",bill_serial_nbr);		cDatabase->DoSql(lsSql);		isqlcode=cDatabase->GetSqlCode();			if(isqlcode<0)		{			strcpy(lsRetstr,cDatabase->GetSqlErrText());			cDatabase->Rollback();			strcpy(lsTemp,"删除预付费抵消帐目出错");strcat(lsTemp,"\n");			if(WriteLog(cDatabase,StaffID,"w_p_charge",strcat(lsTemp,lsRetstr),lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			StrReturn(-1,lsTemp);		}			if(cDatabase->GetRowCount()!=1)		{			strcpy(lsTemp,"删除预付费抵消帐目出错,更新数目不合");			cDatabase->Rollback();			if(WriteLog(cDatabase,StaffID,"w_p_charge",lsTemp,lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			StrReturn(-1,lsTemp);		}	}	sprintf(lsSql,"DELETE /*+ all_rows */  B_ACCT_ITEM_O  WHERE bill_serial_nbr = %s AND acct_item_type_id = 1",bill_serial_nbr);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"删除滞纳金出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}	sprintf(lsSql,"UPDATE BILL SET state = '40R', state_date = sysdate WHERE bill_serial_nbr=%s",bill_serial_nbr);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"修改销帐记录出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}	isqlcode=GetMaxPayNo(cDatabase,StaffID,pay_serial_nbr,lsTemp);	if(isqlcode<0)	{		strcpy(lsRetstr,lsTemp);		cDatabase->Rollback();		strcpy(lsTemp,"提取最大付款流水号出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}	sprintf(lsSql,"UPDATE PAYMENT "			"SET state = 'C0R',state_date = sysdate "			"WHERE rowid in ( SELECT a.rowid "					"FROM payment a,BILL b  "					"WHERE a.pay_serial_nbr=b.pay_serial_nbr  "					"AND b.bill_serial_nbr=%s)",bill_serial_nbr);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"修改付款记录出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}        char hist_admin[10],balance[10],present[10];        sprintf(lsSql,"select nvl(amount,0),nvl(balance,0),acct_id,nvl(present,0) from balance_hist_admin "                      " where  bill_serial_nbr=%s "                      ,bill_serial_nbr);        //userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"从balance_hist_admin提取信息出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}	lrow=cDatabase->GetRowCount();	if(lrow>0)	{		rtrim(ltrim(strcpy(hist_admin,cDatabase->data->GetColData(1,1))));		rtrim(ltrim(strcpy(balance,cDatabase->data->GetColData(1,2))));		rtrim(ltrim(strcpy(acct_id,cDatabase->data->GetColData(1,3))));		rtrim(ltrim(strcpy(present,cDatabase->data->GetColData(1,4))));	}	else	{		strcpy(hist_admin,"0");		strcpy(balance,"0");		strcpy(present,"0");	}		        sprintf(lsSql," update balance_hist_admin "                      " set state='02' "                      " where bill_serial_nbr=%s "                      ,bill_serial_nbr );        //userlog(lsSql);              	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"删除balance_hist_admin信息出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}                             //pc版改动/*	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,b.acct_id,a.acct_seq_nbr,a.payment_method,'20',a.pay_serial_nbr, "								 "(-1)*(nvl(b.amount,0)),a.pay_date,b.staff_id,'C0S',sysdate,a.chequ_nbr,a.card_nbr "						"FROM PAYMENT a,BILL b "						"WHERE a.pay_serial_nbr=b.pay_serial_nbr AND "								"b.bill_serial_nbr=%s",pay_serial_nbr,bill_serial_nbr);*/									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,b.acct_id,a.acct_seq_nbr,a.payment_method,'20',a.pay_serial_nbr, "								 "(-1)*(nvl(b.amount,0)+nvl(c.amount,0)),a.pay_date,b.staff_id,'C0S',sysdate,a.chequ_nbr,a.card_nbr "						"FROM PAYMENT a,BILL b,balance_hist_admin c "						"WHERE a.pay_serial_nbr=b.pay_serial_nbr AND "						"b.bill_serial_nbr=%s and b.bill_serial_nbr=c.bill_serial_nbr(+)"						,pay_serial_nbr,bill_serial_nbr);	//userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"生成反销付款记录出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}	sprintf(lsSql,"UPDATE B_ACCT  "		"SET change=(SELECT BILL.change "					"FROM B_ACCT,BILL "				      "WHERE B_ACCT.acct_id=BILL.acct_id  "					"AND B_ACCT.state='10A'  "					"AND BILL.bill_serial_nbr=%s), "		" balance=(balance - (%s)) "						"where B_ACCT.rowid in (SELECT B_ACCT.rowid "					"FROM B_ACCT ,BILL   "				      "WHERE B_ACCT.acct_id=BILL.acct_id  "					"AND B_ACCT.state='10A'  "					"AND BILL.bill_serial_nbr=%s)"		,bill_serial_nbr,hist_admin,bill_serial_nbr);	//userlog(lsSql);				cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"更新销帐库零头出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}	sprintf(lsSql,		"UPDATE LBAS.ACCT  "			"SET change=(SELECT BILL.change  "					"FROM LBAS.ACCT,BILL   "				      "WHERE LBAS.ACCT.acct_id=BILL.acct_id  "					"AND LBAS.ACCT.state='10A'  "					"AND BILL.bill_serial_nbr=%s), "			" balance=(balance-(%s)) "		"where LBAS.ACCT.rowid in (SELECT LBAS.ACCT.rowid  "					"FROM LBAS.ACCT,BILL   "				      "WHERE LBAS.ACCT.acct_id=BILL.acct_id  "					"AND LBAS.ACCT.state='10A'  "					"AND BILL.bill_serial_nbr=%s) "		,bill_serial_nbr,hist_admin,bill_serial_nbr);	       //userlog(lsSql);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,cDatabase->GetSqlErrText());		cDatabase->Rollback();		strcpy(lsTemp,"更新计费库零头出错");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)

⌨️ 快捷键说明

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