我需要根据客户位置拥有多个MSRP。我打算添加" location" " product-option"每种产品都可以使用,因此每种产品都可以根据位置提供SKU。而且我不希望用户选择此选项,它应该是默认选择。
这是否是正确的方法,或者请提出更好的方法来实现它。
答案 0 :(得分:2)
我认为这取决于您的定价考虑因素是多么短暂。如果定价将根据费率表(或类似的价格)定期更改,您可以使用动态定价服务,这将允许您根据您认为重要的业务规则以编程方式更改定价。首先注册您自己的DynamicSkuPricingFilter(即扩展AbstractDynamicSkuPricingFilter - 请参阅DefaultDynamicSkuPricingFilter),并提供对您的定价确定很重要的任何属性。然后,注册您自己的DynamicSkuPricingService实现(请参阅DefaultDynamicSkuPricingServiceImpl)以返回正确的定价。我还会考虑使用位置信息扩展DiscreteOrderItemImpl,以便在相关位置的购物车中有一条记录。
否则,如果您希望有更多永久数据结构和显式管理员用户意图维护此定价,那么我建议一个新的实体结构,将简单的位置和价格与您的默认sku相关联。您应该能够使用@AdminPresentation注释在管理员中自然地维护它。例如,考虑一个新的管理员注释的“LocationPrice”实体集合,它来自SkuImpl的自定义扩展。然后,您仍然会使用上面的动态定价建议,但您将根据此维护数据做出决定。我认为这在框架中比尝试使用选项和多个skus更自然。
最后,我假设您正在使用Broadleaf的社区版本。我们通常使用我们的商业PriceList模块来满足此类要求,该模块功能更丰富。