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

📄 charge_payment.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 IN ('latefee_ratio','card_type','totdisc_id','max_invo_item_count', "	               " 'partner_id','entrust','otherarea','othersite','deratemode','superstaffid',"	               " 'advertise','notchange','repinvoice','invoice_format','unpayrole','otherunpayrole',"	               " 'othersiterole','address_flag','balance_flag')");	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,"未找到系统参数");	} 	cDatabase->GetData();	retlong = strlen(cDatabase->GetData());	para_ret = (char *) malloc(retlong);	strcpy(para_ret,cDatabase->GetData());     	//提取发票项目定义		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' order by merger_item_id");	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,"未找到发票定义项目");	}		retlong = strlen(cDatabase->GetData());	invo_ret = (char *) malloc(retlong);	strcpy(invo_ret,cDatabase->GetData()); 	//提取运营商信息	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());	        //userlog("err: %s",cDatabase->GetSqlErrText());        	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' order by merger_item_id");	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,"未找到最大销帐日期");	} 	strcpy(max_date,cDatabase->data->GetColData(1,1));	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));*/	stat1_ret = NULL;	stat2_ret = NULL;	stat3_ret = NULL;		//提取营业区最大和最小合同号	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());	if(isqlcode<0)	{		strcpy(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n");

⌨️ 快捷键说明

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