📄 charge_sell.cpp
字号:
"FROM (SELECT serv_id,null,min(bill_serial_nbr),min(billing_cycle_id),sysdate,'0' " "FROM B_ACCT_ITEM_O " "WHERE bill_serial_nbr in (SELECT bill_serial_nbr FROM B_ACCT_ITEM_SELL " " WHERE staff_id=%s and created_billing_cycle_id=%s and state='S0C') AND " " state in ('20R','20U') AND serv_id is not null " "GROUP BY serv_id) aa", StaffID,CBillingCycleID); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,lsTemp); cDatabase->Rollback(); strcpy(lsTemp,"插入复机数据失败");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql,"UPDATE B_ACCT_ITEM_SELL SET state='S0P',pay_date=sysdate WHERE staff_id=%s AND created_billing_cycle_id=%s AND state='S0C'", StaffID,CBillingCycleID); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,lsTemp); cDatabase->Rollback(); strcpy(lsTemp,"更新批量销帐中间表2失败");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql,"select count(*),sum(charge/100) from b_acct_item_sell " " where staff_id=%s AND created_billing_cycle_id=%s AND state='S0P' AND " " acc_nbr BETWEEN '%s' AND '%s' AND sell_id=%s" ,StaffID,CBillingCycleID,StartNbr,EndNbr,SellID); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,lsTemp); cDatabase->Rollback(); strcpy(lsTemp,"提取销账总计出错!");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } cDatabase->Commit(); sell_list.FreeList(1); StrReturn(0,cDatabase->GetData()); }void CSell::SellErase(char *StaffID,char *CBillingCycleID,char *StartNbr,char *EndNbr,char *SellID){ char lsSql[600],lsTemp[1024],lsErr[500],lsRetstr[500],pay_serial_nbr[19]; int isqlcode,lrow,lrow_cur; char acct_id[9],billing_cycle_id[7],charge[11],bill_serial_nbr[19]; sprintf(lsSql,"SELECT bill_serial_nbr FROM B_ACCT_ITEM_SELL " "WHERE staff_id=%s AND created_billing_cycle_id=%s AND state='S0P' AND " " acc_nbr BETWEEN '%s' AND '%s' AND sell_id=%s" "ORDER BY bill_serial_nbr DESC ", StaffID,CBillingCycleID,StartNbr,EndNbr,SellID); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,lsTemp); cDatabase->Rollback(); strcpy(lsTemp,"提取批量反销游标失败");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } if(cDatabase->GetRowCount()==0) { strcpy(lsTemp,"没有找到批量反销数据"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(100,lsTemp); } SupListT<EraseStruct> erase_list; lrow=cDatabase->GetRowCount(); for(long i=0;i<lrow;i++) { EraseStruct *psell=new EraseStruct; strcpy(psell->bill_serial_nbr,cDatabase->data->GetColData(i+1,1)); erase_list.AddTail(psell); } erase_list.SeekHead(); for(int i=0;i<erase_list.GetCount();i++) { EraseStruct *mysell=erase_list.GetNext(); rtrim(ltrim(strcpy(bill_serial_nbr,mysell->bill_serial_nbr))); sprintf(lsSql,"SELECT count(b.bill_serial_nbr) FROM BILL a,BILL b WHERE a.bill_serial_nbr = %s AND b.acct_id = a.acct_id AND b.state_date > a.state_date AND b.state = '40C'",bill_serial_nbr); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"销帐流水检查出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsTemp,cDatabase->GetData()); if(atol(lsTemp)>0) { cDatabase->Rollback(); erase_list.FreeList(1); StrReturn(-1,"只能反销最近的一次销帐!"); } sprintf(lsSql,"SELECT count(b.bill_serial_nbr) FROM BILL a,BILL b WHERE a.bill_serial_nbr = %s AND b.acct_id = a.acct_id AND b.staff_id = a.staff_id AND b.state_date = a.state_date AND b.bill_serial_nbr > %s AND b.state = '40C'",bill_serial_nbr,bill_serial_nbr); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"销帐流水检查出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsTemp,cDatabase->GetData()); if(atol(lsTemp)>0) { cDatabase->Rollback(); erase_list.FreeList(1); StrReturn(-1,"只能反销最近的一次销帐!"); } cDatabase->BeginTran(); sprintf(lsSql," UPDATE B_ACCT_ITEM_O " " SET state=decode(state,'20P','20C','20R','20Q','20X','20T','20U','20Y','20W','20S','20V','20Z',state) " " WHERE bill_serial_nbr = %s " " AND state in ('20P','20R','20X','20U','20W','20V')" ,bill_serial_nbr); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"修改帐目状态出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } if(cDatabase->GetRowCount()==0) { strcpy(lsTemp,"修改帐目状态出错,没有帐目被修改"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql,"SELECT acct_id,billing_cycle_id,charge FROM B_ACCT_ITEM_O WHERE bill_serial_nbr=%s AND acct_item_type_id = 999999",bill_serial_nbr); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"查找预付费抵消帐目出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } if(cDatabase->GetRowCount()==1) { rtrim(ltrim(strcpy(acct_id,cDatabase->data->GetColData(1,1)))); rtrim(ltrim(strcpy(billing_cycle_id,cDatabase->data->GetColData(1,2)))); rtrim(ltrim(strcpy(charge,cDatabase->data->GetColData(1,3)))); sprintf(lsSql,"INSERT INTO BALANCE_HIST_ADMIN " "SELECT SEQ_BALANCE_HIST_ADMIN.NEXTVAL,acct_id,(-1)*amount,'4',%s,balance-amount,sysdate,billing_cycle_id,'01' " "FROM BALANCE_HIST_ADMIN WHERE balance_hist_admin_id IN (SELECT max(balance_hist_admin_id) FROM BALANCE_HIST_ADMIN " " WHERE acct_id=%s AND billing_cycle_id=%s AND use_catg='3') ", StaffID,acct_id,billing_cycle_id); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"插入反销的预付费历史记录出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"插入反销的预付费历史记录出错,更新数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_charge",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql,"UPDATE BALANCE_TABLE_ADMIN SET total_amount=total_amount-(%s),state_date=sysdate WHERE acct_id=%s AND state='1'",charge,acct_id); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"更改反销的预付费台帐记录出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"更改反销的预付费台帐记录出错,更新数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_charge",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql,"UPDATE LBAS.ACCT SET balance=balance-(%s) WHERE acct_id=%s AND state='10A'",charge,acct_id); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"更新反销的计费库预付费余额出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_charge",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"更新反销的计费库预付费余额出错,更新数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_charge",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql,"UPDATE B_ACCT SET balance=balance-(%s) WHERE acct_id=%s AND state='10A'",charge,acct_id); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"更新反销的收费库预付费余额出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_charge",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"更新反销的收费库预付费余额出错,更新数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_charge",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql,"DELETE B_ACCT_ITEM_O WHERE bill_serial_nbr=%s AND acct_item_type_id = 999999",bill_serial_nbr); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"删除预付费抵消帐目出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_charge",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"删除预付费抵消帐目出错,更新数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_charge",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); erase_list.FreeList(1); StrReturn(-1,lsTemp); } } sprintf(lsSql,"DELETE B_ACCT_ITEM_O WHERE bill_serial_nbr = %s AND acct_item_type_id = 1",bill_serial_nbr); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -