コード例 #1
0
        /// <summary>
        /// 更新配置单
        /// </summary>
        /// <param name="msg"></param>
        public void UpdateComputerConfigMaster(ComputerConfigMaster msg)
        {
            ValidateCommon(msg);
            using (TransactionScope scope = new TransactionScope())
            {
                _configDA.UpdateComputerConfigMaster(msg);
                _configDA.DeleteComputerConfigInfo(msg.SysNo.Value);
                foreach (var configItem in msg.ConfigItemList)
                {
                    configItem.ComputerConfigSysNo = msg.SysNo.Value;
                    _configDA.CreateComputerConfigInfo(configItem);
                }
                //操作Combo
                InteractWithCombo(msg);

                ExternalDomainBroker.CreateOperationLog(
                    String.Format("{0}{1}SysNo:{2}| 配置单名称:{3}| 配置单类型:{4} |配置单说明:{5}|所属渠道:{6}|优先级:{7}",
                                  DateTime.Now.ToString(), "编辑配置单"
                                  , msg.SysNo, msg.ComputerConfigName, msg.ComputerConfigTypeSysNo
                                  , msg.Note, msg.WebChannel.ChannelID, msg.Priority)
                    , BizEntity.Common.BizLogType.ComputerConfig_Update
                    , msg.SysNo.Value, msg.CompanyCode);
                scope.Complete();
            }
        }
コード例 #2
0
        private void InteractWithCombo(ComputerConfigMaster msg)
        {
            ComputerConfigMaster oldEntity = _configDA.LoadMaster(msg.SysNo.Value);

            //1.只有在配置单状态变为运行或作废状态时才处理和Combo的交互
            //2.用户配置单不处理Combo
            if ((msg.Status != ComputerConfigStatus.Running && msg.Status != ComputerConfigStatus.Void) ||
                oldEntity.CustomerSysNo > 0)
            {
                return;
            }
            ComboStatus comboTargetStatus = ComboStatus.Deactive;

            if (msg.Status == ComputerConfigStatus.Running)
            {
                comboTargetStatus = ComboStatus.Active;
            }
            var comboBizProcessor = ObjectFactory <ComboProcessor> .Instance;
            var comboSysNo        = _configDA.GetComboSysNo(msg.SysNo.Value);

            if (comboSysNo > 0)
            {
                //Combo已存在,更新Combo状态
                comboBizProcessor.UpdateStatus(comboSysNo, comboTargetStatus);
            }
            else if (msg.Status != ComputerConfigStatus.Void)//作废时候同步状态不新增
            {
                //创建Combo
                ComboInfo comboInfo = new ComboInfo();
                comboInfo.CompanyCode    = msg.CompanyCode;
                comboInfo.WebChannel     = msg.WebChannel;
                comboInfo.IsShowName     = false;
                comboInfo.Name           = new LanguageContent(msg.ComputerConfigName.Length > 12 ? msg.ComputerConfigName.Substring(0, 12) : msg.ComputerConfigName);
                comboInfo.ReferenceSysNo = msg.SysNo;
                comboInfo.ReferenceType  = 2;
                comboInfo.SaleRuleType   = ComboType.Common;
                comboInfo.Status         = ComboStatus.Active;
                comboInfo.Priority       = msg.Priority;
                comboInfo.Items          = new List <ComboItem>();
                foreach (var c in msg.ConfigItemList)
                {
                    if (c.ProductSysNo > 0) //bug 95303 一个配置单有很多配件 不是每一个配件都必选
                    {
                        ComboItem item = new ComboItem();
                        item.ProductSysNo    = c.ProductSysNo;
                        item.Quantity        = c.ProductQty;
                        item.ProductUnitCost = c.UnitCost;
                        item.ProductID       = c.ProductID;
                        item.ProductName     = c.ProductName;
                        item.Discount        = c.Discount;
                        item.IsMasterItemB   = msg.ComputerConfigName == "CPU";
                        comboInfo.Items.Add(item);
                    }
                }
                comboBizProcessor.CreateCombo(comboInfo);
            }
        }
