/// <summary> /// 设置审核人和审核时间 /// </summary> /// <param name="productPriceRequest"></param> private void SetAuditUser(ProductPriceRequestInfo productPriceRequest) { if (productPriceRequest.AuditType == ProductPriceRequestAuditType.Audit) { //有初审 productPriceRequest.AuditTime = DateTime.Now; productPriceRequest.AuditUser = new UserInfo { SysNo = ServiceContext.Current.UserSysNo }; //有终审 productPriceRequest.FinalAuditTime = DateTime.Now; productPriceRequest.FinalAuditUser = new UserInfo { SysNo = ServiceContext.Current.UserSysNo }; } else if (productPriceRequest.RequestStatus == ProductPriceRequestStatus.Origin) { productPriceRequest.AuditTime = DateTime.Now; productPriceRequest.AuditUser = new UserInfo { SysNo = ServiceContext.Current.UserSysNo }; } else if (productPriceRequest.RequestStatus == ProductPriceRequestStatus.NeedSeniorApprove) { productPriceRequest.FinalAuditTime = DateTime.Now; productPriceRequest.FinalAuditUser = new UserInfo { SysNo = ServiceContext.Current.UserSysNo }; } }
/// <summary> /// 检查商品价格变动单据编号 /// </summary> /// <param name="productPriceRequest"></param> public static void CheckProductPriceReques(ProductPriceRequestInfo productPriceRequest) { if (productPriceRequest == null) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPriceRequest", "ProductPriceRequestIsNull")); } }
public void CancelAuditProductPriceRequest(ProductInfo productInfo) { var product = _productDA.GetProductInfoBySysNo(productInfo.SysNo); if (product.ProductPriceRequest.SysNo.HasValue && product.ProductPriceRequest.RequestStatus == ProductPriceRequestStatus.Origin) { using (TransactionScope scope = new TransactionScope()) { ProductPriceRequestInfo productPriceRequestInfo = _productPriceRequestBP.GetProductPriceRequestInfoBySysNo(product.ProductPriceRequest.SysNo.Value); _productPriceRequestBP.CancelAuditProductPriceRequest(productPriceRequestInfo, ProductPriceRequestStatus.Canceled); //申请取消之后发送消息 EventPublisher.Publish <ECCentral.Service.EventMessage.IM.CanceledUpdateProductPriceRequestMessage>(new ECCentral.Service.EventMessage.IM.CanceledUpdateProductPriceRequestMessage() { CancelUserSysNo = ServiceContext.Current.UserSysNo, ProductSysNo = product.SysNo, RequestSysNo = product.ProductPriceRequest.SysNo.Value }); scope.Complete(); } } else { throw new BizException(ResouceManager.GetMessageString("IM.ProductPrice", "CancelAuditProductPriceRequestResult")); } }
/// <summary> /// 检查审核人 /// </summary> /// <param name="productPriceRequest"></param> /// <param name="productID"></param> public static void CheckProductPriceRequestCreateSysNo(ProductPriceRequestInfo productPriceRequest, string productID) { CheckProductPriceReques(productPriceRequest); if (productPriceRequest.CreateUser == null || productPriceRequest.CreateUser.SysNo == null || productPriceRequest.CreateUser.SysNo <= 0) { var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest", "ExistProductPriceRequestForCreateSysNo"); throw new BizException(String.Format(errorStr, productID)); } //if (productPriceRequest.CreateUser.SysNo == ServiceContext.Current.UserSysNo) //{ // var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest", // "ProductPriceRequestForCreateSysNoIsInvalid"); // throw new BizException(String.Format(errorStr, productID)); //} //if (productPriceRequest.RequestStatus == ProductPriceRequestStatus.NeedSeniorApprove) //{ // if (productPriceRequest.AuditUser.SysNo == ServiceContext.Current.UserSysNo) // { // var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest", // "ProductPriceRequestForCreateSysNoIsInvalid"); // throw new BizException(String.Format(errorStr, productID)); // } //} }
/// <summary> /// 得到随心配的商品在团购里的毛利率 /// </summary> /// <param name="info"></param> /// <returns></returns> public string GetProductPromotionMarginByGroupBuying(GroupBuyingInfo info) { ProductInfo productInfo = ExternalDomainBroker.GetProductInfo(info.ProductSysNo.Value); ProductPriceRequestInfo priceMsg = new ProductPriceRequestInfo() { CurrentPrice = info.PriceRankList.OrderBy(s => s.DiscountValue).First().DiscountValue,//最低阶梯价格 UnitCost = productInfo.ProductPriceInfo.UnitCost, Point = info.GroupBuyingPoint, Category = productInfo.ProductBasicInfo.ProductCategoryInfo }; string returnMsgStr = string.Empty; StringBuilder checkMsg = new StringBuilder(); List <ProductPromotionMarginInfo> marginList = ObjectFactory <IIMBizInteract> .Instance.GetProductPromotionMargin( priceMsg, info.ProductSysNo.Value, "", 0m, ref returnMsgStr); marginList = marginList.Where(ppm => ppm.PromotionType == PromotionType.OptionalAccessories).ToList(); foreach (var mgInfo in marginList) { //checkMsg.Append(string.Format("此商品的最低阶梯价格在在随心配{0}中毛利率{1}%\r", mgInfo.ReferenceSysNo // , (Decimal.Round(mgInfo.Margin, 4) * 100m).ToString("0.00"))); checkMsg.Append(string.Format(ResouceManager.GetMessageString("MKT.Promotion.GroupBuying", "GroupBuying_LowestGrossMagin"), mgInfo.ReferenceSysNo , (Decimal.Round(mgInfo.Margin, 4) * 100m).ToString("0.00"))); } return(checkMsg.ToString()); }
/// <summary> /// 检查商品价格变动单据审核单据 /// </summary> /// <param name="productPriceRequest"></param> /// <param name="status"></param> /// <param name="productID"></param> /// <returns></returns> public static void CheckModifyStatusPermission(ProductPriceRequestInfo productPriceRequest, ProductPriceRequestStatus?status, ref string productID) { CheckProductPriceReques(productPriceRequest); if (productPriceRequest.AuditType == null) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPriceRequest", "ProductPriceRequestTypeIsNull")); } if (productPriceRequest.AuditType == ProductPriceRequestAuditType.Audit || (productPriceRequest.AuditType == ProductPriceRequestAuditType.SeniorAudit && productPriceRequest.RequestStatus == ProductPriceRequestStatus.Origin)) { if (!productPriceRequest.HasPrimaryAuditPricePermission) { var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest", "TLAuditPermission"); throw new BizException(String.Format(errorStr, productID)); } } if (productPriceRequest.AuditType == ProductPriceRequestAuditType.SeniorAudit && productPriceRequest.RequestStatus == ProductPriceRequestStatus.NeedSeniorApprove) { if (!productPriceRequest.HasAdvancedAuditPricePermission) { var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest", "PMDAuditPermission"); throw new BizException(String.Format(errorStr, productID)); } } }
public void InsertProductPriceRequest(int productSysNo, ProductPriceRequestInfo productPriceRequestInfo) { DataCommand cmd = DataCommandManager.GetDataCommand("InsertProductPriceRequest"); cmd.SetParameterValue("@ProductSysNo", productSysNo); cmd.SetParameterValue("@BasicPrice", productPriceRequestInfo.BasicPrice); cmd.SetParameterValue("@CurrentPrice", productPriceRequestInfo.CurrentPrice); cmd.SetParameterValue("@CashRebate", productPriceRequestInfo.CashRebate); cmd.SetParameterValue("@Point", productPriceRequestInfo.Point); cmd.SetParameterValue("@Status", ProductPriceRequestStatus.Origin); cmd.SetParameterValue("@Type", productPriceRequestInfo.AuditType); cmd.SetParameterValue("@IsWholeSale", productPriceRequestInfo.ProductWholeSalePriceInfo.Any() ? 1 : 0); for (int i = 0; i < Enum.GetValues(typeof(WholeSaleLevelType)).Cast <WholeSaleLevelType>().Count(); i++) { if (productPriceRequestInfo.ProductWholeSalePriceInfo.Count > i) { cmd.SetParameterValue("@Q" + (i + 1), productPriceRequestInfo.ProductWholeSalePriceInfo[i].Qty); cmd.SetParameterValue("@P" + (i + 1), productPriceRequestInfo.ProductWholeSalePriceInfo[i].Price); } else { cmd.SetParameterValue("@Q" + (i + 1), null); cmd.SetParameterValue("@P" + (i + 1), null); } } cmd.SetParameterValue("@IsUseAlipayVipPrice", productPriceRequestInfo.IsUseAlipayVipPrice); cmd.SetParameterValue("@AlipayVipPrice", productPriceRequestInfo.AlipayVipPrice); cmd.SetParameterValue("@PMMemo", productPriceRequestInfo.PMMemo); cmd.SetParameterValue("@CreateUserSysNo", productPriceRequestInfo.CreateUser.SysNo); cmd.ExecuteNonQuery(); productPriceRequestInfo.SysNo = (int)cmd.GetParameterValue("@SysNo"); InsertRequestRankPrice(productSysNo, productPriceRequestInfo); }
private void DoubleCheckProductPrice(ProductPriceRequestInfo requestInfo) { if (requestInfo == null) { throw new ArgumentNullException("requestInfo"); } if (requestInfo.BasicPrice < IMConst.ProductPriceZero) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPrice", "ProductBasicPriceIsNull")); } if (requestInfo.CashRebate < IMConst.ProductPriceZero) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPrice", "ProductCashRebateIsNull")); } if (requestInfo.Point < IMConst.ProductPriceZero) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPrice", "ProducPointIsNull")); } //if (requestInfo.CurrentPrice.HasValue && (requestInfo.CurrentPrice < 0m || requestInfo.CurrentPrice > Math.Floor(requestInfo.CurrentPrice.Value))) //{ // throw new BizException(ResouceManager.GetMessageString("IM.ProductPrice", "ProducCurrentPriceIsNull")); //} if (!(requestInfo.CurrentPrice.HasValue && requestInfo.CurrentPrice.Value > IMConst.ProductPriceZero)) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPrice", "ProducCurrentPriceLargerThranZero")); } }
/// <summary> /// 批量审核通过 /// </summary> /// <param name="entity"></param> /// <param name="callback"></param> public virtual void AuditProductPriceRequest(ProductPriceRequestInfo entity, EventHandler <RestClientEventArgs <dynamic> > callback) { var source = new List <ProductPriceRequestInfo> { entity }; _restClient.Update(UPdateRelativeUrl, source, callback); }
private void CalcProductPrice(ProductPriceRequestInfo requestInfo) { if (requestInfo == null) { return; } if (requestInfo.SysNo == null) { return; } CalcMargin(requestInfo); CalcMarginAmount(requestInfo); var productSysNo = GetProductSysNoByAuditProductPriceSysNo(requestInfo.SysNo.Value); var source = ExternalDomainBroker.GetProductPromotionDiscountInfoList(productSysNo); requestInfo.NewMargin = requestInfo.Margin; requestInfo.OldPrice.NewMargin = requestInfo.OldPrice.Margin; requestInfo.NewMarginAmount = requestInfo.MarginAmount; requestInfo.OldPrice.NewMarginAmount = requestInfo.OldPrice.NewMarginAmount; if (source == null || source.Count == 0) { return; } var targetSource = source.Where(e => PromotionTypeList.Contains(e.PromotionType)).ToList(); if (targetSource.Count == 0) { return; } var targetSources = (from p in targetSource group p by p.PromotionType into g let maxPrice = g.Max(p => p.Discount) select g.Where(p => p.Discount == maxPrice).First()).ToList(); var amount = targetSources.Sum(p => p.Discount); amount = requestInfo.CurrentPrice ?? 0 - amount; var oldAmount = requestInfo.OldPrice.CurrentPrice ?? 0 - amount; var margin = ObjectFactory <ProductPriceProcessor> .Instance.GetMargin(amount, requestInfo.Point ?? 0, requestInfo.UnitCost); var oldMargin = ObjectFactory <ProductPriceProcessor> .Instance.GetMargin(oldAmount, requestInfo.OldPrice.Point ?? 0, requestInfo.OldPrice.UnitCost); var marginAmount = ObjectFactory <ProductPriceProcessor> .Instance.GetMarginAmount(amount, requestInfo.Point ?? 0, requestInfo.UnitCost); var oldMarginAmount = ObjectFactory <ProductPriceProcessor> .Instance.GetMarginAmount(oldAmount, requestInfo.OldPrice.Point ?? 0, requestInfo.OldPrice.UnitCost); margin = Math.Round(margin, 4); oldMargin = Math.Round(oldMargin, 4); marginAmount = Math.Round(marginAmount, 4); oldMarginAmount = Math.Round(oldMarginAmount, 4); requestInfo.NewMargin = margin; requestInfo.OldPrice.NewMargin = oldMargin; requestInfo.MarginAmount = marginAmount; requestInfo.OldPrice.MarginAmount = oldMarginAmount; }
public List <ProductPromotionMarginInfo> GetProductPromotionMargin(ProductPriceRequestInfo productPriceReqInfo, int productSysNo, string priceName, decimal discount, ref string productMarginReturnMsg) { //Check各类型(PromotionType)折扣的最大值 //若不符合毛利率规则,则返回折扣率对象 return(ObjectFactory <ProductPriceProcessor> .Instance.CheckMargin( productPriceReqInfo, productSysNo, priceName, discount, ref productMarginReturnMsg)); }
public void UpdateProductPriceRequestStatus(int productPriceRequestSysNo, ProductPriceRequestStatus status) { var productPriceRequest = new ProductPriceRequestInfo { RequestStatus = status, SysNo = productPriceRequestSysNo }; UpdateProductPriceRequestStatus(productPriceRequest); }
private void Save(ProductPriceRequestInfo entity) { _facade = new ProductPriceRequestFacade(); _facade.AuditProductPriceRequest(entity, (obj, args) => { if (args.FaultsHandle()) { return; } CPApplication.Current.CurrentPage.Context.Window.Alert("操作成功"); CloseDialog(DialogResultType.OK); }); }
private void InsertRequestRankPrice(int productSysNo, ProductPriceRequestInfo productPriceRequestInfo) { foreach (var rankPrice in productPriceRequestInfo.ProductRankPrice.Where(rankPrice => rankPrice.RankPrice.HasValue && rankPrice.Status.HasValue)) { DataCommand cmd = DataCommandManager.GetDataCommand("InsertRequestRankPrice"); cmd.SetParameterValue("@PriceRequestSysNo", productPriceRequestInfo.SysNo); cmd.SetParameterValue("@ProductSysNo", productSysNo); cmd.SetParameterValue("@CustomerRank", rankPrice.Rank); cmd.SetParameterValue("@RankPrice", rankPrice.RankPrice); cmd.SetParameterValue("@Status", rankPrice.Status); cmd.SetParameterValue("@Type", productPriceRequestInfo.AuditType); cmd.ExecuteNonQuery(); } }
private void SetSendEmailAddress(int productsysno, ProductPriceRequestInfo entity) { ProductLineInfo plentity = ObjectFactory <IProductLineDA> .Instance.GetPMByProductSysNo(productsysno); if (plentity != null) { entity.PMUserEmailAddress = ObjectFactory <IProductManagerDA> .Instance.GetProductManagerInfoByUserSysNo(plentity.PMUserSysNo).UserInfo.EmailAddress; entity.BackupPMUserEmailAddress = GetBackupPMUserEmailAddress(plentity.BackupPMSysNoList); entity.CreateUserEmailAddress = ObjectFactory <IProductManagerDA> .Instance.GetProductManagerInfoByUserSysNo(entity.CreateUser.SysNo.Value).UserInfo.EmailAddress; entity.CurrentUserEmailAddress = ObjectFactory <IProductManagerDA> .Instance.GetProductManagerInfoByUserSysNo(ServiceContext.Current.UserSysNo).UserInfo.EmailAddress; } }
/// <summary> /// 计算毛利 /// </summary> /// <param name="requestInfo"></param> private void CalcMarginAmount(ProductPriceRequestInfo requestInfo) { var margin = ObjectFactory <ProductPriceProcessor> .Instance.GetMarginAmount(requestInfo.CurrentPrice ?? 0, requestInfo.Point ?? 0, requestInfo.UnitCost); margin = Math.Round(margin, 4); requestInfo.MarginAmount = margin; if (requestInfo.OldPrice != null) { margin = ObjectFactory <ProductPriceProcessor> .Instance.GetMarginAmount(requestInfo.OldPrice.CurrentPrice ?? 0, requestInfo.OldPrice.Point ?? 0, requestInfo.OldPrice.UnitCost); margin = Math.Round(margin, 4); requestInfo.OldPrice.MarginAmount = margin; } }
/// <summary> /// 根据PriceRequestSysNo获取商品价格变动信息 /// </summary> /// <param name="productPriceRequest"></param> /// <returns></returns> private void UpdateProductPriceByRequestInfoSysNo(ProductPriceRequestInfo productPriceRequest) { if (productPriceRequest == null || productPriceRequest.SysNo == null || productPriceRequest.SysNo <= 0) { return; } InitProductPriceRequestInfo(productPriceRequest); var productSysNo = GetProductSysNoBySysNo(productPriceRequest.SysNo.Value); var productPrice = new ProductPriceInfo(); EntityCopy.CopyProperties(productPriceRequest, productPrice); productPrice.ProductWholeSalePriceInfo = productPriceRequest.ProductWholeSalePriceInfo; productPrice.ProductRankPrice = productPriceRequest.ProductRankPrice; var productPriceDA = ObjectFactory <IProductPriceDA> .Instance; productPriceDA.UpdateProductPrice(productSysNo, productPrice); }
/// <summary> /// 初始化价格申请表数据 /// </summary> /// <param name="productPriceRequest"></param> private void InitProductPriceRequestInfo(ProductPriceRequestInfo productPriceRequest) { if (productPriceRequest.BasicPrice < 0) { productPriceRequest.BasicPrice = productPriceRequest.OldPrice.BasicPrice; } if (productPriceRequest.CurrentPrice == null || productPriceRequest.CurrentPrice < 0) { productPriceRequest.CurrentPrice = productPriceRequest.OldPrice.CurrentPrice; } if (productPriceRequest.CashRebate == null || productPriceRequest.CashRebate < 0) { productPriceRequest.CashRebate = productPriceRequest.OldPrice.CashRebate; } if (productPriceRequest.Point == null || productPriceRequest.Point < 0) { productPriceRequest.Point = productPriceRequest.OldPrice.Point; } //productPriceRequest.Point = productPriceRequest.OldPrice.Point; productPriceRequest.IsExistRankPrice = productPriceRequest.ProductRankPrice != null && productPriceRequest.ProductRankPrice.Any(p => p.RankPrice > 0)?0:1; if (productPriceRequest.ProductWholeSalePriceInfo == null || productPriceRequest.ProductWholeSalePriceInfo.Count == 0) { productPriceRequest.IsWholeSale = 0; } else { productPriceRequest.ProductWholeSalePriceInfo.ForEach(v => { var entity = productPriceRequest.OldPrice .ProductWholeSalePriceInfo .Where(k => k.Level == v.Level).FirstOrDefault(); if (v.Qty != null && v.Qty < 0) { v.Qty = entity != null ? entity.Qty : null; } if (v.Price != null && v.Price < 0) { v.Price = entity != null ? entity.Price : null; } }); productPriceRequest.IsWholeSale = productPriceRequest.ProductWholeSalePriceInfo.Any(k => k.Price > 0)?1:0; } }
private ProductPriceRequestInfo GetProductPriceRequestInfo(ProductPriceRequestStatus status) { if (_vm == null) { return(new ProductPriceRequestInfo()); } var entity = new ProductPriceRequestInfo { SysNo = SysNo, RequestStatus = status, TLMemo = _vm.TLMemo, PMDMemo = _vm.PMDMemo, HasAdvancedAuditPricePermission = _vm.HasAdvancedAuditPricePermission, HasPrimaryAuditPricePermission = _vm.HasPrimaryAuditPricePermission }; return(entity); }
/// <summary> /// Check毛利率提交审核 /// </summary> /// <param name="item"></param> /// <returns></returns> public virtual bool CheckMarginIsPass(OptionalAccessoriesItem item) { string returnMsgStr = string.Empty; var productInfo = ExternalDomainBroker.GetProductInfo(item.ProductSysNo.Value); ProductPriceRequestInfo priceMsg = new ProductPriceRequestInfo() { CurrentPrice = productInfo.ProductPriceInfo.CurrentPrice, UnitCost = productInfo.ProductPriceInfo.UnitCost, Point = productInfo.ProductPriceInfo.Point, Category = productInfo.ProductBasicInfo.ProductCategoryInfo }; var _discount = this.GetOptionalAccessoriesDiscountByItem(item); List <ProductPromotionMarginInfo> marginList = ObjectFactory <IIMBizInteract> .Instance.GetProductPromotionMargin( priceMsg, item.ProductSysNo.Value, "", _discount, ref returnMsgStr); //return marginList != null && marginList.Where(m => m.PromotionType == PromotionType.OptionalAccessories).Count() > 0; return(!string.IsNullOrEmpty(returnMsgStr)); }
/// <summary> /// 更新商品价格审核申请状态 /// </summary> /// <param name="productPriceRequest"></param> public void UpdateProductPriceRequestStatus(ProductPriceRequestInfo productPriceRequest) { DataCommand cmd = DataCommandManager.GetDataCommand("UpdateProductPriceRequestStatus"); cmd.SetParameterValue("@ProductPriceRequestSysNo", productPriceRequest.SysNo); cmd.SetParameterValue("@ProductPriceRequestStatus", productPriceRequest.RequestStatus != null ? productPriceRequest.RequestStatus.Value : 0); cmd.SetParameterValue("@PMDMemo", productPriceRequest.PMDMemo); cmd.SetParameterValue("@TLMemo", productPriceRequest.TLMemo); cmd.SetParameterValue("@AuditUserSysNo", productPriceRequest.AuditUser == null ? null : productPriceRequest.AuditUser.SysNo); cmd.SetParameterValue("@FinalAuditUserSysNo", productPriceRequest.FinalAuditUser == null ? null : productPriceRequest.FinalAuditUser.SysNo); cmd.ExecuteNonQuery(); if (productPriceRequest.RequestStatus == ProductPriceRequestStatus.Approved) { if (productPriceRequest.SysNo != null) { UpdateProductPriceByRequestInfoSysNo(productPriceRequest); } } }
/// <summary> /// 如果没有修改Request,则赋原值 /// </summary> private void ProcessNoRequestPrice(ProductPriceRequestInfo requestInfo, ProductPriceInfo priceInfo) { if (!requestInfo.CurrentPrice.HasValue) { requestInfo.CurrentPrice = priceInfo.CurrentPrice; } if (!requestInfo.CashRebate.HasValue) { requestInfo.CashRebate = priceInfo.CashRebate; } if (!requestInfo.Point.HasValue) { requestInfo.Point = priceInfo.Point; } requestInfo.UnitCost = priceInfo.UnitCost; requestInfo.ProductRankPrice.Where(rankPrice => !rankPrice.RankPrice.HasValue).ForEach( rankPrice => rankPrice.RankPrice = priceInfo.ProductRankPrice.First(p => p.Rank == rankPrice.Rank).RankPrice); requestInfo.ProductWholeSalePriceInfo.ForEach( delegate(ProductWholeSalePriceInfo volumePrice) { var f = priceInfo.ProductWholeSalePriceInfo.FirstOrDefault( p => p.Level == volumePrice.Level); int?qty = f != null ? f.Qty : default(int?); decimal?price = f != null ? f.Price : default(decimal?); volumePrice.Qty = volumePrice.Qty.HasValue ? volumePrice.Qty.Value : qty; volumePrice.Price = volumePrice.Price.HasValue ? volumePrice.Price : price; }); if (!requestInfo.AlipayVipPrice.HasValue) { requestInfo.AlipayVipPrice = priceInfo.AlipayVipPrice; } }
//[SendEmailAttribute(SendEmailType.CancelPriceRequest)] public void CancelAuditProductPriceRequest(ProductPriceRequestInfo productPriceRequestInfo, ProductPriceRequestStatus status) { _productPriceRequestDA.UpdateProductPriceRequestStatus(productPriceRequestInfo.SysNo.Value, status); //SetSendEmailAddress(_productPriceRequestDA.GetProductSysNoBySysNo(productPriceRequestInfo.SysNo.Value), productPriceRequestInfo); }
//private bool SendPriceRequestEmail(int requestSysNo, int productSysNo, EmailType emailType, string companyCode, string reasons) //{ // //try // //{ // // EmailHelper.SendEmailByTemplate(customer.BasicInfo.Email, "MKT_ProductReviewMailContent", replaceVariables, false); // //} // //catch (Exception ex) // //{ // // TxtFileLogger logger = LoggerManager.GetLogger("EmailNotify.log"); // // logger.WriteLog(ex); // // return false; // //} // return true; //} //[SendEmailAttribute(SendEmailType.CreatePriceRequest)] public void InsertProductPriceRequest(int productSysNo, ProductPriceRequestInfo productPriceRequestInfo) { _productPriceRequestDA.InsertProductPriceRequest(productSysNo, productPriceRequestInfo); //SetSendEmailAddress(productSysNo, productPriceRequestInfo); }
//[SendEmailAttribute(SendEmailType.ApprovePriceRequest)] public void AuditProductPriceRequest(ProductPriceRequestInfo productPriceRequest) { CheckProductPriceRequestProcessor.CheckProductPriceReques(productPriceRequest); CheckProductPriceRequestProcessor.CheckProductPriceRequestSysNo(productPriceRequest.SysNo); CheckProductPriceRequestProcessor.CheckProductPriceRequestStatus(productPriceRequest.RequestStatus); var status = productPriceRequest.RequestStatus; var tlMemo = productPriceRequest.TLMemo ?? ""; var pmdMemo = productPriceRequest.PMDMemo ?? ""; var hasAdvancedAuditPricePermission = productPriceRequest.HasAdvancedAuditPricePermission; var hasPrimaryAuditPricePermission = productPriceRequest.HasPrimaryAuditPricePermission; var isOnePass = productPriceRequest.IsOnePass; if (productPriceRequest.SysNo != null) { productPriceRequest = _productPriceRequestDA.GetProductPriceRequestInfoBySysNo(productPriceRequest.SysNo.Value); } productPriceRequest.TLMemo = tlMemo; productPriceRequest.PMDMemo = pmdMemo; productPriceRequest.HasAdvancedAuditPricePermission = hasAdvancedAuditPricePermission; productPriceRequest.HasPrimaryAuditPricePermission = hasPrimaryAuditPricePermission; var productID = ""; int proSysNo = 0; CheckProductPriceRequestProcessor.CheckProductPriceRequestStatus(productPriceRequest, status, ref productID, ref proSysNo); if (!isOnePass) { CheckProductPriceRequestProcessor.CheckModifyStatusPermission(productPriceRequest, status, ref productID); } CheckProductPriceRequestProcessor.CheckProductPriceRequestCreateSysNo(productPriceRequest, productID); SetAuditUser(productPriceRequest); using (var tran = new TransactionScope()) { productPriceRequest.RequestStatus = status; _productPriceRequestDA.UpdateProductPriceRequestStatus(productPriceRequest); #region Check当前商品调价后所在销售规则中差价 ExternalDomainBroker.CheckComboPriceAndSetStatus(proSysNo); #endregion //状态更新成功之后发送消息 switch (productPriceRequest.RequestStatus) { //审核通过 case ProductPriceRequestStatus.Approved: EventPublisher.Publish <ECCentral.Service.EventMessage.IM.ProductPriceAuditMessage>(new ECCentral.Service.EventMessage.IM.ProductPriceAuditMessage() { AuditUserSysNo = ServiceContext.Current.UserSysNo, RequestSysNo = productPriceRequest != null && productPriceRequest.SysNo.HasValue ? productPriceRequest.SysNo.Value : 0 }); break; //审核拒绝 case ProductPriceRequestStatus.Deny: EventPublisher.Publish <ECCentral.Service.EventMessage.IM.ProductPriceRejectMessage>(new ECCentral.Service.EventMessage.IM.ProductPriceRejectMessage() { RejectUserSysNo = ServiceContext.Current.UserSysNo, RequestSysNo = productPriceRequest != null && productPriceRequest.SysNo.HasValue ? productPriceRequest.SysNo.Value : 0 }); break; } tran.Complete(); } //SetSendEmailAddress(proSysNo, productPriceRequest); }
/// <summary> /// 检查商品价格变动单据审核单据 /// </summary> /// <param name="productPriceRequest"></param> /// <param name="status"></param> /// <param name="productID"></param> /// <returns></returns> public static void CheckProductPriceRequestStatus(ProductPriceRequestInfo productPriceRequest, ProductPriceRequestStatus?status, ref string productID, ref int proSysNo) { CheckProductPriceReques(productPriceRequest); if (productPriceRequest.AuditType == null) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPriceRequest", "ProductPriceRequestTypeIsNull")); } var productPriceRequestDA = ObjectFactory <IProductPriceRequestDA> .Instance; if (productPriceRequest.SysNo == null) { return; } var productSysNo = productPriceRequestDA.GetProductSysNoBySysNo(productPriceRequest.SysNo.Value); proSysNo = productSysNo; if (productSysNo <= 0) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPriceRequest", "ProductSysNoIsNull")); } var productDA = ObjectFactory <IProductDA> .Instance; var product = productDA.GetProductInfoBySysNo(productSysNo); productID = product.ProductID; if (product == null || String.IsNullOrEmpty(product.ProductID)) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPriceRequest", "ProductIsNull")); } if (productPriceRequest.RequestStatus == null) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPriceRequest", "ProductPriceRequestStatusIsNull")); } if (!PendingList.Contains(productPriceRequest.RequestStatus.Value)) { var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest", "AuditProductPriceRequestForPending"); throw new BizException(String.Format(errorStr, product.ProductID)); } if (status != null && productPriceRequest.AuditType.Value == ProductPriceRequestAuditType.SeniorAudit && productPriceRequest.RequestStatus.Value == ProductPriceRequestStatus.NeedSeniorApprove && status.Value == ProductPriceRequestStatus.Origin) { var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest", "AuditProductPriceRequestForPending"); throw new BizException(String.Format(errorStr, product.ProductID)); } if (status != null && productPriceRequest.AuditType.Value == ProductPriceRequestAuditType.Audit && status.Value == ProductPriceRequestStatus.NeedSeniorApprove) { var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest", "TLAuditProductPriceRequest"); throw new BizException(String.Format(errorStr, product.ProductID)); } if (productPriceRequest.AuditType.Value == ProductPriceRequestAuditType.SeniorAudit) { if (String.IsNullOrEmpty(productPriceRequest.TLMemo.Trim()) && productPriceRequest.RequestStatus.Value == ProductPriceRequestStatus.Origin) { var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest", "TLMemoInvalid"); throw new BizException(String.Format(errorStr, product.ProductID)); } if (String.IsNullOrEmpty(productPriceRequest.PMDMemo.Trim()) && productPriceRequest.RequestStatus.Value == ProductPriceRequestStatus.NeedSeniorApprove) { var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest", "PMDMemoInvalid"); throw new BizException(String.Format(errorStr, product.ProductID)); } } var result = ExternalDomainBroker.CheckMarketIsActivity(productSysNo); if (result && status == ProductPriceRequestStatus.Approved) { var errorStr = ResouceManager.GetMessageString("IM.ProductPriceRequest", "ProductPriceRequestStatusInvalid"); throw new BizException(String.Format(errorStr, product.ProductID)); } ExternalDomainBroker.CheckComboPriceAndSetStatus(productSysNo); }
public string GetCCEmail(ProductPriceRequestInfo entity) { var productPriceRequestDA = ObjectFactory <IProductPriceRequestDA> .Instance; Product = ObjectFactory <ProductProcessor> .Instance.GetProductInfo(productPriceRequestDA.GetProductSysNoBySysNo(entity.SysNo.Value)); string ccMail = string.Empty; if (Product.ProductBasicInfo.ProductType == ProductType.OpenBox) { //decimal UnitCost = AppConst.DecimalNull, CurrentPrice = AppConst.DecimalNull; //if (entity.UnitCost == AppConst.DecimalNull || entity.CurrentPrice == AppConst.DecimalNull) //{ // return string.Empty; //} decimal dcmUnitCost50Percent = decimal.Multiply(entity.UnitCost, 0.5M); // 平均成本的5折 decimal dcmUnitCost70Percent = decimal.Multiply(entity.UnitCost, 0.7M); // 平均成本的7折 decimal dcmUnitCost80Percent = decimal.Multiply(entity.UnitCost, 0.8M); // if (entity.CurrentPrice < dcmUnitCost50Percent) { ccMail = ConfigurationManager.AppSettings["PMLeaderEmail"].ToString(); //ProductManager.GetInstance().GetPMEmailForSecondHandProductSetPrice((int)AppEnum.Privilege.PMLeader); } else if (entity.CurrentPrice >= dcmUnitCost50Percent && entity.CurrentPrice < dcmUnitCost80Percent) { ccMail = ConfigurationManager.AppSettings["SecondHandPriceAdjust3Email"].ToString(); //ccMail = ProductManager.GetInstance().GetPMEmailForSecondHandProductSetPrice((int)AppEnum.Privilege.SecondHandPriceAdjust3); } else if (entity.CurrentPrice >= dcmUnitCost80Percent && entity.CurrentPrice < 2 * entity.UnitCost) { ccMail = ConfigurationManager.AppSettings["SecondHandPriceAdjust1Email"].ToString(); // ccMail = ProductManager.GetInstance().GetPMEmailForSecondHandProductSetPrice((int)AppEnum.Privilege.SecondHandPriceAdjust1); } else if (entity.CurrentPrice >= 2 * entity.UnitCost) { ccMail = ConfigurationManager.AppSettings["SecondHandPriceAdjust1Email"].ToString(); } return(ccMail); } if ((entity.CurrentPrice - (decimal)(entity.Point / 10m)) > 0) //if (entity.UnitCost != 0) { if (entity.Margin > 0) { if (((entity.CurrentPrice - (decimal)(entity.Point / 10m) - entity.UnitCost) / (entity.CurrentPrice - (decimal)(entity.Point / 10m))) >= entity.Margin * 0.70M && ((entity.CurrentPrice - (decimal)(entity.Point / 10m) - entity.UnitCost) / (entity.CurrentPrice - (decimal)(entity.Point / 10m))) < entity.Margin) { ccMail = ConfigurationManager.AppSettings["AuditProductPrice1"]; } if (((entity.CurrentPrice - (decimal)(entity.Point / 10m) - entity.UnitCost) / (entity.CurrentPrice - (decimal)(entity.Point / 10m))) < entity.Margin * 0.70M) { ccMail = ConfigurationManager.AppSettings["AuditProductPrice2"]; //AppConfig.AuditProductPrice2; } if (entity.CurrentPrice >= 2 * entity.UnitCost) { ccMail += ";" + ConfigurationManager.AppSettings["AuditProductPrice2"]; } } else { if (((entity.CurrentPrice - (decimal)(entity.Point / 10m) - entity.UnitCost) / (entity.CurrentPrice - (decimal)(entity.Point / 10m))) < entity.Margin) { ccMail = ConfigurationManager.AppSettings["AuditProductPrice2"]; } //AppConfig.AuditProductPrice2; } } return(ccMail); }
public override void OnSuccess(MethodExecutionEventArgs args) { int requestsysno = 0; string ptptdUser = ConfigurationManager.AppSettings["PTPTDUser"]; string subject = string.Empty; ProductPriceRequestInfo entity = new ProductPriceRequestInfo(); if (EmailType == SendEmailType.ApprovePriceRequest) { object[] objs = args.GetReadOnlyArgumentArray(); entity = objs[0] as ProductPriceRequestInfo; requestsysno = entity.SysNo.Value; if (entity.RequestStatus == ProductPriceRequestStatus.Deny)//拒绝时的邮件发送 { subject = ResouceManager.GetMessageString("IM.Product", "AuditRejected"); } else { subject = ResouceManager.GetMessageString("IM.Product", "AuditPassed"); } } else if (EmailType == SendEmailType.CancelPriceRequest)//撤销时的邮件发送 { object[] objs = args.GetReadOnlyArgumentArray(); entity = objs[0] as ProductPriceRequestInfo; requestsysno = entity.SysNo.Value; subject = ResouceManager.GetMessageString("IM.Product", "CancelAudit"); } else if (EmailType == SendEmailType.CreatePriceRequest) { object[] objs = args.GetReadOnlyArgumentArray(); entity = objs[1] as ProductPriceRequestInfo; requestsysno = entity.SysNo.Value; subject = ResouceManager.GetMessageString("IM.Product", "RequestAudit"); } ProductPriceRequestInfo requestentity = ObjectFactory <ProductPriceRequestProcessor> .Instance.GetProductPriceRequestInfoBySysNo(requestsysno); string toAddress = string.Format("{0};{1}", entity.PMUserEmailAddress, entity.CurrentUserEmailAddress); if (!string.IsNullOrEmpty(entity.BackupPMUserEmailAddress)) { toAddress = string.Format("{0};{1}", toAddress, entity.BackupPMUserEmailAddress); } if (!string.IsNullOrEmpty(ptptdUser)) { toAddress = string.Format("{0};{1}", toAddress, ptptdUser); } string ccmail = GetCCEmail(requestentity); string updatetime = string.Empty; if (requestentity.LastUpdateTime.HasValue) { updatetime = requestentity.LastUpdateTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); } //参数设置 KeyValueVariables keyValueVariables = new KeyValueVariables(); keyValueVariables.AddKeyValue("Subject", subject); keyValueVariables.Add("ProductSysNo", Product.SysNo); keyValueVariables.Add("ProductName", Product.ProductName); keyValueVariables.Add("UpdateTime", updatetime); keyValueVariables.Add("SysNo", requestentity.SysNo); keyValueVariables.Add("ProductID", Product.ProductID); keyValueVariables.Add("BasicPrice", requestentity.OldPrice.BasicPrice); keyValueVariables.Add("BasicPriceNew", requestentity.BasicPrice); keyValueVariables.Add("UnitCost", requestentity.UnitCost); keyValueVariables.Add("CurrentPrice", requestentity.OldPrice.CurrentPrice); keyValueVariables.Add("CurrentPriceNew", requestentity.CurrentPrice); keyValueVariables.Add("Discount", requestentity.DiscountAmount); keyValueVariables.Add("CashRebate", requestentity.OldPrice.CashRebate); keyValueVariables.Add("CashRebateNew", requestentity.CashRebate); keyValueVariables.Add("Point", requestentity.OldPrice.Point); keyValueVariables.Add("PointNew", requestentity.Point); keyValueVariables.Add("ProductPayType", requestentity.OldPrice.PayType.ToString()); keyValueVariables.Add("MaxPerOrder", requestentity.MinCountPerOrder); keyValueVariables.Add("MinMargin", requestentity.OldPrice.Margin); keyValueVariables.Add("MinMarginCurrent", requestentity.Margin); keyValueVariables.Add("Apply", requestentity.CreateUser.UserName); keyValueVariables.Add("PMMemo", requestentity.PMMemo); keyValueVariables.Add("TLMemo", requestentity.TLMemo); EmailHelper.SendEmailByTemplate(toAddress, ccmail, "", "IM_Product_ChangePrice", keyValueVariables, null, true, true); base.OnSuccess(args); }
/// <summary> /// Check商品本身及促销活动中毛利率,供外部访问 /// </summary> /// <param name="productPriceReqInfo">价格信息,必须参数包括:CurrentPrice,Point,UnitCost,CategorySysNo</param> /// <param name="productSysNo">商品Sysno</param> /// <param name="priceName">所修改价格的名称</param> /// <param name="productMarginReturnMsg">返回商品本身的毛利率Check结果</param> /// <returns></returns> public List <ProductPromotionMarginInfo> CheckMargin(ProductPriceRequestInfo productPriceReqInfo, int productSysNo, string priceName, decimal discount, ref string productMarginReturnMsg) { List <ProductPromotionMarginInfo> returnList = new List <ProductPromotionMarginInfo>(); var categoryInfo = productPriceReqInfo.Category; if (categoryInfo.SysNo.HasValue) { var setting = ObjectFactory <CategorySettingProcessor> .Instance.GetCategorySettingBySysNo(categoryInfo.SysNo.Value, productSysNo); var priceInfo = productPriceReqInfo; if (priceInfo.UnitCost >= 0) { var margin = GetMargin(priceInfo.CurrentPrice.Value, priceInfo.Point.HasValue ? priceInfo.Point.Value : 0, priceInfo.UnitCost, discount); if (margin < setting.PrimaryMargin && margin > setting.SeniorMargin) { productMarginReturnMsg = ResouceManager.GetMessageString("IM.ProductPrice", "CheckMarginResult1") + priceName + ResouceManager.GetMessageString("IM.ProductPrice", "CheckMarginResult2"); } if (margin < setting.SeniorMargin) { productMarginReturnMsg = priceName + ResouceManager.GetMessageString("IM.ProductPrice", "CheckMarginResult3"); //auditType = ProductPriceRequestAuditType.SeniorAudit; } var productPromotionDiscountInfoList = ExternalDomainBroker.GetProductPromotionDiscountInfoList(productSysNo); if (productPromotionDiscountInfoList.Any()) { string msgTmp = string.Empty; productPromotionDiscountInfoList.ForEach(promotionDiscountInfo => { var promotionMargin = GetMargin(priceInfo.CurrentPrice.Value, priceInfo.Point.HasValue ? priceInfo.Point.Value : 0, priceInfo.UnitCost, promotionDiscountInfo.Discount); var enumName = EnumHelper.GetEnumDesc(promotionDiscountInfo.PromotionType); var promotionMarginPercent = (promotionMargin * 100).TruncateDecimal(2) + "%"; if (promotionMargin < setting.PrimaryMargin) { msgTmp = ResouceManager.GetMessageString("IM.ProductPrice", "CheckMarginResult4") + priceName + ResouceManager.GetMessageString("IM.ProductPrice", "CheckMarginResult5") + enumName + promotionDiscountInfo.ReferenceSysNo + ResouceManager.GetMessageString("IM.ProductPrice", "CheckMarginResult6") + promotionMarginPercent + ResouceManager.GetMessageString("IM.ProductPrice", "CheckMarginResult7"); } returnList.Add(new ProductPromotionMarginInfo() { PromotionType = promotionDiscountInfo.PromotionType, ReferenceSysNo = promotionDiscountInfo.ReferenceSysNo, Margin = promotionMargin, ReturnMsg = msgTmp }); }); } } } else { throw new BizException(ResouceManager.GetMessageString("IM.ProductPrice", "CheckMarginResult8")); } return(returnList); }