0

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

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
)

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

我的店是国际的,所以只卖加拿大和美国……产品可以在世界各地买到。

4

2 回答 2

2

表的目的是什么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
}

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

于 2013-05-28T20:57:16.557 回答
1

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

  • 卖家所在地
  • 买家所在地
  • 产品类别)

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

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

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

于 2013-05-29T11:28:28.150 回答