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"); } }
/// <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, "取消锁定"); }