diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 06640aa3..73f850d8 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -651,7 +651,7 @@ 自动生成箱信息 箱前缀 - 数量 + 数量(明细条数) 物料编码 组织编码 diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index bacbb8c0..eb7cd185 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -256,6 +256,23 @@ namespace WMS.Web.Domain.Services /// private async Task> ShelfSave(PurchaseShelfRequest dto, InstockType type, LoginInDto loginInfo, bool isTransaction = true) { + + //1.获取来源单 + var taskIds = dto.Details.GroupBy(x => x.TaskId).Select(x => x.Key).ToList(); + var tasks = await _inStockTaskRepositories.GetList(taskIds); + + if (tasks == null || tasks.Count==0) + return Result.ReFailure(ResultCodes.SourceBillNoDateError); + + //1.1.2判断上架数量不能超过应入库数量 + var dtoTotalDetails = dto.Details.GroupBy(x => new { x.ErpDetailId }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, Qty = x.Sum(t => t.Qty) }).ToList(); + foreach (var item in tasks.SelectMany(x => x.Details).ToList()) + { + var current_det = dtoTotalDetails.Where(x => x.ErpDetailId == item.ErpDetailId).FirstOrDefault(); + if (current_det != null && current_det.ErpDetailId == item.ErpDetailId && (item.AccruedQty - item.RealityQty) < current_det.Qty) + return Result.ReFailure(ResultCodes.ShelfNoPurchaseSave_Qty_Error); + } + // 组织集合 var orgs = new List(); var orgs_result = await _erpService.BillQueryForOrg(); @@ -317,9 +334,7 @@ namespace WMS.Web.Domain.Services var isSuccess = await _inStockRepositories.AddRangeTotalDetails(totalDetails, isTransaction); if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); - //反写任务单的已交数量 - var taskIds = dto.Details.GroupBy(x => x.TaskId).Select(x => x.Key).ToList(); - var tasks = await _inStockTaskRepositories.GetList(taskIds); + //反写任务单的已交数量 if (tasks != null && tasks.Count != 0) { foreach (var task in tasks)