Php 计算购物车中的加拿大税(优惠券折扣后)

Php 计算购物车中的加拿大税(优惠券折扣后),php,laravel,e-commerce,laravel-4,shopping-cart,Php,Laravel,E Commerce,Laravel 4,Shopping Cart,这真是一场噩梦。在这一点上,我真的需要你们集体的帮助: 在加拿大,各省的税收计算方式不同: Alberta - 5% British Columbia - 5% GST and 7% PST 计算每种产品价格的直接税很容易。。。我循环我的购物车中的所有项目,并根据产品价格计算税费。即使项目是PST豁免,我可以检查 棘手的部分是当我必须申请折扣优惠券代码 显然,任何折扣都需要适用于税前金额。。。但我需要分别处理每个项目来计算税款。我不能从购物车总额中扣除20美元,因为每件商品都有自己的定价。。。

这真是一场噩梦。在这一点上,我真的需要你们集体的帮助:

在加拿大,各省的税收计算方式不同:

Alberta - 5%
British Columbia - 5% GST and 7% PST
计算每种产品价格的直接税很容易。。。我循环我的购物车中的所有项目,并根据产品价格计算税费。即使项目是PST豁免,我可以检查

棘手的部分是当我必须申请折扣优惠券代码

显然,任何折扣都需要适用于税前金额。。。但我需要分别处理每个项目来计算税款。我不能从购物车总额中扣除20美元,因为每件商品都有自己的定价。。。这意味着当我处理每一件商品时,我需要知道折扣后的价格是多少

但还记得有些产品是如何免除PST的吗?好吧,这就是这里的复杂性:

Item 1 - $24.99 - GST (5%) and PST (7%)
Item 2 - $11.99 - GST (5%)

Discount - $20.00

我到底怎样才能应用购物车折扣,同时保持税收的完整性呢?

你能这样做吗(伪代码)

然后将折扣设置为1的倒数

i、 e.无折扣:
$折扣=1.0
20%折扣:
美元折扣=.8

编辑:事实上,你没有提供足够的信息。如果折扣是总折扣的一个百分比,那么我上面的代码将起作用

但是如果你的折扣是“固定”价格,那么你就有问题了。您是从第一件商品中扣除价格,还是将其平均分配到购物车中的所有商品?无论哪种方式都会涉及税收问题

假设您希望在所有项目中分配价格,那么类似的方法将起作用:

$discount = $20;
$num_of_items_in_cart = 5;
$discount_per_item = $discount/$num_of_items_in_cart;
$final_price = ((($item_price * $discount_per_item) * $gst) * $pst)

固定价格。“你是从第一件商品中扣除价格,还是将其平均分配到购物车中的所有商品?无论哪种方式都会产生税收影响。”这正是我所说的……是否有任何理由认为在所有商品中分配折扣不起作用?如果一些商品是GST和PST,而另一个只是PST呢?我的第二个代码将解决这个问题。只需将折扣分配到所有项目。或者-从第一项中删除折扣。如果它们是折扣的“剩余”,则应用于第二项,依此类推,直到$折扣=0;就我个人而言,这是可行的,只要把所有的项目都分配出去就行了。我担心我会花更多的时间编写逻辑程序,结果却发现税收被取消了/
$discount = $20;
$num_of_items_in_cart = 5;
$discount_per_item = $discount/$num_of_items_in_cart;
$final_price = ((($item_price * $discount_per_item) * $gst) * $pst)