【问题标题】:"Dynamic" Pricing System“动态”定价系统
【发布时间】:2011-01-14 18:33:55
【问题描述】:

很快,我将从事一个项目,该项目本质上是一个用于配置产品的电子商务应用程序。这个问题是关于实现每天都在变化的定价方案的方法,因此我们希望将定价逻辑从代码中提取到数据库中,但不是以一种导致数据库完成所有工作的方式。

基本思路是这样的,有5个属性。您从这些属性中的每一个中选择一个选项。然后您开始将产品添加到您的购物车。您添加的所有产品都将附加这 5 个属性(这些属性会影响定价)。添加产品后,您可以对其应用修改(属性也将应用于修改)。

所以,我们现在得到的是一个产品(它有一个固定的底价),它有一些关于它的信息(这将修改价格),以及零个或多个修改(它有一个固定的价格)和有关它们的一些信息(这将修改价格)。修改也可能产生额外费用。例如,如果 A 公司使用该软件并且他们使用以下方式为他们的商品定价:BASE_PRICE + $50 * NUM_WHIRLIGIGS 并且该商品有一个添加了 WHIRLIGIG 的修改,则必须在价格中反映出来。

您知道我在确定如何设置时可能会发现有用的不同定价系统的任何示例吗?你有更好的想法吗?

我目前最好的想法如下,如果你对方法的细节不感兴趣,只想得到答案,你可以跳过它!

对于任何给定的项目(或项目集合),公司可以使用一个特殊的界面来设置定价公式,然后在运行时对其进行解释和评估。

因此,对于 PRODUCT_A,公司可能会投入类似 BASE_PRICE + WHIRLIGIG_UPCHARGE * NUM_WHIRLIGIGS 的费用。而软件在定价时会查看该物品有多少 WHIRLIGIGS,以及通过任何修改添加了多少 WHIRLIGIGS。

有人有实现这种解释器的经验吗?后来如何?困难/麻烦吗?

在此先感谢您提供的所有精彩输入,我一定会收到的。 :P

【问题讨论】:

    标签: interpreter configurable-product


    【解决方案1】:

    通常,这通常使用包含组件的产品包来处理。所以一个有 5 个额外子组件的产品不会是 base + 5 * addon,而是 SUM(base, addon, addon, addon, addon, addon)。

    因此,您的产品表可能是自引用的,或者存在某种链接表,说明允许将哪些子产品附加到哪些产品。

    根据我的经验,定价通常存储在产品/客户或合同的基础上,所以这是另一个表。

    然后实际订单本身包含产品包。如果订单是报价单,则定价将被冻结(直到报价单到期)。

    当报价或订单变成发票时,定价要么锁定在主要定价或报价中,具体取决于定价时间范式。

    【讨论】:

    • 注意配置的产品是厨房橱柜可能会有所帮助。而且,不幸的是,任何给定的制造商都会以与上一个不同的方式为他们的产品定价。他们中的一些人实际上做了类似的事情:PRICE = CABINET_BASE_PRICE * FINISH_UPCHARGE + (BASE_COST_OF_DOOR * FINISH_UPCHARGE * NUM_DOORS)
    • 如果机柜应用了修改,您可以添加第三个术语,例如“+ BASE_MOD_COST * FINISH_UPCHARGE”。真正的问题是他们有很多方法可以做到(其中大多数甚至对制造商来说都没有意义——在某些情况下,如果没有专业软件的帮助,他们无法为橱柜定价),我必须足够灵活,允许他们想出任何类型的公式。
    • @Anthony Compton 我不确定。是订单的一些东西属性吗? - 就像所有单独的橱柜都将具有相同的完成充电,但他们是否必须记住将其应用于每个橱柜?您当然可以在应用程序中即时解释多种语言的公式。似乎您将不得不拥有某种范围,您可能无法处理他们可以提出的任何类型的公式。
    猜你喜欢
    • 2019-01-26
    • 1970-01-01
    • 2019-04-26
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    相关资源
    最近更新 更多