基于一些变量计算增值税税率


Calculating Vat Rates Based on some variables

下面的函数一直工作到我必须根据一些规则计算$vatamount的地步。

我从一个激发ajax请求的脚本中获得了所有POST内容(下面的代码是来自ajax URL的代码)。

规则是-如果$bookingtype值是"公司"预订或"团体"预订,则增值税将根据入住时间计算。28晚以内的价格为20%,超过28晚的价格为4%。

然而,如果$bookingtype值是"休闲"预订,则无论入住时间长短,增值税都为20%。

我有返回正确增值税百分比的功能。但最后一个if语句对我来说不起作用。我是一个php新手,我认为我已经做得很好了。只需要一些帮助来完成这个功能。我想我把语法搞砸了,哈哈,

最后一个回波应与计算的增值税金额相呼应。

提前谢谢。

function implement_ajax_vat() {
if(isset($_POST['arrivaldate']))
    {
        //get the start and end dates
        $startdate = ($_POST['arrivaldate']);
        $enddate = ($_POST['leavingdate']);     
        $datetime1 = new DateTime($startdate);
        $datetime2 = new DateTime($enddate);
        $interval = $datetime1->diff($datetime2);
        $numberofnights = $interval->format('%a nights');
        //calculatge the VAT amount
        $bookingtype = ($_POST['bookingtype']);
        $rentalprice = ($_POST['rentalprice']);
            //check numbr of nights
            if($numberofnights >= 29){
                $vatrate = "4";
             } elseif ($numberofnights <= 28) {
                $vatrate = "20";
            }
            //get the booking type and check if its a variable rate
            if(($bookingtype = 'Corporate') || ($bookingtype = 'Groups')){
                $vatamount = ($rentalprice / 100) * $vatrate;
            } elseif ($bookingtype = 'Leisure') {
                $vatamount = "20";
            }
            echo $vatamount;    
    die();
} 
}

您是在赋值而不是比较:使用双等号==:

if($bookingtype == 'Corporate' || $bookingtype == 'Groups'){
                 ^                              ^       
    $vatamount = ($rentalprice / 100) * $vatrate;
} elseif ($bookingtype == 'Leisure') {
                        ^
    $vatamount = 20;
}

这就是为什么第一个语句在赋值和返回非空字符串时产生true,所以永远不会转到elseif部分。