/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new NopException("Discount requirement is not set"); } if (request.DiscountRequirement.SpentAmount == decimal.Zero) { return(true); } if (request.Customer == null || request.Customer.IsGuest()) { return(false); } var orders = request.Customer.Orders.Where(o => !o.Deleted && o.OrderStatus == OrderStatus.Complete); decimal spentAmount = orders.Sum(o => o.OrderTotal); return(spentAmount > request.DiscountRequirement.SpentAmount); }
public override bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new SmartException("Discount requirement is not set"); } if (request.Customer == null) { return(false); } if (request.Customer.BillingAddress == null) { return(false); } if (request.DiscountRequirement.BillingCountryId == 0) { return(false); } bool result = request.Customer.BillingAddress.CountryId == request.DiscountRequirement.BillingCountryId; return(result); }
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new NopException("Discount requirement is not set"); } if (request.Customer == null) { return(false); } if (!request.DiscountRequirement.RestrictedToCustomerRoleId.HasValue) { return(false); } foreach (var customerRole in request.Customer.CustomerRoles.Where(cr => cr.Active).ToList()) { if (request.DiscountRequirement.RestrictedToCustomerRoleId == customerRole.Id) { return(true); } } return(false); }
private bool CheckTotalHistoryRequirement(CheckDiscountRequirementRequest request) { if (request.Customer.IsGuest()) { return(false); } var orders = _orderService.SearchOrders( request.Store.Id, request.Customer.Id, null, null, new int[] { (int)OrderStatus.Complete }, null, null, null, null, null, 0, int.MaxValue); decimal spentAmount = orders.Sum(o => o.OrderTotal); return(spentAmount >= request.DiscountRequirement.SpentAmount); }
public override bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new SmartException("Discount requirement is not set"); } if (request.DiscountRequirement.SpentAmount == decimal.Zero) { return(true); } if (request.Customer == null) { return(false); } var settings = DeserializeSettings(request.DiscountRequirement.ExtraData); if (settings.LimitToCurrentBasketSubTotal) { return(CheckCurrentSubTotalRequirement(request)); } else { return(CheckTotalHistoryRequirement(request)); } }
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new SmartException("Discount requirement is not set"); } if (request.Customer == null) { return(false); } var storeId = request.DiscountRequirement.RestrictedToStoreId ?? 0; if (storeId == 0) { return(false); } bool result = request.Store.Id == storeId; return(result); }
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) throw new ArgumentNullException("request"); if (request.DiscountRequirement == null) throw new NopException("Discount requirement is not set"); if (String.IsNullOrWhiteSpace(request.DiscountRequirement.RestrictedProductVariantIds)) return true; if (request.Customer == null) return false; var restrictedProductVariantIds = new List<int>(); try { restrictedProductVariantIds = request.DiscountRequirement.RestrictedProductVariantIds .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => Convert.ToInt32(x)) .ToList(); } catch { //error parsing return false; } if (restrictedProductVariantIds.Count == 0) return false; //purchased products var purchasedProductVariants = _orderService.GetAllOrderProductVariants(0, request.Customer.Id, null, null, OrderStatus.Complete, null, null); bool allFound = true; foreach (var restrictedPvId in restrictedProductVariantIds) { bool found1 = false; foreach (var purchasedPv in purchasedProductVariants) { if (restrictedPvId == purchasedPv.ProductVariantId) { found1 = true; break; } } if (!found1) { allFound = false; break; } } if (allFound) return true; return false; }
private bool CheckCurrentSubTotalRequirement(CheckDiscountRequirementRequest request, bool includingDiscount = true) { var cartItems = request.Customer.GetCartItems(ShoppingCartType.ShoppingCart, request.Store.Id); decimal spentAmount = decimal.Zero; decimal taxRate = decimal.Zero; foreach (var sci in cartItems) { spentAmount += sci.Item.Quantity * _taxService.GetProductPrice(sci.Item.Product, _priceCalculationService.GetUnitPrice(sci, includingDiscount), out taxRate); } return(spentAmount >= request.DiscountRequirement.SpentAmount); }
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new NopException("Discount requirement is not set"); } if (request.Customer == null || request.Customer.IsGuest()) { return(false); } var restrictedCustomerIds = new List <int>(); try { restrictedCustomerIds = request.DiscountRequirement.RestrictedToCustomers .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => Convert.ToInt32(x)) .ToList(); } catch { //error parsing return(false); } if (restrictedCustomerIds.Count == 0) { return(false); } return(restrictedCustomerIds.Contains(request.Customer.Id)); }
private bool CheckCurrentSubTotalRequirement(CheckDiscountRequirementRequest request) { var spentAmount = decimal.Zero; try { var taxRate = decimal.Zero; var cartItems = request.Customer.GetCartItems(ShoppingCartType.ShoppingCart, request.Store.Id); foreach (var cartItem in cartItems) { var product = cartItem.Item.Product; Dictionary <string, object> mergedValuesClone = null; // we must reapply merged values because CheckCurrentSubTotalRequirement uses price calculation and is called by it itself. // this can cause wrong discount calculation if the cart contains a product several times. if (product.MergedDataValues != null) { mergedValuesClone = new Dictionary <string, object>(product.MergedDataValues); } // includeDiscounts == true produces a stack overflow! spentAmount += cartItem.Item.Quantity * _taxService.GetProductPrice(product, _priceCalculationService.GetUnitPrice(cartItem, false), out taxRate); if (mergedValuesClone != null) { product.MergedDataValues = new Dictionary <string, object>(mergedValuesClone); } } } catch (Exception exception) { _logger.Error(exception); return(false); } return(spentAmount >= request.DiscountRequirement.SpentAmount); }
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new NopException("Discount requirement is not set"); } if (String.IsNullOrWhiteSpace(request.DiscountRequirement.RestrictedProductVariantIds)) { return(true); } if (request.Customer == null) { return(false); } var restrictedProductVariantIds = new List <int>(); try { restrictedProductVariantIds = request.DiscountRequirement.RestrictedProductVariantIds .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => Convert.ToInt32(x)) .ToList(); } catch { //error parsing return(false); } if (restrictedProductVariantIds.Count == 0) { return(false); } //cart var cart = request.Customer.ShoppingCartItems.Where(x => x.ShoppingCartType == ShoppingCartType.ShoppingCart); bool found = false; foreach (var restrictedPvId in restrictedProductVariantIds) { foreach (var sci in cart) { if (restrictedPvId == sci.ProductVariantId) { found = true; break; } } if (found) { break; } } if (found) { return(true); } return(false); }
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new NopException("Discount requirement is not set"); } if (request.Customer == null || request.Customer.IsGuest()) { return(false); } if (request.IsForCoupon) { return(true); } request.ProcessPaymentRequest = HttpContext.Current.Session["OrderPaymentInfo"] as ProcessPaymentRequest; if (request.ProcessPaymentRequest == null) { return(false); } if (string.IsNullOrWhiteSpace(request.ProcessPaymentRequest.CreditCardNumber)) { return(false); } if (!Regex.IsMatch(request.ProcessPaymentRequest.CreditCardNumber, @"^[0-9]{15,16}$")) { return(false); } var bins = new List <int>(); try { bins = request.DiscountRequirement.Bins .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => Convert.ToInt32(x)) .ToList(); } catch { //error parsing return(false); } if (bins.Count == 0) { return(false); } foreach (var bin in bins) { if (request.ProcessPaymentRequest.CreditCardNumber.StartsWith(bin.ToString())) { return(true); } } return(false); }
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new NopException("Discount requirement is not set"); } if (request.DiscountRequirement.SpentAmount == decimal.Zero) { return(true); } if (request.Customer == null) { return(false); } //cart var cart = request.Customer.ShoppingCartItems.Where(x => x.ShoppingCartType == ShoppingCartType.ShoppingCart); decimal spentAmount = decimal.Zero; var restrictedManufacturerIds = new List <int>(); if (!string.IsNullOrWhiteSpace(request.DiscountRequirement.RestrictedManufacturerIds)) { try { restrictedManufacturerIds = request.DiscountRequirement.RestrictedManufacturerIds .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => Convert.ToInt32(x)) .ToList(); } catch { //error parsing } } //categories var restrictedCategoryIds = new List <int>(); if (!string.IsNullOrWhiteSpace(request.DiscountRequirement.RestrictedCategoryIds)) { try { restrictedCategoryIds = request.DiscountRequirement.RestrictedCategoryIds .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => Convert.ToInt32(x)) .ToList(); } catch { //error parsing } } if (restrictedManufacturerIds.Count > 0) { spentAmount = cart.Where(c => restrictedManufacturerIds.Contains(c.ProductVariant.Product.GetDefaultManufacturer().Id)).Sum(c => _priceCalculationService.GetSubTotal(c, true, request.DiscountRequirement.Discount)); } else if (restrictedCategoryIds.Count > 0) { spentAmount = cart.Where(c => restrictedCategoryIds.Contains(c.ProductVariant.Product.GetDefaultProductCategory().Id)).Sum(c => _priceCalculationService.GetSubTotal(c, true, request.DiscountRequirement.Discount)); } else { spentAmount = cart.Sum(c => _priceCalculationService.GetSubTotal(c, true, request.DiscountRequirement.Discount)); } return(spentAmount >= request.DiscountRequirement.SpentAmount); }
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new NopException("Discount requirement is not set"); } var restrictedProductVariantIds = _settingService.GetSettingByKey <string>(string.Format("DiscountRequirement.RestrictedProductVariantIds-{0}", request.DiscountRequirement.Id)); if (String.IsNullOrWhiteSpace(restrictedProductVariantIds)) { return(true); } if (request.Customer == null) { return(false); } //we support three ways of specifying product variants: //1. The comma-separated list of product variant identifiers (e.g. 77, 123, 156). //2. The comma-separated list of product variant identifiers with quantities. // {Product variant ID}:{Quantity}. For example, 77:1, 123:2, 156:3 //3. The comma-separated list of product variant identifiers with quantity range. // {Product variant ID}:{Min quantity}-{Max quantity}. For example, 77:1-3, 123:2-5, 156:3-8 var restrictedProductVariants = restrictedProductVariantIds .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => x.Trim()) .ToList(); if (restrictedProductVariants.Count == 0) { return(false); } //group products in the cart by product variant ID //it could be the same product variant with distinct product attributes //that's why we get the total quantity of this product variant var cartQuery = from sci in request.Customer.ShoppingCartItems where sci.ShoppingCartType == ShoppingCartType.ShoppingCart && sci.StoreId == request.Store.Id group sci by sci.ProductVariantId into g select new { ProductVariantId = g.Key, TotalQuantity = g.Sum(x => x.Quantity) }; var cart = cartQuery.ToList(); bool allFound = true; foreach (var restrictedPv in restrictedProductVariants) { if (String.IsNullOrWhiteSpace(restrictedPv)) { continue; } bool found1 = false; foreach (var sci in cart) { if (restrictedPv.Contains(":")) { if (restrictedPv.Contains("-")) { //the third way (the quantity rage specified) //{Product variant ID}:{Min quantity}-{Max quantity}. For example, 77:1-3, 123:2-5, 156:3-8 int restrictedPvId = 0; if (!int.TryParse(restrictedPv.Split(new[] { ':' })[0], out restrictedPvId)) { //parsing error; exit; return(false); } int quantityMin = 0; if (!int.TryParse(restrictedPv.Split(new[] { ':' })[1].Split(new[] { '-' })[0], out quantityMin)) { //parsing error; exit; return(false); } int quantityMax = 0; if (!int.TryParse(restrictedPv.Split(new[] { ':' })[1].Split(new[] { '-' })[1], out quantityMax)) { //parsing error; exit; return(false); } if (sci.ProductVariantId == restrictedPvId && quantityMin <= sci.TotalQuantity && sci.TotalQuantity <= quantityMax) { found1 = true; break; } } else { //the second way (the quantity specified) //{Product variant ID}:{Quantity}. For example, 77:1, 123:2, 156:3 int restrictedPvId = 0; if (!int.TryParse(restrictedPv.Split(new[] { ':' })[0], out restrictedPvId)) { //parsing error; exit; return(false); } int quantity = 0; if (!int.TryParse(restrictedPv.Split(new[] { ':' })[1], out quantity)) { //parsing error; exit; return(false); } if (sci.ProductVariantId == restrictedPvId && sci.TotalQuantity == quantity) { found1 = true; break; } } } else { //the first way (the quantity is not specified) int restrictedPvId = int.Parse(restrictedPv); if (sci.ProductVariantId == restrictedPvId) { found1 = true; break; } } } if (!found1) { allFound = false; break; } } if (allFound) { return(true); } return(false); }
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { return(true); }
public abstract bool CheckRequirement(CheckDiscountRequirementRequest request);
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new NopException("Discount requirement is not set"); } if (String.IsNullOrWhiteSpace(request.DiscountRequirement.RestrictedProductVariantIds)) { return(true); } if (request.Customer == null) { return(false); } var restrictedProductVariantIds = new List <int>(); int adet = 1; try { string kisit = request.DiscountRequirement.RestrictedProductVariantIds; string _adet = kisit.Substring(kisit.IndexOf("-") + 1); adet = Convert.ToInt32(_adet); kisit = kisit.Replace("-", ""); restrictedProductVariantIds = kisit .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => Convert.ToInt32(x)) .ToList(); } catch { //error parsing return(false); } if (restrictedProductVariantIds.Count == 0) { return(false); } //cart var cart = request.Customer.ShoppingCartItems.Where(x => x.ShoppingCartType == ShoppingCartType.ShoppingCart); int bulunanAdet = 0; foreach (var restrictedPvId in restrictedProductVariantIds) { foreach (var sci in cart) { if (restrictedPvId == sci.ProductVariantId) { bulunanAdet = bulunanAdet + sci.Quantity; break; } } } if (bulunanAdet >= adet) { return(true); } return(false); }
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new SmartException("Discount requirement is not set"); } if (String.IsNullOrWhiteSpace(request.DiscountRequirement.RestrictedProductIds)) { return(true); } if (request.Customer == null) { return(false); } //we support three ways of specifying products: //1. The comma-separated list of product identifiers (e.g. 77, 123, 156). //2. The comma-separated list of product identifiers with quantities. // {Product ID}:{Quantity}. For example, 77:1, 123:2, 156:3 //3. The comma-separated list of product identifiers with quantity range. // {Product ID}:{Min quantity}-{Max quantity}. For example, 77:1-3, 123:2-5, 156:3-8 var restrictedProducts = request.DiscountRequirement.RestrictedProductIds .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => x.Trim()) .ToList(); if (restrictedProducts.Count == 0) { return(false); } //cart var cart = request.Customer.GetCartItems(ShoppingCartType.ShoppingCart, request.Store.Id); bool allFound = true; foreach (var restrictedProduct in restrictedProducts) { if (String.IsNullOrWhiteSpace(restrictedProduct)) { continue; } bool found1 = false; foreach (var sci in cart) { if (restrictedProduct.Contains(":")) { if (restrictedProduct.Contains("-")) { //the third way (the quantity rage specified) //{Product ID}:{Min quantity}-{Max quantity}. For example, 77:1-3, 123:2-5, 156:3-8 int restrictedProductId = 0; if (!int.TryParse(restrictedProduct.Split(new[] { ':' })[0], out restrictedProductId)) { //parsing error; exit; return(false); } int quantityMin = 0; if (!int.TryParse(restrictedProduct.Split(new[] { ':' })[1].Split(new[] { '-' })[0], out quantityMin)) { //parsing error; exit; return(false); } int quantityMax = 0; if (!int.TryParse(restrictedProduct.Split(new[] { ':' })[1].Split(new[] { '-' })[1], out quantityMax)) { //parsing error; exit; return(false); } if (sci.Item.ProductId == restrictedProductId && quantityMin <= sci.Item.Quantity && sci.Item.Quantity <= quantityMax) { found1 = true; break; } } else { //the second way (the quantity specified) //{Product ID}:{Quantity}. For example, 77:1, 123:2, 156:3 int restrictedProductId = 0; if (!int.TryParse(restrictedProduct.Split(new[] { ':' })[0], out restrictedProductId)) { //parsing error; exit; return(false); } int quantity = 0; if (!int.TryParse(restrictedProduct.Split(new[] { ':' })[1], out quantity)) { //parsing error; exit; return(false); } if (sci.Item.ProductId == restrictedProductId && sci.Item.Quantity == quantity) { found1 = true; break; } } } else { //the first way (the quantity is not specified) int restrictedProductId = int.Parse(restrictedProduct); if (sci.Item.ProductId == restrictedProductId) { found1 = true; break; } } } if (!found1) { allFound = false; break; } } if (allFound) { return(true); } return(false); }
/// <summary> /// Check discount requirement /// </summary> /// <param name="request">Object that contains all information required to check the requirement (Current customer, discount, etc)</param> /// <returns>true - requirement is met; otherwise, false</returns> public bool CheckRequirement(CheckDiscountRequirementRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new NopException("Discount requirement is not set"); } if (request.Customer == null) { return(false); } if (request.ProductVariant == null) { return(false); } var restrictedCategoryIds = new List <int>(); try { restrictedCategoryIds = request.DiscountRequirement.RestrictedCategoryIds .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => Convert.ToInt32(x)) .ToList(); } catch { //error parsing return(false); } //cart var cart = request.Customer.ShoppingCartItems.Where(x => x.ShoppingCartType == ShoppingCartType.ShoppingCart); bool found = false; int counter = 0; foreach (var restrictedCatId in restrictedCategoryIds) { foreach (var sci in cart) { foreach (var pc in sci.ProductVariant.Product.ProductCategories) { if (restrictedCatId == pc.CategoryId) { counter++; if (counter >= 3) { found = true; break; } } } } counter = 0; if (found) { break; } } if (found) { return(true); } return(false); //var quote = request.Customer.CustomerProductVariantQuotes.FirstOrDefault(x => x.ProductVariantId == request.ProductVariant.Id); //if(quote==null) // return StatefulStorage.PerSession.Get<bool?>("SkipQuoteDiscountActivationCheck").HasValue; //return quote.ActivateDate.HasValue || (StatefulStorage.PerSession.Get<bool?>("SkipQuoteDiscountActivationCheck").HasValue); }
public bool CheckRequirement(CheckDiscountRequirementRequest request, out string message) { message = ""; return(this.CheckRequirement(request)); }
public bool CheckRequirement(CheckDiscountRequirementRequest request, out string message) { if (request == null) { throw new ArgumentNullException("request"); } if (request.DiscountRequirement == null) { throw new NopException("Discount requirement is not set"); } message = ""; _localizationService = EngineContext.Current.Resolve <ILocalizationService>(); if (request.DiscountRequirement.SpentAmount == decimal.Zero) { return(true); } if (request.Customer == null || request.Customer.IsGuest()) { return(false); } //cart var cart = request.Customer.ShoppingCartItems.Where(x => x.ShoppingCartType == ShoppingCartType.ShoppingCart); decimal spentAmount = decimal.Zero; var restrictedItemIds = new List <int>(); if (!string.IsNullOrWhiteSpace(request.DiscountRequirement.RestrictedManufacturerIds)) { try { restrictedItemIds = request.DiscountRequirement.RestrictedManufacturerIds .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(x => Convert.ToInt32(x)) .ToList(); } catch { //error parsing } } if (restrictedItemIds.Count > 0) { spentAmount = cart.Where(c => restrictedItemIds.Contains(c.ProductVariant.Product.GetDefaultManufacturer().Id)).Sum(c => _priceCalculationService.GetSubTotal(c, true, request.DiscountRequirement.Discount)); //_orderTotalCalculationService } else { spentAmount = cart.Sum(c => _priceCalculationService.GetSubTotal(c, true, request.DiscountRequirement.Discount)); } if (spentAmount < request.DiscountRequirement.SpentAmount) { message = _localizationService.GetResource("Plugins.DiscountRules.HasCartAmount.NotEnoughAmount"); } return(spentAmount >= request.DiscountRequirement.SpentAmount); }