diff --git a/src/WMS.Web.Domain/Entitys/OutStockTask.cs b/src/WMS.Web.Domain/Entitys/OutStockTask.cs index a7729f92..7f1629a2 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockTask.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockTask.cs @@ -115,7 +115,7 @@ namespace WMS.Web.Domain.Entitys if (this.Status == OutStockStatus.Repeal) return Result>.ReFailure(ResultCodes.OutStockTaskRepeal); - var detail = this.Details.FirstOrDefault(f => f.MaterialNumber == materialNumber); + var detail = this.Details.FirstOrDefault(f => f.MaterialNumber == materialNumber && f.IsRepeal != true); if (detail == null) return Result>.ReFailure(ResultCodes.OrderNoData); if ((detail.AccruedQty - detail.RealityQty) < qty) return Result>.ReFailure(ResultCodes.OutStockQtyError); @@ -255,7 +255,7 @@ namespace WMS.Web.Domain.Entitys if (list.GroupBy(g => g.DeliveryOrgId).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError); if (list.GroupBy(g => g.ReceiptCustomerId).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError); if (list.GroupBy(g => g.OrgCode).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError); - var details = list.SelectMany(s => s.Details).ToList().Clone(); + var details = list.SelectMany(s => s.Details).Where(w => w.IsRepeal != true).ToList().Clone(); if (list.GroupBy(g => g.StockCode).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError); List details_new = new List(); @@ -264,7 +264,7 @@ namespace WMS.Web.Domain.Entitys { d.Id = 0; d.Fid = 0; - var detail_new = details_new.FirstOrDefault(f => f.MaterialNumber == d.MaterialNumber); + var detail_new = details_new.FirstOrDefault(f => f.MaterialNumber == d.MaterialNumber && f.IsRepeal != true); if (detail_new != null) { detail_new.AccruedQty += d.AccruedQty;//应出数量累加 diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs index 6fa1c638..c9b0b6a2 100644 --- a/src/WMS.Web.Domain/Services/OutStockService.cs +++ b/src/WMS.Web.Domain/Services/OutStockService.cs @@ -100,7 +100,7 @@ namespace WMS.Web.Domain.Services return Result.ReFailure(ResultCodes.BoxOutStockTaskBoxError); } //上传的物料在任务单里没有找到不能出库 - var ex = dto.Details.Select(s => s.MaterialNumber).Except(outStockTask.Details.Select(s => s.MaterialNumber)).ToList(); + var ex = dto.Details.Select(s => s.MaterialNumber).Except(outStockTask.Details.Where(w => w.IsRepeal != true).Select(s => s.MaterialNumber)).ToList(); if (ex.Count() > 0 && dto.Method == 2) return Result.ReFailure(ResultCodes.OutStockMaterialError); var boxIds = dto.Details.Select(s => s.BoxId).ToList(); @@ -135,7 +135,7 @@ namespace WMS.Web.Domain.Services { if (b.Qty <= 0) continue; var num = boxInventoryDetails.Where(w => w.MaterialNumber == b.MaterialNumber).Sum(s => s.Qty); - var taskDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialNumber == b.MaterialNumber); + var taskDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialNumber == b.MaterialNumber && f.IsRepeal != true); if (taskDetail == null) return Result.ReFailure(ResultCodes.BoxOutStockTaskMaterialError); //箱子里该物料的总数量大于出库单(应出库数量-已出库数量) 不能出库 if (num > (taskDetail.AccruedQty - taskDetail.RealityQty)) @@ -155,7 +155,7 @@ namespace WMS.Web.Domain.Services foreach (var mid in mIds) { //任务单明细 - var tDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialNumber == mid); + var tDetail = outStockTask.Details.FirstOrDefault(f => f.MaterialNumber == mid && f.IsRepeal != true); var dtoDetails = dto.Details.Where(w => w.MaterialNumber == mid); var qty = dtoDetails.Sum(s => s.Qty); diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs index 98d92927..c335e7b2 100644 --- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs @@ -584,7 +584,7 @@ namespace WMS.Web.Domain.Services Specifications = m?.Specifications ?? "", BarCode = m?.BarCode ?? "", MaterialName = m?.MaterialName ?? "", - AccruedQty = entity.Details.FirstOrDefault(f => f.MaterialNumber == detail.MaterialNumber)?.AccruedQty ?? 0 + AccruedQty = entity.Details.FirstOrDefault(f => f.MaterialNumber == detail.MaterialNumber && f.IsRepeal != true)?.AccruedQty ?? 0 }; response.Details.Add(infoDetail); }