📄 charge_adjust.cpp
字号:
#include "charge_adjust.h"#include "payment.flds.h"//-----------------------------------------------------------------//构造函数//-----------------------------------------------------------------CAdjust::CAdjust(char *pcInp,COracle *pcDatabase){ cDatabase = pcDatabase; pInp = pcInp;}//-----------------------------------------------------------------//服务PAGetItem By Acct实现函数,传入参数staff_id,acct_id//-----------------------------------------------------------------void CAdjust::GetAdjustAcct(char *staff_id,char *acct_id){ char lsSql[2048],lsTemp[1024],lsErr[300]; int isqlcode; long lrow; //userlog("\nreceive data staff_id: %s acct_id: %s",staff_id,acct_id); //验证合同号有效性 sprintf(lsSql, "SELECT 'OK' " "FROM B_ACCT " "WHERE acct_id = %s " " and state='10A' " ,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,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_adjust",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } lrow=cDatabase->GetRowCount(); if(lrow==0 ) { cDatabase->Commit(); StrReturn(100,"该合同号不存在!\n"); } //检索帐户信息和帐目信息 sprintf(lsSql, "SELECT a.acct_id, " "a.acct_seq_nbr, " "a.acct_type_id, " "a.customer_name, " "a.address_id, " "b.charge/100 fee, " "b.billing_cycle_id, " "a.state, " "b.state, " "b.serv_id, " "b.serv_seq_nbr, " "b.special_acct_flag, " "b.acct_item_id, " "c.name, " "d.payment_method_name " "FROM B_ACCT a, " "B_ACCT_ITEM_O b, " "B_ACCT_ITEM_TYPE_O c, " "domain_payment_method d " "WHERE ( a.acct_id = b.acct_id ) and " "( a.acct_seq_nbr = b.acct_seq_nbr ) and " "( b.acct_item_type_id = c.acct_item_type_id ) and " "( a.payment_method = d.payment_method ) and " "( a.acct_id = %s ) AND " "( b.acct_item_type_id > 0) AND " "(a.state = '10A') AND " "(b.state in ( '20C' ,'20T','20Q','20Y','20S','20Z' ) ) " // "(b.state in ( '20C' ,'20D','20Q' ) ) " ,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_adjust",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } if(isqlcode==0 && cDatabase->GetRowCount()==0) { cDatabase->Commit(); StrReturn(100,"该合同号下已无可调帐目!\n"); } cDatabase->Commit(); StrReturn(0,cDatabase->GetData()); }//-----------------------------------------------------------------//服务PAGetItem By Telnum实现函数,传入参数staff_id,acc_nbr//是否异地调帐标识otherarea,本营业区最大最小合同号//-----------------------------------------------------------------void CAdjust::GetAdjustServ(char *staff_id,char *acc_nbr,int otherarea,char *min_acct,char *max_acct){ char lsSql[2048],lsTemp[1024],lsErr[500]; int isqlcode; char acct_id[20]; long lrow; //userlog("\nreceive data acc_nbr: %s",acc_nbr); //验证电话号码有效性 sprintf(lsSql, "SELECT acct_id " "FROM B_SERV " "WHERE acc_nbr='%s' " " and state<>'F0X' " ,acc_nbr); 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,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_adjust",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } lrow=cDatabase->GetRowCount(); if(lrow!=1) { if(lrow==0 ) { cDatabase->Commit(); StrReturn(100,"该电话号码不存在!\n"); } if(lrow>1) { strcpy(lsTemp,"利用电话号码查找对应合同号出错!\n"); if(WriteLog(cDatabase,staff_id,"w_p_adjust",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-2,lsTemp); } } strcpy(acct_id,cDatabase->data->GetColData(1,1)); if(otherarea==0) { if(atol(acct_id)<atol(min_acct) || atol(acct_id)>=atol(max_acct)) { cDatabase->Commit(); StrReturn(100,"不允许进行异地调帐!\n"); } } //检索用户信息和帐目信息 sprintf(lsSql, "SELECT a.acct_id, " "a.acct_seq_nbr, " "a.acct_type_id, " "a.customer_name, " "a.address_id, " "b.billing_cycle_id, " "a.state, " "b.state, " "b.serv_id, " "b.serv_seq_nbr, " "b.special_acct_flag, " "b.acct_item_id, " "b.charge/100.0 fee, " "d.name, " "e.payment_method_name " "FROM B_ACCT a, " "B_ACCT_ITEM_O b, " "B_SERV c, " "B_ACCT_ITEM_TYPE_O d, " "domain_payment_method e " "WHERE ( a.acct_id = b.acct_id ) and " "( a.acct_seq_nbr = b.acct_seq_nbr ) and " "( b.serv_id = c.serv_id ) and " "( b.serv_seq_nbr = c.serv_seq_nbr ) and " "( b.acct_item_type_id = d.acct_item_type_id ) and " "( a.payment_method = e.payment_method ) and " "( ( c.acc_nbr = '%s' ) AND " "( c.state in ('F0A','F0J','F0L') ) ) AND " "(b.acct_item_type_id > 0) AND " "(b.state in ('20C' ,'20T','20Q','20Y','20S','20Z')) "// "(b.state in ('20C','20Q','20D')) " ,acc_nbr); //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_adjust",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } cDatabase->Commit(); if(isqlcode==0 && cDatabase->GetRowCount()==0) StrReturn(100,"该电话号下已无可调帐目,请用合同号再试!\n"); StrReturn(0,cDatabase->GetData()); }void CAdjust::SetAdjustItem(){ char lsSql[2048],lsTemp[1024],lsErr[500]; char *lparm[5]; char staff_id[20],acct_item_id[20],ls_charge[20],ls_reason[200]; int i,isqlcode,lpnum,rpnum; lpnum=4; rpnum=GetInputParm(pInp,lparm,200); if(rpnum!=lpnum) { lpfree(lparm,rpnum); strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n"); if(WriteLog(cDatabase,"-1","w_p_adjust",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-2,lsTemp); } for(i=0;i<lpnum;i++) //userlog("lparm %d: %s",i,lparm[i]); strcpy(staff_id,lparm[0]); strcpy(acct_item_id,lparm[1]); strcpy(ls_charge,lparm[2]); strcpy(ls_reason,lparm[3]); rtrim(ls_reason); lpfree(lparm,rpnum); cDatabase->BeginTran(); //检查该条帐目是否已被调帐 sprintf(lsSql, "SELECT acct_item_id,special_acct_flag " "FROM B_ACCT_ITEM_O " "WHERE acct_item_id=%s and " "special_acct_flag='2' " ,acct_item_id ); //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"); if(WriteLog(cDatabase,staff_id,"w_p_adjust",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } if(cDatabase->GetRowCount()>=1) { cDatabase->Commit(); StrReturn(100,"该帐目已被调帐,不能再调!"); } //生成调帐帐目 sprintf(lsSql, "INSERT INTO B_ACCT_ITEM_O " "(acct_item_id ,serv_id ,serv_seq_nbr ,acct_id,acct_seq_nbr , " "acct_item_type_id ,charge ,billing_cycle_id ,created_date , " "partner_id ,state ,state_date , traffic ,record , " "bill_item_id ,invo_item_id ,bill_serial_nbr,special_acct_flag ) " "SELECT acct_item_id, " "serv_id, " "serv_seq_nbr, " "acct_id, " "acct_seq_nbr, " "acct_item_type_id, " "%s, " "billing_cycle_id, " "sysdate, " "partner_id, " "state, " "sysdate, " "traffic, " "record, " "bill_item_id, " "invo_item_id, " "bill_serial_nbr, " "'2' " "FROM B_ACCT_ITEM_O " "WHERE acct_item_id=%s " ,ls_charge,acct_item_id); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); 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_adjust",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //生成调帐历史记录 sprintf(lsSql, "INSERT INTO ADJUST_HIST( " "acct_id, " "serv_id, " "billing_cycle_id, " "acct_item_type_id, " "acct_item_id, " "by_acct_item_id, " "adjust_amount, " "reason, " "staff_id, " "adjust_date) " "SELECT acct_id, " "serv_id, " "billing_cycle_id, " "acct_item_type_id, " "acct_item_id, " "%s, " "%s, " "'%s', " "%s, " "sysdate " "FROM B_ACCT_ITEM_O " "WHERE acct_item_id=%s and " "special_acct_flag='2' " ,acct_item_id,ls_charge,ls_reason,staff_id,acct_item_id); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); 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_adjust",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } cDatabase->Commit(); StrReturn(0,"调帐成功!\n"); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -