///// <summary> ///// Gets the final price ///// </summary> ///// <param name="product">Product</param> ///// <param name="customer">The customer</param> ///// <param name="additionalCharge">Additional charge</param> ///// <param name="includeDiscounts">A value indicating whether include discounts or not for final price computation</param> ///// <param name="quantity">Shopping cart item quantity</param> ///// <returns>Final price</returns> //decimal GetFinalPrice(Product product, //decimal additionalCharge = decimal.Zero, //bool includeDiscounts = true, //int quantity = 1); ///// <summary> ///// Gets the final price ///// </summary> ///// <param name="product">Product</param> ///// <param name="additionalCharge">Additional charge</param> ///// <param name="includeDiscounts">A value indicating whether include discounts or not for final price computation</param> ///// <param name="quantity">Shopping cart item quantity</param> ///// <param name="discountAmount">Applied discount amount</param> ///// <returns>Final price</returns> //decimal GetFinalPrice(Product product, // decimal additionalCharge, // bool includeDiscounts, // int quantity, // out decimal discountAmount); /// <summary> /// Gets the product cost (one item) /// </summary> /// <param name="product"></param> /// <param name="attributesJson"></param> /// <returns></returns> public virtual async Task <decimal> GetProductCostAsync(Product product, string attributesJson) { if (attributesJson.IsNullOrWhiteSpace()) { return(product.GoodCost); } decimal cost = 0; var attributeValues = await _productAttributeManager.FindCombinationByAttributesJsonAsync(attributesJson); if (attributeValues != null && attributeValues.OverriddenGoodCost.HasValue) { cost = attributeValues.OverriddenGoodCost.Value; } return(cost); }
/// <summary> /// 根据Json 查找产品 /// </summary> /// <param name="attributesJson">Attributes in json format</param> /// <returns>Selected product</returns> public virtual async Task <Product> ParseProductAsync(string attributesJson) { var combin = await _productAttributeManager.FindCombinationByAttributesJsonAsync(attributesJson); if (combin == null) { return(null); } await _productAttributeManager.ProductAttributeCombinationRepository .EnsurePropertyLoadedAsync(combin, c => c.Product); return(combin.Product); }