public ResultModel Close(UserModel user, int stockOutId) { ResultModel result = new ResultModel(); try { StockOutDetailDAL stockOutDetailDAL = new StockOutDetailDAL(); StockOutApplyDAL applyDAL = new StockOutApplyDAL(); StockLogDAL stockLogDAL = new StockLogDAL(); StockDAL stockDAL = new StockDAL(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { //验证出库 result = stockoutDAL.Get(user, stockOutId); if (result.ResultStatus != 0) return result; StockOut resultObj = result.ReturnValue as StockOut; if (resultObj == null || resultObj.StockOutId <= 0) { result.ResultStatus = -1; result.Message = "该数据不存在,不能进行执行完成操作"; return result; } //关闭出库 result = stockoutDAL.Close(user, resultObj); if (result.ResultStatus != 0) return result; //加载对应出库申请 result = applyDAL.Get(user, resultObj.StockOutApplyId); if (result.ResultStatus != 0) return result; StockOutApply apply = result.ReturnValue as StockOutApply; if (apply == null || apply.StockOutApplyId <= 0) { result.ResultStatus = -1; result.Message = "对应出库申请加载失败"; return result; } //加载明细 result = stockOutDetailDAL.Load(user, resultObj.StockOutId); if (result.ResultStatus != 0) return result; List<StockOutDetail> details = result.ReturnValue as List<StockOutDetail>; if(details ==null) { result.ResultStatus = -1; result.Message = "获取明细失败"; return result; } foreach (StockOutDetail detail in details) { //关闭明细 result = stockOutDetailDAL.Close(user,detail); if(result.ResultStatus !=0) return result; //获取出库流水 result = stockLogDAL.Get(user, detail.StockLogId); if (result.ResultStatus != 0) return result; Model.StockLog stockLog = result.ReturnValue as Model.StockLog; if (stockLog == null || stockLog.StockLogId <= 0) { result.ResultStatus = -1; result.Message = "获取出库流水失败"; return result; } //关闭出库流水 result = stockLogDAL.Close(user, stockLog); if (result.ResultStatus != 0) return result; //获取库存 result = stockDAL.Get(user, stockLog.StockId); if (result.ResultStatus != 0) return result; Model.Stock stock = result.ReturnValue as Model.Stock; if (stock == null || stock.StockId <= 0) { result.ResultStatus = -1; result.Message = "获取库存失败"; return result; } if (stock.StockStatus == StockStatusEnum.预售库存) { result = stockDAL.UpdateStockStatusToPrevious(user, stock); if (result.ResultStatus != 0) return result; } } scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; return result; } return result; }