📄 charge_jlt_print.cpp
字号:
}
lrow=cDatabase->GetRowCount();
if(lrow==0)
{
cDatabase->Commit();
StrReturn(100,"未找到用户acct_id信息");
}
strcpy(lsRettemp,rtrim(ltrim(cDatabase->GetData())));strcat(lsRettemp,"\t");
strcat(lsRettemp,serv_id);
sprintf(lsSql,"SELECT bill_format_id FROM ACCT_BILL_FORMAT WHERE acct_id = %s ",acct_id);
cDatabase->DoSql(lsSql);
isqlcode=cDatabase->GetSqlCode();
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)
{
bill_format_id=cDatabase->GetData();
strcat(lsRettemp,"\t");
strcat(lsRettemp,bill_format_id);
}
cDatabase->Commit();
StrReturn(0,lsRettemp);
default:
cDatabase->Commit();
StrReturn(-1,"未知的号码类型");
}
}
void CPayment::GetItem(char *StaffID,char *ItemType,char *Code)
{
char lsSql[2048],lsTemp[1024],lsErr[500],lsRetstr[2048],lsRettemp[500];
int isqlcode,lrow;
int itemtype;
itemtype = atoi(ItemType);
switch (itemtype)
{
case 1: //按合同号销帐
sprintf(lsSql,"SELECT /*+ all_rows */ a.acct_id,a.billing_cycle_id,a.partner_id,a.bill_item_id,to_char(b.due_date,'yyyy-mm-dd'),sum(a.charge),"
"count(a.acct_item_id),max(a.serv_id),max(a.acct_item_id),1 flag,a.state "
"FROM B_ACCT_ITEM_O a, "
"B_BILLING_CYCLE b "
"WHERE a.billing_cycle_id = b.billing_cycle_id and "
"a.acct_id = %s AND "
"a.state in ('20C','20Q','20S','20T','20Y','20Z') "
"group by a.acct_id, "
"a.billing_cycle_id, "
"a.partner_id, "
"a.bill_item_id, "
"to_char(b.due_date,'yyyy-mm-dd'),a.state "
"order by a.acct_id, "
"a.billing_cycle_id, "
"a.partner_id, "
"a.bill_item_id",Code);
//userlog(lsSql);
cDatabase->DoSql(lsSql);
isqlcode=cDatabase->GetSqlCode();
//userlog("sqlcode= %d",isqlcode);
//userlog("RowCount= %d",cDatabase->GetRowCount());
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());
case 2: //按电话号销帐
sprintf(lsSql,"SELECT /*+ all_rows */ a.acct_id,a.billing_cycle_id,a.partner_id,a.bill_item_id,"
"to_char(b.due_date,'yyyy-mm-dd'),sum(a.charge),count(a.acct_item_id),a.serv_id,max(a.acct_item_id),1 flag,a.state "
"FROM B_ACCT_ITEM_O a, "
"B_BILLING_CYCLE b "
"WHERE a.billing_cycle_id = b.billing_cycle_id AND "
"a.serv_id = %s AND "
"a.state in ( '20C','20Q','20S','20T','20Y','20Z' ) "
"group by a.acct_id, "
"a.serv_id, "
"a.billing_cycle_id, "
"a.partner_id, "
"a.bill_item_id, "
"to_char(b.due_date,'yyyy-mm-dd'),a.state "
"order by a.acct_id, "
"a.serv_id, "
"a.billing_cycle_id, "
"a.partner_id, "
"a.bill_item_id",Code);
cDatabase->DoSql(lsSql);
isqlcode=cDatabase->GetSqlCode();
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];
int user_num,item_num,late_num;
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);
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);
}
}
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);
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(strcmp(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",late_fee,bill_serial_nbr,max_item_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();
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(strcmp(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);
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(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));
sprintf(charge_total,"%d",atol(charge_total)+atol(amount));
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) "
"VALUES (%s,%s,sysdate,%s,sysdate,null,1,sysdate,null,null, "
"'40C',sysdate,%s,%s,%s,%s)",
bill_serial_nbr,pay_serial_nbs,StaffID,bill_serial_nbr,amount,
acct_id,old_change);
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -