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

📄 charge_jlt_print.cpp

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


#include "payment.flds.h"





CPayment::CPayment(char *pcInp,COracle *pcDatabase)


{


	cDatabase = pcDatabase;


	pInp = pcInp;


}








void CPayment::SysInit(char *StaffID,char *AreaID)


{


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


	int isqlcode,lrow,strlong,retlong;


	char *para_ret,*invo_ret,*stat1_ret,*stat2_ret,*stat3_ret;


	char *max_acct_id,*min_acct_id,*partner_ret,*item_ret,*payment_ret;


	char max_date[5],this_date[9];


	int max_invo_count;





	//提取系统参数


	sprintf(lsSql,"SELECT para_name,para_value FROM LBAS_PARAMETER WHERE para_name NOT IN ('acct','lbas','payment')");





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


	//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,"未找到系统参数");


	}





	rtrim(ltrim(cDatabase->GetData()));


	retlong = strlen(cDatabase->GetData());


	para_ret = (char *) malloc(retlong);


	strcpy(para_ret,cDatabase->GetData());


	rtrim(ltrim(para_ret));





	//提取发票项目定义


	sprintf(lsSql,"SELECT NVL(para_value,'22') FROM LBAS_PARAMETER WHERE para_name='max_invo_item_count'");





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


	//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,"未找到最大发票项数目");


	}





	max_invo_count=atoi(cDatabase->GetData());


	if(lrow>max_invo_count) 


	{


		cDatabase->Commit();


		StrReturn(-1,"发票项数目定义大于最大发票项数目");


	}





	sprintf(lsSql,"SELECT merger_item_id,name FROM B_MERGER_ITEM WHERE B_MERGER_ITEM.merger_item_type = '3'");





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


	//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,"未找到发票定义项目");


	}





	rtrim(ltrim(cDatabase->GetData()));


	retlong = strlen(cDatabase->GetData());


	invo_ret = (char *) malloc(retlong);


	strcpy(invo_ret,cDatabase->GetData());


	rtrim(ltrim(invo_ret));





	//提取运营商信息


	sprintf(lsSql,"SELECT partner_id,partner_name FROM LBAS.PARTNER");





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


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


	{


		StrReturn(100,"未找到运营商信息");


	}





	rtrim(ltrim(cDatabase->GetData()));


	retlong = strlen(cDatabase->GetData());


	partner_ret = (char *) malloc(retlong);


	strcpy(partner_ret,cDatabase->GetData());


	rtrim(ltrim(partner_ret));





	//提取付款方式


	sprintf(lsSql,"SELECT payment_method,payment_method_name FROM domain_payment_method");





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


	//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,"未找到付款方式信息");


	}





	rtrim(ltrim(cDatabase->GetData()));


	retlong = strlen(cDatabase->GetData());


	payment_ret = (char *) malloc(retlong);


	strcpy(payment_ret,cDatabase->GetData());


	rtrim(ltrim(payment_ret));





	//提取销帐归属定义


	sprintf(lsSql,"SELECT name,merger_item_id FROM B_MERGER_ITEM WHERE merger_item_type = '2'");





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


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


		return;


	}





	lrow=cDatabase->GetRowCount();


	if(lrow==0) 


	{


		cDatabase->Commit();


		StrReturn(100,"未找到销帐归属定义");


	}





	rtrim(ltrim(cDatabase->GetData()));


	retlong = strlen(cDatabase->GetData());


	item_ret = (char *) malloc(retlong);


	strcpy(item_ret,cDatabase->GetData());


	rtrim(ltrim(item_ret));





	//更改最大销帐日期


	sprintf(lsSql,"SELECT NVL(max_date,''),to_char(sysdate,'yyyymmdd') FROM STAFF WHERE staff_id = %s",StaffID);


	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


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


		return;


	}





	lrow=cDatabase->GetRowCount();


	if(lrow==0) 


	{


		cDatabase->Commit();


		StrReturn(100,"未找到最大销帐日期");


	}





	rtrim(ltrim(strcpy(max_date,cDatabase->data->GetColData(1,1))));


	rtrim(ltrim(strcpy(this_date,cDatabase->data->GetColData(1,2))));


	if(strncmp(max_date,this_date+4,4)!=0)


	{


		sprintf(lsSql,"UPDATE STAFF SET max_date=SUBSTR('%s',5,4),pay_max_no=0,bill_max_no=0 WHERE staff_id = %s",this_date,StaffID);


		cDatabase->DoSql(lsSql);


		isqlcode=cDatabase->GetSqlCode();


		//userlog(lsSql);


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


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





		if(isqlcode<0)


		{


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


			cDatabase->Rollback();


			strcpy(lsRetstr,"更改最大销帐日期失败");


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


				strcat(lsTemp,lsErr);


			cDatabase->Commit();


			StrReturn(-1,lsTemp);


			return;


		}


	}





	//提取当日收费合计


	sprintf(lsSql,"SELECT NVL(sum(amount),0) FROM PAYMENT WHERE staff_id = %s AND pay_date >= to_date('%s','yyyymmdd hh24:mi:ss') AND payment_method = '11'",StaffID,this_date);





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


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


		return;


	}





	lrow=cDatabase->GetRowCount();


	if(lrow==0) 


	{


		cDatabase->Commit();


		StrReturn(100,"未找到现金缴费合计");


	}





	rtrim(ltrim(cDatabase->GetData()));


	retlong = strlen(cDatabase->GetData());


	stat1_ret = (char *) malloc(retlong);


	strcpy(stat1_ret,cDatabase->GetData());


	rtrim(ltrim(stat1_ret));





	sprintf(lsSql,"SELECT NVL(sum(amount),0) FROM PAYMENT WHERE staff_id = %s AND pay_date >= to_date('%s','yyyymmdd hh24:mi:ss') AND payment_method = '12'",StaffID,this_date);





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


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


		return;


	}





	lrow=cDatabase->GetRowCount();


	if(lrow==0) 


	{


		cDatabase->Commit();


		StrReturn(100,"未找到支票缴费合计");


	}





	rtrim(ltrim(cDatabase->GetData()));


	retlong = strlen(cDatabase->GetData());


	stat2_ret = (char *) malloc(retlong);


	strcpy(stat2_ret,cDatabase->GetData());


	rtrim(ltrim(stat2_ret));





	sprintf(lsSql,"SELECT NVL(sum(amount),0) FROM PAYMENT WHERE staff_id = %s AND pay_date >= to_date('%s','yyyymmdd hh24:mi:ss') AND payment_method = '30'",StaffID,this_date);





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


	//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,"未找到信用卡缴费合计");


	}





	rtrim(ltrim(cDatabase->GetData()));


	retlong = strlen(cDatabase->GetData());


	stat3_ret = (char *) malloc(retlong);


	strcpy(stat3_ret,cDatabase->GetData());


	rtrim(ltrim(stat3_ret));





	//提取营业区最大和最小合同号


	sprintf(lsSql,"SELECT NVL(max_acct_id,0) FROM LBAS.AREA WHERE area_id = %s",AreaID);





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


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


		return;


	}





	lrow=cDatabase->GetRowCount();


	if(lrow==0) 


	{


		cDatabase->Commit();


		StrReturn(100,"未找到营业区最大合同号");


	}





	rtrim(ltrim(cDatabase->GetData()));


	retlong = strlen(cDatabase->GetData());


	max_acct_id = (char *) malloc(retlong);


	strcpy(max_acct_id,cDatabase->GetData());


	rtrim(ltrim(max_acct_id));





	sprintf(lsSql,"SELECT NVL(max(max_acct_id),0) FROM LBAS.AREA WHERE max_acct_id < %s",max_acct_id);





	cDatabase->DoSql(lsSql);


	isqlcode=cDatabase->GetSqlCode();


	//userlog(lsSql);


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


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





⌨️ 快捷键说明

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