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

📄 charge_jlt_print.cpp

📁 通信BOSS计费方面的服务器源码,有很多经典的创意,值得借鉴,在UNIX上运行.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	{


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


	}





	len=20;


	Fget32(tpst,ACCT_SEQ_NBR,0,lsTemp,&len);


	strcpy(acct_seq_nbr,lsTemp);


	len=20;


	Fget32(tpst,ACCT_ID_USER,0,lsTemp,&len);


	strcpy(acct_id,lsTemp);


	len=20;


	Fget32(tpst,PAYMENT_METHOD,0,lsTemp,&len);


	strcpy(payment_method,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)  "


						"VALUES (%s,%s,%s,'%s','10',null,%s,sysdate,%s,'C0C',sysdate,%s,%s)"


									,pay_serial_nbs,acct_id,acct_seq_nbr,payment_method,


									charge_total,StaffID,chequ_nbr,card_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,


	        "INSERT INTO SERV_PAID_UNPAY  "


		"SELECT  seq_serv_paid_unpay.NEXTVAL, aa.*  "


		"FROM	(SELECT  /*+ all_rows */ serv_id,null,bill_serial_nbr,billing_cycle_id,sysdate,'0'  "


			"FROM B_ACCT_ITEM_O a  "


			"WHERE a.bill_serial_nbr>=%s AND a.state='20R' AND a.serv_id<>null AND  "


				"SUBSTR(to_char(a.bill_serial_nbr),1,%d)='%s' AND  "


				"NOT EXISTS (SELECT 1 FROM B_ACCT_ITEM_O b WHERE b.state='20Q' AND b.serv_id = a.serv_id)) aa"


	,bill_serial_nbs,strlen(StaffID),StaffID);





	//userlog(lsSql);


	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


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


	


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


	}





	cDatabase->Commit();





	StrReturn(0,pay_serial_nbs);


}





void CPayment::PRGetIT()


{


	char lsSql[1024],lsTemp[1024],lsErr[500];


	int isqlcode;


	char bill_serial_nbr[20],staff_id[20];


	char *lparm[3],*bill_format_id;


	int i,lpnum,rpnum;





	lpnum=2;


	rpnum=GetInputParm(pInp,lparm,50);


	if(rpnum!=lpnum)


	{


		lpfree(lparm,rpnum);


		strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n");


		if(WriteLog(cDatabase,"-1","w_p_invoice_rprint",lsTemp,lsErr)!=1)


			strcat(lsTemp,lsErr);


		cDatabase->Commit();


		StrReturn(-2,lsTemp);


	}





	strcpy(staff_id,lparm[0]);


	strcpy(bill_serial_nbr,lparm[1]);


	lpfree(lparm,rpnum);





	////userlog("\nreceive data  bill_format_type: %s",bill_format_type);


	cDatabase->BeginTran();


	sprintf(lsSql,


	"UPDATE BILL  "


      "SET print_count = print_count + 1  "


    "WHERE bill_serial_nbr = %s  "


	 ,bill_serial_nbr);





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();





	if(isqlcode!=0)


	{


		cDatabase->Rollback();


		strcpy(lsTemp,"检索帐单格式记录出错!\n");


		strcat(lsTemp,cDatabase->GetSqlErrText());


		strcat(lsTemp,"\n");


		if(WriteLog(cDatabase,staff_id,"w_p_invoice_rprint",lsTemp,lsErr)!=1)


			strcat(lsTemp,lsErr);


		cDatabase->Commit();


		StrReturn(-1,lsTemp);


	}





	sprintf(lsSql,


	"SELECT b.bill_format_id "


        "  FROM BILL a, ACCT_BILL_FORMAT b "


        " WHERE a.bill_serial_nbr = %s  "


        "   AND a.acct_id = b.acct_id   "


	 ,bill_serial_nbr);





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();





	if(isqlcode<0)


	{


		cDatabase->Rollback();


		strcpy(lsTemp,"检索选用帐单格式记录出错!\n");


		strcat(lsTemp,cDatabase->GetSqlErrText());


		strcat(lsTemp,"\n");


		if(WriteLog(cDatabase,staff_id,"w_p_invoice_rprint",lsTemp,lsErr)!=1)


			strcat(lsTemp,lsErr);


		cDatabase->Commit();


		StrReturn(-1,lsTemp);


	}


	


	if(isqlcode==0 && cDatabase->GetRowCount()==0)


	{


		sprintf(lsSql,


		  "SELECT acct_id,  "


	         "max(serv_id) serv_id,  "


	         "billing_cycle_id,  "


	         "invo_item_id,"


	         "partner_id,"


	         "sum(charge) charge,"


	         "1,"


	         "%s  "


	    "FROM B_ACCT_ITEM_O  "


	   "WHERE ( bill_serial_nbr = %s )  "


	   "GROUP BY acct_id,  "


        	" billing_cycle_id,  "


		"partner_id,"


		"invo_item_id  "


		"order by acct_id, "


		"billing_cycle_id, "


		"partner_id, "


		"invo_item_id  "


		 ,bill_serial_nbr,bill_serial_nbr);


	}


	else


	{


		bill_format_id=cDatabase->GetData();


		sprintf(lsSql,


		  "SELECT a.acct_id,  "


	         	" max(a.serv_id) serv_id,  "


	         	" a.billing_cycle_id,  "


	         	" b.bill_item_type_id,"


	         	" a.partner_id,"


	         	" sum(a.charge) charge,"


	         	" 1,"


	         	" %s  "


		    "FROM B_ACCT_ITEM_O a,BILL_ACCT_ITEM_TYPE b  "


		   "WHERE a.bill_serial_nbr = %s  "


			"  AND b.bill_format_id = %s "


			"  AND a.acct_item_type_id = b.acct_item_type_id "


	   	"GROUP BY a.acct_id,  "


        		" a.billing_cycle_id,  "


			"a.partner_id,"


			"b.bill_item_type_id  "


	   	"order by a.acct_id, "


			"a.billing_cycle_id, "


			"a.partner_id, "


			"b.bill_item_type_id  "


		 ,bill_serial_nbr,bill_serial_nbr,bill_format_id);


	}


	





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();





	if(isqlcode<0)


	{


		cDatabase->Rollback();


		strcpy(lsTemp,"检索帐单格式记录出错!\n");


		strcat(lsTemp,cDatabase->GetSqlErrText());


		strcat(lsTemp,"\n");


		if(WriteLog(cDatabase,staff_id,"w_p_invoice_rprint",lsTemp,lsErr)!=1)


			strcat(lsTemp,lsErr);


		cDatabase->Commit();


		StrReturn(-1,lsTemp);


	}


	else if(isqlcode==0 && cDatabase->GetRowCount()==0) {cDatabase->Rollback();StrReturn(100,NULL);}


	else {cDatabase->Commit();StrReturn(isqlcode,cDatabase->GetData());}


}





//-----------------------------------------------------------------


//服务PPGetFor实现函数,传入参数StaffID,ItemType,Code


//取帐单对应帐单项数据


//-----------------------------------------------------------------


void CPayment::PPGetFor(char *StaffID,char *ItemType,char *Code)


