From 769e76ffb1be14c0f900c6cb00488466908a3335 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 3 Aug 2021 18:57:43 +0000 Subject: [PATCH] --- server/AyaNova/biz/JobsBiz.cs | 5 +++-- server/AyaNova/biz/PMBiz.cs | 37 +++++++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/server/AyaNova/biz/JobsBiz.cs b/server/AyaNova/biz/JobsBiz.cs index 4e6a3453..54e61e11 100644 --- a/server/AyaNova/biz/JobsBiz.cs +++ b/server/AyaNova/biz/JobsBiz.cs @@ -209,8 +209,9 @@ namespace AyaNova.Biz //PM GENERATION await CoreJobPMGenerate.DoWorkAsync(); - //PM INVENTORY CHECK - await CoreJobPMInventoryCheck.DoWorkAsync(); + //PM INVENTORY CHECK + if (AyaNova.Util.ServerGlobalBizSettings.Cache.UseInventory) + await CoreJobPMInventoryCheck.DoWorkAsync(); //JOB SWEEPER / AND USER COUNT CHECK await CoreJobSweeper.DoWorkAsync(); diff --git a/server/AyaNova/biz/PMBiz.cs b/server/AyaNova/biz/PMBiz.cs index 3e27356a..6b6a597f 100644 --- a/server/AyaNova/biz/PMBiz.cs +++ b/server/AyaNova/biz/PMBiz.cs @@ -4818,15 +4818,48 @@ namespace AyaNova.Biz //title = pm insufficient and id and object link to pm //message = list: part name, -xx (short quantity), no text if possible so no translate needed + //collect the parts on the pm + List PartStockRequired = new List(); + foreach (PMItem pmi in p.Items) + { + foreach (PMItemPart pmp in pmi.Parts) + { + var CurrentInventory = await ct.PartInventory.AsNoTracking().OrderByDescending(m => m.EntryDate).FirstOrDefaultAsync(m => m.PartId == pmp.PartId && m.PartWarehouseId == pmp.PartWarehouseId); + if (CurrentInventory.Balance < pmp.Quantity) + { + var i = new PMRestockListItem() { PartId = pmp.PartId, WarehouseId = pmp.PartWarehouseId, QuantityRequired = pmp.Quantity - (decimal)CurrentInventory.Balance }; + PartStockRequired.Add(i); + } + } + } - } + if (PartStockRequired.Count == 0) continue; - } + //summarize and notify + var sumList = PartStockRequired.GroupBy(x => new { x.WarehouseId, x.PartId }) + .OrderBy(g => g.Key.PartId) + .ThenBy(g => g.Key.WarehouseId) + .Select(cl => new PMRestockListItem() { PartId = cl.First().PartId, WarehouseId = cl.First().WarehouseId, QuantityRequired = cl.Sum(c => c.QuantityRequired) }); + + //ok, should have all summarized partid/warehouseid required combos, can now build output + + + + }//each pmid + + }//each subscriber } + public class PMRestockListItem + { + public long PartId { get; set; } + public long WarehouseId { get; set; } + public decimal QuantityRequired { get; set; } + } + //////////////////////////////////////////////////////////////////////////////////////////////// // Process generation of pms to workorders //