📄 charge_payment.cpp
字号:
"a.serv_id, " "a.billing_cycle_id, " "a.partner_id, " "a.bill_item_id",Code); cDatabase->DoSql(lsSql); isqlcode=cDatabase->GetSqlCode(); //userlog(lsSql); if(isqlcode<0) { strcpy(lsTemp,cDatabase->GetSqlErrText());strcat(lsTemp,"\n"); strcpy(lsRetstr,"提取电话号帐目出错"); if(WriteLog(cDatabase,StaffID,"w_p_charge",strcat(lsRetstr,lsTemp),lsErr)!=1) strcat(lsTemp,lsErr); cDatabase->Commit(); StrReturn(-1,lsTemp); } lrow=cDatabase->GetRowCount(); if(lrow==0) { cDatabase->Commit(); StrReturn(100,"未找到电话号帐目"); } cDatabase->Commit(); StrReturn(0,cDatabase->GetData()); default: cDatabase->Commit(); StrReturn(-1,"未知的销帐类型"); }}void CPayment::WriteOff(){ char lsSql[2048],lsTemp[1024],lsErr[500],lsRetstr[2048],lsRettemp[500]; int isqlcode,lrow,item_count; FBFR32 *tpst; FLDLEN32 len=20,rcvlen; char acct_id[9],billing_cycle_id[7],partner_id[5],bill_item_id[7],serv_id[11]; char late_fee[10],derated[10],max_item_id[20],payment_method[3]; char StaffID[7],bill_serial_nbs[19],pay_serial_nbs[19],bill_serial_nbr[19]; char acct_id_cur[9],billing_cycle_id_cur[7],chequ_nbr[25],card_nbr[21]; char old_change[3],new_change[3],acct_seq_nbr[4]; char charge_cur[11],charge_total[11],charge[11],amount[11],pay_type[2],change_type[2]; long balance,new_balance,ll_amount; char ls_w_balance[20],ls_w_advance[20],ls_w_present[20];//余额 long w_balance,w_advance,w_present;//余额 acct_id[0]=0;billing_cycle_id[0]=0;partner_id[0]=0;bill_item_id[0]=0;serv_id[0]=0; late_fee[0]=0;derated[0]=0;max_item_id[0]=0;payment_method[0]=0; StaffID[0]=0;bill_serial_nbs[0]=0;pay_serial_nbs[0]=0;bill_serial_nbr[0]=0; acct_id_cur[0]=0;billing_cycle_id_cur[0]=0;chequ_nbr[0]=0;card_nbr[0]=0; old_change[0]=0;new_change[0]=0;acct_seq_nbr[0]=0; charge_cur[0]=0;charge_total[0]=0;charge[0]=0;amount[0]=0;pay_type[0]=0;change_type[0]=0; int user_num,item_num,late_num; float charge_sum=0.0; tpst=(FBFR32 *)pInp; Fprint32(tpst); len=20; Fget32(tpst,USER_NUM,0,lsTemp,&len); user_num = atoi(lsTemp); len=20; Fget32(tpst,ITEM_NUM,0,lsTemp,&len); item_num = atoi(lsTemp); len=20; Fget32(tpst,LATE_NUM,0,lsTemp,&len); late_num = atoi(lsTemp); len=20; Fget32(tpst,STAFF_ID,0,lsTemp,&len); strcpy(StaffID,lsTemp); len=30; Fget32(tpst,CHEQU_NBR_PAY,0,lsTemp,&len); strcpy(chequ_nbr,lsTemp); len=30; Fget32(tpst,CREDIT_CARD_NBR_PAY,0,lsTemp,&len); strcpy(card_nbr,lsTemp); len=10; Fget32(tpst,PAY_TYPE,0,lsTemp,&len); strcpy(pay_type,lsTemp); len=10; Fget32(tpst,CHANGE_TYPE,0,lsTemp,&len); strcpy(change_type,lsTemp); cDatabase->BeginTran(); 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_charge",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } sprintf(bill_serial_nbr,bill_serial_nbs); isqlcode=GetMaxPayNo(cDatabase,StaffID,pay_serial_nbs,lsTemp); if(isqlcode<0) { strcpy(lsRetstr,lsTemp); cDatabase->Rollback(); strcpy(lsTemp,"提取最大付款流水号出错3");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); } len=20; Fget32(tpst,ACCT_ID_ITEM,0,lsTemp,&len); strcpy(acct_id,lsTemp); len=20; Fget32(tpst,BILLING_CYCLE_ID_ITEM,0,lsTemp,&len); strcpy(billing_cycle_id,lsTemp); for(lrow=1;lrow<=user_num;lrow++) { len=20; Fget32(tpst,ACCT_ID_USER,lrow-1,lsTemp,&len); if(strcmp(lsTemp,acct_id)==0) { len=20; Fget32(tpst,CHANGE_USER,lrow-1,lsTemp,&len); strcpy(old_change,lsTemp); lsTemp[0]=0; len=sizeof(lsTemp); Fget32(tpst,BALANCE_USER,lrow-1,lsTemp,&len); balance=atol(lsTemp); lsTemp[0]=0; len=sizeof(lsTemp); Fget32(tpst,NEW_BALANCE_USER,lrow-1,lsTemp,&len); new_balance=atol(lsTemp); } } sprintf(new_change,old_change); sprintf(charge_total,"0"); sprintf(charge,"0"); for(lrow=1;lrow<=item_num;lrow++) { len=20; Fget32(tpst,ACCT_ID_ITEM,lrow-1,lsTemp,&len); strcpy(acct_id_cur,lsTemp); len=20; Fget32(tpst,SERV_ID_ITEM,lrow-1,lsTemp,&len); strcpy(serv_id,lsTemp); len=20; Fget32(tpst,BILLING_CYCLE_ID_ITEM,lrow-1,lsTemp,&len); strcpy(billing_cycle_id_cur,lsTemp); len=20; Fget32(tpst,PARTNER_ID_ITEM,lrow-1,lsTemp,&len); strcpy(partner_id,lsTemp); len=20; Fget32(tpst,INVO_ITEM_ID_ITEM,lrow-1,lsTemp,&len); strcpy(bill_item_id,lsTemp); len=20; Fget32(tpst,CHARGE_ITEM,lrow-1,lsTemp,&len); strcpy(charge_cur,lsTemp); len=20; Fget32(tpst,ITEM_COUNT_ITEM,lrow-1,lsTemp,&len); item_count = atoi(lsTemp); //userlog("charge_total0=%s,charge_sum=%.0f,lrow=%d",charge_total,charge_sum,lrow); if(strcmp(acct_id,acct_id_cur)!=0||strcmp(billing_cycle_id,billing_cycle_id_cur)!=0) { for(int lrow1=1;lrow1<=late_num;lrow1++) { len=20; Fget32(tpst,ACCT_ID_LATE,lrow1-1,lsTemp,&len); if(strcmp(acct_id,lsTemp)==0) { len=20; Fget32(tpst,BILLING_CYCLE_ID_LATE,lrow1-1,lsTemp,&len); if(strcmp(billing_cycle_id,lsTemp)==0) { len=20; Fget32(tpst,LATE_FEE_LATE,lrow1-1,lsTemp,&len); strcpy(late_fee,lsTemp); len=20; Fget32(tpst,DERATE_LATE,lrow1-1,lsTemp,&len); strcpy(derated,lsTemp); len=20; Fget32(tpst,ACCT_ITEM_ID_LATE,lrow1-1,lsTemp,&len); strcpy(max_item_id,lsTemp); if(atof(late_fee)!=0.0) { sprintf(lsSql,"INSERT INTO B_ACCT_ITEM_O SELECT acct_item_id,serv_id,serv_seq_nbr,acct_id,acct_seq_nbr,1,%s,billing_cycle_id,sysdate,1,'20P',sysdate,0,0,1,1,%s,'1' FROM B_ACCT_ITEM_O WHERE acct_item_id=%s and special_acct_flag='0'",late_fee,bill_serial_nbr,max_item_id); //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",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); } } if(atof(derated)!=0.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'",derated,bill_serial_nbr,max_item_id); //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",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); } } } } } if (change_type[0]=='1') { sprintf(charge,"%d",atol(charge)+atol(old_change)+atol(late_fee)-atol(derated)); sprintf(amount,"%d",atol(charge) / 100 * 100); sprintf(new_change,"%d",atol(charge) - atol(amount)); if((balance - atol(amount))>0) { new_balance=balance-atol(amount); balance=atol(amount); } else { new_balance=balance-balance/100*100; balance=balance/100*100; } //sprintf(charge_total,"%d",atol(charge_total)+atol(amount)); charge_sum=charge_sum+atol(amount)-balance; sprintf(lsTemp,"%lf",charge_sum); //userlog(lsTemp); } else { sprintf(charge,"%d",atol(charge)+atol(old_change)+atol(late_fee)-atol(derated)); sprintf(amount,"%d",atol(charge)); sprintf(new_change,"%d",0); if(balance-atol(amount)>0) { new_balance=balance-atol(amount); balance=atol(amount); } else { new_balance=0; } //sprintf(charge_total,"%d",atol(charge_total)+atol(amount)); charge_sum=charge_sum+atol(amount)- balance; } //userlog("charge_total=%s",charge_total); 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) " "VALUES (%s,%s,sysdate,%s,sysdate,null,1,sysdate,null,null, " "'40C',sysdate,%s,%s,%s,%s,%s,%s)", bill_serial_nbr,pay_serial_nbs,StaffID,bill_serial_nbr,amount, acct_id,old_change,new_change,billing_cycle_id); //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",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(old_change,new_change); sprintf(charge,"0");// if(balance>0)// { sprintf(lsSql, "INSERT INTO BALANCE_HIST_ADMIN " "(balance_hist_admin_id,acct_id,amount,use_catg,staff_id,balance,use_date,state,bill_serial_nbr,billing_cycle_id ) " "VALUES (SEQ_BALANCE_HIST_ADMIN.nextval,%s,-%ld,'3', " "%s,%ld,sysdate,'01',%s, %s) " ,acct_id,balance,StaffID,new_balance,bill_serial_nbr,billing_cycle_id); //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",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback(); } else cDatabase->Commit(); StrReturn(-1,lsTemp); } // } isqlcode=GetMaxBillNo(cDatabase,StaffID,bill_serial_nbr,lsTemp); if(isqlcode<0) { strcpy(lsRetstr,lsTemp); cDatabase->Rollback(); strcpy(lsTemp,"提取最大销帐流水号出错1");strcat(lsTemp,"\n"); if(WriteLog(cDatabase,StaffID,"w_p_charge",strcat(lsTemp,lsRetstr),lsErr)!=1) { strcat(lsTemp,lsErr); cDatabase->Rollback();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -