📄 charge_settle.cpp
字号:
StrReturn(-1,lsTemp); } break; } //case结束 //插入销户结清历史记录 sprintf(lsSql, "INSERT INTO B_CANCEL_ACCT (cancel_id,acct_id,bill_item_id, " "charge,state,state_time,pay_serial_nbr,bill_serial_nbr,serv_id ) " "VALUES (seq_b_cancel_acct.nextval,%s,%s,to_number('%s'), " "'C0P',sysdate,%s,%s,%s) " ,acct_id,bill_item_id,charge,pay_serial_nbr,bill_serial_nbr,serv_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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); lpfree(lparm,ret); cDatabase->Commit(); StrReturn(-1,lsTemp); } }//循环结束 } lpfree(lparm,ret); // //userlog("sum_charge= %f",sum_charge); sprintf(lsSql, " insert into bill(BILL_SERIAL_NBR,PAY_SERIAL_NBR,CREATED_DATE,STAFF_ID,PAY_DATE,SETTLE_DATE,PRINT_COUNT,PRINT_DATE,AREA_CODE,ACC_NBR,STATE,STATE_DATE,BILL_SERIAL_NBS,AMOUNT,ACCT_ID,CHANGE ) " " values( %s,%s,sysdate,%s,sysdate,sysdate,1,sysdate,null,null,'40C',sysdate,%s,%f*100,%s,%s*100) " ,bill_serial_nbr,pay_serial_nbr,staff_id,bill_serial_nbr,sum_charge,acct_id,change); 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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } //插入付款记录 sprintf(lsSql, "INSERT INTO PAYMENT " "VALUES ( %s,%s,%s,'11','0A', " "%s,%f*100,sysdate,%s, " "'C0C',sysdate,null,null) " ,pay_serial_nbr,acct_id,acct_seq_nbr,pay_serial_nbr,sum_charge,staff_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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } cDatabase->Commit(); StrReturn(0,"销户成功!");}//-----------------------------------------------------------------//服务PTUndo实现函数,传入参数(块一)staff_id,acct_id,acct_seq_nbr//(块二)要更新的数据窗口回退费用数据//结清回退//-----------------------------------------------------------------void CSettle::PTUndo(){ char lsSql[2048],lsTemp[2048],lsErr[500]; int isqlcode,lpnum,rpnum; char acct_id[10],serv_id[11],staff_id[20],pay_serial_nbr[30]; char charge[20],bill_item_id[20],acct_seq_nbr[10],ls_bill_serial_nbr[30],ls_pay_serial_nbr[30]; float sum_charge=0.0; char *lparm[1024],tch[2]; long ret,i,j,row=0,col=0,pos; int li_method_id; char areacode[6],acc_nbr[16]; char billing_cycle_id[10]; //userlog(pInp); //取块一数据分析(单排数据) sprintf(tch,"%c",1); pos=strcspn(pInp,tch); for(i=0;i<pos;i++) { lsTemp[i]=pInp[i]; } lsTemp[i]='\0'; //strncpy(lsTemp,pInp,pos); lpnum=10; rpnum=GetInputParm(lsTemp,lparm,100); //userlog(lsTemp); if(rpnum!=lpnum) { lpfree(lparm,rpnum); strcpy(lsTemp,"解析客户端传入参数失败,可能参数传输不正确!\n"); if(WriteLog(cDatabase,"-1","w_p_settle",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]); li_method_id=atoi(lparm[3]); if(li_method_id!=0) { strcpy(serv_id,lparm[4]); } strcpy(ls_bill_serial_nbr,lparm[5]); strcpy(ls_pay_serial_nbr,lparm[6]); strcpy(areacode,lparm[7]); strcpy(acc_nbr,lparm[8]); strcpy(billing_cycle_id,lparm[9]); lpfree(lparm,rpnum); //取块二数据分析(多排数据) strncpy(lsTemp,pInp+pos+1,strlen(pInp)-pos); ret=GetMulRowData(lsTemp,lparm,&row,&col,100); //userlog("ret= %d row= %d col= %d",ret,row,col); if(ret<=0) { lpfree(lparm,1024); strcpy(lsTemp,"解析客户端传入多排参数失败,可能参数传输格式不正确!\n"); if(WriteLog(cDatabase,"-1","w_p_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-2,lsTemp); } cDatabase->BeginTran(); //取付款流水号 if(GetMaxPayNo(cDatabase,staff_id,pay_serial_nbr,lsErr)!=1 || pay_serial_nbr==NULL) { strcpy(lsTemp,"取付款流水号出错!\n"); strcat(lsTemp,lsErr); if(WriteLog(cDatabase,staff_id,"w_p_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); lpfree(lparm,ret); cDatabase->Commit(); StrReturn(-2,lsTemp); } //循环开始 if(li_method_id==0) { for(i=0;i<row;i++) { j=i*col; strcpy(bill_item_id,lparm[j+1]); strcpy(charge,lparm[j+2]); sum_charge=sum_charge+atof(charge); //Case开始 switch(atoi(bill_item_id)) { case 1: sprintf(lsSql, " update B_ACCT_ITEM_O " " set state='20C' " " where acct_id = %s and " " bill_serial_nbr = %s and " " state in ('20P')" ,acct_id,ls_bill_serial_nbr); 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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); lpfree(lparm,ret); cDatabase->Commit(); StrReturn(-1,lsTemp); } sprintf(lsSql," begin lbas.p_a_acct_realtime_back(%s,%s,:returncode ); end;",acct_id,billing_cycle_id); //userlog(lsSql); char ls_return[40]; strcpy(ls_return,cDatabase->ExecProc(lsSql)); if(ls_return[0]>'9') { StrReturn(-1,ls_return); } break; case 2: //更新销帐库零钞 sprintf(lsSql, "UPDATE B_ACCT " "SET change = to_number('%s')*100 " "WHERE acct_id = %s AND " "state = '10A' " ,charge,acct_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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); lpfree(lparm,ret); cDatabase->Commit(); StrReturn(-1,lsTemp); } //更新计费库零钞 sprintf(lsSql, "UPDATE LBAS.ACCT " "SET change = to_number('%s')*100 " "WHERE acct_id = %s AND " "state = '10A' " ,charge,acct_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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); lpfree(lparm,ret); cDatabase->Commit(); StrReturn(-1,lsTemp); } break; case 3: //修改帐户一次性费用表数据 sprintf(lsSql, "UPDATE LBAS.ACCT_ONCE_FEE " "SET state='1', " "state_date=sysdate " "WHERE acct_id= %s AND " "state='A' " ,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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); lpfree(lparm,ret); cDatabase->Commit(); StrReturn(-1,lsTemp); } //修改用户一次性费用表数据 sprintf(lsSql, "UPDATE LBAS.SERV_ONCE_FEE " "SET state='1', " "state_date=sysdate, " "acct_id = %s, " "acct_seq_nbr = %s " " WHERE rowid in (SELECT a.rowid " "FROM LBAS.SERV_ONCE_FEE a,LBAS.SERV b " "WHERE a.serv_id=b.serv_id AND " "a.serv_seq_nbr=b.serv_seq_nbr AND " "b.acct_id=%s and " "b.state='F0A' AND " "a.state='A') " ,acct_id,acct_seq_nbr,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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); lpfree(lparm,ret); cDatabase->Commit(); StrReturn(-1,lsTemp); } break; case 4: //修改托收节余 sprintf(lsSql, "UPDATE COMIT_BALANCE " "SET state='02', " "state_date=sysdate " "WHERE acct_id= %s AND " "state='01' " ,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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); lpfree(lparm,ret); cDatabase->Commit(); StrReturn(-1,lsTemp); } //插入托收节余记录 sprintf(lsSql, "INSERT INTO COMIT_BALANCE " "VALUES (SEQ_COMIT_BALANCE.NEXTVAL,%s,%s,0, " "0,100*to_number('%s'), " "'0B',%s, " "sysdate,'01',%s) " ,acct_id,acct_seq_nbr,charge,staff_id,pay_serial_nbr); //// //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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); lpfree(lparm,ret); cDatabase->Commit(); StrReturn(-1,lsTemp); } break; case 5: //插入预付款记录 sprintf(lsSql, "INSERT INTO BALANCE_HIST_ADMIN " "VALUES (SEQ_BALANCE_HIST_ADMIN.NEXTVAL,%s,100*to_number('%s'),'B',%s, " "100*to_number('%s'),sysdate,NULL,'01') " ,acct_id,charge,staff_id,charge); //// //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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); lpfree(lparm,ret); cDatabase->Commit(); StrReturn(-1,lsTemp); } //更新销帐库预付款金额 sprintf(lsSql, "UPDATE B_ACCT " "SET balance = 100*to_number('%s') " "WHERE acct_id = %s AND " "state = '10A' " ,charge,acct_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_settle",lsTemp,lsErr)!=1) strcat(lsTemp,lsErr); lpfree(lparm,ret); cDatabase->Commit(); StrReturn(-1,lsTemp); } //更新计费库预付款金额 sprintf(lsSql, "UPDATE LBAS.ACCT " "SET balance = 100*to_number('%s') " "WHERE acct_id = %s AND " "state = '10A' " ,charge,acct_id); //// //userlog(lsSql); cDatabase->DoSql(lsSql);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -