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