diff --git a/.vscode/launch.json b/.vscode/launch.json index b77f3b95..fcc80a75 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -53,7 +53,7 @@ "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", "AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles", - "AYANOVA_SERVER_TEST_MODE": "false", + "AYANOVA_SERVER_TEST_MODE": "true", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7", "AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\" diff --git a/server/AyaNova/DataList/PMDataList.cs b/server/AyaNova/DataList/PMDataList.cs index 7f927e70..b5f0e2d6 100644 --- a/server/AyaNova/DataList/PMDataList.cs +++ b/server/AyaNova/DataList/PMDataList.cs @@ -18,7 +18,7 @@ namespace AyaNova.DataList var RoleSet = BizRoles.GetRoleSet(DefaultListAType); AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change; DefaultColumns = new List() { "PMSerialNumber", "Customer", "PMNextServiceDate", "PMNextWoGenerateDate", "pmactive", "PMStopGeneratingDate" }; - DefaultSortBy = new Dictionary() { { "PMSerialNumber", "-" } }; + DefaultSortBy = new Dictionary() { { "PMNextWoGenerateDate", "-" } }; FieldDefinitions = new List(); FieldDefinitions.Add(new DataListFieldDefinition diff --git a/server/AyaNova/biz/PMBiz.cs b/server/AyaNova/biz/PMBiz.cs index d6ef8c20..b9263855 100644 --- a/server/AyaNova/biz/PMBiz.cs +++ b/server/AyaNova/biz/PMBiz.cs @@ -5196,7 +5196,7 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// // Process generation of pms to workorders // - internal static async Task Generate(AyContext ct, ILogger log) + internal static async Task GenerateAsync(AyContext ct, ILogger log) { #if (DEBUG) log.LogInformation("PMBiz - Generating"); @@ -5216,7 +5216,28 @@ namespace AyaNova.Biz #if (DEBUG) log.LogInformation($"PMBiz - processing pm id {pmid}"); #endif - var p = await ct.PM.Where(x => x.Id == pmid).FirstOrDefaultAsync(); + var p = await ct.PM.AsSplitQuery() + .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.ScheduledUsers) + .Include(w => w.Items) + .ThenInclude(wi => wi.Tasks.OrderBy(t => t.Sequence)) + .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 == pmid); + + if (p == null) { log.LogError($"PMBiz - PM was not fetchable when attempting to process PM id: {pmid}, deleted during processing?"); @@ -5301,6 +5322,9 @@ namespace AyaNova.Biz try { await ct.SaveChangesAsync(); +#if (DEBUG) + log.LogInformation($"PMBiz::GenerateAsync updated PM after successful generation {p.Serial}"); +#endif } catch (Exception ex) { @@ -5323,9 +5347,7 @@ namespace AyaNova.Biz internal static async Task NewServiceWorkOrderFromPMAsync(PM p, AyContext ct, ILogger log) { - WorkOrder wo = new WorkOrder(); - wo.Address = p.Address; wo.City = p.City; //o.CompleteByDate=?? @@ -5520,6 +5542,9 @@ namespace AyaNova.Biz //todo: NOTIFY FAIL return false; } +#if (DEBUG) + log.LogInformation($"PMBiz::NewServiceWorkOrderFromPMAsync created new workorder {NewObject.Serial}"); +#endif return true; } #endregion diff --git a/server/AyaNova/generator/CoreJobPMGenerate.cs b/server/AyaNova/generator/CoreJobPMGenerate.cs index 242752b5..08b7c32c 100644 --- a/server/AyaNova/generator/CoreJobPMGenerate.cs +++ b/server/AyaNova/generator/CoreJobPMGenerate.cs @@ -50,7 +50,7 @@ namespace AyaNova.Biz using (AyContext ct = AyaNova.Util.ServiceProviderProvider.DBContext) { - await PMBiz.Generate(ct, log); + await PMBiz.GenerateAsync(ct, log); } } catch (Exception ex)