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> <Project>
<PropertyGroup> <PropertyGroup>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Version>5.2.0</Version> <Version>5.3.0-preview.1</Version>
<NoWarn>$(NoWarn);CS1591</NoWarn> <NoWarn>$(NoWarn);CS1591</NoWarn>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>EasyAbp Team</Authors> <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, protected virtual List<IOrderLine> GetOrderLinesInScope(CouponTemplateData couponTemplate,
OrderDiscountContext context) OrderDiscountContext context)
{ {
List<IOrderLine> expectedOrderLines;
if (couponTemplate.IsUnscoped) if (couponTemplate.IsUnscoped)
{ {
return context.Order.OrderLines.ToList(); expectedOrderLines = context.Order.OrderLines.ToList();
} }
else
var expectedOrderLines = new List<IOrderLine>();
foreach (var scope in couponTemplate.Scopes.Where(scope => scope.StoreId == context.Order.StoreId))
{ {
expectedOrderLines.AddRange(context.Order.OrderLines expectedOrderLines = [];
.WhereIf(scope.ProductGroupName != null, foreach (var scope in couponTemplate.Scopes.Where(scope => scope.StoreId == context.Order.StoreId))
x => context.ProductDict[x.ProductId].ProductGroupName == scope.ProductGroupName) {
.WhereIf(scope.ProductId.HasValue, x => x.ProductId == scope.ProductId) expectedOrderLines.AddRange(context.Order.OrderLines
.WhereIf(scope.ProductSkuId.HasValue, x => x.ProductSkuId == scope.ProductSkuId)); .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()) if (expectedOrderLines.IsNullOrEmpty())

Loading…
Cancel
Save