コード例 #3
0
        public void UpdateComputerConfigMaster(ComputerConfigMaster entity)
        {
            DataCommand command = DataCommandManager.GetDataCommand("UpdateComputerConfigMaster");

            command.SetParameterValue("@SysNo", entity.SysNo);
            command.SetParameterValue("@ComputerConfigName", entity.ComputerConfigName);
            command.SetParameterValue("@ComputerConfigType", entity.ComputerConfigTypeSysNo);
            command.SetParameterValue("@Note", entity.Note);
            command.SetParameterValue("@Priority", entity.Priority);
            command.SetParameterValue("@Status", entity.Status);
            command.SetParameterValue("@UniqueValidation", entity.UniqueValidation);
            command.SetParameterValueAsCurrentUserAcct("@EditUser");

            command.ExecuteNonQuery();
        }
コード例 #4
0
        public void CreateComputerConfigMaster(ComputerConfigMaster entity)
        {
            DataCommand command = DataCommandManager.GetDataCommand("CreateComputerConfigMaster");

            command.SetParameterValue("@ComputerConfigName", entity.ComputerConfigName);
            command.SetParameterValue("@ComputerConfigType", entity.ComputerConfigTypeSysNo);
            command.SetParameterValue("@Note", entity.Note);
            command.SetParameterValue("@Priority", entity.Priority);
            command.SetParameterValue("@Status", entity.Status);
            command.SetParameterValue("@CustomerSysno", entity.CustomerSysNo);
            command.SetParameterValue("@UniqueValidation", entity.UniqueValidation);
            command.SetParameterValueAsCurrentUserAcct("@InUser");
            command.SetParameterValue("@CompanyCode", entity.CompanyCode);

            command.ExecuteNonQuery();
            entity.SysNo = (int)command.GetParameterValue("@SysNo");
        }
コード例 #5
0
        //通过必填部件验证是否存在相同的配置单
        private void ValidateMustParts(ComputerConfigMaster entity)
        {
            if (entity.ConfigItemList == null || entity.ConfigItemList.Count < 1)
            {
                throw new BizException("此配置单商品配置信息有误,请验证。");
            }

            List <int> mustProductSysNoList = new List <int>();
            var        _parts = _configDA.GetAllComputerParts().Where(p => p.IsMust == YNStatus.Yes);

            foreach (var p in _parts)
            {
                if (entity.ConfigItemList.Where(i => i.ComputerPartSysNo == p.SysNo).Count() < 1)
                {
                    throw new BizException(string.Format("配置项”{0}“为必填,请先选择对应类型商品。", p.ComputerPartName));
                }
            }

            foreach (ComputerConfigItem configItem in entity.ConfigItemList)
            {
                if (configItem.IsMust == YNStatus.Yes)
                {
                    if (configItem.ProductSysNo == null || configItem.ProductSysNo.Value <= 0)
                    {
                        throw new BizException(string.Format("{0}为必选,请选择有效商品!", configItem.ComputerPartName));
                    }
                    mustProductSysNoList.Add(configItem.ProductSysNo.Value);
                }
            }
            if (mustProductSysNoList.Count == 0)
            {
                throw new BizException("配置单必选商品信息列表不能为空!");
            }
            //通过必填部件验证是否存在相同的配置单
            mustProductSysNoList.Sort();
            entity.UniqueValidation = mustProductSysNoList.Join("-");
            int uCount = _configDA.CountUniqueValidation(entity.SysNo.Value, entity.UniqueValidation, entity.CompanyCode, entity.WebChannel.ChannelID);

            if (uCount > 0)
            {
                throw new BizException("已存在相同配置单,请选择其他必选商品!");
            }
        }
コード例 #6
0
 /// <summary>
 /// 创建配置单
 /// </summary>
 /// <param name="msg"></param>
 public void CreateComputerConfigMaster(ComputerConfigMaster msg)
 {
     ValidateCommon(msg);
     using (TransactionScope scope = new TransactionScope())
     {
         _configDA.CreateComputerConfigMaster(msg);
         foreach (var configItem in msg.ConfigItemList)
         {
             configItem.ComputerConfigSysNo = msg.SysNo.Value;
             _configDA.CreateComputerConfigInfo(configItem);
         }
         //操作Combo
         InteractWithCombo(msg);
         ExternalDomainBroker.CreateOperationLog(
             String.Format("{0}{1}SysNo:{2}",
                           DateTime.Now.ToString(), "新建配置单"
                           , msg.SysNo)
             , BizEntity.Common.BizLogType.ComputerConfig_Add
             , msg.SysNo.Value, msg.CompanyCode);
         scope.Complete();
     }
 }
