Example #1
0
        //设置产品的价格和+折扣<成本价格和  变为待审核状态
        //提供一个接口供商品价格管理模块来调用,传入商品ID或者sysno,
        //然后检查商品对应捆绑规则是否有低于成本价的情况,有的就将其变为待审核(status=1)!
        /// <summary>
        /// 检查条件:如果(1)Combo当前是有效状态(2)价格和+折扣和 小于 成本价格和 ,价格检查不通过
        ///
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public virtual bool CheckPriceIsPass(OptionalAccessoriesInfo entity)
        {
            bool result = true;

            decimal totalPrice    = 0.00m;
            decimal totalDiscount = 0.00m;
            decimal totalCost     = 0.00m;

            if (entity.Items != null && entity.Items.Count > 0)
            {
                foreach (OptionalAccessoriesItem item in entity.Items)
                {
                    ProductInfo product = ExternalDomainBroker.GetProductInfo(item.ProductSysNo.Value);
                    totalPrice    += Math.Round(product.ProductPriceInfo.CurrentPrice.Value * item.Quantity.Value, 2);
                    totalDiscount += Math.Round(item.Discount.Value * item.Quantity.Value, 2);
                    totalCost     += Math.Round(product.ProductPriceInfo.UnitCost * item.Quantity.Value, 2);
                }
                if (totalPrice + totalDiscount < totalCost)
                {
                    return(false);
                }
            }

            return(result);
        }
Example #2
0
        //private OptionalAccessoriesPromotionEngine _oaPromotionEngine = ObjectFactory<OptionalAccessoriesPromotionEngine>.Instance;

        #region 维护类行为
        /// <summary>
        /// 加载OptionalAccessories所有信息
        /// </summary>
        /// <param name="sysNo"></param>
        /// <returns></returns>
        public virtual OptionalAccessoriesInfo Load(int?sysNo)
        {
            OptionalAccessoriesInfo info = _da.Load(sysNo.Value);

            if (info == null)
            {
                //throw new BizException("随心配不存在!");
                throw new BizException(ResouceManager.GetMessageString("MKT.Promotion.Combo", "OptionalAccessories_NotExsistOptionalAccessories"));
            }

            #region 获取待审核规则的商品毛利Check信息,供页面显示
            if (info.Status == ComboStatus.WaitingAudit)
            {
                info.DisplayApproveMsg = new List <string>();
                foreach (var item in info.Items)
                {
                    if (CheckMarginIsPass(item))
                    {
                        //info.DisplayApproveMsg.Add(string.Format("{0} 商品折扣价毛利低于PMCC毛利标准", item.ProductID));
                        info.DisplayApproveMsg.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "OptionalAccessories_DiscountLowerPMCC"), item.ProductID));
                    }
                }
            }
            #endregion

            string userfullname = ObjectFactory <ICommonBizInteract> .Instance.GetUserFullName(ServiceContext.Current.UserSysNo.ToString(), true);

            info.InUser = userfullname;
            return(info);
        }
Example #3
0
        /// <summary>
        /// 更新保存时需要检查状态变化
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        protected virtual List <string> CheckValidateWhenChangeStatus(OptionalAccessoriesInfo entity)
        {
            List <string> errList = new List <string>();

            if (entity.TargetStatus.Value == ComboStatus.Active)
            {
                //if (!CheckPriceIsPass(entity))
                //{
                //    //errList.Add("差价大于成本(销售价格和 + 总折扣 < 成本价格和),请先提交审核!");
                //    errList.Add(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_ExamineFirstWhenPriceDiffrenceIsHigher"));
                //}

                foreach (OptionalAccessoriesItem item in entity.Items)
                {
                    item.OptionalAccessoriesSysNo = entity.SysNo;
                    if (CheckMarginIsPass(item))
                    {
                        // errList.Add(string.Format("商品{0}毛利率小于最低毛利率,请提交审核!", item.ProductID));
                        errList.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_ExamineFirstWhenRateOfMarginIsHigher"), item.ProductID));
                    }
                }

                if (entity.Items.Find(f => f.IsMasterItemB.HasValue && f.IsMasterItemB.Value) == null)
                {
                    //throw new BizException("套餐必须有一个主商品!");
                    throw new BizException(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_MustOneMainGoods"));
                }
            }
            return(errList);
        }
Example #4
0
        /// <summary>
        /// 调用Combo更新状态
        /// </summary>
        /// <param name="sysNo"></param>
        /// <param name="targetStatus"></param>
        public virtual void ApproveOptionalAccessories(int?sysNo, ComboStatus targetStatus)
        {
            //Check审核人与创建人不能相同
            if (sysNo == null)
            {
                //throw new BizException("更新失败,参数有误!");
                throw new BizException(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_ArgsError"));
            }
            OptionalAccessoriesInfo oldEntity = _da.Load(sysNo.Value);

            //if (oldEntity.Status == ComboStatus.WaitingAudit && oldEntity.CreateUserSysNo == ServiceContext.Current.UserSysNo)
            //{
            //    throw new BizException(string.Format("{0} 创建人与审核人不能相同", oldEntity.Name));
            //}

            TransactionScopeFactory.TransactionAction(() =>
            {
                ObjectFactory <ComboProcessor> .Instance.UpdateStatus(sysNo, targetStatus);
                //更新PromotionEngine配置中活动的状态
                //_oaPromotionEngine.UpdateActivityStatus(sysNo.Value, targetStatus);

                ExternalDomainBroker.CreateOperationLog(
                    String.Format("{0}{1}SysNo:{2}| 状态:{3}",
                                  DateTime.Now.ToString(), "审核状态", sysNo
                                  , targetStatus == ComboStatus.Active ? "有效"
                : targetStatus == ComboStatus.Deactive ? "无效" : "待审核")
                    , BizEntity.Common.BizLogType.OptionalAccessories_Approve
                    , sysNo.Value, "8601");//[Mark][Alan.X.Luo 硬编码]
            });
        }
Example #5
0
        /// <summary>
        /// 创建、更新,数据验证
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        protected virtual List <string> CheckBasicIsPass(OptionalAccessoriesInfo entity)
        {
            List <string> errList = new List <string>();
            StringBuilder builder = new StringBuilder();

            if (string.IsNullOrEmpty(entity.Name.Content))
            {
                //errList.Add("规则名不能为空!");
                errList.Add(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_RuleNameIsNotNull"));
            }
            if (entity.Name.Content.Trim().Length < 0 || entity.Name.Content.Trim().Length > 500)
            {
                // errList.Add("规则描述长度不能超过500个字符!");
                errList.Add(ResouceManager.GetMessageString("MKT.Promotion.Combo", "OptionalAccessories_LessCharLength"));
            }
            if (entity.Priority < 0 || entity.Priority > 9999)
            {
                //errList.Add("优先级只能在0-9999范围之内的整数!");
                errList.Add(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_MustInRange"));
            }

            if (entity.Items == null || entity.Items.Count < 2)
            {
                //errList.Add("请至少添加2个商品!");
                errList.Add(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_MoreThanTwoProduct"));
            }

            return(errList);
        }
        private OptionalAccessoriesVM EtoV(OptionalAccessoriesInfo entity)
        {
            OptionalAccessoriesVM viewmodel = entity.Convert <OptionalAccessoriesInfo, OptionalAccessoriesVM>((en, vm) =>
            {
                vm.Name = en.Name.Content;
                foreach (var item in vm.Items)
                {
                    entity.Items.ForEach(i =>
                    {
                        if (i.SysNo == item.SysNo)
                        {
                            //Format折扣
                            var dpdTmp    = i.Discount == null ? 0m : i.Discount.Value;
                            item.Discount = dpdTmp.ToString("0");
                            //Format折扣比例
                            dpdTmp = i.DiscountPercent == null ? 0m :
                                     (i.DiscountPercent.Value <= 1 ? i.DiscountPercent.Value * 100 : i.DiscountPercent.Value);
                            item.DiscountPercent = dpdTmp.ToString("0");
                        }
                    });
                }
            });

            return(viewmodel);
        }
        public void Load(int sysNo, EventHandler <RestClientEventArgs <OptionalAccessoriesVM> > callback)
        {
            string relativeUrl = string.Format("/MKTService/OptionalAccessories/{0}", sysNo);

            restClient.Query <OptionalAccessoriesInfo>(relativeUrl, (obj, args) =>
            {
                if (args.FaultsHandle())
                {
                    return;
                }
                //var vm = args.Result.Convert<OptionalAccessoriesInfo, OptionalAccessoriesVM>();
                //vm.Name = args.Result.Name.Content;
                //RestClientEventArgs<OptionalAccessoriesVM> e = new RestClientEventArgs<OptionalAccessoriesVM>(vm, this.viewPage);

                //callback(obj, e);

                OptionalAccessoriesInfo entity   = args.Result;
                OptionalAccessoriesVM _viewModel = null;
                if (entity == null)
                {
                    _viewModel = new OptionalAccessoriesVM();
                }
                else
                {
                    _viewModel = EtoV(entity);
                }

                callback(obj, new RestClientEventArgs <OptionalAccessoriesVM>(_viewModel, this.viewPage));
            });
        }
Example #8
0
        /// <summary>
        /// 加载OptionalAccessories所有信息
        /// </summary>
        /// <param name="sysNo"></param>
        /// <returns></returns>
        public virtual OptionalAccessoriesInfo Load(int sysNo)
        {
            OptionalAccessoriesInfo info = null;
            DataCommand             cmd  = DataCommandManager.GetDataCommand("LoadOptionalAccessoriesInfo");

            cmd.SetParameterValue("@SysNo", sysNo);
            DataSet   ds       = cmd.ExecuteDataSet();
            DataTable dtMaster = ds.Tables[0];
            DataTable dtItem   = ds.Tables[1];

            if (dtMaster == null || dtMaster.Rows.Count == 0)
            {
                return(null);
            }

            info = DataMapper.GetEntity <OptionalAccessoriesInfo>(dtMaster.Rows[0], (row, entity) =>
            {
                entity.Name         = new BizEntity.LanguageContent(row["SaleRuleName"].ToString().Trim());
                entity.TargetStatus = entity.Status;
                entity.IsShowName   = row["IsShow"].ToString().Trim().ToUpper() == "Y" ? true : false;
            });

            info.Items = DataMapper.GetEntityList <OptionalAccessoriesItem, List <OptionalAccessoriesItem> >(dtItem.Rows, (row, entity) =>
            {
                entity.IsMasterItemB = row["IsMasterItem"] == null ? false : (row["IsMasterItem"].ToString() == "1" ? true : false);
            });

            return(info);
        }
        /// <summary>
        /// 加载OptionalAccessories所有信息
        /// </summary>
        /// <param name="sysNo"></param>
        /// <returns></returns>
        public OptionalAccessoriesInfo Load(int?sysNo)
        {
            OptionalAccessoriesInfo info = _processor.Load(sysNo);

            if (info != null && info.Items != null && info.Items.Count > 0)
            {
                foreach (OptionalAccessoriesItem item in info.Items)
                {
                    ProductInfo product = ExternalDomainBroker.GetProductInfo(item.ProductSysNo.Value);

                    VendorBasicInfo vendor = new VendorBasicInfo();
                    if (product != null && product.Merchant != null)
                    {
                        vendor
                            = ExternalDomainBroker.GetVendorBasicInfoBySysNo(product.Merchant.SysNo.Value);
                    }

                    item.MerchantName = vendor != null && !string.IsNullOrEmpty(vendor.VendorID)
                        ? (vendor.VendorType == VendorType.IPP
                        ? ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_NeweggMerchant")
                        : product.Merchant.MerchantName)
                        : "";
                    item.MerchantSysNo       = product.Merchant != null ? product.Merchant.MerchantID : null;
                    item.ProductID           = product.ProductID;
                    item.ProductName         = product.ProductName;
                    item.ProductPoint        = product.ProductPriceInfo.Point;
                    item.ProductCurrentPrice = product.ProductPriceInfo.CurrentPrice;
                    item.ProductUnitCost     = product.ProductPriceInfo.UnitCost;
                }
            }
            return(info);
        }
Example #10
0
        /// <summary>
        /// 发送邮件通知PM Combo的因商品调价,状态已改
        /// </summary>
        /// <param name="combo"></param>
        protected virtual void SendMail(OptionalAccessoriesInfo oa)
        {
            UserInfo          user = ExternalDomainBroker.GetUserInfoBySysNo(oa.CreateUserSysNo.Value);
            KeyValueVariables keyValueVariables = new KeyValueVariables();

            keyValueVariables.Add("ComboSysNo", oa.SysNo.Value.ToString());
            keyValueVariables.Add("ComboName", oa.Name.Content);
            keyValueVariables.Add("PMUser", user.UserDisplayName);
            EmailHelper.SendEmailByTemplate(user.EmailAddress,
                                            "MKT_Combo_ChangeStatusForChangeProductPrice", keyValueVariables, true);
        }
Example #11
0
        public virtual void UpdateMaster(OptionalAccessoriesInfo info)
        {
            DataCommand cmd = DataCommandManager.GetDataCommand("UpdateCombo");

            cmd.SetParameterValue("@SysNo", info.SysNo);
            cmd.SetParameterValue("@SaleRuleName", info.Name.Content);
            cmd.SetParameterValue("@Status", info.TargetStatus);
            cmd.SetParameterValue("@IsShow", info.IsShowName.Value ? "Y" : "N");
            cmd.SetParameterValue("@Priority", info.Priority);
            cmd.SetParameterValue("@SaleRuleType", info.SaleRuleType);
            cmd.SetParameterValue("@Reason", "");//销售规则管理加了该字段,用的同一个sql文,所以默认该字段为null
            cmd.ExecuteNonQuery();
        }
        public void CheckOptionalAccessoriesItemIsPass(OptionalAccessoriesVM model, EventHandler <RestClientEventArgs <List <string> > > callback)
        {
            string relativeUrl          = "/MKTService/OptionalAccessories/CheckOptionalAccessoriesItemIsPass";
            OptionalAccessoriesInfo msg = model.ConvertVM <OptionalAccessoriesVM, OptionalAccessoriesInfo>();

            msg.CompanyCode = CPApplication.Current.CompanyCode;
            restClient.Create <List <string> >(relativeUrl, msg, (obj, args) =>
            {
                if (args.FaultsHandle())
                {
                    return;
                }
                callback(obj, args);
            });
        }
        public void Update(OptionalAccessoriesVM model, EventHandler <RestClientEventArgs <OptionalAccessoriesVM> > callback)
        {
            string relativeUrl          = "/MKTService/OptionalAccessories/Update";
            OptionalAccessoriesInfo msg = model.ConvertVM <OptionalAccessoriesVM, OptionalAccessoriesInfo>();

            msg.Name.Content = model.Name;
            restClient.Update <OptionalAccessoriesInfo>(relativeUrl, msg, (obj, args) =>
            {
                if (args.FaultsHandle())
                {
                    return;
                }
                var vm = args.Result.Convert <OptionalAccessoriesInfo, OptionalAccessoriesVM>();
                RestClientEventArgs <OptionalAccessoriesVM> e = new RestClientEventArgs <OptionalAccessoriesVM>(vm, this.viewPage);
                callback(obj, e);
            });
        }
        public void Create(OptionalAccessoriesVM model, EventHandler <RestClientEventArgs <int?> > callback)
        {
            string relativeUrl          = "/MKTService/OptionalAccessories/Create";
            OptionalAccessoriesInfo msg = model.ConvertVM <OptionalAccessoriesVM, OptionalAccessoriesInfo>();

            msg.Name.Content = model.Name;
            msg.CompanyCode  = CPApplication.Current.CompanyCode;
            restClient.Create <int?>(relativeUrl, msg, (obj, args) =>
            {
                if (args.FaultsHandle())
                {
                    return;
                }
                model.SysNo = args.Result;
                callback(obj, args);
            });
        }
Example #15
0
        /// <summary>
        /// 更新OptionalAccessories Master,包含:更新主信息,更新状态:
        /// 无效->有效,无效->待审核,有效->无效,有效->待审核,待审核->无效,待审核->有效
        /// 其中无效->有效需要Check RequiredSaleRule4UpdateValidate
        /// </summary>
        /// <param name="info"></param>
        public virtual void UpdateOptionalAccessories(OptionalAccessoriesInfo info)
        {
            List <string> errorList = CheckBasicIsPass(info);

            if (errorList.Count > 0)
            {
                throw new BizException(errorList.Join("\r\n"));
            }

            errorList = CheckOptionalAccessoriesItemIsPass(info, false);
            if (errorList.Count > 0)
            {
                throw new BizException(errorList.Join("\r\n"));
            }

            errorList = CheckValidateWhenChangeStatus(info);
            if (errorList.Count > 0)
            {
                throw new BizException(errorList.Join("\r\n"));
            }

            TransactionScopeFactory.TransactionAction(() =>
            {
                _da.UpdateMaster(info);
                _da.DeleteOptionalAccessoriesAllItem(info.SysNo.Value);
                foreach (OptionalAccessoriesItem item in info.Items)
                {
                    item.OptionalAccessoriesSysNo = info.SysNo;
                    _da.AddOptionalAccessoriesItem(item);
                }
                //将数据保存到PromotionEngine配置库中
                //_oaPromotionEngine.SaveActivity(info);

                ExternalDomainBroker.CreateOperationLog(
                    String.Format("{0}{1}SysNo:{2}| 规则描述:{3}| 优先级:{4} | 状态:{5}",
                                  DateTime.Now.ToString(), "更新随心配"
                                  , info.SysNo, info.Name, info.Priority
                                  , info.Status == ComboStatus.Active ? "有效"
               : info.Status == ComboStatus.Deactive ? "无效" : "待审核")
                    , BizEntity.Common.BizLogType.OptionalAccessories_Update
                    , info.SysNo.Value, info.CompanyCode);
            });

            ExternalDomainBroker.CreateOperationLog(BizLogType.OptionalAccessories_Update.ToEnumDesc(), BizLogType.OptionalAccessories_Update, info.SysNo.Value, info.CompanyCode);
        }
Example #16
0
        public virtual int CreateMaster(OptionalAccessoriesInfo info)
        {
            DataCommand cmd = DataCommandManager.GetDataCommand("CreateCombo");

            cmd.SetParameterValue("@SaleRuleName", info.Name.Content);
            cmd.SetParameterValue("@SaleRuleType", info.SaleRuleType);
            cmd.SetParameterValue("@CreateUserSysNo", ServiceContext.Current.UserSysNo);
            cmd.SetParameterValue("@Status", info.Status);
            cmd.SetParameterValue("@IsShow", info.IsShowName.Value ? "Y" : "N");
            cmd.SetParameterValue("@Priority", info.Priority);
            cmd.SetParameterValue("@CompanyCode", info.CompanyCode);
            cmd.SetParameterValue("@ReferenceSysNo", info.ReferenceSysNo ?? 0);
            cmd.SetParameterValue("@ReferenceType", info.ReferenceType ?? 3);
            cmd.SetParameterValue("@Reason", ""); //销售规则管理加了该字段,用的同一个sql文,所以默认该字段为null
            cmd.ExecuteNonQuery();
            info.SysNo = (int)cmd.GetParameterValue("@SysNo");
            return(info.SysNo.Value);
        }
Example #17
0
        /// <summary>
        /// 检查Combo中商品是否是同一个Merchant,主要用于批量创建
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        protected virtual bool CheckItemMerchantIsSame(OptionalAccessoriesInfo info)
        {
            bool result = true;

            if (info.Items != null && info.Items.Count > 0)
            {
                var grouplist = from p in info.Items
                                group p by p.MerchantSysNo into g
                                select new { g.Key, num = g.Count() };

                if (grouplist.Count() > 1)
                {
                    result = false;
                }
                else
                {
                    result = true;
                }
            }
            return(result);
        }
Example #18
0
        /// <summary>
        /// 创建OptionalAccessories
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public virtual int?CreateOptionalAccessories(OptionalAccessoriesInfo info)
        {
            List <string> errorList = CheckBasicIsPass(info);

            if (errorList.Count > 0)
            {
                throw new BizException(errorList.Join("\r\n"));
            }

            errorList = CheckOptionalAccessoriesItemIsPass(info, false);
            if (errorList.Count > 0)
            {
                throw new BizException(errorList.Join("\r\n"));
            }
            if (info.Status == null)
            {
                info.Status = ComboStatus.Deactive;
            }

            TransactionScopeFactory.TransactionAction(() =>
            {
                info.SysNo = _da.CreateMaster(info);
                foreach (OptionalAccessoriesItem item in info.Items)
                {
                    item.OptionalAccessoriesSysNo = info.SysNo;
                    _da.AddOptionalAccessoriesItem(item);
                }
                //将数据保存到PromotionEngine配置库中
                //_oaPromotionEngine.SaveActivity(info);
            });

            ExternalDomainBroker.CreateOperationLog(BizLogType.OptionalAccessories_Create.ToEnumDesc(), BizLogType.OptionalAccessories_Create, info.SysNo.Value, info.CompanyCode);


            return(info.SysNo);
        }
Example #19
0
 public int?CreateOptionalAccessories(OptionalAccessoriesInfo info)
 {
     return(ObjectFactory <OptionalAccessoriesAppService> .Instance.CreateOptionalAccessories(info));
 }
Example #20
0
 public void UpdateOptionalAccessories(OptionalAccessoriesInfo info)
 {
     ObjectFactory <OptionalAccessoriesAppService> .Instance.UpdateOptionalAccessories(info);
 }
Example #21
0
 public List <string> CheckOptionalAccessoriesItemIsPass(OptionalAccessoriesInfo info)
 {
     return(ObjectFactory <OptionalAccessoriesAppService> .Instance.CheckOptionalAccessoriesItemIsPass(info));
 }
Example #22
0
        /// <summary>
        /// 对OptionalAccessories Item进行检查,本方法对添加OptionalAccessoriesItem时也有用
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public virtual List <string> CheckOptionalAccessoriesItemIsPass(OptionalAccessoriesInfo info, bool isCreate)
        {
            List <string> errList = new List <string>();

            if (!isCreate && info.Items.Count > 1 && info.Items.FindAll(f => f.IsMasterItemB.Value).Count < 1)
            {
                //errList.Add("一个随心配中必须有至少1个主商品!");
                errList.Add(ResouceManager.GetMessageString("MKT.Promotion.Combo", "OptionalAccessories_LeastOneMasterProduct"));
                return(errList);
            }
            if (!isCreate && info.Items.Count > 1 && info.Items.FindAll(f => !f.IsMasterItemB.Value).Count < 1)
            {
                errList.Add(ResouceManager.GetMessageString("MKT.Promotion.Combo", "OptionalAccessories_LeastOneSubProduct"));
                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);
            }

            //每个商品的价格check
            foreach (OptionalAccessoriesItem 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));
                }

                if (item.IsMasterItemB.Value && !isCreate)
                {
                    List <OptionalAccessoriesItem> itemListTmp = _da.GetOptionalAccessoriesItemListByProductSysNo(item.ProductSysNo.Value, item.SysNo == null ? 0 : item.SysNo.Value)
                                                                 .Where(o => o.IsMasterItemB.Value).ToList();
                    itemListTmp.RemoveAll(obj => obj.OptionalAccessoriesSysNo == info.SysNo);
                    if (itemListTmp.Count() > 0)
                    {
                        //商品已存在于其他随心配规则的主商品中
                        errList.Add(string.Format(ResouceManager.GetMessageString("MKT.Promotion.Combo", "OptionalAccessories_HaveSameMasterProduct"), item.ProductID));
                    }
                }

                item.MerchantName  = product.Merchant != null ? product.Merchant.MerchantName : "";
                item.MerchantSysNo = product.Merchant != null ? product.Merchant.MerchantID : null;


                #region 折扣后价格比较,会员价,批发价,限时抢购当前价

                //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));
                //    }
                //    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));
                //    }
                //    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));
                //    }
                //}

                //List<CountdownInfo> countDownList = ObjectFactory<CountdownProcessor>.Instance.GetCountDownByProductSysNo(item.ProductSysNo.Value);
                //if (countDownList != null && countDownList.Count > 0)
                //{
                //    CountdownInfo countdown = countDownList.Find(f => f.Status == CountdownStatus.Running || f.Status == CountdownStatus.Ready);
                //    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
                //                         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));
                //    }
                //}
                #endregion
            }

            //if (!CheckItemMerchantIsSame(info))
            //{
            //    //errList.Add("捆绑商品中存在供应商不同!");
            //    errList.Add(ResouceManager.GetMessageString("MKT.Promotion.Combo", "Combo_DifferentSupplierInCombo"));
            //    return errList;
            //}

            return(errList);
        }
 /// <summary>
 /// 对OptionalAccessories Item进行检查,本方法对添加时也有用
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public List <string> CheckOptionalAccessoriesItemIsPass(OptionalAccessoriesInfo info)
 {
     return(_processor.CheckOptionalAccessoriesItemIsPass(info, true));
 }
 /// <summary>
 /// 更新Combo Master,包含:更新主信息,更新状态:
 /// 无效->有效,无效->待审核,有效->无效,有效->待审核,待审核->无效,待审核->有效
 /// 其中无效->有效需要Check RequiredSaleRule4UpdateValidate
 /// </summary>
 /// <param name="info"></param>
 public void UpdateOptionalAccessories(OptionalAccessoriesInfo info)
 {
     _processor.UpdateOptionalAccessories(info);
 }
 /// <summary>
 /// 创建OptionalAccessories Master
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public int?CreateOptionalAccessories(OptionalAccessoriesInfo info)
 {
     return(_processor.CreateOptionalAccessories(info));
 }