我会推荐一组数据库表和连接。
例子:
- 管辖范围:州、县、国家、城市等的列表。
- 产品:明显
- 商店:您销售的地点列表
- StoreJurisdiction (StoreID, JurisdictionID):店铺负责为其征税的Jurisdiction列表
- ProductTaxCode (ProductID int, TaxCodeID int):用于征税的产品类型:基本、奢侈品等。
- JurisdictionTaxCodeRate(JurisdictionID、TaxCodeID、InterestRate、RateType):对于每个适用的 Jurisdiction 和 Tax Code 组合,提供要应用的税率,以及税率的类型(复合、简单等)。
要查找要应用的税款列表,您只需要商店、其管辖区、这些管辖区的管辖税编码器以及产品的税码的INNER JOIN 。
您可以将 ProductTaxCode 定义为视图,这样所有产品都会收到默认的 TaxCode,除非提供了特殊的。通过抽象 TaxCode,您可以将有关产品(例如“食品”)的相同元数据以不同方式应用于不同地区。如果某个特定管辖区对“食品”有自己的定义,您只需添加特定管辖区的代码并根据需要将其应用于产品。
这可能需要对互联网购买、批发购买和其他销售以某种方式免税或客户负责汇款的情况进行一些调整。它还需要针对客户的位置而不是商店决定税率的情况进行调整。
其他调整:例如,在得克萨斯州,我们有一个“免税”周末,对于个别商品的售价低于 100 美元的某些类别的产品不征收州和地方税。这个想法是为新的一年去上学的孩子们提供更便宜的学习用品、衣服等。可以通过为每个 JurisdictionTaxCodeRate 设置一个日期范围表来实现这种调整,只要它们可以计划在未来发生。