📄 charge_settle.cpp
字号:
"WHERE a.serv_id = b.serv_id " "AND a.serv_seq_nbr = b.serv_seq_nbr " "AND a.edit_time>sysdate " "AND a.state = '1' " "AND b.state <> 'F0X' " "AND b.serv_id = %s " ,serv_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); cDatabase->Commit(); StrReturn(-1,lsTemp); } else if(isqlcode==0 && cDatabase->GetRowCount()==0) { lf_once_fee=0; } else { lf_once_fee=atof(cDatabase->data->GetColData(1,1)); } if(lf_once_fee!=0) { sprintf(lsTemp,"%s\t3\t%f\tC0C\t%s\r\n",serv_id,lf_once_fee,systime); strcat(lsReturn,lsTemp); li_count++; } } } cDatabase->Commit(); if(li_count>0 && lsReturn!=NULL) { StrReturn(0,lsReturn); } else { StrReturn(100,"没有需要结清的费用!"); } }//-----------------------------------------------------------------//服务PTUndoItem实现函数,传入参数staff_id,acct_id//取结清回退费用信息//-----------------------------------------------------------------void CSettle::PTUndoItem(){ char lsSql[2048],lsTemp[500],lsErr[500],lsReturn[2048]; int i,isqlcode,lpnum,rpnum; char acct_id[10],serv_id[11],staff_id[20],bill_serial_nbr[30],pay_serial_nbr[30]; char *lparm[4],tch[2]; int li_method_id; //userlog(pInp); lpnum=3; rpnum=GetInputParm(pInp,lparm,50); 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]); li_method_id=atoi(lparm[2]); if(li_method_id==0) { strcpy(acct_id,lparm[1]); lpfree(lparm,rpnum); sprintf(lsSql, "SELECT B_CANCEL_ACCT.acct_id, " "sum(B_CANCEL_ACCT.charge) charge, " "B_CANCEL_ACCT.state, " "B_CANCEL_ACCT.state_time, " "to_char(B_CANCEL_ACCT.bill_serial_nbr), " "to_char(B_CANCEL_ACCT.pay_serial_nbr) " "FROM B_CANCEL_ACCT " "WHERE ( B_CANCEL_ACCT.acct_id = %s ) " "and ( B_CANCEL_ACCT.state = 'C0P' ) " "group by B_CANCEL_ACCT.acct_id, " "B_CANCEL_ACCT.state, " "B_CANCEL_ACCT.state_time, " "B_CANCEL_ACCT.bill_serial_nbr, " "B_CANCEL_ACCT.pay_serial_nbr " "order by B_CANCEL_ACCT.state_time DESC " ,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); cDatabase->Commit(); StrReturn(-1,lsTemp); } else if(isqlcode==0 && cDatabase->GetRowCount()==0) { StrReturn(100,"没有需要回退的项目!"); } else { strcpy(lsReturn,cDatabase->GetData()); sprintf(tch,"%c",1); strcat(lsReturn,tch); } strcpy(bill_serial_nbr,cDatabase->data->GetColData(1,5)); strcpy(pay_serial_nbr,cDatabase->data->GetColData(1,6)); sprintf(lsSql, "SELECT B_CANCEL_ACCT.acct_id, " "B_CANCEL_ACCT.bill_item_id, " "B_CANCEL_ACCT.charge, " "B_CANCEL_ACCT.state, " "B_CANCEL_ACCT.state_time, " "B_CANCEL_ACCT.bill_serial_nbr, " "B_CANCEL_ACCT.pay_serial_nbr " "FROM B_CANCEL_ACCT " "WHERE B_CANCEL_ACCT.pay_serial_nbr = %s " ,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); cDatabase->Commit(); StrReturn(-1,lsTemp); } else if(isqlcode==0 && cDatabase->GetRowCount()==0) { cDatabase->Commit(); sprintf(lsTemp,"没有需要回退的项目!"); StrReturn(100,lsTemp); } else { strcat(lsReturn,cDatabase->GetData()); } } else { strcpy(serv_id,lparm[1]); lpfree(lparm,rpnum); sprintf(lsSql, "SELECT B_CANCEL_ACCT.acct_id, " "sum(B_CANCEL_ACCT.charge) charge, " "B_CANCEL_ACCT.state, " "B_CANCEL_ACCT.state_time, " "to_char(B_CANCEL_ACCT.bill_serial_nbr), " "to_char(B_CANCEL_ACCT.pay_serial_nbr) " "FROM B_CANCEL_ACCT " "WHERE ( B_CANCEL_ACCT.serv_id = %s ) " "and ( B_CANCEL_ACCT.state = 'C0P' ) " "group by B_CANCEL_ACCT.acct_id, " "B_CANCEL_ACCT.state, " "B_CANCEL_ACCT.state_time, " "B_CANCEL_ACCT.bill_serial_nbr, " "B_CANCEL_ACCT.pay_serial_nbr " "order by B_CANCEL_ACCT.state_time DESC " ,serv_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); cDatabase->Commit(); StrReturn(-1,lsTemp); } else if(isqlcode==0 && cDatabase->GetRowCount()==0) { StrReturn(100,"没有需要回退的项目!"); } else { strcpy(lsReturn,cDatabase->GetData()); sprintf(tch,"%c",1); strcat(lsReturn,tch); } strcpy(bill_serial_nbr,cDatabase->data->GetColData(1,5)); strcpy(pay_serial_nbr,cDatabase->data->GetColData(1,6)); sprintf(lsSql, "SELECT B_CANCEL_ACCT.acct_id, " "B_CANCEL_ACCT.bill_item_id, " "B_CANCEL_ACCT.charge, " "B_CANCEL_ACCT.state, " "B_CANCEL_ACCT.state_time, " "B_CANCEL_ACCT.bill_serial_nbr, " "B_CANCEL_ACCT.pay_serial_nbr " "FROM B_CANCEL_ACCT " "WHERE B_CANCEL_ACCT.pay_serial_nbr = %s " ,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); cDatabase->Commit(); StrReturn(-1,lsTemp); } else if(isqlcode==0 && cDatabase->GetRowCount()==0) { cDatabase->Commit(); sprintf(lsTemp,"没有需要回退的项目!"); StrReturn(100,lsTemp); } else { strcat(lsReturn,cDatabase->GetData()); } } cDatabase->Commit(); StrReturn(0,lsReturn);}//-----------------------------------------------------------------//服务PTSettle实现函数,传入参数(块一)staff_id,acct_id,acct_seq_nbr//(块二)要更新的数据窗口结清费用数据//销户结清//-----------------------------------------------------------------void CSettle::PTSettle(){ char lsSql[2048],lsTemp[2048],lsErr[500]; int isqlcode,lpnum,rpnum; char serv_id[20],acct_id[20],acct_seq_nbr[5],staff_id[20],pay_serial_nbr[30],bill_serial_nbr[30]; char charge[20],bill_item_id[20]; float sum_charge=0.0; char *lparm[1024],tch[2]; long ret,i,j,row=0,col=0,pos; char ls_temp[10]; int li_method_id; char change[6]; //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); //userlog(lsTemp); lpnum=5; rpnum=GetInputParm(lsTemp,lparm,100); sprintf(ls_temp,"%d",rpnum); //userlog("rpnum"); //userlog(ls_temp); 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]); } lpfree(lparm,rpnum); //取块二数据分析(多排数据) strncpy(lsTemp,pInp+pos+1,strlen(pInp)-pos); //userlog(lsTemp); 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(GetMaxBillNo(cDatabase,staff_id,bill_serial_nbr,lsErr)!=1 || bill_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); if(strcmp(bill_item_id,"2")==0) { strcpy(change,charge); } //Case开始 switch(atoi(bill_item_id)) { case 1: sprintf(lsSql, " UPDATE B_ACCT_ITEM_O " " set state='20P', " " bill_serial_nbr=%s " " where acct_id = %s and " " state in ('20C','20Q','20Y','20T')" ,bill_serial_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 2: //更新销帐库零钞 sprintf(lsSql, "UPDATE B_ACCT " "SET change = 0 " "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()); 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 = 0 " "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()); 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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -