在加拿大,我们有 5% 的联邦一般服务税 (GST)。一些省份有省级销售税 (PST)。一些省份有混合销售税 (HST),而不是单独的 (GST) 和 (PST)。一些省份征收保险税 (RST)。车辆的延长保修需缴纳 GST,但只有一个省对 PST 征税。一个省 (BC) 改变了乘用车的 PST,其中,< $55,000 的税率为 7%,>= $55000 和 < $56000 的税率为 8%,>= $56000 和 < $57000 的税率为 9%,> = $57000 的税率为 10%。有什么定义
在我读到的州,您没有联邦销售税,但您有单独的州、县和市销售税。查看维基百科,有许多关于各州税收的详细信息。https://en.wikipedia.org/wiki/Sales_taxes_in_the_United_States
在某些时候,我可能也需要支持其他国家/地区的税收。
存储所有这些税率以便应用程序可以实时有效地使用它们来计算税额的最佳做法是什么?
存储不同交易的税额的最佳做法是什么?
销售税几乎无限复杂,因此您可能需要考虑使用像Drools这样的规则引擎。
销售税是按商品价值或单位(每天、每升、每件)收取的费率或金额。一个项目可以有零个、一个或多个适用的销售税。
警告:一些销售税是递归的!例如:BC 省的车辆租赁税之外还有 GST。
商品的销售税率是以下各项的函数:
我认为您最终想要的是一个如下所示的大型查找表(由物化视图生成)。它将包括默认税率以及豁免(以空值表示)或零税率(税率为零)
这只是不列颠哥伦比亚省酒店住宿税收规则的示例:
name | area | product cat | price range | buyer cat | service duration | rate | unit | seller cat
-----------------------------------------------------------------------------------------------
GST BC Accommodation null null null 0.05 Percent null
PST BC Accommodation null null null 0.08 Percent null
MRDT BC Accommodation null null null 0.02 Percent null
MRDT Vanc Accommodation null null null 0.03 Percent null
PST BC Accommodation [,30] null null null null null
MRDT BC Accommodation [,30] null null null null null
PST BC Accommodation null null [30,] null null null
MRDT BC Accommodation null null [30,] null null null
PST BC Accommodation null 1st Nations null null null null
MRDT BC Accommodation null 1st Nations null null null null
PST BC Accommodation null Gov Canada null null null null
PST BC Accommodation null null null null null Industrial Camp
MRDT BC Accommodation null null null null null Industrial Camp
PST BC Accommodation null null null null null Charity
MRDT BC Accommodation null null null null null Charity
Run Code Online (Sandbox Code Playgroud)
然后你会有一个疯狂的查询来计算默认利率,用最合适的豁免或零利率替换它们。