/// <summary> /// 关闭单件 /// </summary> /// <param name="register"></param> /// <returns></returns> public virtual RMARegisterInfo Close(int sysNo) { RMARegisterInfo original = LoadBySysNo(sysNo); original.VerifyClose(original); original.BasicInfo.Status = RMARequestStatus.Complete; TransactionOptions options = new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted, Timeout = TransactionManager.DefaultTimeout }; //using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { //先关闭单件 registerDA.Close(original); RMARequestInfo request = ObjectFactory <RequestProcessor> .Instance.LoadByRegisterSysNo(sysNo); request.Registers = LoadByRequestSysNo(request.SysNo.Value); //判断所有单件是否都已关闭 bool allClosed = true; request.Registers.ForEach(reg => { if (reg.BasicInfo.Status == RMARequestStatus.Handling) { allClosed = false; } }); //关闭申请单 if (allClosed && request.Status != RMARequestStatus.Complete) { request.Status = RMARequestStatus.Complete; ObjectFactory <RequestProcessor> .Instance.UpdateWithoutRegisters(request); } //scope.Complete(); } ExternalDomainBroker.CreateOperationLog("RMA_Register_Close", BizLogType.RMA_Register_Close, sysNo, original.CompanyCode); return(LoadForEditBySysNo(sysNo)); }
public static bool VerifyUpdate(this RMARegisterInfo register, RMARegisterInfo registerInDb) { if (registerInDb == null) { throw new ArgumentNullException("registerInDb"); } if (register == null) { throw new ArgumentNullException("register"); } CommonCheck.VerifyNotNull(ResouceManager.GetMessageString("RMA.Request", "RegisterCheck-SysNo"), register.BasicInfo.SysNo); CommonCheck.VerifyNotNull(ResouceManager.GetMessageString("RMA.Request", "RegisterCheck-ProductSysNo"), register.BasicInfo.ProductSysNo); CommonCheck.VerifyNotNull(ResouceManager.GetMessageString("RMA.Request", "RegisterCheck-CustomerDesc"), register.BasicInfo.CustomerDesc); register.VerifyFieldsLength(); if (registerInDb.BasicInfo.Status.Value == RMARequestStatus.Complete || registerInDb.BasicInfo.Status.Value == RMARequestStatus.Abandon) { string msg = ResouceManager.GetMessageString("RMA.Request", "CannotEditWhenClosedOrAbandon"); throw new BizException(msg); } if (register.BasicInfo.Status != registerInDb.BasicInfo.Status) { switch (register.BasicInfo.Status.Value) { case RMARequestStatus.Abandon: registerInDb.VerifyAbandon(); break; case RMARequestStatus.Complete: register.VerifyClose(registerInDb); break; case RMARequestStatus.Handling: register.VerifyReceive(); break; case RMARequestStatus.Origin: break; } } return(true); }