存储销售税率的最佳做法是什么?

Eri*_*ard 4 database-design

在加拿大,我们有 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

在某些时候,我可能也需要支持其他国家/地区的税收。

存储所有这些税率以便应用程序可以实时有效地使用它们来计算税额的最佳做法是什么?

存储不同交易的税额的最佳做法是什么?

Nei*_*gan 5

销售税几乎无限复杂,因此您可能需要考虑使用像Drools这样的规则引擎。

销售税是按商品价值或单位(每天、每升、每件)收取的费率或金额。一个项目可以有零个、一个或多个适用的销售税。

警告:一些销售税是递归的!例如:BC 省的车辆租赁税之外还有 GST。

商品的销售税率是以下各项的函数:

  • 买家所在地
  • 所售商品的产品类别(汽油、酒、书籍)
  • 物品的价值(不包括高价奢侈品的更高费率)
  • 买家类别(前慈善机构、原住民个人、工业营地)
  • 卖家类别
  • 物品的预期用途(用于出口、用于制造)
  • 服务持续时间(汽车租赁 > 8 小时和 < 28 天)
  • 不管是不是礼物

我认为您最终想要的是一个如下所示的大型查找表(由物化视图生成)。它将包括默认税率以及豁免(以空值表示)或零税率(税率为零)

这只是不列颠哥伦比亚省酒店住宿税收规则的示例:

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)

然后你会有一个疯狂的查询来计算默认利率,用最合适的豁免或零利率替换它们。

  • 5% 消费税始终适用
  • 8% PST 除非价格 < 30 或持续时间 > 30 天或买方是原住民或加拿大政府或卖方是工业营或慈善机构
  • 2% 的市政和区域税,除非价格< 30 或持续时间> 30 天或买方是原住民或卖方是工业营地或慈善机构
  • 如果住宿在温哥华,则需缴纳 3% 的市政和区域税,除非价格< 30 或持续时间 > 30 天或买方是原住民或卖方是工业营地或慈善机构