【问题标题】:Best way to store sales tax information存储销售税信息的最佳方式
【发布时间】:2010-03-08 12:34:33
【问题描述】:

在为销售和采购设计库存管理数据库系统时,存储各种税款和其他此类金额的最佳方式是什么?

一些可以保存的字段是:

  • 不含税单价
  • 含税单价
  • 按项目计税
  • 不含税总额(四舍五入到小数点后两位)
  • 含税总额(四舍五入到小数点后两位)
  • 总税额(四舍五入到小数点后两位)
  • 税率
  • Fk 链接到税 %(不存储税额)

目前迄今为止最合理的解决方案是(粗略地)存储项目、数量、不含税总额(四舍五入)和税金总额(四舍五入)。

有没有更好的方法为通用系统存储这些详细信息?

鉴于系统需要稳健,如果可能需要分离多个税值(例如州和市),应该怎么做?在这种情况下,需要一个单独的表,但是将 rowID 和一些 taxID 映射到 totalTax 列会不会被认为是多余的?

澄清:询问如何存储有关个人交易和那一方的数据;没有那么多关于具体税率的细节。

【问题讨论】:

  • 小心以前的交易不要对这些数字进行 FK;如果您更新它们,您将更改过去交易的数量。进行修订设置。

标签: sql database-design


【解决方案1】:

方法的问题是,如果税收发生变化,英国的增值税(销售税)在过去 12 个月内发生了两次变化。

当我在电子商务网站工作时,我们有一张表 Tax_Rate,其中包含商店将处理的不同税率,例如。

  1. 免税 - 0%
  2. 增值税 - 17.5%
  3. 折扣增值税 - 15%
  4. 等等……

然后你的股票表字段可能有

  • 物品编号
  • 单价
  • fk_TaxRate

您的 invoice_detail 行表将是

  • fk_OrderId
  • fk_ItemId
  • PerItemPriceCharged(非规范化)
  • TaxRateCharged(非规范化)
  • 按数量排序

您的发票表将是

  • 订单编号
  • fk_CustomerId

其中 fk_表示外键。请注意,OrderId 在您的发票行表中不会是唯一的。

编辑:今天到处都是头。

您需要非规范化发票行总计和税率总计,因为您不希望商品价格或税率的未来变化影响历史发票。

【讨论】:

  • 有趣的方法,我并没有真正考虑过在交易中完全不存储税额详细信息,如果您的交易应该有多个税率(如果出于某种原因需要),您可以只有一个 fk 表来链接主表和各种税率。
  • 在最后一次编辑中,我添加了一个漏掉的行 TaxRateCharged ,以防 Tax_Rate 发生变化。
  • 是的,您还有一点灵活性,因为自定义可以根据位置设置 fk_ 税率,例如美国的 STEVE 有一个默认的 TaxCode USA1。
  • 另一个选项是在 Tax_rate 表中添加一个带有自动递增 ID 字段的开始和结束日期,该字段可用作发票行表中的 FK...这样,当费率发生变化时,您仍然与当时的正确税率挂钩。
  • 相信我,将收取的税率存储在订单记录中。这是历史信息(当时做了什么),而不是真正的非规范化。如果有人更改了税率表(即使您存储了有效日期并正在更正错误),您不希望此更改。您收取的税率就是您收取的税率是否正确。
猜你喜欢
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 2011-12-09
  • 1970-01-01
  • 2011-05-10
  • 1970-01-01
相关资源
最近更新 更多