public void UpdateProductPriceInfo(ProductInfo productInfo) { var product = _productDA.GetProductInfoBySysNo(productInfo.SysNo); if (product.ProductStatus == ProductStatus.Active) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPrice", "CheckProductPriceActiveProductCannotSave")); } var promotionList = ExternalDomainBroker.GetProductPromotionDiscountInfoList(productInfo.SysNo); CheckNoPromotion(promotionList); product.ProductBasicInfo.Note = productInfo.ProductBasicInfo.Note; ProcessNoRequestPrice(productInfo.ProductPriceRequest, product.ProductPriceInfo); DoubleCheckProductPrice(productInfo.ProductPriceRequest); /* * var auditType = ProductPriceRequestAuditType.Audit; * * var auditMessage = CheckProductPriceRequest(productInfo, product.ProductPriceInfo, product.ProductBasicInfo.ProductCategoryInfo, * ref auditType); * * if (auditMessage.Length > 0) * { * throw new BizException(auditMessage); * } */ _productPriceDA.UpdateProductBasicPrice(productInfo.SysNo, productInfo.ProductPriceRequest); if (productInfo.ProductPriceRequest.VirtualPrice != product.ProductPriceInfo.VirtualPrice) { _productPriceDA.UpdateProductVirtualPrice(productInfo.SysNo, product.ProductPriceInfo.VirtualPrice, productInfo.ProductPriceRequest.VirtualPrice); } if (productInfo.ProductPriceInfo.IsSyncShopPrice != product.ProductPriceInfo.IsSyncShopPrice) { _productPriceDA.UpdateProductSyncShopPrice(productInfo.SysNo, productInfo.ProductPriceInfo.IsSyncShopPrice); } _productPriceDA.UpdateProductPrice(productInfo.SysNo, productInfo.ProductPriceRequest); #region Check当前商品调价后所在销售规则中差价 ExternalDomainBroker.CheckComboPriceAndSetStatus(productInfo.SysNo); #endregion _productCommonInfoDA.UpdateProductCommonInfoNote(product, productInfo.OperateUser); }
//[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); }