/// <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(); } }
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); } }
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(); }
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"); }
//通过必填部件验证是否存在相同的配置单 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("已存在相同配置单,请选择其他必选商品!"); } }
/// <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(); } }
/// <summary> /// 更新配置单 /// </summary> /// <param name="msg"></param> public void UpdateComputerConfigMaster(ComputerConfigMaster msg) { _configProcessor.UpdateComputerConfigMaster(msg); }
/// <summary> /// 创建配置单 /// </summary> /// <param name="msg"></param> public void CreateComputerConfigMaster(ComputerConfigMaster msg) { _configProcessor.CreateComputerConfigMaster(msg); }
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; } }
public void UpdateSaleRuleStatus(ComputerConfigMaster computerConfig) { throw new NotImplementedException(); }
public void SetComputerConfigMasterStatus(ComputerConfigMaster computerConfig) { throw new NotImplementedException(); }
public void UpdateComputerConfigMaster(ComputerConfigMaster msg) { _configAppService.UpdateComputerConfigMaster(msg); }
public void CreateComputerConfigMaster(ComputerConfigMaster msg) { _configAppService.CreateComputerConfigMaster(msg); }