【问题标题】:Taxes Database Schema税收数据库架构
【发布时间】:2013-05-23 23:16:06
【问题描述】:

我正在尝试确定存储产品税金的最合适方式。

TABLE products (
    id
    name
    description
)

TABLE tax_zones (
    id
    code
)

TABLE tax_rates (
    id
    zone_id
    rate
)

TABLE tax (
    id
    rate_id
)

TABLE product_tax (
    id
    product_id
    tax_id
)

我承认,即使我对这种结构有点困惑,所以我需要一些帮助来简化或澄清或两者兼而有之。

我的商店是国际性的,所以它只针对加拿大和美国...产品可以在世界各地购买。

【问题讨论】:

  • 你可以试着把方案画在纸上,你会更容易理解的。
  • 哦,我有...我只是需要一些新的眼光来看待这种情况。而且我需要确保我做对了。
  • 每一列都有吗? tax 表似乎是多余的。
  • 您在当地的纳税义务是什么?

标签: php mysql database e-commerce laravel


【解决方案1】:

product_tax的用途是什么?存储每种产品的税务信息不是您应该采用的方式。

美国(可能还有加拿大)的税费因州而异,通常低至邮政编码级别(有时甚至低于邮政编码!)。处理税收的正确方法是将它们应用于整个购物车(即从百分比计算),而不是单个产品。

关于您如何处理税收...欢迎来到有趣的在线购物世界。有一些提供网络服务的服务(因为税收变化非常频繁)。一个这样的产品是AvaTax

我会重申我在评论中所说的话。我制造了许多购物车(并在此过程中被烧毁!)我在该领域拥有丰富的经验。

“本地”与税收无关。应征税 根据国家、州、地区、县、镇等 项目正在“运送”到。换句话说,这是收件人的税 适用的规则。如果产品是送给某人的礼物 购买者所在地区以外的地区,这是他们的税收规则 申请。换句话说,买方支付适用于 收到礼物的人!

另外,我将在下面进一步阐明我的评论......

税收与相关产品完全分开。税收应适用于全部成本金额,而不是单个项目。唯一的例外是产品被视为“免税”。这主要适用于某些被认为是“必需品”的食品。显然,其他一切都被视为奢侈品!

因此,如果购物车中有 3 件 1 美元的商品,则适用 8.00% 的税率,使总价达到 3.24 美元。任何运费都将在税后添加。运费不包含在产品价格中,因此不征税(运费已由 FedEx、UPS 等预先征税)。

由于税率因地域而异,因此尝试将“税”值附加到数据库中的产品是没有意义的。该数据应单独应用于每笔交易。从 Web 服务获取正确的税额可以减少出错的可能性。重要的是要注意税收经常变化。如果您被审计并被证明收取了不正确的税款,您可能需要自己支付差额。税法很少关心纳税,只关心纳税。

好的,关于表结构的一些想法......

product table {
    id
    sku [manufacturer or made up]
    related_items
    brand
    description
    features
    specifications                           
    keywords
    price
    weight
    width
    height
    length
    packaging_type
    shipping_info
    flatrate_shipping
    taxable
    discountable
    insured
    featured
    status [enum('outofstock','instock','specialorder','calltoorder','comingsoon','onorder','sold','onhold','hide')]
    stock
}

category table {
    id
    category_id
    category_name
    category_description
}

product_category table {
    id
    category_id
    product_id
}

最后一个表格提供了一种将多个产品归入一个类别或将一个产品归入多个类别的方法。

【讨论】:

  • 当然不想对每个产品征税...但是我不需要在产品上附加某种信息吗?
  • 是和否...除了某些产品被某些地区视为“免税”。应纳税和不纳税的清单在一定程度上有所不同,但总的来说,大多数项目都应纳税。如果这适用于您的商店,请使用产品表中的标志来指示是否应纳税。除此之外,只需将购物车总数(运费前)乘以税率即可。如果您有可以一起购买的应税和非应税项目的混合物,只需分成两个桶并将税率应用于其中一个。
  • 这个答案很棒......我正在看着它更新它。我可以在其他地方(比如 Skype 或在 stackoverflow 讨论中)短暂地思考一下吗?我需要真正了解我的表格应该是什么样子。
  • 现在有点尴尬,但我想帮忙。我在我的答案中添加了一些数据库模式的想法。我希望这能激发灵感! ;)
【解决方案2】:

税收可能取决于非常不同的事物,具体取决于法律情况:

  • 卖家所在地
  • 买家位置
  • 产品(类型)

任何组合都是可能的。例如,如果卖家和买家都在欧洲,则在德国,食品占(简化)7%,非食品占 19%。

可能会出现其他规则。例如,税收可以是基于时间的。

因此,最后,您需要一个与您的产品(或产品组)一起使用的税码,以及一个由 tax_key、seller_location 和buyer_location 索引的税表。对后两者使用通配符,可以减少所需的记录数。

【讨论】:

  • 这是正确答案。应为每个送货目的地和每个产品征税,因为您可以在同一个购物车中拥有不同税率的产品。
猜你喜欢
  • 2013-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多