PHP销售税计算

时间:2014-08-29 20:29:29

标签: php

所以我无法弄清楚这里有什么问题。我正在尝试将销售税计算为总额。我想在这里得到两个变量:

A. The total amount of sales tax that is being charged (i.e. $0.61 for sales tax)
B. The Grand total including the item price times the quantity plus the sales tax.

我的脚本如下所示,我现在设置的方式现在只增加了一分钱。 (而不是$ 7.00,总额是$ 7.01)

如果每个项目后的小计费用为$7.00且税率为8.650%,则税金总额应为$0.61,总计应为$7.61,但它是改为$7.01

public function invoice_totals($invoice_id)
{
    $query = $this->CI->db->select('*');
    $query = $this->CI->db->from('invoice_to_items');
    $query = $this->CI->db->where('invoice_id', $invoice_id);
    $query = $this->CI->db->join('items', 'items.item_id = invoice_to_items.item_id');
    $query = $this->CI->db->get();
    $items = $query->result();

    $sub_total      = '0.00';
    $grand_total    = '0.00';
    $tax_rate       = '0.0865';
    $tax_total      = '0.00';

    foreach($items as $item)
    {
        $sub_total = $sub_total + ($item->item_price*$item->item_qty);

        $tax_total = $tax_total + ($sub_total * $tax_rate) / 100;
    }

    $grand_total = $grand_total + $sub_total + $tax_total;

    return array(
        'sub_total'     =>  number_format($sub_total,2),
        'tax_total'     =>  number_format($tax_total, 2),
        'grand_total'   =>  number_format($grand_total,2),
    );
}

我在这个问题上关注的主线是:

$tax_total = $tax_total + ($sub_total * $tax_rate) / 100;

1 个答案:

答案 0 :(得分:3)

在循环的每次迭代中,您都将税收应用于小计。

让我们说有3个项目:5美元,15美元,40美元

loop #1:

subtotal = 0 + ($5 * 1) = $5
total = 0 + ($5 + 8.65%) = $5.43

loop #2:  $5.43 + ($15 * 1) = $20.43
total = $5.43 + ($20.43 + 8.65%) = etc...

etc...

你的#2项目现在已经对第一项产生了双重征税,而你的第三项将是TRIPLE对第一项征税,DOUBLE对第二项征税......等等。

同样,您的税率值是ALREADY十进制(0.0865),但您正在进行/ 100分割,就像您有$tax_rate = 8.65一样。因此,您的税率实际上是0.0865%

你的循环应该是:

$taxrate = 8.65; // % value

foreach($items as $item) {
   $item_sub = $items->quantity * $items->price;
   $item_total = $item_sub * ($taxrate / 100);

   $grand_total = $grand_total + $item_total;
}