//报关审核生效 流水操作:写入 流水类型:报关 流水状态:已生效 库存操作:更新 库存状态:预报关库存 public ResultModel Audit(UserModel user, NFMT.WorkFlow.Model.DataSource dataSource, bool isPass) { ResultModel result = new ResultModel(); try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { result = this.customsclearanceDAL.Get(user, dataSource.RowId); if (result.ResultStatus != 0) return result; Model.CustomsClearance customsClearance = result.ReturnValue as Model.CustomsClearance; if (customsClearance == null || customsClearance.CustomsId <= 0) { result.ResultStatus = -1; result.Message = "报关不存在"; return result; } //审核,修改数据状态 result = this.customsclearanceDAL.Audit(user, customsClearance, isPass); if (result.ResultStatus != 0) return result; //审核通过 if (isPass) { //加载已生效明细 DAL.CustomsDetailDAL customsDetailDAL = new CustomsDetailDAL(); result = customsDetailDAL.Load(user, customsClearance.CustomsId, StatusEnum.已生效); if (result.ResultStatus != 0) return result; List<Model.CustomsDetail> details = result.ReturnValue as List<Model.CustomsDetail>; if (details == null || !details.Any()) { result.ResultStatus = -1; result.Message = "获取失败"; return result; } DAL.StockDAL stockDAL = new StockDAL(); DAL.StockNameDAL stockNameDAL = new StockNameDAL(); DAL.StockLogDAL stockLogDAL = new StockLogDAL(); Model.Stock stock = null; Model.StockName stockName = null; Model.StockLog stockLog = null; foreach (Model.CustomsDetail detail in details) { //获取库存 result = stockDAL.Get(user, detail.StockId); if (result.ResultStatus != 0) return result; stock = result.ReturnValue as Model.Stock; if (stock == null) { result.ResultStatus = -1; result.Message = "获取库存失败"; return result; } //获取业务单号 result = stockNameDAL.Get(user, stock.StockNameId); if (result.ResultStatus != 0) return result; stockName = result.ReturnValue as Model.StockName; if (stockName == null) { result.ResultStatus = -1; result.Message = "获取业务单号失败"; return result; } //创建库存流水 stockLog = new StockLog() { StockId = stock.StockId, StockNameId = stock.StockNameId, RefNo = stockName.RefNo, LogDirection = (int)LogDirectionEnum.Out, LogType = (int)LogTypeEnum.报关, //ContractId = //SubContractId = LogDate = DateTime.Now, OpPerson = user.EmpId, Bundles = stock.Bundles, GrossAmount = stock.GrossAmount, NetAmount = stock.NetAmount, MUId = stock.UintId, BrandId = stock.BrandId, DeliverPlaceId = stock.DeliverPlaceId, PaperNo = stock.PaperNo, PaperHolder = stock.PaperHolder, CardNo = stock.CardNo, Memo = stock.Memo, LogStatus = StatusEnum.已生效, LogSourceBase = "NFMT", LogSource = "dbo.St_CustomsClearance", SourceId = customsClearance.CustomsId }; 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; } //将库存流水Id反向更新到明细表中 detail.StockLogId = stockLogId; result = customsDetailDAL.Update(user, detail); if (result.ResultStatus != 0) return result; //更新库存状态 result = stockDAL.UpdateStockStatus(stock, StockStatusEnum.预报关库存); if (result.ResultStatus != 0) return result; } } scope.Complete(); } } catch (Exception e) { result.Message = e.Message; result.ResultStatus = -1; } return result; }