gpt4 book ai didi

java - Broadleaf Commerce - 动态定价

转载 作者:行者123 更新时间:2023-12-01 14:23:29 25 4
gpt4 key购买 nike

我浏览了 Broadleaf commerce v2.2 文档/教程,特别是自定义添加项目工作流程和动态定价模块。

我想在将产品添加到购物车时对其进行动态定价。

我的想法是否正确 - 当产品必须重新定价时,可以有两种方法来做到这一点?:

这可以说明:

方法一:

class DynamicPricingActivity extends BaseActivity{

....
@Override
public ProcessContext execute(ProcessContext context) throws Exception {
CartOperationRequest request = ((CartOperationContext) context).getSeedData();

updatePhonePrice(request.getOrder());

return context;
}
....
}

方法 2:

有关于 Dynamic Pricing Configuration 中的说明的问题.

  • 如何调用 MyDynamicSkuPricingServiceImpl # getSkuPrices() 方法?

    (在文档中提到,当 getPrice() 方法被调用时,MyDynamicSkuPricingServiceImpl#getSkuPrices() 将被调用,我按照文档中提到的方式配置了所有内容,但 getSkuPrices() 永远不会被调用隐式调用)

更新 - 我发现如果 DynamicPricingFilter 中的 HashMappricingConsiderations 为空,DynamicPricingService#getSkuPrices() 将不会被调用。因此,要使动态定价服务正常工作,必须有一个非空的 HashMap,并且它将被隐式调用。不知道为什么需要它......

如何更新添加到购物车的产品的定价而不将该值保留在数据库中?

已更新

我能够添加动态定价,而无需将值保留在数据库中:

  DiscreteOrderItem orderItem = orderItemService.createDynamicPriceDiscreteOrderItem(orderRequest,          pricingConsiderations);
orderItem.setRetailPrice(new Money("623.34"));
orderItem.setSalePrice(new Money("888.888"));
orderItem.setPrice(orderItem.getSalePrice());
cart.addOrderItem(orderItem);

cart = orderService.save(cart, true);

但是,购物车总额设置为零售价:623.34。如何获得正确的总数(888.888)

最佳答案

关于您最后一个关于覆盖价格的问题。 Broadleaf 提供了覆盖价格的方法(orderItem.setOverrideRetailPrice(), orderItem.setOverrideSalePrice())

如果不使用这些方法,定价服务将重置为 SKU 的当前价格(或动态定价实现)。

在所有情况下,大于零售价格的销售价格都将被忽略。

通常,在覆盖价格时,您还想绕过折扣引擎。您可以使用orderItem.setDiscountingAllowed(false)

由于这是典型行为,因此还提供了一种便捷方法[orderItem.setPrice()],它将覆盖销售价格和零售价格,并将允许的折扣设置为 false。

布莱恩·波尔斯特——阔叶商业

关于java - Broadleaf Commerce - 动态定价,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17351401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com