【问题标题】:apply discount and exempt tax calculation for Canada申请加拿大的折扣和免税计算
【发布时间】:2021-05-27 03:29:07
【问题描述】:

之前有人问过这个问题,但没有任何正确的答案。问题是我正在为加拿大客户开发 POS 应用程序。我被困在税收计算中,无法找到解决方案。所以这是我的场景,我有 2 件物品,可以说物品 1 = 10 美元,物品 2 = 2 美元。第 2 项是免税的,是指在第 2 项中,税项 (13%) 不适用,但在征税之前。我需要申请折扣,例如 5 美元。那么如何对我的总账单应用折扣并计算总税额。

我需要折扣后的税额。税率为 13%。

第 1 项是 10 美元 第 2 项是 2 美元(免税)

小计为 12 美元 折扣为 5 美元 税会吗?

【问题讨论】:

  • 如果您可以使用折扣免费获得第 2 件商品,那么您可以将剩余的 3 美元折扣用于第 1 件商品,然后计算含税金额,因此它是 7 * 1.13 IMO 但也许我我错了
  • 首先,您还应该分享您迄今为止实现的内容。此外,这里缺少一些细节。 10 美元是否已经包含 13%?税款是否必须在之后应用?您是否也将所有可用价格分为含税/不含税?通常您只需要自己计算每件商品(开始时不含税,每件商品减去折扣金额(% 或总计),然后计算税费)。

标签: javascript vue.js tax


【解决方案1】:

这是一种方法:

  1. 按价格对商品进行排序,最贵的在前。
  2. 将折扣应用于排序列表中的项目,直到没有折扣为止。
  3. 将该列表的价格相加以获得折扣小计。
  4. 将该列表中应税项目的价格相加得到应税金额。
  5. 将税款应用于应税金额,并将其添加到小计以获得总计。

const ITEMS = [
  { price: 2.00, taxExempt: true },
  { price: 10.00, taxExempt: false },
  { price: 8.25, taxExempt: false },
]
const DISCOUNT = 12
const TAX = 0.13

const applyDiscount = (items, discount) => {
  // 1️⃣ sort by price, most expensive to least
  items = items.slice().sort((a,b) => b.price - a.price)

  // 2️⃣
  return items.map(item => {
    let price = item.price
    const itemDiscount = Math.min(price, discount) 
    if (itemDiscount > 0) {
      price -= itemDiscount
      discount -= itemDiscount
    }
    return { ...item, price, origPrice: item.price, itemDiscount }
  })
}

const itemsWithDiscount = applyDiscount(ITEMS, DISCOUNT)
const sumPrices = arr => arr.map(x => x.price).reduce((p,c) => p + c, 0)
const subtotal = sumPrices(itemsWithDiscount) // 3️⃣
const taxableAmt = sumPrices(itemsWithDiscount.filter(x => !x.taxExempt)) // 4️⃣
const total = subtotal + (taxableAmt * TAX) // 5️⃣

console.log('items after discount', itemsWithDiscount)
console.log('subtotal: $' + subtotal.toFixed(2) + ' (taxable: $' + taxableAmt.toFixed(2) + ')')
console.log('tax: $' + (taxableAmt * TAX).toFixed(2) + ' (' + (TAX * 100) + '%)')
console.log('total: $' + total.toFixed(2))

【讨论】:

  • 感谢您的解决方案。但我仍然对排序感到困惑。如果我们像您使用 Math.min 一样通过检查总计来避免负数而在不排序的情况下扣除折扣,它会产生任何影响吗?
  • 一开始我并没有真正考虑过分类,因为我通常认为所有购物车物品都应纳税。并且首先将折扣应用于最昂贵的商品将最大限度地减少折扣的传播(折扣适用于多少商品)。
  • 但是,应用折扣的顺序可能会更改同时包含应税和免税商品的购物车中的总数。假设所有商品的价格相同。将折扣应用于免税商品首先会花费买家更多,因为应税金额会更高。另一方面,将折扣应用于应税项目首先成本较低,因为应税金额会较低。注释掉我的答案中的排序以查看不排序的演示(注意总数如何变化)。
猜你喜欢
  • 2020-09-16
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多