Browse Source

Merge pull request #280 from EasyAbp/fix-GetOrderLinesInScope

Avoid using Unscoped coupons regardless of the amount
pull/283/merge
Super 2 years ago
committed by GitHub
parent
commit
10eaf9f002
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      common.props
  2. 23
      plugins/Coupons/src/EasyAbp.EShop.Orders.Plugins.Coupons/EasyAbp/EShop/Orders/Plugins/Coupons/OrderDiscount/CouponOrderDiscountProvider.cs

2
common.props

@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>5.2.0</Version>
<Version>5.3.0-preview.1</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors>

23
plugins/Coupons/src/EasyAbp.EShop.Orders.Plugins.Coupons/EasyAbp/EShop/Orders/Plugins/Coupons/OrderDiscount/CouponOrderDiscountProvider.cs

@ -125,20 +125,23 @@ namespace EasyAbp.EShop.Orders.Plugins.Coupons.OrderDiscount
protected virtual List<IOrderLine> GetOrderLinesInScope(CouponTemplateData couponTemplate,
OrderDiscountContext context)
{
List<IOrderLine> expectedOrderLines;
if (couponTemplate.IsUnscoped)
{
return context.Order.OrderLines.ToList();
expectedOrderLines = context.Order.OrderLines.ToList();
}
var expectedOrderLines = new List<IOrderLine>();
foreach (var scope in couponTemplate.Scopes.Where(scope => scope.StoreId == context.Order.StoreId))
else
{
expectedOrderLines.AddRange(context.Order.OrderLines
.WhereIf(scope.ProductGroupName != null,
x => context.ProductDict[x.ProductId].ProductGroupName == scope.ProductGroupName)
.WhereIf(scope.ProductId.HasValue, x => x.ProductId == scope.ProductId)
.WhereIf(scope.ProductSkuId.HasValue, x => x.ProductSkuId == scope.ProductSkuId));
expectedOrderLines = [];
foreach (var scope in couponTemplate.Scopes.Where(scope => scope.StoreId == context.Order.StoreId))
{
expectedOrderLines.AddRange(context.Order.OrderLines
.WhereIf(scope.ProductGroupName != null,
x => context.ProductDict[x.ProductId].ProductGroupName == scope.ProductGroupName)
.WhereIf(scope.ProductId.HasValue, x => x.ProductId == scope.ProductId)
.WhereIf(scope.ProductSkuId.HasValue, x => x.ProductSkuId == scope.ProductSkuId));
}
}
if (expectedOrderLines.IsNullOrEmpty())

Loading…
Cancel
Save