欢迎光临
我们一直在努力

计算合同内各级别的价格函数

建站超值云服务器,限时71元/月

需求:

按月计算合同内各级别物品的总价

给定条件如下:

1.合同内共有四种级别物别,且价格不同;

2.各级别物品价格的定义为每月的价格;

3.每天的价格为各级别物品的价格除以30;

4.要求计算输入的日期段内的价格,(截止日期大于起始日期,如小于不必考虑)

5.如果两日期相差不到一个月,则小于15天的,总价按天数计算;大于等于15天的按月计算

6.如果两日期相差大于一个月,则整月的,总价按月计算;

7.大于一个月且非整月的,则小于15天的,总价按天数计算;大于等于15天的按月计算

实现:

计算指定时间段内的合同总价:<br><br>

<form method="post" action="test.asp?action=1">

  发布起始日期:<input type="text" name="datestart" value="<%=request("datestart")%>"><br>

  发布截止日期:<input type="text" name="dateend" value="<%=request("dateend")%>"><br>

    aa 级价格:<input type="text" name="aa" value="6000"> /月 __ 200.00 /日<br>

    a 级价格:<input type="text" name="a" value="4800"> /月 __ 160.00 /日<br>

    b 级价格:<input type="text" name="b" value="3200"> /月 __ 106.66~/日<br>

    c 级价格:<input type="text" name="c" value="2400"> /月 __ 80.00 /日<br>

          各个级别数量按 10 个计算<br>

            <input type="submit" name="submit3" value="总 计">

</form>

<%

if request("action")=1 then

response.write "总价= "&diff_month(request("datestart"),request("dateend"),request("aa"),request("a"),request("b"),request("c"),10,10,10,10)

end if

function diff_month(startdate,enddate,moneyf_aa,moneyf_a,moneyf_b,moneyf_c,amountaa,amounta,amountb,amountc)

different=datediff("m",startdate,enddate)

如果在一个月内

if datediff("m", startdate, enddate)=0 then

if datediff("d", startdate, enddate)+1<15 then

diff_month=(moneyf_aa/30)*amountaa*(datediff("d", startdate, enddate)+1) + (moneyf_a/30)*amounta*(datediff("d", startdate, enddate)+1) + (moneyf_b/30)*amountb*(datediff("d", startdate, enddate)+1) + (moneyf_c/30)*amountc*(datediff("d", startdate, enddate)+1)

end if

if datediff("d", startdate, enddate)+1>=15 then

diff_month=moneyf_aa*amountaa + moneyf_a*amounta + moneyf_b*amountb + moneyf_c*amountc

end if

end if

如果相差大于一个月的整月

if datediff("m", startdate, enddate)>0 and datediff("d", dateadd("m", different, startdate), enddate)=0 then

diff_month=(moneyf_aa*amountaa + moneyf_a*amounta + moneyf_b*amountb + moneyf_c*amountc)*different

end if

如果形如2002-03-15、2002-05-25

if datediff("m", startdate, enddate)>0 and datediff("d", dateadd("m", different, startdate), enddate)>0 then

如果相差大于一个月且<15天

if datediff("d", dateadd("m", different, startdate), enddate)+1<15 then

diff_month=(moneyf_aa*amountaa + moneyf_a*amounta + moneyf_b*amountb + moneyf_c*amountc)*different

diff_month=diff_month+((moneyf_aa/30)*amountaa*(datediff("d", dateadd("m", different, startdate), enddate)+1) + (moneyf_a/30)*amounta*(datediff("d", dateadd("m", different, startdate), enddate)+1) + (moneyf_b/30)*amountb*(datediff("d", dateadd("m", different, startdate), enddate)+1) + (moneyf_c/30)*amountc*(datediff("d", dateadd("m", different, startdate), enddate)+1))

end if

如果相差大于一个月且>=15天

if datediff("d", dateadd("m", different, startdate), enddate)+1>=15 then

diff_month=(moneyf_aa*amountaa + moneyf_a*amounta + moneyf_b*amountb + moneyf_c*amountc)*(different+1)

end if

end if

如果形如2002-03-15、2002-05-01

if datediff("m", startdate, enddate)>=1 and datediff("d", dateadd("m", different, startdate), enddate)<0 then

different=datediff("m",startdate,enddate)-1

如果相差大于一个月且<15天

if datediff("d", dateadd("m", different, startdate), enddate)<15 then

diff_month=(moneyf_aa*amountaa + moneyf_a*amounta + moneyf_b*amountb + moneyf_c*amountc)*different

diff_month=diff_month+((moneyf_aa/30)*amountaa*(datediff("d", dateadd("m", different, startdate), enddate)+1) + (moneyf_a/30)*amounta*(datediff("d", dateadd("m", different, startdate), enddate)+1) + (moneyf_b/30)*amountb*(datediff("d", dateadd("m", different, startdate), enddate)+1) + (moneyf_c/30)*amountc*(datediff("d", dateadd("m", different, startdate), enddate)+1))

end if

如果相差大于一个月且>=15天

if datediff("d", dateadd("m", different, startdate), enddate)>=15 then

diff_month=(moneyf_aa*amountaa + moneyf_a*amounta + moneyf_b*amountb + moneyf_c*amountc)*(different+1)

end if

end if

end function

%>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 计算合同内各级别的价格函数
分享到: 更多 (0)

相关推荐

  • 暂无文章