2010-12-07 155 views
5

在南非,我們擁有的增值稅(VAT)與銷售稅幾乎相同,目前固定爲14%,但可隨時更改。對發票實施銷售稅策略

我需要在發票(這是不可變的)包含幾個發票行包括增值稅。每行使用布爾屬性IsTaxable引用Product,並且幾乎所有產品都是應徵稅的。

我不想在數據庫中存儲稅前價格,因爲這樣很難讀出顧客要支付的實際價格,並且無論我在哪裏顯示這些價格,我都必須記住加稅。而且,當增值稅率確實發生變化時,對於這個特定的業務,所有價格都會自動變化,這是不可取的。

所以我認爲逆向稅收計算是一種可行的方式,可能並不少見。發票總額是所有發票行總計的總和,其中包括所有折扣行,並應包含稅。因此,發票總額本身是含稅:

TaxTotal = InvoiceTotal/(1 + TaxRate), 

其中InvoiceTotal是含稅和TaxRate == 0.14

由於發票不能更換一次發行(他們是不可改變的),我應該:

  1. 在我的Invoices表中保存單一Tax金額不變?或...
  2. 爲每個發票行存儲稅額並在每次顯示發票時計算髮票稅總額?

選項2似乎是從點的視圖一個DBA更安全,因爲如果發票是不斷手動更改,那麼稅收將被正確地計算,如果發票已經發出,這仍是一個問題不一致。如果我堅持使用選項1,那麼我無法爲單個訂單項顯示稅金,但它可以管理稅額總額並更輕鬆地進行彙總計算,但如果更改時也會出現不一致情況。

我不能這樣做,因爲這會重複數據。

  • 哪一條是正確的路?或者是反向稅收計算是一個非常糟糕的主意?

回答

4

將稅前價值存儲在數據庫中,您還可以存儲含稅價值並將其用於大多數用例。

我預見的一個大問題是發票上增值稅的舍入規則。這些(至少在英國)是非常嚴格的,沒有辦法讓您的反向計算得到這個權利。

此外,您還需要逐項存儲稅項,因爲增值稅小龍會要求您退還已支付的稅款。在開始之前,您確實需要掌握當地的銷售稅規定。

我的經驗是,如果你的計算結果只有一分錢,你就會被拖到煤上,如果你被審計了,你需要能夠顯示你是如何到達增值稅數字的,因此不能存儲計算中使用的任何東西都會將您吸引過來。

+2

+1。在歐洲,對於某些業務,不同產品系列可能會有不同費率,所以我將FamilyId存儲在Products表中,並將FamiliesCode存儲在Families表中。費率存儲在增值稅表中。我還向客戶添加了VatCategory,因爲在某些情況下,某些客戶可能會支付0%。另外一些發票可能在不同的行上包含不同的增值稅率。 – 2010-12-07 10:56:22

1

我完全同意詹姆斯安德森!在德國,增值稅計算規則與英國一樣嚴格。

我們必須按增值稅百分比累計淨值(我們有三種類型:0,7和19%),並以兩位數四捨五入。在這個四捨五入的價值,我們必須calculcate增值稅。 增值稅必須四捨五入,必須在發票上顯示。

但是,你可以存儲包括稅收在內的價格。這取決於當稅收上漲時,淨價或終端價格是否保持不變。在德國,通常B2B淨價保持不變,但B2C終端價格保持不變 - 這取決於。

可以計算這樣說:

with cPriceIncludingVAT as (
    select InvoiceNo, VATPercentage, 
      PriceIncludingVAT = cast(sum(amount * price) as decimal(12,2)) 
    from InvoiceLines inner join VAT on VAT.VATID=InvoiceLines.VATID 
    group by InvoiceNo, VATPercentage 
), 
cVATcalculated as (
    select InvoiceNo, VATPercentage, PriceIncludingVAT, 
      VAT = cast(PriceIncludingVAT * VATPercentage/
         (1+VATPercentage) as decimal(12,2)) 
    from cVATcalculated 
) 
select InvoiceNo, VATPercentage, PriceIncludingVAT, VAT, 
      NetPrice = PriceIncludingVAT - VAT 
from  cVATcalculated; 

如果您保存此作爲一個視圖,你應該能夠準確轉載動態計算的增值稅值。當有會計系統時,您可以(也應該)輸出與您打印的相同數據。 通常情況下,您應該將這些值存儲爲數據庫中的字段值 - 但我理解您是否希望採用更具動態性的方法...

0

其他答案很好,但正如idevlop提到的那樣,可以肯定的是,在未來的某個時間,您將開始針對不同類別的產品開具不同的費率。預先增加這項功能將爲您節省大量的心痛。去過也做過。