diff --git a/server/AyaNova/Controllers/PartController.cs b/server/AyaNova/Controllers/PartController.cs index 86c7a165..31e3909d 100644 --- a/server/AyaNova/Controllers/PartController.cs +++ b/server/AyaNova/Controllers/PartController.cs @@ -121,7 +121,7 @@ namespace AyaNova.Api.Controllers PartBiz biz = PartBiz.GetBiz(ct, HttpContext); if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType)) return StatusCode(403, new ApiNotAuthorizedResponse()); - var o = await biz.PutAsync(updatedObject); + var o = await biz.PutAsync(updatedObject); if (o == null) { if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) @@ -258,7 +258,7 @@ namespace AyaNova.Api.Controllers return Ok(ApiOkResponse.Response(o)); } - /// + /// /// Update part cost for part /// /// new cost of part @@ -274,7 +274,7 @@ namespace AyaNova.Api.Controllers PartBiz biz = PartBiz.GetBiz(ct, HttpContext); if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType)) return StatusCode(403, new ApiNotAuthorizedResponse()); - + if (await biz.PutPartCostAsync(id, newCost) == false) { if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) @@ -286,13 +286,15 @@ namespace AyaNova.Api.Controllers } - /// - /// Get on hand inventory values in all warehouses for part id specified + /// + /// Get most recent Part inventory records in all warehouses for part id specified + /// most recent is the latest "end" of the inventory chain containing the current balance as of the point in time this is fetched + /// these values are required to make inventory adjustments /// /// - /// Array of part on hand inventory levels by warehouse - [HttpGet("on-hand-inventory/{partId}")] - public async Task GetPartOnHandInventory([FromRoute] long partId) + /// List of part inventory records for each warehouse + [HttpGet("latest-inventory/{partId}")] + public async Task GetLatestInventory([FromRoute] long partId) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -303,21 +305,19 @@ namespace AyaNova.Api.Controllers return BadRequest(new ApiErrorResponse(ModelState)); //get all warehouses - var allWhs=await ct.PartWarehouse.AsNoTracking().ToListAsync(); + var allWhs = await ct.PartWarehouse.AsNoTracking().ToListAsync(); //iterate them and compile the last inventory for each warehouse for this part - foreach(PartWarehouse pw in allWhs){ - - } - - var LastEntry = await ct.PartInventory.OrderByDescending(m => m.EntryDate).FirstOrDefaultAsync(m => m.PartId == newDtObject.PartId && m.PartWarehouseId == newDtObject.PartWarehouseId); - var o = await ct.PartStockLevel.AsNoTracking().Where(z => z.PartId == partId).OrderBy(z => z.PartWarehouseId).ToListAsync(); - foreach (PartStockLevel ps in o) + List ret = new List(); + foreach (PartWarehouse pw in allWhs) { - ps.PartWarehouseDisplay = await ct.PartWarehouse.AsNoTracking().Where(z => z.Id == ps.PartWarehouseId).Select(z => z.Name).FirstOrDefaultAsync(); + var LastEntry = await ct.PartInventory.AsNoTracking().OrderByDescending(m => m.EntryDate).FirstOrDefaultAsync(m => m.PartId == partId && m.PartWarehouseId == pw.Id); + if (LastEntry != null) + { + ret.Add(LastEntry); + } } - - return Ok(ApiOkResponse.Response(o)); + return Ok(ApiOkResponse.Response(ret)); }