{


	char lsSql[2048],lsTemp[1024],lsErr[500],lsRetstr[2048],lsRettemp[500];


	char *bill_format_id;


	int isqlcode,lrow;


	int itemtype;





	itemtype = atoi(ItemType);





	switch (itemtype)


	{


		case 1:  //按合同号销帐


			sprintf(lsSql,"SELECT /*+ all_rows */  bill_format_id "


				"FROM ACCT_BILL_FORMAT "


				"WHERE acct_id = %s ",Code);


			


			//userlog(lsSql);


			cDatabase->DoSql(lsSql);


			isqlcode=cDatabase->GetSqlCode();


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


			//userlog("RowCount= %d",cDatabase->GetRowCount());			


			


			if(isqlcode<0)


			{


				strcpy(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");


				strcpy(lsRetstr,"提取合同号帐目出错");


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


					strcat(lsTemp,lsErr);


				cDatabase->Commit();


				StrReturn(-1,lsTemp);


			}





			lrow=cDatabase->GetRowCount();


			if(lrow==0) 


			{


				cDatabase->Commit();


				StrReturn(100,"未找到合同号帐目");


			}


			


			break;





		case 2:  //按电话号销帐


			sprintf(lsSql,"SELECT /*+ all_rows */  bill_format_id "


				"FROM SERV_BILL_FORMAT "


				"WHERE serv_id = %s ",Code);





			cDatabase->DoSql(lsSql);


			isqlcode=cDatabase->GetSqlCode();





			if(isqlcode<0)


			{


				strcpy(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");


				strcpy(lsRetstr,"提取电话号帐目出错");


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


					strcat(lsTemp,lsErr);


				cDatabase->Commit();


				StrReturn(-1,lsTemp);


			}





			lrow=cDatabase->GetRowCount();


			if(lrow==0) 


			{


				cDatabase->Commit();


				StrReturn(100,"未找到电话号帐目");


			}


			


			break;





		default:


			cDatabase->Commit();


			StrReturn(-1,"未知的销帐类型");


	}


	


	bill_format_id=cDatabase->GetData();


	


	sprintf(lsSql,


   "SELECT BILL_ITEM_TYPE.bill_item_type_id,   "


         "BILL_ITEM_TYPE.name  "


    "FROM BILL_ITEM_TYPE  "


    "where bill_format_id= %s  "


	 ,bill_format_id);


	


	//userlog(lsSql);


	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());


	//userlog("检索返回行数:%d",cDatabase->GetRowCount());


	


	if(isqlcode<0)


	{	


		strcpy(lsTemp,"检索帐单对应项记录出错!\n");


		strcat(lsTemp,cDatabase->GetSqlErrText());


		strcat(lsTemp,"\n");


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


			strcat(lsTemp,lsErr);	


		cDatabase->Commit();


		StrReturn(-1,lsTemp);


	}	


	else if(isqlcode==0 && cDatabase->GetRowCount()==0) StrReturn(100,NULL);


	else StrReturn(isqlcode,cDatabase->GetData());	





}





//-----------------------------------------------------------------


//服务PPGetIT实现函数,传入参数staff_id,ItemType,Code


//取帐单对应帐单项数据


//-----------------------------------------------------------------


void CPayment::PPGetIT(char *StaffID,char *ItemType,char *Code)


{


	char lsSql[2048],lsTemp[1024],lsErr[500];


	int isqlcode,lrow;


	int itemtype;


	


	itemtype=atoi(ItemType);


//	userlog("itemtype:%d",itemtype);


	switch (itemtype)


	{


		case 1:  //按合同号打印发票


//			userlog("按合同号打印发票itemtype:%d",itemtype);


			sprintf(lsSql,


			 " SELECT e.acct_id, " 


			        " max(e.serv_id) serv_id, " 


		        	" e.billing_cycle_id, " 


		        	" e.invo_item_id, "


		        	" e.partner_id, "


		        	" sum(e.charge) charge, "


		        	" 1, "


		        	" e.bill_serial_nbr " 


			"    FROM B_ACCT_ITEM_O e,BILL f " 


 			"   WHERE f.pay_serial_nbr = %s "


	         	"    AND NOT EXISTS (SELECT 1 "


	                              	" FROM ACCT_BILL_FORMAT g"


	                             	" WHERE g.acct_id = e.acct_id ) " 


		            	" AND e.bill_serial_nbr = f.bill_serial_nbr "


			 "  GROUP BY e.acct_id, " 


		        	   " e.billing_cycle_id, " 


				   " e.partner_id, "


				   " e.invo_item_id, " 


			           " e.bill_serial_nbr " 


		         " UNION "


			 " SELECT a.acct_id, " 


			        " max(a.serv_id) serv_id, " 


			        " a.billing_cycle_id, " 


			        " b.bill_item_type_id, "


			        " a.partner_id, "


			        " sum(a.charge) charge, "


			        " 1, "


			        " a.bill_serial_nbr " 


			   " FROM B_ACCT_ITEM_O a,BILL_ACCT_ITEM_TYPE b,ACCT_BILL_FORMAT c,BILL d "  


			   "WHERE d.pay_serial_nbr = %s " 


			    " AND a.bill_serial_nbr = d.bill_serial_nbr "


			    " AND a.acct_id = c.acct_id "


			    " AND b.bill_format_id = c.bill_format_id " 


			    " AND a.acct_item_type_id = b.acct_item_type_id "


		   	"GROUP BY a.acct_id, " 


	       			" a.billing_cycle_id, " 


				" a.partner_id, "


				" b.bil

⌨️ 快捷键说明

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