public ResultModel Audit(UserModel user, NFMT.WorkFlow.Model.DataSource dataSource, bool isPass) { ResultModel result = new ResultModel(); try { DAL.StockDAL stockDAL = new StockDAL(); DAL.StockLogDAL stockLogDAL = new StockLogDAL(); DAL.StockOutDetailDAL detailDAL = new StockOutDetailDAL(); DAL.StockNameDAL stockNameDAL = new StockNameDAL(); DAL.StockOutApplyDAL stockOutApplyDAL = new StockOutApplyDAL(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { result = this.stockoutDAL.Get(NFMT.Common.DefaultValue.SysUser, dataSource.RowId); if (result.ResultStatus != 0) return result; Model.StockOut stockOut = result.ReturnValue as Model.StockOut; if (stockOut == null || stockOut.StockOutId <= 0) { result.ResultStatus = -1; result.Message = "出库不存在"; return result; } //审核,修改数据状态 result = this.stockoutDAL.Audit(user, stockOut, isPass); if (result.ResultStatus != 0) return result; //审核通过 if (isPass) { //流水操作:写入 流水类型:出库 流水状态:已生效 库存操作:更新 库存状态:预售库存 //获取出库申请 result = stockOutApplyDAL.Get(user,stockOut.StockOutApplyId); if(result.ResultStatus!=0) return result; Model.StockOutApply stockOutApply = result.ReturnValue as Model.StockOutApply; if(stockOutApply == null || stockOutApply.StockOutApplyId<=0) { result.ResultStatus = -1; result.Message = "出库申请获取失败"; return result; } //获取出库明细 result = detailDAL.Load(user, stockOut.StockOutId); if (result.ResultStatus != 0) return result; List<Model.StockOutDetail> outDetails = result.ReturnValue as List<Model.StockOutDetail>; if (outDetails == null) { result.ResultStatus = -1; result.Message = "出库明细获取失败"; return result; } foreach (Model.StockOutDetail outDetail in outDetails) { //获取库存 result = stockDAL.Get(user, outDetail.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; } //获取业务单 result = stockNameDAL.Get(user,stock.StockNameId); if(result.ResultStatus!=0) return result; Model.StockName stockName = result.ReturnValue as Model.StockName; if(stockName == null || stockName.StockNameId <=0) { result.ResultStatus = -1; result.Message = "业务单号获取失败"; return result; } //出库净重==当前净重时 库存状态更新至 预售库存 if (outDetail.NetAmount == stock.CurNetAmount) { result = stockDAL.UpdateStockStatus(stock, StockStatusEnum.预售库存); if (result.ResultStatus != 0) return result; } //写出库流水,流水状态为已生效 Model.StockLog stockLog = new StockLog() { AssetId = stock.AssetId, BrandId = stock.BrandId, CardNo = stock.CardNo, DeliverPlaceId = stock.DeliverPlaceId, GrossAmount = outDetail.GrossAmount, LogDate = DateTime.Now, LogDirection = (int)LogDirectionEnum.Out, LogSource = "dbo.St_StockOutDetail", LogSourceBase = "NFMT", LogStatus = StatusEnum.已生效, LogType = (int)LogTypeEnum.出库, NetAmount = outDetail.NetAmount, MUId = stock.UintId, OpPerson = user.EmpId, PaperHolder = stock.PaperHolder, PaperNo = stock.PaperNo, RefNo = stockName.RefNo, SourceId = outDetail.DetailId, StockId = stock.StockId, StockNameId = stock.StockNameId, SubContractId = stockOutApply.SubContractId, ContractId = stockOutApply.ContractId, Memo = stockOut.Memo, Bundles = outDetail.Bundles }; result = stockLogDAL.Insert(user, stockLog); if (result.ResultStatus != 0) return result; int stockLogId = 0; if (result.ReturnValue == null || !int.TryParse(result.ReturnValue.ToString(), out stockLogId) || stockLogId <= 0) { result.ResultStatus = -1; result.Message = "出库流水写入失败"; return result; } //更新出库明细的出库流水 outDetail.StockLogId = stockLogId; result = detailDAL.Update(user, outDetail); if (result.ResultStatus != 0) return result; } } scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; return result; } return result; }