public List <ProductWholeSalePriceInfo> GetWholeSalePriceInfoBySysNo(int productSysNo) { DataCommand cmd = DataCommandManager.GetDataCommand("GetWholeSalePriceInfoBySysNo"); cmd.SetParameterValue("@ProductSysNo", productSysNo); var priceArray = new List <ProductWholeSalePriceInfo>(); using (IDataReader reader = cmd.ExecuteDataReader()) { while (reader.Read()) { var price = new ProductWholeSalePriceInfo(); var value = reader.GetInt32(0); WholeSaleLevelType level; Enum.TryParse(value.ToString(CultureInfo.InvariantCulture), out level); price.Level = level; if (!reader.IsDBNull(1) && !reader.IsDBNull(2)) { price.Qty = reader.GetInt32(1); price.Price = reader.GetDecimal(2); priceArray.Add(price); } } } var volumePriceList = Enum.GetValues(typeof(WholeSaleLevelType)).Cast <WholeSaleLevelType>().ToList(); var vresult = volumePriceList.GroupJoin(priceArray, volume => volume, productVolumeLevelType => productVolumeLevelType.Level, (volume, vresultList) => new { volume, vresultList }).SelectMany( @v => @v.vresultList.DefaultIfEmpty(), (@v, o) => new { Level = @v.volume, Qty = (o == null) ? (int?)null : o.Qty, Price = (o == null) ? (decimal?)null : o.Price }); var resultProductVolumePriceList = vresult.Select(volumePrice => new ProductWholeSalePriceInfo { Level = volumePrice.Level, Qty = volumePrice.Qty, Price = volumePrice.Price }).ToList(); resultProductVolumePriceList = resultProductVolumePriceList.OrderBy(p => p.Level).ToList(); return(resultProductVolumePriceList); }
/// <summary> /// 对Combo Item进行检查,本方法对添加ComboItem时也有用 /// </summary> /// <param name="info"></param> /// <returns></returns> public virtual List <string> CheckComboItemIsPass(ComboInfo info) { List <string> errList = new List <string>(); if (info.Items.Count > 1 && info.Items.FindAll(f => f.IsMasterItemB.Value).Count > 1) { //errList.Add("一个组合中必须有且只能有1个主商品!"); errList.Add(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_OnlyOneProductInCombo")); return(errList); } var grouplist = from p in info.Items group p by p.ProductSysNo into g select new { g.Key, num = g.Count() }; var maxcount = (from p in grouplist select p.num).Max(); if (maxcount > 1) { // errList.Add("捆绑商品中存在重复的商品!"); errList.Add(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_HasSameProductInCombo")); return(errList); } decimal price = 0m; //每个商品的价格check foreach (ComboItem item in info.Items) { ProductInfo product = ExternalDomainBroker.GetProductInfo(item.ProductSysNo.Value); if (item.Discount > 0) { //errList.Add(string.Format("商品{0}折扣只能为小于等于0的整数!", product.ProductID)); errList.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_DisCountMustIntLessZero"), product.ProductID)); } if (!item.Quantity.HasValue || item.Quantity.Value <= 0) { //errList.Add(string.Format("商品{0}数量必须为大于0的整数!", product.ProductID)); errList.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_QuntityMustIntAndThanZero"), product.ProductID)); } item.MerchantName = product.Merchant != null ? product.Merchant.MerchantName : ""; item.MerchantSysNo = product.Merchant != null ? product.Merchant.MerchantID : null; //确认用折扣后价格比较,折后价不能小于成本,会员价,批发价,限时抢购当前价 decimal discountPrice = Math.Abs(item.Discount.Value); if (discountPrice > item.ProductCurrentPrice && item.ProductCurrentPrice > 0) { //errList.Add(string.Format("商品{0}捆绑销售折扣小于成本价!", product.ProductID)); //errList.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_ComboPriceLessThanCost"), product.ProductID)); //errList.Add(string.Format("捆绑销售折扣大于当前价(商品: {0}------当前价:{1}) ", product.ProductID, product.ProductPriceInfo.CurrentPrice)); errList.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_DiscountMoreThanCurrentPrice"), product.ProductID, product.ProductPriceInfo.CurrentPrice)); } if (product.ProductPriceInfo.ProductWholeSalePriceInfo != null && product.ProductPriceInfo.ProductWholeSalePriceInfo.Count() > 0) { ProductWholeSalePriceInfo P1 = product.ProductPriceInfo.ProductWholeSalePriceInfo.FirstOrDefault(f => f.Level == WholeSaleLevelType.L1); if (P1 != null && P1.Price < discountPrice) { //errList.Add(string.Format("商品{0}捆绑销售折扣小于团购价1!", product.ProductID)); errList.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_ComboPriceLessWholeSalePrice1") , product.ProductID , discountPrice , P1.Price)); } ProductWholeSalePriceInfo P2 = product.ProductPriceInfo.ProductWholeSalePriceInfo.FirstOrDefault(f => f.Level == WholeSaleLevelType.L2); if (P2 != null && P2.Price < discountPrice) { //errList.Add(string.Format("商品{0}捆绑销售折扣小于团购价2!", product.ProductID)); errList.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_ComboPriceLessWholeSalePrice2") , product.ProductID , discountPrice , P2.Price)); } ProductWholeSalePriceInfo P3 = product.ProductPriceInfo.ProductWholeSalePriceInfo.FirstOrDefault(f => f.Level == WholeSaleLevelType.L3); if (P3 != null && P3.Price < discountPrice) { //errList.Add(string.Format("商品{0}捆绑销售折扣小于团购价3!", product.ProductID)); errList.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_ComboPriceLessWholeSalePrice3") , product.ProductID , discountPrice , P3.Price)); } } List <CountdownInfo> countDownList = ObjectFactory <CountdownProcessor> .Instance.GetCountDownByProductSysNo(item.ProductSysNo.Value); if (countDownList != null && countDownList.Count > 0) { // || f.Status == CountdownStatus.Ready CountdownInfo countdown = countDownList.Find(f => f.Status == CountdownStatus.Running); if (countdown != null) { if (countdown.CountDownCurrentPrice.HasValue && countdown.CountDownCurrentPrice.Value < discountPrice) { //errList.Add(string.Format("商品{0}捆绑销售折扣小于就绪或运行中的限时抢购的最低价!", product.ProductID)); errList.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_ComboPriceLessThanRunning"), product.ProductID)); } } } if (product.ProductPriceInfo.ProductRankPrice != null && product.ProductPriceInfo.ProductRankPrice.Count > 0) { decimal?rankPrice = (from p in product.ProductPriceInfo.ProductRankPrice where p.Status == ProductRankPriceStatus.Active select p.RankPrice).Min(); if (rankPrice != null && rankPrice < discountPrice) { // errList.Add(string.Format("商品{0}捆绑销售折扣小于会员价!", product.ProductID)); errList.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_ComboPriceLessThanVIP"), product.ProductID)); } } } if (!CheckItemMerchantIsSame(info)) { //errList.Add("捆绑商品中存在供应商不同!"); errList.Add(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_DifferentSupplierInCombo")); return(errList); } return(errList); }
public virtual bool EditProductWholeSalePrice(ProductWholeSalePriceInfo entity) { return(MyDAL.EditProductWholeSalePrice(entity)); }