Esempio n. 1
0
            /// <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);
            }
Esempio n. 2
0
        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();
            }
        }