📄 charge_balance.cpp
字号:
"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]); strcpy(customer_name,lparm[3]); strcpy(id_card,lparm[4]); strcpy(pass_word,lparm[5]); strcpy(checknbr,lparm[6]); strcpy(amount,lparm[7]); strcpy(paymethod,lparm[8]); strcpy(present,lparm[9]); strcpy(month_num,ltrim(rtrim(lparm[10]))); strcpy(eff_date,lparm[11]); strcpy(op_flag,lparm[12]); lpfree(lparm,rpnum); //cDatabase->BeginTran(); if(strcmp(paymethod,"40")==0) { //乐山预付加入判断是否允许转预付 char ls_allow_flag[3]; if(strcmp(op_flag,"0")==0) { sprintf(lsSql," select 1 from b_serv a,lbas.noallow_to_prepay b " " where a.acct_id=%s " " and a.serv_type_id=b.serv_type_id " " and a.state not in 'F0X' " ,acct_id); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"判断是否允许转预付1出错!\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_allow_flag,cDatabase->GetData()); if(atol(ls_allow_flag)==0) { sprintf(lsSql," select 1 from b_acct a, lbas.noallow_to_prepay b " " where a.acct_id=%s " " and a.payment_method=b.payment_method " ,acct_id); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"判断是否允许转预付2出错!\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_allow_flag,cDatabase->GetData()); } else { StrReturn(-3,"该帐户下有号码业务类型不符合转预付要求!"); } if(atol(ls_allow_flag)==0) { sprintf(lsSql,"select no_id from lbas.large_no " " where no_type='max_products'" ); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"判断是否允许转预付2出错!\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); } int li_max_products,li_serv_num; li_max_products=atoi(cDatabase->GetData()); sprintf(lsSql," select count(*) from b_serv " " where acct_id=%s " " and state<>'F0X' " ,acct_id); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"判断是否允许转预付2出错!\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); } li_serv_num=atoi(cDatabase->GetData()); if(li_serv_num>=li_max_products) { strcpy(ls_allow_flag,"1"); } else { strcpy(ls_allow_flag,"0"); } } else { StrReturn(-3,"该帐户付款方式不符合转预付费要求!"); } if(atoi(ls_allow_flag)>0) { StrReturn(-2,"该帐户下电话号码超出标准"); } } } sprintf(lsSql," delete from BALANCE_TABLE_ADMIN " " where acct_id=%s" ,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); } #if 0 //广安没有用号线接口表,注释掉该部分的处理 //号线接口插入处理 sprintf(lsSql, " select b.area_id,substr(c.lbas_code,1,2) " " from lbas.serv a,lbas.acct b,lbas.serv_type c " " where a.acct_id = b.acct_id " " and a.acct_seq_nbr = b.acct_seq_nbr " " and a.acct_id=%s " " and a.state <>'F0X' " " and b.state='10A' " " and a.serv_type_id=c.serv_type_id " " and rownum=1 " ,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); } int li_area_id,li_area_type ; char ls_lbas_code[10]; li_area_id=atoi(cDatabase->data->GetColData(1,1)); strcpy(ls_lbas_code,cDatabase->data->GetColData(1,2)); if(li_area_id>2 ||(li_area_id==2 && strcmp(ls_lbas_code,"WX")!=0)) { li_area_type=3; } if((li_area_id ==1||li_area_id==2)&& strcmp(ls_lbas_code,"WX")==0) { li_area_type=2; } if(li_area_id==1 && strcmp(ls_lbas_code,"WX")!=0) { li_area_type=1; } sprintf(lsSql, " insert into lbas.prepay_hx_interface " " (prepay_hx_nbr,acct_nbr_97,payment_method,old_payment_method,created_date, " " staff_id,area_id,state,acc_nbr )" " select charge.seq_prepay_hx.nextval, b.acct_nbr_97,'%s',b.payment_method,sysdate," " %s,%d,'0',a.acc_nbr from lbas.serv a,lbas.acct b" " where a.acct_id=%s " " and a.acct_id=b.acct_id " " and a.acct_seq_nbr=b.acct_seq_nbr " " and a.state <>'F0X' " " and b.state ='10A' " ,paymethod,staff_id,li_area_type,acct_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"); cDatabase->Rollback(); if(WriteLog(cDatabase,staff_id,"w_p_balance",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } #endif //广安没有用号线接口表,注释掉该部分的处理 //向销帐库的BALANCE_TABLE_ADMIN表中插数据 sprintf(lsSql, "INSERT INTO BALANCE_TABLE_ADMIN " "(acct_id,name,password, " "id_card_nbr,total_amount,advance,radix,ratio,create_date,state,state_date,present) " "VALUES (%s,'%s','%s', " "'%s',%s + %s ,%s,0,0,sysdate,'1',sysdate,%s) " ,acct_id,customer_name,pass_word,id_card,amount,present,amount,present); //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); } sprintf(lsSql, " select seq_balance_hist_admin.nextval from dual "); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsTemp,"获取预付流水信息出错2!\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(cDatabase->GetRowCount()>0) { sprintf(hist_id,"%s",cDatabase->GetData()); } //向销帐库的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,present ) " "VALUES (%s,%s,%s,'1', " "%s,%s + %s,sysdate,'01',%s) " ,hist_id,acct_id,amount,staff_id,amount,present,present); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); if(isqlcode<0) { strcpy(lsTemp,"向销帐库的BALANCE_HIST_ADMIN表中插数据时出错2!\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(atol(present)>0) { sprintf(lsSql, " INSERT INTO BALANCE_HIST_EFF_EXP " "(balance_hist_admin_id,acct_id,amount,present,eff_date,eff_month,state,state_date,balance,staff_id) " " VALUES(%s,%s,%s,%s,to_date('%s','yyyy-mm-dd'),%s,'01',sysdate,%s + %s,%s )" ,hist_id,acct_id,amount,present,eff_date,month_num,amount,present,staff_id); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog("Sqlcode: %d SqlErrText: %s",isqlcode,cDatabase->GetSqlErrText()); if(isqlcode<0) { strcpy(lsTemp,"向销帐库的BALANCE_HIST_EFF_EXP表中插数据时出错4!\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 = %s + %s , "
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -