From 5d670daaab626b07af8a2ea25c8d417f447823ab Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 13 May 2021 19:47:56 +0000 Subject: [PATCH] --- server/AyaNova/biz/WorkOrderBiz.cs | 60 ++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index 54e59189..8f3c3856 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -414,17 +414,39 @@ namespace AyaNova.Biz { //contract has changed, update entire graph pricing and potentially response time stuff as well here now //iterate graph calling *SetListPrice on each item - var wo = await WorkOrderGetAsync(woId, false, false); + var wo = await ct.WorkOrder + .Include(s => s.States) + .Include(w => w.Items.OrderBy(item => item.Sequence)) + .ThenInclude(wi => wi.Expenses) + .Include(w => w.Items) + .ThenInclude(wi => wi.Labors) + .Include(w => w.Items) + .ThenInclude(wi => wi.Loans) + .Include(w => w.Items) + .ThenInclude(wi => wi.Parts) + .Include(w => w.Items) + .ThenInclude(wi => wi.PartRequests) + .Include(w => w.Items) + .ThenInclude(wi => wi.ScheduledUsers) + .Include(w => w.Items) + .ThenInclude(wi => wi.Tasks) + .Include(w => w.Items) + .ThenInclude(wi => wi.Travels) + .Include(w => w.Items) + .ThenInclude(wi => wi.Units) + .Include(w => w.Items) + .ThenInclude(wi => wi.OutsideServices) + .SingleOrDefaultAsync(z => z.Id == woId); foreach (WorkOrderItem wi in wo.Items) { foreach (WorkOrderItemLabor o in wi.Labors) - LaborSetPrice(o, mContractInEffect); + await LaborSetPrice(o, mContractInEffect); foreach (WorkOrderItemTravel o in wi.Travels) TravelSetListPrice(o, mContractInEffect); foreach (WorkOrderItemPart o in wi.Parts) PartSetListPrice(o, mContractInEffect); } - + await ct.SaveChangesAsync(); return wo; @@ -1833,10 +1855,10 @@ namespace AyaNova.Biz //Pricing if (SetPrice) { - var Contract = await GetCurrentWorkOrderContractFromRelatedAsync(AyaType.WorkOrderItem, newObj.WorkOrderItemId); - await LaborSetPrice(newObj, Contract); + var Contract = await GetCurrentWorkOrderContractFromRelatedAsync(AyaType.WorkOrderItem, newObj.WorkOrderItemId); + await LaborSetPrice(newObj, Contract); + - } } @@ -1846,22 +1868,22 @@ namespace AyaNova.Biz //(called by woitemlabor save and also by header save on change of contract) private async Task LaborSetPrice(WorkOrderItemLabor o, Contract c) { - //default in case nothing to apply - o.Cost = 0; - o.ListPrice = 0; - o.Price = 0; + //default in case nothing to apply + o.Cost = 0; + o.ListPrice = 0; + o.Price = 0; - //in v7 it was ok to have no service rate selected - //not sure why but carried forward to v8 so.. - if (o.ServiceRateId != null) + //in v7 it was ok to have no service rate selected + //not sure why but carried forward to v8 so.. + if (o.ServiceRateId != null) + { + var s = await ct.ServiceRate.AsNoTracking().FirstOrDefaultAsync(z => z.Id == o.ServiceRateId); + if (s != null) { - var s = await ct.ServiceRate.AsNoTracking().FirstOrDefaultAsync(z => z.Id == o.ServiceRateId); - if (s != null) - { - o.Cost = s.Cost; - o.ListPrice = s.Charge; - } + o.Cost = s.Cost; + o.ListPrice = s.Charge; } + } if (c == null || c.ServiceRatesOverridePct == 0) {