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

📄 charge_jlt_print.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					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(old_change,new_change);


			sprintf(charge,"0");


			isqlcode=GetMaxBillNo(cDatabase,StaffID,bill_serial_nbr,lsTemp);


			if(isqlcode<0)


			{


				strcpy(lsRetstr,lsTemp);


				cDatabase->Rollback();


				strcpy(lsTemp,"提取最大销帐流水号出错1");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(strcmp(acct_id,acct_id_cur)!=0)


		{


			sprintf(lsSql,"UPDATE B_ACCT SET change=%s WHERE acct_id=%s AND state='10A'",new_change,acct_id);





			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,"UPDATE LBAS.ACCT SET change=%s WHERE acct_id=%s AND state='10A'",new_change,acct_id);





			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);


			}





			for(int i=1;i<=user_num;i++)


			{


				len=20;


				Fget32(tpst,ACCT_ID_USER,i-1,lsTemp,&len);


				if(strcmp(lsTemp,acct_id_cur)==0)


				{


					len=20;


					Fget32(tpst,CHANGE_USER,i-1,lsTemp,&len);


					strcpy(old_change,lsTemp);


				}


			}


		}





/*		if(strcmp(pay_type,"1")==0)


			sprintf(lsSql,"UPDATE B_ACCT_ITEM_O SET state='20R',state_date=sysdate,bill_serial_nbr=%s WHERE acct_id = %s AND billing_cycle_id = %s AND partner_id = %s AND bill_item_id = %s AND state='20Q'",bill_serial_nbr,acct_id_cur,billing_cycle_id_cur,partner_id,bill_item_id);


		else


			sprintf(lsSql,"UPDATE B_ACCT_ITEM_O SET state='20R',state_date=sysdate,bill_serial_nbr=%s WHERE serv_id = %s AND billing_cycle_id = %s AND partner_id = %s AND bill_item_id = %s AND state='20Q'",bill_serial_nbr,serv_id,billing_cycle_id_cur,partner_id,bill_item_id);





		//userlog(lsSql);


		cDatabase->DoSql(lsSql);


		isqlcode=cDatabase->GetSqlCode();


		//userlog("sqlcode= %d",isqlcode);





		if(isqlcode<0)


		{


			strcpy(lsRetstr,cDatabase->GetSqlErrText());


			cDatabase->Rollback();


			strcpy(lsTemp,"更新帐目状态20R到20Q出错");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);


		}





		item_count=item_count - cDatabase->GetRowCount();


*///因为使用decode()函数处理,所以将以上语句注释掉(钮新修改于2002年01月)


		if(strcmp(pay_type,"1")==0)


			sprintf(lsSql," UPDATE /*+ USE_CONCAT */ B_ACCT_ITEM_O "


			                 " SET state=decode(state,'20C','20P','20Q','20R','20T','20X','20Y','20U','20S','20W','20Z','20V',state),"


			                     " state_date=sysdate,"


			                     " bill_serial_nbr=%s "


			               " WHERE acct_id = %s "


			                 " AND billing_cycle_id = %s "


			                 " AND partner_id = %s "


			                 " AND bill_item_id = %s"


			                 " AND state in ('20C','20Q','20T','20Y','20S','20Z')"


			,bill_serial_nbr,acct_id_cur,billing_cycle_id_cur,partner_id,bill_item_id);


		else


			sprintf(lsSql," UPDATE /*+ USE_CONCAT */ B_ACCT_ITEM_O "


			                 " SET state=decode(state,'20C','20P','20Q','20R','20T','20X','20Y','20U','20S','20W','20Z','20V',state),"


			                     " state_date=sysdate,"


			                     " bill_serial_nbr=%s "


			               " WHERE serv_id = %s "


			                 " AND billing_cycle_id = %s "


			                 " AND partner_id = %s "


			                 " AND bill_item_id = %s"


			                 " AND state in ('20C','20Q','20T','20Y','20S','20Z')"


			,bill_serial_nbr,serv_id,billing_cycle_id_cur,partner_id,bill_item_id);





		cDatabase->DoSql(lsSql);


		isqlcode=cDatabase->GetSqlCode();





		if(isqlcode<0)


		{


			strcpy(lsRetstr,cDatabase->GetSqlErrText());


			cDatabase->Rollback();


			strcpy(lsTemp,"更新帐目状态20C到20P出错");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(item_count!=cDatabase->GetRowCount())


		{


			strcpy(lsTemp,"更新帐目状态20C到20P出错,更新帐目数目不合");


			cDatabase->Rollback();


			if(WriteLog(cDatabase,StaffID,"w_p_charge",lsTemp,lsErr)!=1)


			{


				strcat(lsTemp,lsErr);


				cDatabase->Rollback();


			}


			else


				cDatabase->Commit();


			StrReturn(-1,lsTemp);


		}





		sprintf(charge,"%d",atol(charge)+atol(charge_cur));


		sprintf(acct_id,acct_id_cur);


		sprintf(billing_cycle_id,billing_cycle_id_cur);


	}





	for(int lrow1=1;lrow1<=late_num;lrow1++)


	{


		len=20;


		Fget32(tpst,ACCT_ID_LATE,lrow1-1,lsTemp,&len);


		if(strcmp(acct_id,lsTemp)==0)


		{


			len=20;


			Fget32(tpst,BILLING_CYCLE_ID_LATE,lrow1-1,lsTemp,&len);


			if(strcmp(billing_cycle_id,lsTemp)==0)


			{


				len=20;


				Fget32(tpst,LATE_FEE_LATE,lrow1-1,lsTemp,&len);


				strcpy(late_fee,lsTemp);


				len=20;


				Fget32(tpst,DERATE_LATE,lrow1-1,lsTemp,&len);


				strcpy(derated,lsTemp);


				len=20;


				Fget32(tpst,ACCT_ITEM_ID_LATE,lrow1-1,lsTemp,&len);


				strcpy(max_item_id,lsTemp);





				if(strcmp(late_fee,"0")!=0)


				{


					sprintf(lsSql,"INSERT INTO B_ACCT_ITEM_O SELECT acct_item_id,serv_id,serv_seq_nbr,acct_id,acct_seq_nbr,1,%s,billing_cycle_id,sysdate,1,'20P',sysdate,0,0,1,1,%s,'1' FROM B_ACCT_ITEM_O WHERE acct_item_id=%s",late_fee,bill_serial_nbr,max_item_id);


					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);


					}


				}





				if(strcmp(derated,"0")!=0)


				{


					sprintf(lsSql,"INSERT INTO B_ACCT_ITEM_O SELECT acct_item_id,serv_id,serv_seq_nbr,acct_id,acct_seq_nbr,1,(-1)*%s,billing_cycle_id,sysdate,1,'20P',sysdate,0,0,1,1,%s,'3' FROM B_ACCT_ITEM_O WHERE acct_item_id=%s AND special_acct_flag='0'",derated,bill_serial_nbr,max_item_id);


					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(charge,"%d",atol(charge)+atol(old_change)+atol(late_fee)+atol(derated));


	sprintf(amount,"%d",atol(charge) / 100 * 100);


	sprintf(new_change,"%d",atol(charge) - atol(amount));


	sprintf(charge_total,"%d",atol(charge_total)+atol(amount));





	sprintf(lsSql,"INSERT INTO BILL (bill_serial_nbr,pay_serial_nbr,created_date,  "


											"	staff_id,pay_date,settle_date,print_count,  "


												"print_date,area_code,acc_nbr,state,state_date,  "


												"bill_serial_nbs,amount,acct_id,change)  "


						"VALUES (%s,%s,sysdate,%s,sysdate,null,1,sysdate,null,null,  "


								  "'40C',sysdate,%s,%s,%s,%s)",  


						bill_serial_nbr,pay_serial_nbs,StaffID,bill_serial_nbr,amount, 


						acct_id,old_change);





	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,"UPDATE B_ACCT SET change=%s WHERE acct_id=%s AND state='10A'",new_change,acct_id);





	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,"UPDATE LBAS.ACCT SET change=%s WHERE acct_id=%s AND state='10A'",new_change,acct_id);





	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)


⌨️ 快捷键说明

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