2013-06-27 51 views
0

我瀏覽了Broadleaf commerce v2.2文檔/教程,特別是定製添加項目工作流和動態定價模塊。Broadleaf Commerce - 動態定價

我想在將產品添加到購物車時爲其動態定價。

我是正確的思維 - 當一個產品必須重新定價可以有這樣做的兩種方法:?

這可以說明:

方法1:

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()方法被調用,我的文檔,但getSkuPrices中提到(配置一切MyDynamicSkuPricingServiceImpl#getSkuPrices()會被調用)永遠不會被隱式調用)

已更新 - 我發現如果在DynamicPricingFilter中HashMap pricingConsiderations爲空,則DynamicPricingService#getSkuPrices()將不會被調用。因此,對於dynamicPricingService工作,它必須有一個非空的HashMap,它會被調用implicitly.Not知道爲什麼它需要...

如何更新產品的附加定價到購物車沒有堅持這個價值的數據庫?

修訂

我能夠添加動態定價,而不必在數據庫堅持價值:

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)

回答

1

關於覆蓋價格的最後一個問題。 Broadleaf提供覆蓋價格(orderItem.setOverrideRetailPrice(), orderItem.setOverrideSalePrice())的方法。

如果不使用這些方法,定價服務將恢復到目前的價位上SKU(或動態定價實現)。

在所有情況下,大於retailPrice的salePrice將被忽略。

經常當壓倒一切的價格時,你也想繞過折扣引擎。您可以使用orderItem.setDiscountingAllowed(false)

由於這是典型的行爲,一種方便的方法,還提供[orderItem.setPrice()]這將覆蓋銷售和零售價格,以及允許虛假集貼現。

Brian Polster - Broadleaf Commerce