📄 charge_ncpatch.cpp
字号:
#include "charge_ncpatch.h"#include "charge_public.h"#include "payment.flds.h"CNCpatch::CNCpatch(char *pcInp,COracle *pcDatabase){ cDatabase = pcDatabase; pInp = pcInp;}//------------------------------------------------------------------------//服务PPIsCharge调用函数//取帐目周期数据,参数staff_id,acct_id//------------------------------------------------------------------------void CNCpatch::GetItemChargeInfo(){ char lsSql[2048],lsTemp[1024],lsErr[500]; char staff_id[20],acct_id[20]; char *lparm[3]; long lrow; int isqlcode,lpnum,rpnum; char pay_serial_nbr[30]; lpnum=2; rpnum=GetInputParm(pInp,lparm,50); if(rpnum!=lpnum) { lpfree(lparm,rpnum); strcpy(lsTemp,"解析客户端传入参数失败,可能参数数据或传输格式不正确!\n"); StrReturn(-2,lsTemp); } strcpy(staff_id,lparm[0]); strcpy(acct_id,lparm[1]); lpfree(lparm,rpnum); sprintf(lsSql,"select max(a.pay_serial_nbr) from bill a " " where a.pay_date=( " " select max(a.pay_date) " " from bill a " " where a.acct_id=%s " " and state='40C') " " and a.acct_id=%s " " and a.state='40C' " ,acct_id,acct_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,staff_id,"w_p_charge",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } lrow=cDatabase->GetRowCount(); if(lrow==0) { StrReturn(100,"没有找到对应销帐记录!"); } strcpy(pay_serial_nbr,cDatabase->GetData()); ltrim(rtrim(pay_serial_nbr)); if(strcmp(pay_serial_nbr,NULL)==0||strcmp(pay_serial_nbr,"")==0) strcpy(pay_serial_nbr,"NULL"); sprintf(lsSql,"select a.acct_id,sum(a.amount)/100,a.staff_id,b.name,to_char(a.pay_date,'YYYY-MM-DD HH24:MI:SS') " " from bill a,staff b " " where a.acct_id=%s " " and a.staff_id=b.staff_id " " and pay_serial_nbr=to_number(%s) " " and a.state='40C' " " group by a.acct_id,a.staff_id,b.name,a.pay_date " ,acct_id,pay_serial_nbr ); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"提取是否交费相关数据出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_charge",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } lrow=cDatabase->GetRowCount(); if(lrow==0) { StrReturn(100,"没有找到对应数据!"); } cDatabase->Commit(); if(isqlcode==0 && cDatabase->GetRowCount()==0) StrReturn(100,NULL); StrReturn(0,cDatabase->GetData());}//------------------------------------------------------------------------//服务PSChargeSum调用函数//取帐目周期数据,参数staff_id,start_date,end_date//------------------------------------------------------------------------void CNCpatch::GetChargeSum(){ char lsSql[2048],lsTemp[1024],lsErr[500],lstmp[20]; char *lparm[5]; char staff_id[40],start_date[100],end_date[100]; int i,isqlcode,lpnum,rpnum; long len; lpnum=3; rpnum=GetInputParm(pInp,lparm,50); if(rpnum!=lpnum) { lpfree(lparm,rpnum); strcpy(lsTemp,"解析客户端传入参数失败,可能参数数据或传输格式不正确!\n"); StrReturn(-2,lsTemp); } sprintf(staff_id,"%s",lparm[0]); sprintf(start_date,"to_date('%s','yyyy-mm-dd hh24:mi:ss')",lparm[1]); sprintf(end_date,"to_date('%s','yyyy-mm-dd hh24:mi:ss')",lparm[2]); lpfree(lparm,rpnum); //删除营业员收费统计中间表记录 sprintf(lsSql,"delete stat_staff_item where stid = %s",staff_id); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"删除营业员收费统计中间表记录出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //插入收费明细统计费用 sprintf(lsSql,"insert into stat_staff_item(stid,staff_id,staff_name,bill_item_id,amount) " " SELECT %s,%s,null,a.invo_item_id,sum(NVL(a.charge,0))/100.00 " " FROM B_ACCT_ITEM_O a ,BILL b " " WHERE a.bill_serial_nbr=b.bill_serial_nbr " " and b.pay_date >= %s " " and b.pay_date < %s " " and a.state in ('20P','20R','20X','20U') " " and b.state='40C' " " and b.staff_id = %s " " GROUP BY a.invo_item_id " ,staff_id,staff_id,start_date,end_date,staff_id ); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"插入收费明细统计数据出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //插入预付款用户数据 sprintf(lsSql, "insert into stat_staff_item(stid,staff_id,staff_name,bill_item_id,amount) " "select %s,staff_id,null,-4000,count(distinct acct_id) " "from BALANCE_HIST_ADMIN " "WHERE BALANCE_HIST_ADMIN.use_catg in ( '1','2','3') AND " "BALANCE_HIST_ADMIN.staff_id = %s AND " "BALANCE_HIST_ADMIN.use_date >= %s AND " "BALANCE_HIST_ADMIN.use_date < %s AND " "BALANCE_HIST_ADMIN.state='01' " "group by staff_id " ,staff_id,staff_id,start_date,end_date); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"插入预付金额用户数出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //插入预付款统计数据 sprintf(lsSql, "insert into stat_staff_item(stid,staff_id,staff_name,bill_item_id,amount) " "select %s,staff_id,null,-3000,sum(NVL(amount,0))/100.00 " "from BALANCE_HIST_ADMIN " "WHERE BALANCE_HIST_ADMIN.use_catg in ( '1','2','3') AND " "BALANCE_HIST_ADMIN.staff_id = %s AND " "BALANCE_HIST_ADMIN.use_date >= %s AND " "BALANCE_HIST_ADMIN.use_date < %s AND " "BALANCE_HIST_ADMIN.state='01' " "group by staff_id " ,staff_id,staff_id,start_date,end_date); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"插入预付金额统计数据出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //插入实收金额统计数据 sprintf(lsSql, "insert into stat_staff_item(stid,staff_id,staff_name,bill_item_id,amount) " " SELECT %s,a.staff_id,null,-2000,sum(NVL(a.amount,0))/100.00 " " FROM bill a" " where a.state = '40C' " " and a.staff_id = %s " " and a.pay_date >= %s " " and a.pay_date < %s " " group by a.staff_id " ,staff_id,staff_id,start_date,end_date); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"插入实收金额统计数据出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //插入实收户数统计数据 sprintf(lsSql, "insert into stat_staff_item(stid,staff_id,staff_name,bill_item_id,amount) " " SELECT %s,a.staff_id,null,-1000,NVL(count(DISTINCT a.acct_id),0) " " FROM bill a" " where a.state = '40C' " " and a.staff_id = %s " " and a.pay_date >= %s " " and a.pay_date < %s " " group by a.staff_id " ,staff_id,staff_id,start_date,end_date); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"插入实收户数统计数据出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //检索营业收费分项统计数据 sprintf(lsSql,"select bill_item_id,sum(amount) " " from stat_staff_item " " where staff_id = %s " " and stid = %s " " group by bill_item_id " ,staff_id,staff_id ); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"检索营业员收费统计数据出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } cDatabase->Commit(); if(isqlcode==0 && cDatabase->GetRowCount()==0) StrReturn(100,NULL); StrReturn(0,cDatabase->GetData());}//------------------------------------------------------------------------//服务PSSiteSum调用函数//取帐目周期数据,参数staff_id,start_date,end_date//------------------------------------------------------------------------void CNCpatch::GetSiteSum(){ char lsSql[2048],lsTemp[1024],lsErr[500],lstmp[20]; char *lparm[5]; char staff_id[40],site_id[30],start_date[100],end_date[100]; int i,isqlcode,lpnum,rpnum; long len; lpnum=3; rpnum=GetInputParm(pInp,lparm,50); if(rpnum!=lpnum) { lpfree(lparm,rpnum); strcpy(lsTemp,"解析客户端传入参数失败,可能参数数据或传输格式不正确!\n"); StrReturn(-2,lsTemp); } sprintf(staff_id,"%s",lparm[0]); sprintf(start_date,"to_date('%s','yyyy-mm-dd hh24:mi:ss')",lparm[1]); sprintf(end_date,"to_date('%s','yyyy-mm-dd hh24:mi:ss')",lparm[2]); lpfree(lparm,rpnum); //取营业点标识 sprintf(lsSql, "SELECT site_id " "FROM STAFF " "WHERE staff_id = %s " ,staff_id); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0 || cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"取营业点标识出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -