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