/// <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 void AuditRequestProductPrice(ProductInfo productInfo) { var exceptionBuilder = new StringBuilder(); var product = _productDA.GetProductInfoBySysNo(productInfo.SysNo); if (product.ProductPriceRequest.SysNo.HasValue) { exceptionBuilder.AppendLine(ResouceManager.GetMessageString("IM.ProductPrice", "AuditRequestProductPriceResult1")); } if (String.IsNullOrEmpty(productInfo.ProductPriceRequest.PMMemo)) { throw new BizException(ResouceManager.GetMessageString("IM.ProductPrice", "AuditRequestProductPriceResult2")); } if (ExternalDomainBroker.CheckMarketIsActivity(productInfo.SysNo)) { exceptionBuilder.AppendLine(ResouceManager.GetMessageString("IM.ProductPrice", "AuditRequestProductPriceResult3")); } ProcessNoRequestPrice(productInfo.ProductPriceRequest, product.ProductPriceInfo); if (productInfo.ProductPriceRequest.CurrentPrice.HasValue && (product.ProductStatus == ProductStatus.Active || product.ProductStatus == ProductStatus.InActive_Show) && (productInfo.ProductPriceRequest.CurrentPrice.Value == IMConst.ProductPriceZero || productInfo.ProductPriceRequest.CurrentPrice.Value == IMConst.ProductDefaultPrice)) { exceptionBuilder.AppendLine(ResouceManager.GetMessageString("IM.ProductPrice", "AuditRequestProductPriceResult4")); } ProductPriceRequestAuditType auditType = ProductPriceRequestAuditType.Audit; /* * var auditMessage = CheckProductPriceRequest(productInfo, product.ProductPriceInfo, * product.ProductBasicInfo.ProductCategoryInfo, ref auditType); * * if (auditMessage.Length == 0) * { * exceptionBuilder.AppendLine(ResouceManager.GetMessageString("IM.ProductPrice", "AuditRequestProductPriceResult5")); * } */ if (exceptionBuilder.Length > 0) { throw new BizException(exceptionBuilder.ToString()); } productInfo.ProductPriceRequest.AuditType = auditType; TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted; options.Timeout = TimeSpan.FromMinutes(5); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { if (productInfo.ProductPriceRequest.VirtualPrice != product.ProductPriceInfo.VirtualPrice) { _productPriceDA.UpdateProductVirtualPrice(productInfo.SysNo, product.ProductPriceInfo.VirtualPrice, productInfo.ProductPriceRequest.VirtualPrice); } _productPriceDA.UpdateProductBasicPrice(productInfo.SysNo, productInfo.ProductPriceRequest); _productPriceRequestBP.InsertProductPriceRequest(productInfo.SysNo, productInfo.ProductPriceRequest); //提交价格审核之后发送消息 var getProduct = _productDA.GetProductInfoBySysNo(productInfo.SysNo); EventPublisher.Publish <ECCentral.Service.EventMessage.IM.ProductPriceAuditSubmitMessage>(new ECCentral.Service.EventMessage.IM.ProductPriceAuditSubmitMessage() { SubmitUserSysNo = ServiceContext.Current.UserSysNo, ProductSysNo = productInfo != null ? productInfo.SysNo : 0, RequestSysNo = (getProduct != null && getProduct.ProductPriceRequest != null && getProduct.ProductPriceRequest.SysNo.HasValue) ? getProduct.ProductPriceRequest.SysNo.Value : 0 }); scope.Complete(); } }