📄 charge_erase.cpp
字号:
cDatabase->Commit(); StrReturn(-1,lsTemp); } sprintf(acct_id,cDatabase->GetData()); cDatabase->BeginTran(); sprintf(lsSql," UPDATE /*+ all_rows */ B_ACCT_ITEM_O " " SET state=decode(state,'20P','20C','20R','20Q','20X','20T','20U','20Y','20W','20S','20V','20Z',state), " " state_date=sysdate " " WHERE acct_id=%s " " and bill_serial_nbr = %s " " AND state in ('20P','20R','20X','20U','20W','20V')" ,acct_id,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_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } sprintf(lsSql, " INSERT INTO intf_acct_item(Acct_item_id,Billing_cycle_id,Acct_id, " " Serv_id,Acct_item_type_id,Charge,Action,Action_date) " " SELECT to_char(acct_item_id),to_char(billing_cycle_id),to_char(acct_id),to_char(serv_id), " " to_char(acct_item_type_id),charge,'02',sysdate " " FROM B_ACCT_ITEM_O " " WHERE acct_id=%s " " AND bill_serial_nbr = %s " " AND acct_item_type_id not in (1,999999,999998) " " AND state in ('20C','20Q','20T','20Y','20S','20Z')" ,acct_id,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_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } sprintf(lsSql," delete from b_acct_item_sell where acct_id=%s and bill_serial_nbr=%s " ,acct_id,bill_serial_nbr ); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"删除b_acct_item_sell表中记录出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); 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 and special_acct_flag='4' ",bill_serial_nbr); //userlog(lsSql); 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_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); 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,"DELETE B_ACCT_ITEM_O WHERE bill_serial_nbr=%s AND acct_item_type_id = 999999 and special_acct_flag='4' ",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(); 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(); StrReturn(-1,lsTemp); } } sprintf(lsSql,"DELETE /*+ all_rows */ B_ACCT_ITEM_O WHERE bill_serial_nbr = %s AND acct_item_type_id = 1",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_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } sprintf(lsSql,"UPDATE BILL SET state = '40R', state_date = sysdate WHERE bill_serial_nbr=%s",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_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } isqlcode=GetMaxPayNo(cDatabase,StaffID,pay_serial_nbr,lsTemp); if(isqlcode<0) { strcpy(lsRetstr,lsTemp); cDatabase->Rollback(); strcpy(lsTemp,"提取最大付款流水号出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } sprintf(lsSql,"UPDATE PAYMENT " "SET state = 'C0R',state_date = sysdate " "WHERE rowid in ( SELECT a.rowid " "FROM payment a,BILL b " "WHERE a.pay_serial_nbr=b.pay_serial_nbr " "AND b.bill_serial_nbr=%s)",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_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } char hist_admin[10],balance[10],present[10]; sprintf(lsSql,"select nvl(amount,0),nvl(balance,0),acct_id,nvl(present,0) from balance_hist_admin " " where bill_serial_nbr=%s " ,bill_serial_nbr); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"从balance_hist_admin提取信息出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } lrow=cDatabase->GetRowCount(); if(lrow>0) { rtrim(ltrim(strcpy(hist_admin,cDatabase->data->GetColData(1,1)))); rtrim(ltrim(strcpy(balance,cDatabase->data->GetColData(1,2)))); rtrim(ltrim(strcpy(acct_id,cDatabase->data->GetColData(1,3)))); rtrim(ltrim(strcpy(present,cDatabase->data->GetColData(1,4)))); } else { strcpy(hist_admin,"0"); strcpy(balance,"0"); strcpy(present,"0"); } sprintf(lsSql," update balance_hist_admin " " set state='02' " " where bill_serial_nbr=%s " ,bill_serial_nbr ); //userlog(lsSql); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { strcpy(lsRetstr,cDatabase->GetSqlErrText()); cDatabase->Rollback(); strcpy(lsTemp,"删除balance_hist_admin信息出错");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_charge_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } //pc版改动/* sprintf(lsSql,"INSERT INTO PAYMENT (pay_serial_nbr,acct_id,acct_seq_nbr,payment_method," "operation_type,oper_serial_nbr,amount,pay_date, " "staff_id,state,state_date,chequ_nbr,card_nbr ) " "SELECT %s,b.acct_id,a.acct_seq_nbr,a.payment_method,'20',a.pay_serial_nbr, " "(-1)*(nvl(b.amount,0)),a.pay_date,b.staff_id,'C0S',sysdate,a.chequ_nbr,a.card_nbr " "FROM PAYMENT a,BILL b " "WHERE a.pay_serial_nbr=b.pay_serial_nbr AND " "b.bill_serial_nbr=%s",pay_serial_nbr,bill_serial_nbr);*/ sprintf(lsSql,"INSERT INTO PAYMENT (pay_serial_nbr,acct_id,acct_seq_nbr,payment_method," "operation_type,oper_serial_nbr,amount,pay_date, " "staff_id,state,state_date,chequ_nbr,card_nbr ) " "SELECT %s,b.acct_id,a.acct_seq_nbr,a.payment_method,'20',a.pay_serial_nbr, " "(-1)*(nvl(b.amount,0)+nvl(c.amount,0)),a.pay_date,b.staff_id,'C0S',sysdate,a.chequ_nbr,a.card_nbr " "FROM PAYMENT a,BILL b,balance_hist_admin c " "WHERE a.pay_serial_nbr=b.pay_serial_nbr AND " "b.bill_serial_nbr=%s and b.bill_serial_nbr=c.bill_serial_nbr(+)" ,pay_serial_nbr,bill_serial_nbr); //userlog(lsSql); 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_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } sprintf(lsSql,"UPDATE B_ACCT " "SET change=(SELECT BILL.change " "FROM B_ACCT,BILL " "WHERE B_ACCT.acct_id=BILL.acct_id " "AND B_ACCT.state='10A' " "AND BILL.bill_serial_nbr=%s), " " balance=(balance - (%s)) " "where B_ACCT.rowid in (SELECT B_ACCT.rowid " "FROM B_ACCT ,BILL " "WHERE B_ACCT.acct_id=BILL.acct_id " "AND B_ACCT.state='10A' " "AND BILL.bill_serial_nbr=%s)" ,bill_serial_nbr,hist_admin,bill_serial_nbr); //userlog(lsSql); 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_erase",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } sprintf(lsSql, "UPDATE LBAS.ACCT " "SET change=(SELECT BILL.change " "FROM LBAS.ACCT,BILL " "WHERE LBAS.ACCT.acct_id=BILL.acct_id " "AND LBAS.ACCT.state='10A' " "AND BILL.bill_serial_nbr=%s), " " balance=(balance-(%s)) " "where LBAS.ACCT.rowid in (SELECT LBAS.ACCT.rowid " "FROM LBAS.ACCT,BILL " "WHERE LBAS.ACCT.acct_id=BILL.acct_id " "AND LBAS.ACCT.state='10A' " "AND BILL.bill_serial_nbr=%s) " ,bill_serial_nbr,hist_admin,bill_serial_nbr); //userlog(lsSql); 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_erase",strcat(lsTemp,lsRetstr),lsErr)!=1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -