📄 charge_balance0908.cpp
字号:
strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //更新销帐库的BALANCE_TABLE_ADMIN表中的数据 sprintf(lsSql, "UPDATE BALANCE_TABLE_ADMIN " "SET total_amount = %ld, " "advance= %ld, " "present= %ld, " "state_date = sysdate " "WHERE acct_id = %s AND " "state = '1' " ,w_balance,w_advance,w_present,acct_id); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); if(isqlcode<0) { strcpy(lsTemp,"更新销帐库的BALANCE_TABLE_ADMIN表中的数据时出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //向销帐库的BALANCE_HIST_ADMIN表中插数据 sprintf(lsSql, "INSERT INTO BALANCE_HIST_ADMIN " "(balance_hist_admin_id,acct_id,amount,use_catg,staff_id,balance,use_date,state,bill_serial_nbr,present,billing_cycle_id ) " "VALUES (SEQ_BALANCE_HIST_ADMIN.nextval,%s,%ld,'%s', " "%s,%ld,sysdate,'01',%s, %ld, %s) "// ,acct_id,-total_amount,"3",staff_id,w_balance,bill_serial_nbr); ,acct_id,-total_amount,"3",staff_id,w_balance,bill_serial_nbr, -writeoff_present,billing_cycle_id); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); if(isqlcode<0) { strcpy(lsTemp,"向销帐库的BALANCE_HIST_ADMIN表中插数据时出错1!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } sprintf(lsSql, " update BALANCE_HIST_EFF_EXP " " set amount=amount-%ld," " present=present - %ld , " " balance=%ld " " where balance_hist_admin_id in ( select max(balance_hist_admin_id) " " from balance_hist_eff_exp " " where acct_id=%s and state='01' ) " " and state='01' " ,writeoff_advance,writeoff_present,w_balance,acct_id); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); if(isqlcode<0) { strcpy(lsTemp,"向销帐库的BALANCE_HIST_ADMIN表中插数据时出错1!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //////////////////////////////////////////////// //判断赠费预存款是否过期/* if(w_present>0) { sprintf(lsSql, " select nullity_date " " from BALANCE_TABLE_ADMIN " " where acct_id = %s AND " " state = '1' " ,acct_id); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"取赠费有效期出错!\n"); cDatabase->Rollback(); strcat(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } strcpy(nullity_date,cDatabase->GetData()); if(strcmp(nullity_date,billing_cycle_id)<0)//失效时间在帐期之前赠费作废 { w_balance=w_balance - w_present; //超过有效期则将预存款金额置零并在添加记录。 //向销帐库的BALANCE_HIST_ADMIN表中插数据 sprintf(lsSql, "INSERT INTO BALANCE_HIST_ADMIN " "(balance_hist_admin_id,acct_id,amount,use_catg,staff_id,balance,use_date,state ) " "VALUES (SEQ_BALANCE_HIST_ADMIN.nextval,%s,%ld,'7', " "%s,%ld,sysdate,'01' ) " ,acct_id,-w_present,staff_id,w_balance ); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"向销帐库的BALANCE_HIST_ADMIN表中插赠费作废数据时出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //更新销帐库的BALANCE_TABLE_ADMIN表中的数据 w_present=0; sprintf(lsSql, "UPDATE BALANCE_TABLE_ADMIN " "SET total_amount = %ld, " "present= %ld " "WHERE acct_id = %s AND " "state = '1' " ,w_balance,w_present,acct_id); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"更新销帐库的BALANCE_TABLE_ADMIN表中的数据时出错(t)!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //更新收费库B_ACCT表中的balance字段的值 sprintf(lsSql, "UPDATE B_ACCT " "SET balance = %ld " "WHERE acct_id=%s AND " "acct_seq_nbr=%s AND " "state='10A' " ,w_balance,acct_id,acct_seq_nbr); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"更新收费库B_ACCT表中的balance字段的值时出错(t)!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //更新计费库ACCT表中的balance字段的值 sprintf(lsSql, "UPDATE LBAS.ACCT " "SET balance = %ld " "WHERE acct_id=%s AND " "acct_seq_nbr=%s AND " "state = '10A' " ,w_balance,acct_id,acct_seq_nbr); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"更新计费库ACCT表中的balance字段的值时出错!\n"); strcat(lsTemp,cDatabase->GetSqlErrText()); strcat(lsTemp,"\n"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } } } */ //判断赠费有效期完成//////////////////////////////////////////////// strcat(lsTemp,"\t"); strcat(lsTemp,bill_serial_nbr); } //销帐完成//////////tets/////////// //追加返回赠送款 if (lde_present>0) { strcat(lsTemp,"\t"); strcat(lsTemp,ls_present); strcat(lsTemp,"\t"); strcat(lsTemp,nullity_date); }//////////tets/////////// cDatabase->Commit(); StrReturn(0,lsTemp);}//////////////////////////////////////////////////服务 PBGetBal 实现函数,取帐户各种费用信息//追加三个返回值:赠款余额、预存款余额、赠款最小存入本金////////////////////////////////////////////////void CBalance::GetBalInfoAcct(){ char lsSql[2048],lsTemp[1024],lsErr[500]; char staff_id[20],acct_id[20]; int isqlcode,lrow; char pstate[10]; char *lparm[3]; int i,lpnum,rpnum; char ls_charge[15]; char ls_realcharge[15]; char p_type[2];//读取赠费方式标识 lpnum=2; rpnum=GetInputParm(pInp,lparm,50); if(rpnum!=lpnum) { lpfree(lparm,rpnum); strcpy(lsTemp,"解析客户端传入参数失败,可能参数数据或传输格式不正确!\n"); if(WriteLog(cDatabase,"-1","w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-2,lsTemp); } strcpy(staff_id,lparm[0]); strcpy(acct_id,lparm[1]); lpfree(lparm,rpnum); //检查帐户是否有费用未缴清 sprintf(lsSql, "SELECT COUNT(*),sum(charge) " "FROM B_ACCT_ITEM_O " "WHERE acct_id = %s " "AND state in ('20C' ,'20T','20Q','20Y','20S','20Z') " ,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_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } strcpy(pstate,cDatabase->data->GetColData(1,1)); strcpy(ls_charge,cDatabase->data->GetColData(1,2)); //userlog(pstate); if(atol(pstate)>0) strcpy(pstate,"1"); else strcpy(pstate,"0"); if(strcmp(ls_charge,"")==0) strcpy(ls_charge,"0");// 广安没有trusted_charge字段,因此从累加中删除// sprintf(lsSql,"select sum(nvl(call_charge,0)+nvl(lease_charge,0)+nvl(month_acc,0)+nvl(trusted_charge,0)) from lbas.realtime_charge_acc " sprintf(lsSql,"select sum(nvl(call_charge,0)+nvl(lease_charge,0)+nvl(month_acc,0)) from lbas.realtime_charge_acc " " where acct_id = %s " ,acct_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_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } strcpy(ls_realcharge,cDatabase->GetData()); if(strcmp(ls_realcharge,"")==0) strcpy(ls_realcharge,"0"); /////////////////////////////////////////////// //取身份证号将"LBAS.ACCT.social_id,"修改为"BALANCE_TABLE_ADMIN.id_card_nbr, " //取用户帐户及预付款信息 sprintf(lsSql, "SELECT LBAS.ACCT.acct_id, " "LBAS.ACCT.customer_name, " "LBAS.ACCT.address_id, " "LBAS.ACCT.balance, " " nvl(BALANCE_TABLE_ADMIN.password,'0') , " "LBAS.ACCT.acct_seq_nbr, " "LBAS.ACCT.state, " "'%s', " " %s , " "BALANCE_TABLE_ADMIN.id_card_nbr, " " %s , " " LBAS.ACCT.payment_method, " " decode(BALANCE_TABLE_ADMIN.state,'1',1,0), " " lbas.domain_payment_method.payment_method_name, " "BALANCE_TABLE_ADMIN.present, " "BALANCE_TABLE_ADMIN.advance , " "LBAS.ACCT.change " "FROM LBAS.ACCT ,BALANCE_TABLE_ADMIN ,lbas.domain_payment_method " "WHERE LBAS.ACCT.acct_id = BALANCE_TABLE_ADMIN.acct_id(+) and " " ( LBAS.ACCT.acct_id = %s ) AND " " '1'=BALANCE_TABLE_ADMIN.state(+) AND " " ( LBAS.ACCT.state = '10A' ) and " " (LBAS.ACCT.payment_method=lbas.domain_payment_method.payment_method(+))" ,pstate,ls_charge,ls_realcharge,acct_id); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); //userlog("检索返回行数:%d",cDatabase->GetRowCount()); lrow=cDatabase->GetRowCount(); if(isqlcode<0||lrow>1) { strcpy(lsTemp,"取帐户及预付款信息出错!\n"); strcpy(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } if(lrow==0) { cDatabase->Commit(); StrReturn(100,"合同号不存在!"); } cDatabase->Commit(); StrReturn(0,cDatabase->GetData()); }//------------------------------------------------------------------------//服务PBApplyBal实现函数,预付款开户//传入参数staff_id,acct_id,acct_seq_nbr,//customer_name,id_crad,pass_word,checknbr,amount//------------------------------------------------------------------------void CBalance::ApplyBalUser(){ char lsSql[2048],lsTemp[1024],lsErr[500]; char *lparm[15],op_flag[2]; char staff_id[20],acct_id[20],acct_seq_nbr[4],customer_name[200],id_card[30]; char pass_word[50],amount[20],checknbr[50]; char paymaxno[30],paymethod[4],systime[20],hist_id[20]; char ls_old_balance[15],present[20],month_num[6],eff_date[15]; int i,isqlcode,lpnum,rpnum; int rt; strcpy(lsTemp,pInp); //userlog(lsTemp); lpnum=13; rpnum=GetInputParm(lsTemp,lparm,200); if(rpnum!=lpnum) { lpfree(lparm,rpnum); strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n"); if(WriteLog(cDatabase,"-1","w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-2,lsTemp); } strcpy(staff_id,lparm[0]); strcpy(acct_id,lparm[1]); strcpy(acct_seq_nbr,lparm[2]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -