Я просмотрел документацию/учебное пособие по Broadleaf commerce v2.2, в частности, настройку Add Item Workflow и Dynamic Pricing.Broadleaf Commerce - Динамическое ценообразование
Я хочу динамически оценивать продукт, когда он добавляется в корзину.
Я правильно думать - когда продукт должен быть repriced может быть два подхода, чтобы сделать так:
Customizing Add Item Workflow using Activity - ОбновленоЛюбая модификация сделать заказ Цены расстегнут по ценообразованию модуль. Таким образом, этот подход не работает.
Это можно проиллюстрировать:
Подход 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()
?(В документации упоминается, что
MyDynamicSkuPricingServiceImpl#getSkuPrices()
получит вызывается при getPrice() метод вызывается, я настроил все, как указано в документации, но getSkuPrices() никогда не вызывается неявно)
ОБНОВЛЕНО - Я обнаружил, что если цены на HashMap оцениваются в DynamicPricingFilter
, то 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)?