在南非,我們擁有的增值稅(VAT)與銷售稅幾乎相同,目前固定爲14%,但可隨時更改。對發票實施銷售稅策略
我需要在發票(這是不可變的)包含幾個發票行包括增值稅。每行使用布爾屬性IsTaxable
引用Product
,並且幾乎所有產品都是應徵稅的。
我不想在數據庫中存儲稅前價格,因爲這樣很難讀出顧客要支付的實際價格,並且無論我在哪裏顯示這些價格,我都必須記住加稅。而且,當增值稅率確實發生變化時,對於這個特定的業務,所有價格都會自動變化,這是不可取的。
所以我認爲逆向稅收計算是一種可行的方式,可能並不少見。發票總額是所有發票行總計的總和,其中包括所有折扣行,並應包含稅。因此,發票總額本身是含稅:
TaxTotal = InvoiceTotal/(1 + TaxRate),
其中InvoiceTotal
是含稅和TaxRate == 0.14
由於發票不能更換一次發行(他們是不可改變的),我應該:
- 在我的
Invoices
表中保存單一Tax
金額不變?或... - 爲每個發票行存儲稅額並在每次顯示發票時計算髮票稅總額?
選項2似乎是從點的視圖一個DBA更安全,因爲如果發票是不斷手動更改,那麼稅收將被正確地計算,但如果發票已經發出,這仍是一個問題不一致。如果我堅持使用選項1,那麼我無法爲單個訂單項顯示稅金,但它可以管理稅額總額並更輕鬆地進行彙總計算,但如果更改時也會出現不一致情況。
我不能這樣做,因爲這會重複數據。
- 哪一條是正確的路?或者是反向稅收計算是一個非常糟糕的主意?
+1。在歐洲,對於某些業務,不同產品系列可能會有不同費率,所以我將FamilyId存儲在Products表中,並將FamiliesCode存儲在Families表中。費率存儲在增值稅表中。我還向客戶添加了VatCategory,因爲在某些情況下,某些客戶可能會支付0%。另外一些發票可能在不同的行上包含不同的增值稅率。 – 2010-12-07 10:56:22