データベーステーブルと結合のセットをお勧めします。
例:
- 管轄区域:州、郡、国、都市などのリスト。
- 製品:明らか
- ストア:販売元の場所のリスト
- StoreJurisdiction(StoreID、JurisdictionID):ストアが税金を徴収する責任がある管轄区域のリスト
- ProductTaxCode(ProductID int、TaxCodeID int):税金を目的とした製品のタイプ:基本、豪華など。
- JurisdictionTaxCodeRate(JurisdictionID、TaxCodeID、InterestRate、RateType):管轄区域と税コードの該当する組み合わせごとに、適用される税率と税率のタイプ(複合、単純など)を指定します。
適用する税金のリストを見つけるために必要なのは、ストアの内部結合、その管轄区域、それらの管轄区域の管轄区域の税務署、および製品の税コードだけです。
ProductTaxCodeをビューとして定義して、特別なものが提供されていない限り、すべての製品がデフォルトのTaxCodeを受け取るようにすることができます。TaxCodeを抽象化することで、製品に関する同じメタデータ(たとえば、「食品」)をさまざまな方法でさまざまな地域に適用できます。特定の管轄区域に独自の「食品」の定義がある場合は、管轄区域固有のコードを追加し、必要に応じてそれを製品に適用するだけです。
これには、インターネット購入、卸売購入、および販売が何らかの形で税金を免除されているか、顧客がそれらを支払う責任があるその他の状況のために、いくつかの調整が必要になる場合があります。また、店舗ではなく顧客の場所が税率を決定する状況に合わせて調整する必要があります。
その他の調整:たとえば、ここテキサスでは、「免税」の週末があり、個々の商品の販売価格が100ドル未満の一部のクラスの商品について、州税と地方税が徴収されません。新年に学校に行く子供たちに、より安い学用品や衣類などを提供するというアイデアです。この種の微調整は、各JurisdictionTaxCodeRateの日付範囲テーブルを、計画可能な限り将来的にオフにすることで実装できます。