Beispiel #1
0
        /// <summary>
        /// 作废申请单
        /// </summary>
        /// <param name="sysNo">申请单编号</param>
        /// <returns>是否成功</returns>
        public virtual bool Abandon(int sysNo)
        {
            RMARequestInfo request = LoadBySysNo(sysNo);

            request.VerifyAbandon(request);

            request.Status    = RMARequestStatus.Abandon;
            request.Registers = registerProcessor.LoadByRequestSysNo(sysNo);
            request.Registers.ForEach(reg => { reg.BasicInfo.Status = request.Status; });

            bool result;

            TransactionOptions options = new TransactionOptions();

            options.IsolationLevel = IsolationLevel.ReadCommitted;
            options.Timeout        = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                result = UpdateWithRegisters(request);

                scope.Complete();
            }

            ExternalDomainBroker.CreateOperationLog("RMA_Request_Abandon", BizLogType.RMA_Request_Abandon, request.SysNo.Value, request.CompanyCode);

            return(result);
        }
Beispiel #2
0
        public static bool VerifyUpdate(this RMARequestInfo request, RMARequestInfo requestInDb)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }
            if (requestInDb == null)
            {
                throw new ArgumentNullException("requestInDb");
            }

            // verify required fields
            CommonCheck.VerifyNotNull("SysNo", request.SysNo);
            CommonCheck.VerifyNotNull("RequestID", request.RequestID);
            CommonCheck.VerifyNotNull("SOSysNo", request.SOSysNo);
            CommonCheck.VerifyNotNull("CustomerSysNo", request.CustomerSysNo);
            CommonCheck.VerifyNotNull("Address", request.Address);
            CommonCheck.VerifyNotNull("Contact", request.Contact);
            CommonCheck.VerifyNotNull("Phone", request.Phone);
            // verify request fields' max length
            request.VerifyFieldsLength();

            // 如果是”邮局普包“就必须传入”邮资转积分“数
            if (request.ShipViaCode == RMAConst.ShipVia_PostOffice)
            {
                if (request.PostageToPoint.HasValue && request.PostageToPoint.Value > 50)
                {
                    string msg = ResouceManager.GetMessageString("RMA.Request", "PostageToPointShouldLessThan50");
                    throw new BizException(msg);
                }
            }
            if (requestInDb.Status.Value == RMARequestStatus.Complete ||
                requestInDb.Status.Value == RMARequestStatus.Abandon)
            {
                string msg = ResouceManager.GetMessageString("RMA.Request", "CannotEditWhenHandlingOrClosedOrAbandon");
                throw new BizException(msg);
            }
            if (!request.Status.HasValue)
            {
                string msg = ResouceManager.GetMessageString("RMA.Request", "ObjectIsRequired");
                msg = string.Format(msg, "申请单处理状态");
                throw new BizException(msg);
            }
            if (request.Status != requestInDb.Status)
            {
                switch (request.Status.Value)
                {
                case RMARequestStatus.Abandon:
                    request.VerifyAbandon(requestInDb);
                    break;

                case RMARequestStatus.Complete:
                    break;

                case RMARequestStatus.Handling:
                    request.VerifyReceive(requestInDb);
                    break;

                case RMARequestStatus.Origin:
                    requestInDb.VerifyCancelReceive();
                    break;
                }
            }
            return(true);
        }