首页 > 解决方案 > 订单/发票最佳实践:存储净额/毛额/增值税还是计算?

问题描述

我希望有人可以在这方面提供帮助。

我正在更新订购/发货和发票系统。

我有一个 OrderItem 表,其中包括以下内容(为方便起见截断):

需要时计算净额、总额、总额和增值税字段。

我一直使用这种方法,但现在我认为应该将值存储在 OrderItemTable 中,如下所示:

我意识到这个表现在没有标准化,但与该领域的人交谈,他们非常成功地说服我这是历史数据,应该更改,因此应该在发布时存储。我倾向于相信他们。

就性能而言,我认为这两种方式都不会产生太大影响,但可能会使报告稍微容易一些。

我可以厚颜无耻地问你们中的一些专家你的意见吗?

像往常一样提前非常感谢!

标签: sqlsql-serverdatabasedata-structuresdatabase-design

解决方案


强烈建议存储所有字段的计算值,因为税率和计算会发生变化。这包括净额、总额、增值税和总额。原因是计算可能随时更改。

例如,假设今天的税率是 10%。您以每件 10 美元的价格出售 10 个单位。所以毛额是100美元。你计算税收,减去 10%,现在你的净值为 90 美元。

但两年后,税率将达到 13%。您是否要修改您的报告程序,以便它们以不同的方式计算旧交易的税款?过去做过这件事,我敢打赌你在某个地方弄错了。您将不得不更改数十个甚至数百个报告程序。你一定会错过一些,而且很多都找不到。省去你的麻烦:存储你需要的一切。不要依赖于明天计算你今天计算的东西的能力。

另请注意,费率以外的其他内容可能会发生变化。他们可能会更改哪些项目应纳税。他们可能会增加累进税率,或者让你计算两种不同的税,或者……相信我,很多不同的事情都会发生变化。在美国,汽油的税收计算会让你头晕目眩,联邦、州、县、市等有不同的税率。有时税率取决于你的库存燃料有多长时间,你把它运到哪里从,您将它运送到哪里,以及(我不是在开玩笑)您交付它的一周中的哪一天。真让人抓狂!

某些产品的税率和计算方式经常发生令人痛苦的变化。您可以尝试保留历史税率数据,以便重新计算以前交易的税费和费用,但保存您当时计算的数据要容易得多,而且可靠得多。


推荐阅读