📄 salemang.cpp
字号:
{
nSaleCutLevelFlag[nLine]=1;
bSaleCutIsValid[nLine]=FALSE;
fSaleCutRate=atof(Idlg->strCutRate[nLine]);
nTimeBetweenCount[nLine]++;//进入优惠时段,优惠时段计数器加加
}
else
{
fSaleCutRate=1;//没有折扣时段,无折扣计数器加加
nNoSaleCutCount[nLine]++;
nSaleCutLevelFlag[nLine]=0;
}
break;
case 0:
fSaleCutRate=1;//没有折扣时段,无折扣计数器加加
nNoSaleCutCount[nLine]++;
nSaleCutLevelFlag[nLine]=0;
break;
default:
break;
}
if(nCountMoneyTimes[nLine]<=nOFTimeLen)
{
fTotalORate[nLine]=fORate*nCountMoneyTimes[nLine];
strTotalORate[nLine].Format("%.2f",fTotalORate[nLine]);
}
f5[nLine][nSaleCutLevelFlag[nLine]]=atof(str5)*fSaleCutRate;//折扣后的费率,不包括附加费率
f5[nLine][nSaleCutLevelFlag[nLine]]=f5[nLine][nSaleCutLevelFlag[nLine]]*nMulti;
CString strFee;
strFee.Format("%.2f",(f5[nLine][3]*nHolidayCount[nLine]+f5[nLine][2]*nWeekCount[nLine]+f5[nLine][1]*nTimeBetweenCount[nLine]+f5[nLine][0]*nNoSaleCutCount[nLine]+fTotalORate[nLine]*nMulti)/nMulti);
m_SaleGrid.SetTextMatrix(nLine+1,6,strFee);
CString str6="";
str6.Format("%.1f",f5[nLine][nSaleCutLevelFlag[nLine]]);
int n5=atoi(str6);
if(!str8.IsEmpty())//如果押金为空,不需计算剩余话费
{
double f8=atof(str8);
f8=f8*nMulti;
CString str9="";
str9.Format("%.1f",f8);
int n8=atoi(str9);
CString strOFeeRate="";
strOFeeRate.Format("%.1f",fORate*nMulti);
int nRemain;
if(nCountMoneyTimes[nLine]<=nOFTimeLen)
{
nRemain=n8-n5-atoi(strOFeeRate);
}
else
nRemain=n8-n5;
if(nRemain<0)//此处应改为费率
{
nRemain=n8;
CString strHour="";
CString strMin="";
strHour=str4.Mid(0,2);
strMin=str4.Mid(3,2);
strRestoreTime=strHour+":"+strMin+":00";//恢复到0秒
nCountMoneyTimes[nLine]=nCountMoneyTimes[nLine]-1;
//自动切断通话
Idlg->ShutDownLine(nLine);
Idlg->bTalking[nLine]=FALSE;
Idlg->bClosed[nLine]=TRUE;
Idlg->AddToDb(nLine); //写记录信息
CString strShowLine="";
strShowLine.Format("%d",nLine);
m_SaleGrid.SetTextMatrix(nLine+1,1,"结束");
}
div_t nResult2;
nResult2=div(nRemain,nMulti);
int nYuan=0;
int nJiao=0;
nYuan=nResult2.quot;
nJiao=nResult2.rem;
CString strYuan;
strYuan.Format("%d",nYuan);
CString strJiao;
strJiao.Format("%d",nJiao);
if(strJiao.GetLength()==1)
strJiao="0"+strJiao;
CString strRemain;
strRemain=strYuan+"."+strJiao;
m_SaleGrid.SetTextMatrix(nLine+1,8,strRemain);
}
}
*/
void CSaleMang::CountMoney(int nLine)
{
UpdateData(TRUE);
strRestoreTime="";//初始话为空
CIPCountDlg *Idlg;
Idlg=(CIPCountDlg *)GetParent();
if(Idlg==NULL)
return ;
CTime t=CTime::GetCurrentTime();
CString strCurTime=t.Format("%Y-%m-%d %H:%M:%S");
CString strCurYear=strCurTime.Mid(0,4);
CString strCurMon=strCurTime.Mid(5,2);
CString strCurDay=strCurTime.Mid(8,2);
CString strCurHour=strCurTime.Mid(11,2);
CString strWeek;
strWeek.Format("%d",t.GetDayOfWeek()-1);
if(strcmp(strWeek,"0")==0)
strWeek="7";
CString str4=m_SaleGrid.GetTextMatrix(nLine+1,4);//时长
CString str5=strGFeeRate[nLine];//费率
CString str8=m_SaleGrid.GetTextMatrix(nLine+1,8);//押金
if(str4.IsEmpty())
str4="00:00:00";
nCountMoneyTimes[nLine]++;//附加费率计数器
double fSaleCutRate=0;//折扣率
fSaleCutRate=atof(Idlg->strCutRate[nLine]);
if(fSaleCutRate==0)
fSaleCutRate=1;
double fORate=atof(strSFeeRate[nLine]);//附加费率
int nOFTimeLen=atoi(strOFTimeLen[nLine]);//附加费率时长
int nStartTLen=atoi(strStartTLen[nLine]);//起计时长 for xiamen
switch(Idlg->nCutLevelFlag[nLine])
{
case 3:
if((atoi(strCurYear)>=atoi(Idlg->strStartCutYear[nLine]))&&(atoi(strCurYear)<=atoi(Idlg->strEndCutYear[nLine])))
{
if((atoi(strCurMon)>=atoi(Idlg->strStartCutMon[nLine]))&&(atoi(strCurMon)<=atoi(Idlg->strEndCutMon[nLine])))
{
if((atoi(strCurDay)>=atoi(Idlg->strStartCutDay[nLine]))&&(atoi(strCurDay)<=atoi(Idlg->strEndCutDay[nLine])))
{
nSaleCutLevelFlag[nLine]=3;
bSaleCutIsValid[nLine]=FALSE;
nHolidayCount[nLine]++;//节假日计数器加加
break;
}
else
bSaleCutIsValid[nLine]=TRUE;//过期
}
else
bSaleCutIsValid[nLine]=TRUE;//过期
}
else
bSaleCutIsValid[nLine]=TRUE;//过期
//过期则判断是否进入下一优惠时段
if(bSaleCutIsValid[nLine])
{
if((strcmp(strWeek,Idlg->strStartCutWeek[nLine])==0)||(strcmp(strWeek,Idlg->strEndCutWeek[nLine])==0))
{
bSaleCutIsValid[nLine]=FALSE;
fSaleCutRate=atof(Idlg->strLowCutRate[nLine]);
nSaleCutLevelFlag[nLine]=2;
nWeekCount[nLine]++;//进入周末优惠,周末优惠计数器加加
}
else
{
if((atoi(strCurHour)>=atoi(Idlg->strStartCutHour[nLine]))&&(atoi(strCurHour)<=atoi(Idlg->strEndCutHour[nLine])))
{
bSaleCutIsValid[nLine]=FALSE;
fSaleCutRate=atof(Idlg->strLowestCutRate[nLine]);
nTimeBetweenCount[nLine]++;//进入优惠时段,优惠时段计数器加加
nSaleCutLevelFlag[nLine]=1;
}
else
{
fSaleCutRate=1;//没有折扣时段,无折扣计数器加加
nNoSaleCutCount[nLine]++;
nSaleCutLevelFlag[nLine]=0;
}
}
}
break;
case 2:
if((strcmp(strWeek,Idlg->strStartCutWeek[nLine])==0)||(strcmp(strWeek,Idlg->strEndCutWeek[nLine])==0))
{
bSaleCutIsValid[nLine]=FALSE;
fSaleCutRate=atof(Idlg->strCutRate[nLine]);
nSaleCutLevelFlag[nLine]=2;
nWeekCount[nLine]++;//进入周末优惠,周末优惠计数器加加
}
else
{
if((atoi(strCurHour)>=atoi(Idlg->strStartCutHour[nLine]))&&(atoi(strCurHour)<=atoi(Idlg->strEndCutHour[nLine])))
{
bSaleCutIsValid[nLine]=FALSE;
fSaleCutRate=atof(Idlg->strLowestCutRate[nLine]);
nTimeBetweenCount[nLine]++;//进入优惠时段,优惠时段计数器加加
nSaleCutLevelFlag[nLine]=1;
}
else
{
fSaleCutRate=1;//没有折扣时段,无折扣计数器加加
nNoSaleCutCount[nLine]++;
nSaleCutLevelFlag[nLine]=0;
}
}
break;
case 1:
if((atoi(strCurHour)>=atoi(Idlg->strStartCutHour[nLine]))&&(atoi(strCurHour)<=atoi(Idlg->strEndCutHour[nLine])))
{
nSaleCutLevelFlag[nLine]=1;
bSaleCutIsValid[nLine]=FALSE;
fSaleCutRate=atof(Idlg->strCutRate[nLine]);
nTimeBetweenCount[nLine]++;//进入优惠时段,优惠时段计数器加加
}
else
{
fSaleCutRate=1;//没有折扣时段,无折扣计数器加加
nNoSaleCutCount[nLine]++;
nSaleCutLevelFlag[nLine]=0;
}
break;
case 0:
fSaleCutRate=1;//没有折扣时段,无折扣计数器加加
nNoSaleCutCount[nLine]++;
nSaleCutLevelFlag[nLine]=0;
break;
default:
break;
}
if(nStartTLen>1)
{
if(nCountMoneyTimes[nLine]>nStartTLen)//小于起计时长时
{
fTotalORate[nLine]=fORate;
str5=strSFeeRate[nLine];//费率等于所设的附加费率
nNoSaleCutCount[nLine]=nCountMoneyTimes[nLine];//将计数器回复
}
else
{
fTotalORate[nLine]=fORate;
nNoSaleCutCount[nLine]=1;//计数器不发生变化
}
strTotalORate[nLine].Format("%.2f",fTotalORate[nLine]);
}
else
{
if(nCountMoneyTimes[nLine]<=nOFTimeLen)
{
fTotalORate[nLine]=fORate*nCountMoneyTimes[nLine];
strTotalORate[nLine].Format("%.2f",fTotalORate[nLine]);
}
}
f5[nLine][nSaleCutLevelFlag[nLine]]=atof(str5)*fSaleCutRate;//折扣后的费率,不包括附加费率
f5[nLine][nSaleCutLevelFlag[nLine]]=f5[nLine][nSaleCutLevelFlag[nLine]]*nMulti;
CString strFee;//话费
strFee.Format("%.2f",(f5[nLine][3]*nHolidayCount[nLine]+f5[nLine][2]*nWeekCount[nLine]+f5[nLine][1]*nTimeBetweenCount[nLine]+f5[nLine][0]*nNoSaleCutCount[nLine]+fTotalORate[nLine]*nMulti)/nMulti);
m_SaleGrid.SetTextMatrix(nLine+1,6,strFee);
CString str6="";
str6.Format("%.1f",f5[nLine][nSaleCutLevelFlag[nLine]]);
int n5=atoi(str6);
if(!str8.IsEmpty())//如果押金为空,不需计算剩余话费
{
double f8=atof(str8);
f8=f8*nMulti;
CString str9="";
str9.Format("%.1f",f8);
int n8=atoi(str9);
CString strOFeeRate="";
strOFeeRate.Format("%.1f",fORate*nMulti);
int nRemain;
if(nStartTLen>1)//起计时长大于一分钟
{
if(nCountMoneyTimes[nLine]<=nStartTLen)
{
//n8=nInitCount*nMulti;
if(nCountMoneyTimes[nLine]<2)//前三分钟话费不变
nRemain=n8-n5-atoi(strOFeeRate);
else
nRemain=n8;
}
else
{
nRemain=n8-atoi(strOFeeRate);
}
}
else
{
if(nCountMoneyTimes[nLine]<=nOFTimeLen)
{
nRemain=n8-n5-atoi(strOFeeRate);
}
else
nRemain=n8-n5;
}
if(nRemain<0)//此处应改为费率
{
nRemain=n8;
CString strHour="";
CString strMin="";
strHour=str4.Mid(0,2);
strMin=str4.Mid(3,2);
strRestoreTime=strHour+":"+strMin+":00";//恢复到0秒
nCountMoneyTimes[nLine]=nCountMoneyTimes[nLine]-1;
//自动切断通话
Idlg->ShutDownLine(nLine);
Idlg->bTalking[nLine]=FALSE;
Idlg->bClosed[nLine]=TRUE;
Idlg->AddToDb(nLine); //写记录信息
CString strShowLine="";
strShowLine.Format("%d",nLine);
m_SaleGrid.SetTextMatrix(nLine+1,1,"结束");
}
div_t nResult2;
nResult2=div(nRemain,nMulti);
int nYuan=0;
int nJiao=0;
nYuan=nResult2.quot;
nJiao=nResult2.rem;
CString strYuan;
strYuan.Format("%d",nYuan);
CString strJiao;
strJiao.Format("%d",nJiao);
if(strJiao.GetLength()==1)
strJiao="0"+strJiao;
CString strRemain;
strRemain=strYuan+"."+strJiao;
m_SaleGrid.SetTextMatrix(nLine+1,8,strRemain);
}
}
//依据被叫号从文件中获得该次通话的费率
//2002-09-13 修改费率获取代码
void CSaleMang::GetFeeRate(CString strCalledNum,int nLineNum)
{
CIPCountDlg *Ipdlg;
Ipdlg=(CIPCountDlg *)GetParent();
strGFeeRate[nLineNum]="";
strSFeeRate[nLineNum]="";//附加费率
strOFTimeLen[nLineNum]="";//附加费率时长
strStartTLen[nLineNum]="";//起计时长
Ipdlg->strAreaName[nLineNum]="";
CString strCalledNo[8];
for(int nCalledNum=7;nCalledNum>=0;nCalledNum--)
{
if(strCalledNum.GetLength()>=nCalledNum)
{
strCalledNo[nCalledNum]=strCalledNum.Mid(0,nCalledNum);
for(int nCmpFee=0;nCmpFee<Ipdlg->nFeeNum+1;nCmpFee++)
{
if(strcmp(strCalledNo[nCalledNum],Ipdlg->strFeeType[nCmpFee])==0)
{
strGFeeRate[nLineNum]=Ipdlg->strFeeMoney[nCmpFee];//v12.03.05
strSFeeRate[nLineNum]=Ipdlg->strOFeeMoney[nCmpFee];
strOFTimeLen[nLineNum]=Ipdlg->strOFeeTimeLen[nCmpFee];
strStartTLen[nLineNum]=Ipdlg->strStartTLen[nCmpFee];//for xiamen
switch(nCalledNum)
{
case 1:
if(strcmp(strCalledNo[nCalledNum],"0")==0)
Ipdlg->strAreaName[nLineNum]="国内";
else
Ipdlg->strAreaName[nLineNum]="本地";
break;
case 2:
if(strcmp(strCalledNo[nCalledNum],"00")==0)
Ipdlg->strAreaName[nLineNum]="国际";
else
{
if(strcmp(strCalledNo[nCalledNum].Mid(0,1),"0")==0)
Ipdlg->strAreaName[nLineNum]="国内";
else
Ipdlg->strAreaName[nLineNum]="本地";
}
break;
case 3:
if(strcmp(strCalledNo[nCalledNum],"001")==0)
Ipdlg->strAreaName[nLineNum]="美加";
else
{
if(strcmp(strCalledNo[nCalledNum].Mid(0,2),"00")==0)
Ipdlg->strAreaName[nLineNum]="国际";
else
{
if(strcmp(strCalledNo[nCalledNum].Mid(0,1),"0")==0)
Ipdlg->strAreaName[nLineNum]="国内";
else
Ipdlg->strAreaName[nLineNum]="本地";
}
}
break;
case 4:
if(strcmp(strCalledNo[nCalledNum].Mid(0,3),"001")==0)
Ipdlg->strAreaName[nLineNum]="美加";
else
{
if(strcmp(strCalledNo[nCalledNum].Mid(0,2),"00")==0)
Ipdlg->strAreaName[nLineNum]="国际";
else
{
if(strcmp(strCalledNo[nCalledNum].Mid(0,1),"0")==0)
Ipdlg->strAreaName[nLineNum]="国内";
else
Ipdlg->strAreaName[nLineNum]="本地";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -