コード例 #1
0
        ///// <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);
        }
コード例 #2
0
        /// <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);
        }