📄 charge_stat——0802.cpp
字号:
#include "charge_stat.h"
#include "payment.flds.h"
//-----------------------------------------------------------------
//构造函数
//-----------------------------------------------------------------
CStat::CStat(char *pcInp,COracle *pcDatabase)
{
cDatabase = pcDatabase;
pInp = pcInp;
}
//-----------------------------------------------------------------
//服务PSStaffBill实现函数,传入参数staff_id,start_date,end_date
//-----------------------------------------------------------------
void CStat::StaffBillList()
{
char lsSql[2048],lsTemp[1024],lsErr[500];
char *lparm[5],*lpret;
char *lpwrite=NULL,*lperase=NULL,*lpbalance=NULL,*lpinstal=NULL,*lpbalerase=NULL;
char staff_id[20],start_date[100],end_date[100];
int i,isqlcode,lpnum,rpnum;
int rt;
long len=0,retlong=0;
lpnum=3;
rpnum=GetInputParm(pInp,lparm,50);
if(rpnum!=lpnum)
{
lpfree(lparm,rpnum);
strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n");
if(WriteLog(cDatabase,"-1","w_p_sta_dayreport",lsTemp,lsErr)!=1)
strcat(lsTemp,lsErr);
cDatabase->Commit();
StrReturn(-2,lsTemp);
}
strcpy(staff_id,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 '1', "
"'40C', "
"BILL.bill_serial_nbs , "
"BILL.acct_id , "
"B_ACCT.customer_name , "
"BILL.amount/100, "
"BILL.area_code , "
"B_ACCT.acc_nbr , "
"to_char(BILL.created_date,'YYYY-MM-DD HH24:MI:SS') "
"FROM BILL , "
"B_ACCT "
"WHERE ( BILL.acct_id = B_ACCT.acct_id(+)) and "
"( B_ACCT.state = '10A' or B_ACCT.state is null ) and "
"( BILL.staff_id = %s ) and "
"( BILL.state in ('40C','40R') ) and "
"( BILL.pay_date >= %s ) and "
"( BILL.pay_date < %s ) "
,staff_id,start_date,end_date);
//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");
cDatabase->Rollback();
if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)
strcat(lsTemp,lsErr);
cDatabase->Commit();
StrReturn(-1,lsTemp);
}
retlong=strlen(cDatabase->GetData());
if(retlong>=1)
{
lpwrite=(char *)malloc(retlong+1);
strcpy(lpwrite,cDatabase->ret);
len=strlen(lpwrite);
}
// //userlog(lpwrite);
//反销数据检索
sprintf(lsSql,
"SELECT '1', "
"'40R', "
"BILL.bill_serial_nbs , "
"BILL.acct_id , "
"B_ACCT.customer_name , "
"-BILL.amount/100, "
"BILL.area_code , "
"B_ACCT.acc_nbr , "
"to_char(BILL.created_date,'YYYY-MM-DD HH24:MI:SS') "
"FROM BILL , "
"B_ACCT "
"WHERE ( BILL.acct_id = B_ACCT.acct_id(+)) and "
"( B_ACCT.state = '10A' or B_ACCT.state is null ) and "
"( BILL.staff_id = %s ) and "
"( BILL.state = '40R' ) and "
"( BILL.pay_date >= %s ) and "
"( BILL.pay_date < %s ) "
,staff_id,start_date,end_date);
//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");
cDatabase->Rollback();
if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)
strcat(lsTemp,lsErr);
cDatabase->Commit();
StrReturn(-1,lsTemp);
}
retlong=strlen(cDatabase->GetData());
if(retlong>=1)
{
lperase=(char *)malloc(retlong+1);
strcpy(lperase,cDatabase->ret);
len=len+strlen(lperase);
}
//预付款数据检索
sprintf(lsSql,
"SELECT '2', "
"BALANCE_HIST_ADMIN.use_catg, "
"BALANCE_HIST_ADMIN.balance_hist_admin_id, "
"BALANCE_HIST_ADMIN.acct_id, "
"B_ACCT.customer_name, "
"BALANCE_HIST_ADMIN.amount/100, "
"'', "
"B_ACCT.acc_nbr, "
"to_char(use_date,'YYYY-MM-DD HH24:MI:SS') "
"FROM BALANCE_HIST_ADMIN, "
"B_ACCT "
"WHERE ( BALANCE_HIST_ADMIN.acct_id = B_ACCT.acct_id(+) ) and "
"( BALANCE_HIST_ADMIN.use_catg in ('1','2','3') ) and "
"( B_ACCT.state='10A' ) and "
"( ( BALANCE_HIST_ADMIN.staff_id = %s ) AND "
"( BALANCE_HIST_ADMIN.use_date >= %s) AND "
"( BALANCE_HIST_ADMIN.use_date < %s ) ) "
" order by BALANCE_HIST_ADMIN.use_catg asc "
,staff_id,start_date,end_date);
//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");
cDatabase->Rollback();
if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)
strcat(lsTemp,lsErr);
cDatabase->Commit();
StrReturn(-1,lsTemp);
}
retlong=strlen(cDatabase->GetData());
if(retlong>=1)
{
lpbalance=(char *)malloc(retlong+1);
strcpy(lpbalance,cDatabase->ret);
//userlog(lpbalance);
len=len+strlen(lpbalance);
}
//预付款返销数据检索
sprintf(lsSql,
"SELECT '2', "
"BALANCE_HIST_ADMIN.state, "
"BALANCE_HIST_ADMIN.balance_hist_admin_id, "
"BALANCE_HIST_ADMIN.acct_id, "
"B_ACCT.customer_name, "
" - BALANCE_HIST_ADMIN.amount/100, "
"'', "
"B_ACCT.acc_nbr, "
"to_char(use_date,'YYYY-MM-DD HH24:MI:SS') "
"FROM BALANCE_HIST_ADMIN, "
"B_ACCT "
"WHERE ( BALANCE_HIST_ADMIN.acct_id = B_ACCT.acct_id(+) ) and "
"( BALANCE_HIST_ADMIN.use_catg in ('1','2','3') ) and "
"( B_ACCT.state='10A' ) and "
"( BALANCE_HIST_ADMIN.state='02') and"
"( ( BALANCE_HIST_ADMIN.staff_id = %s ) AND "
"( BALANCE_HIST_ADMIN.use_date >= %s) AND "
"( BALANCE_HIST_ADMIN.use_date < %s ) ) "
" order by BALANCE_HIST_ADMIN.use_catg asc "
,staff_id,start_date,end_date);
//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");
cDatabase->Rollback();
if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)
strcat(lsTemp,lsErr);
cDatabase->Commit();
StrReturn(-1,lsTemp);
}
retlong=strlen(cDatabase->GetData());
if(retlong>=1)
{
lpbalerase=(char *)malloc(retlong+1);
strcpy(lpbalerase,cDatabase->ret);
//userlog(lpbalance);
len=len+strlen(lpbalerase);
}
//分期付款数据检索
sprintf(lsSql,
"SELECT '3', "
"INSTALMENT_BALANCE.operation_type, "
"INSTALMENT_BALANCE.instalment_his_id, "
"INSTALMENT_BALANCE.acct_id, "
"B_ACCT.customer_name, "
"INSTALMENT_BALANCE.charge_current/100, "
"'', "
"B_ACCT.acc_nbr, "
"to_char(INSTALMENT_BALANCE.state_date,'YYYY-MM-DD HH24:MI:SS') "
"FROM INSTALMENT_BALANCE, "
"B_ACCT "
"WHERE ( INSTALMENT_BALANCE.acct_id = B_ACCT.acct_id(+) ) and "
"( INSTALMENT_BALANCE.operation_type in ( '01','04','05') ) and "
"( B_ACCT.state='10A') and "
"( ( INSTALMENT_BALANCE.staff_id = %s ) AND "
"( INSTALMENT_BALANCE.state_date >= %s ) AND "
"( INSTALMENT_BALANCE.state_date < %s ) ) "
,staff_id,start_date,end_date);
//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");
cDatabase->Rollback();
if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)
strcat(lsTemp,lsErr);
cDatabase->Commit();
StrReturn(-1,lsTemp);
}
retlong=strlen(cDatabase->GetData());
if(retlong>=1)
{
lpinstal=(char *)malloc(retlong+1);
strcpy(lpinstal,cDatabase->ret);
len=len+strlen(lpinstal);
}
//构造返回数据字符串
if (cDatabase->ret) free(cDatabase->ret);
cDatabase->ret=(char *)malloc(len+10);
memset(cDatabase->ret,0,len+10);
if(lpwrite)
{
strcat(cDatabase->ret,lpwrite);
strcat(cDatabase->ret,"\r\n");
}
if(lperase)
{
strcat(cDatabase->ret,lperase);
strcat(cDatabase->ret,"\r\n");
}
if(lpbalance)
{
strcat(cDatabase->ret,lpbalance);
strcat(cDatabase->ret,"\r\n");
}
if(lpbalerase)
{
strcat(cDatabase->ret,lpbalerase);
strcat(cDatabase->ret,"\r\n");
}
strcat(cDatabase->ret,lpinstal);
if (lpwrite) free(lpwrite);
if (lperase) free(lperase);
if (lpbalance) free(lpbalance);
if (lpbalerase) free(lpbalerase);
if (lpinstal) free(lpinstal);
if(cDatabase->ret==NULL)
{
cDatabase->Commit();
free(cDatabase->ret);
StrReturn(100,NULL);
}
StrReturn(0,cDatabase->ret);
// free(lpret);
}
//-----------------------------------------------------------------
//服务PSStaffStat实现函数,传入参数staff_id,start_date,end_date
//-----------------------------------------------------------------
void CStat::StaffStat()
{
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;
int rt,retlong;
long len;
//统计对象变量声明
char *write_amount,*write_number,*erase_amount,*erase_number;
char *bal_amount,*bal_number,*instal_amount,*instal_number;
char *cash_amount,*cash_number,*card_amount,*card_number;
char *check_amount,*check_number,*bal_erase,*bal_erasenum;
/* char write_amount[20],write_number[20],erase_amount[20],erase_number[20];
char bal_amount[20],bal_number[20],instal_amount[20],instal_number[20];
char cash_amount[20],cash_number[20],card_amount[20],card_number[20];
char check_amount[20],check_number[20];*/
char *late_amount; // 违约金
lpnum=3;
rpnum=GetInputParm(pInp,lparm,50);
if(rpnum!=lpnum)
{
lpfree(lparm,rpnum);
strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n");
if(WriteLog(cDatabase,"-1","w_p_sta_dayreport",lsTemp,lsErr)!=1)
strcat(lsTemp,lsErr);
cDatabase->Commit();
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 NVL(sum(BILL.amount/100.00),0),NVL(count(DISTINCT BILL.acct_id),0) "
"FROM BILL "
"WHERE BILL.state in ('40C','40R') AND "
"BILL.staff_id = %s AND "
"BILL.pay_date >= %s AND "
"BILL.pay_date < %s "
,staff_id,start_date,end_date);
// //userlog(lsSql);
cDatabase->DoSql(lsSql);
isqlcode=cDatabase->GetSqlCode();
// //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());
if(isqlcode<0)
{
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();
StrReturn(-1,lsTemp);
}
retlong = strlen(cDatabase->data->GetColData(1,1));
write_amount = (char *) malloc(retlong+1);
strcpy(write_amount,cDatabase->data->GetColData(1,1));
retlong = strlen(cDatabase->data->GetColData(1,2));
write_number = (char *) malloc(retlong+1);
strcpy(write_number,cDatabase->data->GetColData(1,2));
//反销统计
sprintf(lsSql,
"SELECT NVL(sum(BILL.amount/100.00),0),NVL(count(DISTINCT BILL.acct_id),0) "
"FROM BILL "
"WHERE BILL.state = '40R' AND "
"BILL.staff_id = %s AND "
"BILL.pay_date >= %s AND "
"BILL.pay_date < %s "
,staff_id,start_date,end_date);
////userlog(lsSql);
cDatabase->DoSql(lsSql);
isqlcode=cDatabase->GetSqlCode();
////userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());
if(isqlcode<0)
{
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();
StrReturn(-1,lsTemp);
}
retlong = strlen(cDatabase->data->GetColData(1,1));
erase_amount = (char *) malloc(retlong+1);
strcpy(erase_amount,cDatabase->data->GetColData(1,1));
retlong = strlen(cDatabase->data->GetColData(1,2));
erase_number = (char *) malloc(retlong+1);
strcpy(erase_number,cDatabase->data->GetColData(1,2));
//////////////////////////////////////////////////////////////
//违约金统计
sprintf(lsSql,
"SELECT NVL(sum(B_ACCT_ITEM_O.charge/100.00),0) "
"FROM BILL,B_ACCT_ITEM_O "
"WHERE BILL.state = '40C' AND "
"BILL.staff_id = %s AND "
"BILL.pay_date >= %s AND "
"BILL.pay_date < %s AND "
"BILL.bill_serial_nbr = B_ACCT_ITEM_O.bill_serial_nbr AND "
"B_ACCT_ITEM_O.acct_item_type_id=1"
,staff_id,start_date,end_date);
////userlog(lsSql);
cDatabase->DoSql(lsSql);
isqlcode=cDatabase->GetSqlCode();
////userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText());
if(isqlcode<0)
{
strcpy(lsTemp,"违约金统计出错!\n");
strcat(lsTemp,cDatabase->GetSqlErrText());
strcat(lsTemp,"\n");
cDatabase->Rollback();
if(WriteLog(cDatabase,staff_id,"w_p_sta_dayreport",lsTemp,lsErr)!=1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -