Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
 public virtual bool EditProductWholeSalePrice(ProductWholeSalePriceInfo entity)
 {
     return(MyDAL.EditProductWholeSalePrice(entity));
 }