コード例 #7
0
 /// <summary>
 /// 更新配置单
 /// </summary>
 /// <param name="msg"></param>
 public void UpdateComputerConfigMaster(ComputerConfigMaster msg)
 {
     _configProcessor.UpdateComputerConfigMaster(msg);
 }
コード例 #8
0
 /// <summary>
 /// 创建配置单
 /// </summary>
 /// <param name="msg"></param>
 public void CreateComputerConfigMaster(ComputerConfigMaster msg)
 {
     _configProcessor.CreateComputerConfigMaster(msg);
 }
コード例 #9
0
        private void ValidateCommon(ComputerConfigMaster entity)
        {
            entity.SysNo = entity.SysNo ?? 0;
            if (entity.ComputerConfigTypeSysNo <= 0)
            {
                throw new BizException("请选择配置单类型!");
            }
            if (string.IsNullOrEmpty(entity.ComputerConfigName))
            {
                throw new BizException("配置单名称不能为空!");
            }
            if (string.IsNullOrEmpty(entity.Note))
            {
                throw new BizException("配置单说明不能为空!");
            }
            if (entity.Priority < 0)
            {
                throw new BizException("配置单优先级必须>=0!");
            }
            if (entity.ConfigItemList == null || entity.ConfigItemList.Count == 0)
            {
                throw new BizException("配置单商品信息列表不能为空!");
            }

            int duplicateCount = _configDA.CountComputerConfigName(entity.SysNo.Value, entity.ComputerConfigName, entity.CompanyCode, entity.WebChannel.ChannelID);

            if (duplicateCount > 0)
            {
                throw new BizException("配置单名称已存在,请验证。");
            }

            decimal totalDiscountPrice = 0M;

            foreach (ComputerConfigItem configItem in entity.ConfigItemList)
            {
                var product = ExternalDomainBroker.GetProductInfo(configItem.ProductSysNo.Value);
                if (product == null)
                {
                    throw new BizException(string.Format("商品{0}不存在。", configItem.ProductSysNo));
                }

                if (configItem.ProductQty <= 0)
                {
                    throw new BizException("商品购买数量未填写或输入有误!");
                }

                if (configItem.Discount > 0)
                {
                    throw new BizException("商品折扣未填写或输入有误!");
                }

                if (configItem.OnlineQty <= 0 || configItem.ProductQty > configItem.OnlineQty)
                {
                    throw new BizException(configItem.ComputerPartName + "商品库存不足!");
                }

                totalDiscountPrice += ObjectFactory <IIMBizInteract> .Instance.GetProductMarginAmount(
                    configItem.CurrentPrice.Value + configItem.Discount, 0, configItem.UnitCost) * configItem.ProductQty;
            }

            if (totalDiscountPrice < 0)
            {
                if (entity.Status != ComputerConfigStatus.Pending)
                {
                    throw new BizException("配置单折扣价毛利率低于基准毛利率,请提交审核!");
                }
            }
            else if (entity.Status == ComputerConfigStatus.Pending)
            {
                throw new BizException("不需要审核,请直接保存!");
            }

            ValidateMustParts(entity);

            //如果通过所有Check, 且提交状态为初始‘O’,则直接运行‘A’
            if (entity.Status == ComputerConfigStatus.Origin)
            {
                entity.Status = ComputerConfigStatus.Running;
            }
        }
コード例 #10
0
 public void UpdateSaleRuleStatus(ComputerConfigMaster computerConfig)
 {
     throw new NotImplementedException();
 }
コード例 #11
0
 public void SetComputerConfigMasterStatus(ComputerConfigMaster computerConfig)
 {
     throw new NotImplementedException();
 }
コード例 #12
0
 public void UpdateComputerConfigMaster(ComputerConfigMaster msg)
 {
     _configAppService.UpdateComputerConfigMaster(msg);
 }
コード例 #13
0
 public void CreateComputerConfigMaster(ComputerConfigMaster msg)
 {
     _configAppService.CreateComputerConfigMaster(msg);
 }