所以我无法弄清楚这里有什么问题。我正在尝试将销售税计算为总额。我想在这里得到两个变量:
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;
答案 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;
}