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

📄 charge_sell.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			if(isqlcode<0)		{			strcpy(lsRetstr,cDatabase->GetSqlErrText());			cDatabase->Rollback();			strcpy(lsTemp,"删除滞纳金出错");strcat(lsTemp,"\n");			if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			erase_list.FreeList(1);			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_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			erase_list.FreeList(1);			StrReturn(-1,lsTemp);		}			if(cDatabase->GetRowCount()!=1)		{			strcpy(lsTemp,"修改销帐记录状态出错,没有销帐记录被修改");			cDatabase->Rollback();			if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			erase_list.FreeList(1);			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_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			erase_list.FreeList(1);			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_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			erase_list.FreeList(1);			StrReturn(-1,lsTemp);		}			if(cDatabase->GetRowCount()!=1)		{			strcpy(lsTemp,"修改付款记录状态出错,没有付款记录被修改");			cDatabase->Rollback();			if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			erase_list.FreeList(1);			StrReturn(-1,lsTemp);		}				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)*b.amount,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);			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_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			erase_list.FreeList(1);			StrReturn(-1,lsTemp);		}			if(cDatabase->GetRowCount()!=1)		{			strcpy(lsTemp,"插入付款记录状态出错,没有付款记录被插入");			cDatabase->Rollback();			if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			erase_list.FreeList(1);			StrReturn(-1,lsTemp);		}				sprintf(lsSql,"UPDATE B_ACCT a "				"SET a.change=(SELECT b.change "						"FROM BILL b  "					      "WHERE a.acct_id=b.acct_id  "						"AND a.state='10A'  "						"AND b.bill_serial_nbr=%s) "				"where (a.acct_id,a.state) in (SELECT c.acct_id,'10A' "						"FROM BILL c  "					      "WHERE c.bill_serial_nbr=%s)		"			,bill_serial_nbr,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_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			erase_list.FreeList(1);			StrReturn(-1,lsTemp);		}			sprintf(lsSql,			"UPDATE LBAS.ACCT a "				"SET a.change=(SELECT b.change  "						"FROM BILL b  "					      "WHERE a.acct_id=b.acct_id  "						"AND a.state='10A'  "						"AND b.bill_serial_nbr=%s) "			"where (a.acct_id,a.state) in (SELECT c.acct_id,'10A' "						"FROM BILL c  "					      "WHERE c.bill_serial_nbr=%s) "			,bill_serial_nbr,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_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			erase_list.FreeList(1);			StrReturn(-1,lsTemp);		}			sprintf(lsSql,		        "INSERT INTO ERASE_BILL_LIST "		        "SELECT  SEQ_ERASE_BILL_LIST.NEXTVAL, aa.* "			"FROM	(SELECT DISTINCT b.serv_id,b.serv_seq_nbr,b.billing_cycle_id,b.bill_serial_nbr, "					 "%s,a.staff_id,a.pay_date,'0' "				"FROM BILL a,B_ACCT_ITEM_O b "				"WHERE a.bill_serial_nbr = b.bill_serial_nbr AND "				"b.bill_serial_nbr = %s) aa "		,pay_serial_nbr,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_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)			{				strcat(lsTemp,lsErr);				cDatabase->Rollback();			}			else				cDatabase->Commit();			erase_list.FreeList(1);			StrReturn(-1,lsTemp);		}	}	sprintf(lsSql,"DELETE B_ACCT_ITEM_SELL WHERE staff_id=%s AND created_billing_cycle_id=%s AND "			"	sell_id=%s AND state='S0P' AND acc_nbr BETWEEN '%s' AND '%s' ",		StaffID,CBillingCycleID,SellID,StartNbr,EndNbr);	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_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		erase_list.FreeList(1);		StrReturn(-1,lsTemp);	}	cDatabase->Commit();	erase_list.FreeList(1);	StrReturn(0,"返销处理成功");}void CSell::SellPrint(char *StaffID,char *CBillingCycleID,char *StartNbr,char *EndNbr,char *SellID){	char lsSql[600],lsTemp[1024],lsErr[500],lsRetstr[500],pay_serial_nbr[19];	int isqlcode,lrow;	sprintf(lsSql,"SELECT DISTINCT to_char(c.bill_serial_nbr),to_char(c.created_date,'yyyy-mm-dd hh24:mi:ss'),c.acct_id,c.change "			"FROM B_ACCT_ITEM_SELL a, "			"	  B_BILLING_CYCLE b,BILL c "			"WHERE a.billing_cycle_id = b.billing_cycle_id AND c.bill_serial_nbr = a.bill_serial_nbr AND "			"		a.created_billing_cycle_id=%s AND a.state='S0P' AND "			"		a.acc_nbr BETWEEN '%s' AND '%s' AND a.sell_id=%s AND c.state = '40C'  "			"ORDER BY to_char(c.created_date,'yyyy-mm-dd hh24:mi:ss'),to_char(c.bill_serial_nbr) ",			CBillingCycleID,StartNbr,EndNbr,SellID);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,lsTemp);		cDatabase->Rollback();		strcpy(lsTemp,"提取批量打发票数据失败");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}		if(cDatabase->GetRowCount()==0)	{		strcpy(lsTemp,"没有找到批量打发票数据");		cDatabase->Rollback();		if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(100,lsTemp);	}		StrReturn(isqlcode,cDatabase->GetData());}void CSell::SellSelect(char *StaffID){	char lsSql[600],lsTemp[1024],lsErr[500],lsRetstr[500];	int isqlcode,lrow;		sprintf(lsSql,"SELECT c.sell_id,c.sell_name from STAFF a , SELL_SITE b,SELL c "	              "where a.staff_id = %s and a.site_id=b.site_id and b.sell_id=c.sell_id ",StaffID);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,lsTemp);		cDatabase->Rollback();		strcpy(lsTemp,"提取买断点失败");		strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}		if(cDatabase->GetRowCount()==0)	{		strcpy(lsTemp,"没有找到买断点");		cDatabase->Rollback();		if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(100,lsTemp);	}		StrReturn(isqlcode,cDatabase->GetData());	}	               void CSell::SellList(char *StaffID,char *CBillingCycleID,char *SellID){	char lsSql[600],lsTemp[1024],lsErr[500],lsRetstr[500],pay_serial_nbr[19];	int isqlcode,lrow;	sprintf(lsSql,"SELECT a.ACC_NBR,b.customer_name,a.BILLING_CYCLE_ID,a.AMOUNT/100.00,a.LAST_CHANGE/100.00,a.CHARGE/100.00,a.LATE_FEE/100.00,"			"	a.DERATED/100.00,a.BALANCE/100.00,a.LAST_BALANCE/100.00,a.CHANGE/100.00,a.BILL_SERIAL_NBR  "			"FROM B_ACCT_ITEM_SELL a,B_ACCT b "			"WHERE a.acc_nbr=b.acc_nbr and "			" b.state<>'10X' AND "			" a.created_billing_cycle_id=%s AND "			" a.state='S0P' AND "			" a.sell_id=%s "			" ORDER BY a.ACC_NBR,a.BILLING_CYCLE_ID ",			CBillingCycleID,SellID);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,lsTemp);		cDatabase->Rollback();		strcpy(lsTemp,"提取批量销帐清单失败");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}		if(cDatabase->GetRowCount()==0)	{		strcpy(lsTemp,"没有找到批量销帐清单");		cDatabase->Rollback();		if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(100,lsTemp);	}		StrReturn(isqlcode,cDatabase->GetData());}void CSell::SellStat(char *StaffID,char *CBillingCycleID,char *SellID){	char lsSql[600],lsTemp[1024],lsErr[500],lsRetstr[500],pay_serial_nbr[19];	int isqlcode,lrow;	sprintf(lsSql,"SELECT b.name,c.sell_name,sum(a.charge)/100.00,sum(a.late_fee)/100.00,count(DISTINCT a.acct_id),"			"	 sum(a.item_count),sum(a.derated)/100.00,sum(a.balance)/100.00,sum(a.amount)/100.00,sum(a.last_change)/100.00,"			"	 sum(a.change)/100.00 "			"FROM b_acct_item_sell a,staff b,sell c "			"WHERE a.staff_id=b.staff_id AND a.sell_id=c.sell_id AND "			"		a.created_billing_cycle_id=%s AND a.state='S0P' AND a.sell_id=%s "			"GROUP BY b.name,c.sell_name",			CBillingCycleID,SellID);	cDatabase->DoSql(lsSql);	isqlcode=cDatabase->GetSqlCode();	if(isqlcode<0)	{		strcpy(lsRetstr,lsTemp);		cDatabase->Rollback();		strcpy(lsTemp,"提取批量销帐统计失败");strcat(lsTemp,"\n");		if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(-1,lsTemp);	}		if(cDatabase->GetRowCount()==0)	{		strcpy(lsTemp,"没有找到批量销帐统计数据");		cDatabase->Rollback();		if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1)		{			strcat(lsTemp,lsErr);			cDatabase->Rollback();		}		else			cDatabase->Commit();		StrReturn(100,lsTemp);	}		StrReturn(isqlcode,cDatabase->GetData());}

⌨️ 快捷键说明

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