5

ここ南アフリカでは、消費税とほぼ同じ付加価値税 (VAT) があり、現在は 14% に固定されていますが、いつでも変更される可能性があります。

複数のInvoice Linesで構成される請求書 (不変) に VAT を含める必要があります。各行Productは、ブール型のプロパティ を持つ を参照しておりIsTaxable、ほとんどすべての製品が課税対象です。

税前の価格をデータベースに保存したくありません。これは、顧客が支払う実際の価格を読み取るのが難しくなり、それらの価格を表示するすべての場所で、忘れずに税を追加する必要があるためです。また、VAT 率が変更された場合、この特定のビジネスでは、すべての価格が自動的に変更されることは望ましくありません。

したがって、税の逆算が有効な方法であり、おそらく珍しいことではないと思います。請求書の合計は、すべての請求書明細の合計であり、明細の割引が含まれており、税込みである必要があります。したがって、請求書の合計自体は税込みです。

TaxTotal = InvoiceTotal / (1 + TaxRate),

InvoiceTotal税込価格で、TaxRate == 0.14

請求書は一度発行すると変更できないため (不変)、次のことを行う必要があります。

  1. 変更されない単一のTax金額をテーブルに保存しますか? Invoicesまたは...
  2. 請求書明細ごとに税額を保存し、請求書を表示するたびに請求書税の合計を計算しますか?

オプション 2 は、請求書が手動で変更された場合に税金が正しく計算されるため、DBA の観点からはより安全に見えます、請求書がすでに発行されている場合は、依然として不整合の問題が生じます。オプション 1 に固執すると、1 つの明細項目に対して税を表示することはできませんが、税合計の管理と集計計算が容易になりますが、変更された場合は矛盾が生じます。

データが複製されるため、両方を行うことはできません。

  • 正しい方法はどれですか? それとも、税の逆算は本当に悪い考えなのでしょうか?
4

3 に答える 3

4

税前の値をデータベースに保存します。税込みの値を保存して、ほとんどのユースケースで使用することもできます。

私が予見する大きな問題は、請求書の VAT の四捨五入規則です。これらは (少なくとも英国では) 非常に厳格であり、逆算でこれを正しく行う方法はありません。

また、アイテムが返品された場合、VAT ドラゴンは支払った税金を正確に返金することを期待しているため、アイテムごとに税を保存する必要があります。開始する前に、現地の売上税規則を把握する必要があります。

私の経験では、計算が 1 セントでもずれていると、石炭の上に引きずり出される可能性があります。また、監査を受けている場合は、VAT の数字にどのように到達したかを示すことができる必要があるため、使用したものを保存しないでください。計算はあなたを捕まえるでしょう。

于 2010-12-07T10:11:19.973 に答える
1

私はジェームズ・アンダーソンに完全に同意します!ドイツでは、VAT の計算に基づく規則は英国と同じくらい厳格です。

2 桁で四捨五入された VAT パーセンテージ (0、7、19 パーセントの 3 つのタイプがあります) で正味額を累積する必要があります。この丸められた値で、VAT を計算する必要があります。VAT は 2 桁で四捨五入し、請求書に記載する必要があります。

ただし、税込み価格を保存することはできます。増税時に正味価格と最終価格のどちらが変わらないかによって異なります。ドイツでは通常、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;

これをビューとして保存すると、動的に計算された VAT 値を正確に再印刷できるはずです。会計システムがあれば、印刷したものとまったく同じデータをエクスポートできます (エクスポートする必要があります)。通常、このような値をデータベース内のフィールド値として保存する必要がありますが、より動的なアプローチが必要な場合は理解しています...

于 2010-12-07T10:31:56.080 に答える
0

他の答えは良いですが、idevlop が言及しているように、将来のある時点で、製品のカテゴリごとに異なる料金がかかり始めることはほぼ確実です。その機能を前もって追加しておくと、後で心痛が大幅に軽減されます。そこに行って、それをしました。

于 2010-12-07T11:21:42.737 に答える