Exemple #1
0
        protected virtual void UnholdPreCheck(SOUnholdReason reason)
        {
            switch (CurrentSO.BaseInfo.Status.Value)
            {
            case SOStatus.Origin:
            case SOStatus.WaitingManagerAudit:
                if (reason == SOUnholdReason.User && CurrentSO.BaseInfo.HoldStatus == SOHoldStatus.BackHold)
                {
                    BizExceptionHelper.Throw("SO_Hold_SOIsWaitingManagerAudit");
                }
                break;

            case SOStatus.Abandon:
                BizExceptionHelper.Throw("SO_Hold_Abandoned");
                break;

            case SOStatus.OutStock:
                BizExceptionHelper.Throw("SO_Hold_OutStock");
                break;

            case SOStatus.Split:
                BizExceptionHelper.Throw("SO_Hold_SplitComplete");
                break;
            }
            if (CurrentSO.BaseInfo.Status != SOStatus.Origin && CurrentSO.BaseInfo.HoldStatus == SOHoldStatus.WebHold)
            {
                BizExceptionHelper.Throw("SO_Hold_SOIsNotOriginalStatus");
            }
        }
Exemple #2
0
        /// <summary>
        /// 订单解锁
        /// </summary>
        /// <param name="soBaseInfo">订单基本信息</param>
        /// <param name="reason">解锁原因</param>
        internal virtual void Unhold(SOUnholdReason reason)
        {
            //  1.  解锁前的业务检查
            UnholdPreCheck(reason);

            CurrentSO.BaseInfo.HoldTime   = DateTime.Now;
            CurrentSO.BaseInfo.HoldStatus = SOHoldStatus.Unhold;
            CurrentSO.BaseInfo.HoldUser   = ServiceContext.Current.UserSysNo;
            //  2.  保存订单解锁
            SODA.UpdateSOHoldInfo(CurrentSO.BaseInfo);
            //  3.  添加订单更改日志,通知WMS重新Download订单
            ObjectFactory <SOLogProcessor> .Instance.WriteSOChangeLog(new SOChangeLog
            {
                ChangeTime    = DateTime.Now,
                ChangeType    = 3,
                CompanyCode   = CurrentSO.CompanyCode,
                CustomerSysNo = CurrentSO.BaseInfo.CustomerSysNo.Value,
                Guid          = Guid.NewGuid(),
                SOSysNo       = SOSysNo,
            });

            //  4.  订单操作日志
            WriteLog(BizEntity.Common.BizLogType.Sale_SO_UnHoldSO, "取消锁定");
        }