protected override RewardDescription Evaluate(EntryPromotion promotionData, PromotionProcessorContext context)
{
var lineItems = GetLineItems(context.OrderForm);
var condition = promotionData.Condition;
var applicableCodes = targetEvaluator.GetApplicableCodes(lineItems, condition.Targets, condition.MatchRecursive);
var filteredLineItems = GetFilteredLineItems(lineItems, condition.RequiredQuantity);
var filteredApplicableCodes = GetFilteredApplicableCodes(applicableCodes, filteredLineItems);
if (applicableCodes.NotNullOrEmpty() && filteredApplicableCodes.IsNullOrEmpty())
{
return RewardDescription.CreatePercentageReward(
FulfillmentStatus.PartiallyFulfilled,
Enumerable.Empty<RedemptionDescription>(),
promotionData,
promotionData.Percentage,
Enum.GetName(typeof(RequestFulfillmentStatus), RequestFulfillmentStatus.PartiallyFulfilled));
}
var fulfillmentStatus = fulfillmentEvaluator.GetStatusForBuyQuantityPromotion(
filteredApplicableCodes,
filteredLineItems,
condition.RequiredQuantity,
condition.RequiredQuantity);
return RewardDescription.CreatePercentageReward(
fulfillmentStatus,
GetRedemptions(filteredApplicableCodes, promotionData, context, lineItems),
promotionData,
promotionData.Percentage,
fulfillmentStatus.GetRewardDescriptionText(localizationService));
}我们已自定义促销,以便仅对具有所需数量的行项目应用促销。现在,当我们从适用于两个促销的其他和两个行项目中排除促销时,只有一个促销同时适用于这两个促销。
例如:我们希望一个行项目申请“购买10个项目,获得10%”和其他“购买20个项目,获得20%的优惠”。
如果它是适用于促销的单行项目,则可以正常工作!(我们使用的是Commerce 12.5.1)
发布于 2019-04-03 20:48:12
谢谢你的回复。
我们通过使用受影响的条目实现了解决方案。
////To check applied discount entries.
var isPromotionApplied = context.EntryPrices.Prices.Count() > 0 ? true : false;
if (isPromotionApplied)
{
////To filter the item if it have already discount.
var codesAlreadyDiscounted = context.EntryPrices.Prices.Select(x => x.ParentItem.Code);
lineItems = lineItems.Where(x => !codesAlreadyDiscounted.Contains(x.Code));
}https://stackoverflow.com/questions/54926141
复制相似问题