为发票实施销售税策略

Posted

技术标签:

【中文标题】为发票实施销售税策略【英文标题】:Implementing a sales tax strategy for Invoices 【发布时间】:2011-05-21 10:38:52 【问题描述】:

在南非,我们征收增值税 (VAT),它与销售税几乎相同,目前固定为 14%,但随时可能发生变化。

我需要在包含多个发票行的发票(不可变)上包含增值税。每行引用一个带有布尔属性IsTaxableProduct,并且几乎所有产品都应纳税。

我不想将税前价格存储在数据库中,因为这只会让您难以阅读客户将要支付的实际价格,而且在我显示这些价格的任何地方,我都必须记住添加税。当增值税税率发生变化时,对于这个特定的业务,所有价格都自动变化是不可取的。

因此,我认为反向计税是可行的方法,并且可能并不少见。发票总计是所有发票行总计的总和,其中包括任何行折扣并且应该是含税的。因此,发票总额本身是含税的:

TaxTotal = InvoiceTotal / (1 + TaxRate),

其中InvoiceTotal 是含税的,TaxRate == 0.14

由于发票一旦开出就无法更改(它们是不可变的),我应该:

    在我的Invoices 表中存储一个不变的Tax 数量?或者... 存储每个发票行的税额,并在每次显示发票时计算发票税总额?

从 DBA 的角度来看,选项 2 似乎更安全,因为如果曾经手动更改过发票,那么税费将被正确计算,但是如果发票已经开出,这仍然存在不一致的问题。如果我坚持使用选项 1,那么我将无法显示单个项目的税款,但它可以更轻松地管理税款总额和进行汇总计算,但如果更改也会出现不一致。

我不能两者都做,因为那会重复数据。

正确的方法是什么?或者反向计税真的是个坏主意?

【问题讨论】:

【参考方案1】:

将税前值存储在数据库中,您还可以存储含税值并将其用于大多数用例。

我预见到的大问题是发票增值税的四舍五入规则。这些规则(至少在英国)非常严格,您的反向计算无法正确处理。

您还需要逐项存储税款,因为增值税龙会希望您在退货时准确退还已支付的税款。在开始之前,您确实需要了解当地的销售税规则。

我的经验是,如果您的计算结果只差一分钱,您可能会被拖垮在你的计算中使用会抓住你。

【讨论】:

+1。在欧洲,对于某些业务,不同的产品系列可能会有不同的费率,因此我将 FamilyId 存储在 Products 表中,将 TaxCode 存储在 Families 表中。费率存储在增值税表中。我还向客户添加了增值税类别,因为某些客户在某些情况下可能支付 0%。此外,一些发票可能在不同行包含不同的增值税率。【参考方案2】:

我完全同意詹姆斯·安德森的观点!德国的增值税计算规则与英国一样严格。

我们必须按增值税百分比累计净值(我们有三种类型:0、7 和 19%),四舍五入为两位数。在这个四舍五入的价值上,我们必须计算增值税。 增值税必须四舍五入,并且必须在发票上显示。

但您仍然可以存储含税价格。这取决于税收增加时净价格或最终价格是否保持不变。在德国,通常 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;

如果您将其保存为视图,您应该能够准确地重新打印动态计算的增值税值。当有一个会计系统时,您可以(并且应该)导出与您打印的完全相同的数据。 通常你应该将这些值保存为数据库中的字段值 - 但我理解你是否想要一种更动态的方法......

【讨论】:

【参考方案3】:

其他答案很好,但正如 idevlop 所提到的,几乎可以肯定的是,在未来的某个时候,您将开始对不同类别的产品采用不同的费率。预先添加该功能将为您以后节省大量的心痛。去过那里,做到了。

【讨论】:

以上是关于为发票实施销售税策略的主要内容,如果未能解决你的问题,请参考以下文章

数据建模草稿/报价/订单/发票

销售单怎么快速入金蝶软件里

k3中,预收单为啥不能和销售发票、其他应收单进行关联啊?

金蝶K3 Wise 12.2版本 有一单出库单生成发票提示不能将值插入列FAuxPrice,UPDATE失败。

SQL 计算发票表中商品的销售次数

一张销售单一张增值税专用发票会计明细科目怎么写?