2011-01-14 71 views
1

不久,我将开始一个项目,这个项目相当于一个本质上属于配置产品的电子商务应用程序。这个问题是关于如何实施可能会每天都在变化的定价方案,所以我们希望将定价逻辑从代码和数据库中提取出来,但不是以一种导致数据库完成所有工作的方式。“动态”定价系统

基本思想是这样的,有5个属性。您从每个属性中选择一个选项。然后你开始添加产品到你的购物车。您添加的所有产品都将拥有5个属性(属性会影响定价)。添加产品后,您可以对其应用修改(这些属性也将应用于修改)。因此,我们现在得到的是一个产品(它有一个固定的基本价格)和一些关于它的信息(这将修改价格),以及零个或多个修改(其具有固定的价格)和一些关于它们的信息(这将修改价格)。修改也可能产生额外费用。例如,如果A公司使用这个软件,他们使用BASE_PRICE + $ 50 * NUM_WHIRLIGIGS为他们的商品定价,并且该商品有一个修改,增加了一个WHIRLIGIG,这个价格必须反映出来。

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

我目前最好的想法是下面,你可以跳过它,如果你不好奇的方法的细节,只是想获得正确的应答!

对于任何给定的项目(或项目的集合)的公司可以使用特殊的接口设置这将随后进行解释,并在运行时进行评估定价公式。

所以对于PRODUCT_A,该公司可能投入类似BASE_PRICE + WHIRLIGIG_UPCHARGE * NUM_WHIRLIGIGS。当软件定价时,软件会查看该项目的WHIRLIGIGS数量,以及通过修改添加的WHIRLIGIGS数量。

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

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

回答

0

通常,这通常是使用具有组件的产品捆绑包处理的。因此,具有5个附加子组件的产品不会是基本+ 5 *附件,而是SUM(基本,附加,附加,附加,附加,附加)。

所以你的产品表可以是自我指涉或有某种联系表,说其子产品都允许连接该产品的。

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

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

当报价或订单变成发票,此时的定价或者从主定价或报价,这取决于定价定时范例锁定。

+0

它可能有助于指出配置的产品是厨房橱柜。不幸的是,任何给定的制造商都会以不同于最后一种的方式为其产品定价。其中一些实际上可以做如下事情:PRICE = CABINET_BASE_PRICE * FINISH_UPCHARGE +(BASE_COST_OF_DOOR * FINISH_UPCHARGE * NUM_DOORS) – 2011-01-14 18:48:46