/// <summary> /// /// </summary> /// <param name="product"></param> /// <param name="isPrimary">是否为初级毛利,否的话就是高级毛利</param> /// <returns></returns> public virtual decimal GetStockGrossMarginRate(ProductInfo product, bool isPrimary) { int inStockDays = ExternalDomainBroker.GetInStockDaysByProductSysNo(product.SysNo); CategorySetting cateSetting = ExternalDomainBroker.GetCategorySetting(product.ProductBasicInfo.ProductCategoryInfo.SysNo.Value); MinMarginKPI kpi = new MinMarginKPI(); if (cateSetting.CategoryMinMarginInfo != null && cateSetting.CategoryMinMarginInfo.Margin != null && cateSetting.CategoryMinMarginInfo.Margin.Count() > 0) { if (inStockDays >= 0 && inStockDays <= 30) { kpi = cateSetting.CategoryMinMarginInfo.Margin[MinMarginDays.Thirty]; } if (inStockDays >= 31 && inStockDays <= 60) { kpi = cateSetting.CategoryMinMarginInfo.Margin[MinMarginDays.Sixty]; } if (inStockDays >= 61 && inStockDays <= 90) { kpi = cateSetting.CategoryMinMarginInfo.Margin[MinMarginDays.Ninety]; } if (inStockDays >= 91 && inStockDays <= 120) { kpi = cateSetting.CategoryMinMarginInfo.Margin[MinMarginDays.OneHundredAndTwenty]; } if (inStockDays >= 120 && inStockDays <= 180) { kpi = cateSetting.CategoryMinMarginInfo.Margin[MinMarginDays.OneHundredAndEighty]; } if (inStockDays > 180) { kpi = cateSetting.CategoryMinMarginInfo.Margin[MinMarginDays.Other]; } } else { if (inStockDays >= 0 && inStockDays <= 30) { kpi.MinMargin = 0.05m; kpi.MaxMargin = 0.05m; } if (inStockDays >= 31 && inStockDays <= 180) { kpi.MinMargin = 0.01m; kpi.MaxMargin = 0.01m; } if (inStockDays > 180) { kpi.MinMargin = -0.03m; kpi.MaxMargin = -0.03m; } } if (isPrimary) { return(kpi.MinMargin);//初级毛利率下限 } else { return(kpi.MaxMargin);//高级毛利率下限 } }