📄 charge_sell.cpp
字号:
acct_id,billing_cycle_id); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); if(isqlcode<0) { cDatabase->Rollback(); strcpy(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); strcpy(lsRetstr,"提取后台滞纳金减免定义出错"); if(WriteLog(cDatabase,StaffID,"w_p_sell",strcat(lsRetstr,lsTemp),lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } lrow=cDatabase->GetRowCount(); if(lrow==1) { rtrim(ltrim(strcpy(derated_type,cDatabase->data->GetColData(1,1)))); rtrim(ltrim(strcpy(derated_value,cDatabase->data->GetColData(1,2)))); switch (atoi(derated_type)) { case 1: if(atol(derated_value)>atol(late_fee)) sprintf(derate,late_fee); else sprintf(derate,derated_value); break; case 2: if(atol(derated_value)>100) sprintf(derated_value,"%d",100); sprintf(derate,"%.0f",atol(late_fee)*atol(derated_value)*0.01); break; case 3: if(atol(derated_value)>atol(due_date)) sprintf(derated_value,due_date); sprintf(derate,"%.0f",atol(late_fee)*0.01*100*atol(derated_value)/atol(due_date)); break; default: sprintf(derate,"%d",0); } sprintf(lsSql," INSERT INTO B_ACCT_ITEM_O " " SELECT acct_item_id,serv_id,serv_seq_nbr,acct_id,acct_seq_nbr,1,(-1)*%s," " billing_cycle_id,sysdate,1,'20P',sysdate,0,0,1,1,%s,'3' " " FROM B_ACCT_ITEM_O " " WHERE acct_item_id=%s AND special_acct_flag='0'", derate,bill_serial_nbs,acct_item_id); //userlog(lsSql); 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); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"插入滞纳金减免失败,插入数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } } } sprintf(total_charge,"%d",atol(charge)+atol(last_change)+atol(late_fee)-atol(derate)); if(atoi(Balance)==1&&atol(last_balance)!=0&&atol(total_charge)!=0) { if(atol(total_charge)<atol(last_balance)) { sprintf(last_balance,"%d",atol(last_balance)-atol(total_charge)); sprintf(balance,total_charge); sprintf(total_charge,"%d",0); } else { sprintf(balance,last_balance); sprintf(total_charge,"%d",atol(total_charge)-atol(balance)); sprintf(last_balance,"%d",0); } sprintf(lsSql," INSERT INTO B_ACCT_ITEM_O " " SELECT acct_item_id,serv_id,serv_seq_nbr,acct_id,acct_seq_nbr,999999,(-1)*%s," " billing_cycle_id,sysdate,1,'20P',sysdate,0,0,999999,999999,%s,'4' " " FROM B_ACCT_ITEM_O " " WHERE acct_item_id=%s AND special_acct_flag='0'", balance,bill_serial_nbs,acct_item_id); //userlog(lsSql); 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); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"插入预付款抵消帐目失败,插入数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql," INSERT INTO BALANCE_HIST_ADMIN " " ( balance_hist_admin_id,acct_id,amount,use_catg,staff_id,balance,use_date,billing_cycle_id,state ) " " VALUES (SEQ_BALANCE_HIST_ADMIN.NEXTVAL,%s,(-1)*%s,'3',%s,%s,sysdate,%s,'01')", acct_id,balance,StaffID,last_balance,billing_cycle_id); 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); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"插入预付费历史表失败,插入数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql,"UPDATE BALANCE_TABLE_ADMIN SET total_amount=%s,state_date=sysdate WHERE acct_id=%s AND state='1'",last_balance,acct_id); 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); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"更新预付费台帐表失败,更新数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } } else { sprintf(balance,"%d",0); //sprintf(last_balance,"%d",0); } if(atoi(Change)==1) { sprintf(amount,"%d",atol(total_charge) / 100 * 100); sprintf(change,"%d",atol(total_charge) - atol(amount)); } else { sprintf(amount,total_charge); sprintf(change,"%d",0); } sprintf(lsSql,"UPDATE LBAS.ACCT SET change=%s,balance=%s WHERE acct_id=%s AND state='10A'",change,last_balance,acct_id); 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); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"更新计费库零钞和预付费失败,更新数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql,"UPDATE B_ACCT SET change=%s,balance=%s WHERE acct_id=%s AND state='10A'",change,last_balance,acct_id); 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); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"更新收费库零钞和预付费失败,更新数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql," UPDATE B_ACCT_ITEM_O " " SET state=decode(state,'20C','20P','20Q','20R','20T','20X','20Y','20U','20S','20W','20Z','20V',state)," " state_date=sysdate," " bill_serial_nbr=%s " " WHERE acct_id = %s " " AND billing_cycle_id = %s " " AND state in ('20C','20Q','20T','20Y','20S','20Z')" ,bill_serial_nbs,acct_id,billing_cycle_id); 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); } if(cDatabase->GetRowCount()!=atol(item_count)) { strcpy(lsTemp,"更新帐目表失败,更新数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,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 amount=%s,change=%s,last_change=%s,balance=%s,last_balance=%s,derated=%s, " " bill_serial_nbr=%s,pay_serial_nbr=%s " "WHERE acct_id=%s AND billing_cycle_id=%s AND state='S0C' ", amount,change,last_change,balance,last_balance,derate,bill_serial_nbs,pay_serial_nbs,acct_id,billing_cycle_id); 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); } if(cDatabase->GetRowCount()!=1) { strcpy(lsTemp,"更新批量销帐中间表失败,更新数目不合"); cDatabase->Rollback(); if(WriteLog(cDatabase,StaffID,"w_p_sell",lsTemp,lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(last_change,change); isqlcode=GetMaxBillNo(cDatabase,StaffID,bill_serial_nbs,lsTemp); 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,"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,new_change,billing_cycle_id )" "SELECT bill_serial_nbr,pay_serial_nbr,sysdate,staff_id,sysdate,NULL,1,sysdate,NULL," " NULL,'40C',sysdate,bill_serial_nbr,amount,acct_id,last_change,0,created_billing_cycle_id " "FROM B_ACCT_ITEM_SELL WHERE staff_id=%s AND created_billing_cycle_id=%s AND state='S0C'", StaffID,CBillingCycleID); //userlog(lsSql); 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,"INSERT INTO PAYMENT " "SELECT pay_serial_nbr,max(acct_id),max(acct_seq_nbr),'11','10',NULL,sum(amount),sysdate," " max(staff_id),'C0C',sysdate,NULL,NULL " "FROM B_ACCT_ITEM_SELL WHERE staff_id=%s AND created_billing_cycle_id=%s AND state='S0C' " "GROUP BY pay_serial_nbr", StaffID,CBillingCycleID); 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(); sell_list.FreeList(1); StrReturn(-1,lsTemp); } sprintf(lsSql,"INSERT INTO SERV_PAID_UNPAY " "SELECT seq_serv_paid_unpay.NEXTVAL, aa.* "
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -