This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -53,7 +53,7 @@
|
|||||||
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
|
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
|
||||||
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
||||||
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
|
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
|
||||||
"AYANOVA_SERVER_TEST_MODE": "true",
|
"AYANOVA_SERVER_TEST_MODE": "false",
|
||||||
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
|
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
|
||||||
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
|
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
|
||||||
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"
|
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"
|
||||||
|
|||||||
@@ -5244,95 +5244,106 @@ namespace AyaNova.Biz
|
|||||||
//todo: NOTIFY FAIL
|
//todo: NOTIFY FAIL
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//make new workorder
|
try
|
||||||
if (await NewServiceWorkOrderFromPMAsync(p, ct, log))
|
|
||||||
{
|
{
|
||||||
//Success
|
//make new workorder
|
||||||
|
if (await NewServiceWorkOrderFromPMAsync(p, ct, log))
|
||||||
//Calculate next service date
|
|
||||||
DateTime NewNextServiceDate = CalculateNewDateFromSpanAndUnit(p.NextServiceDate, p.RepeatUnit, p.RepeatInterval);
|
|
||||||
|
|
||||||
//Check Exclusions and adjust
|
|
||||||
if ((int)p.ExcludeDaysOfWeek != 0)
|
|
||||||
{
|
{
|
||||||
//days of week cant be used as flags hence our own
|
//Success
|
||||||
var excluded = new List<DayOfWeek>();
|
|
||||||
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Monday)) excluded.Add(DayOfWeek.Monday);
|
|
||||||
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Tuesday)) excluded.Add(DayOfWeek.Tuesday);
|
|
||||||
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Wednesday)) excluded.Add(DayOfWeek.Wednesday);
|
|
||||||
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Thursday)) excluded.Add(DayOfWeek.Thursday);
|
|
||||||
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Friday)) excluded.Add(DayOfWeek.Friday);
|
|
||||||
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Saturday)) excluded.Add(DayOfWeek.Saturday);
|
|
||||||
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Sunday)) excluded.Add(DayOfWeek.Sunday);
|
|
||||||
|
|
||||||
while (excluded.Contains(NewNextServiceDate.DayOfWeek))
|
//Calculate next service date
|
||||||
NewNextServiceDate = NewNextServiceDate.AddDays(1);
|
DateTime NewNextServiceDate = CalculateNewDateFromSpanAndUnit(p.NextServiceDate, p.RepeatUnit, p.RepeatInterval);
|
||||||
}
|
|
||||||
|
|
||||||
TimeSpan tsAdd = NewNextServiceDate - p.NextServiceDate;
|
//Check Exclusions and adjust
|
||||||
|
if ((int)p.ExcludeDaysOfWeek != 0)
|
||||||
//Stop generating date reached??
|
|
||||||
if (p.StopGeneratingDate != null && p.StopGeneratingDate < NewNextServiceDate)
|
|
||||||
{
|
|
||||||
p.Active = false;
|
|
||||||
await ct.SaveChangesAsync();
|
|
||||||
log.LogTrace($"PMBiz:: PM {p.Serial} has reached it's stop generating date and has been automatically deactivated");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Re-schedule PM
|
|
||||||
p.NextServiceDate = NewNextServiceDate;
|
|
||||||
SetGenerateDate(p);
|
|
||||||
foreach (PMItem pmi in p.Items)
|
|
||||||
{
|
|
||||||
pmi.RequestDate = addts(pmi.RequestDate, tsAdd);
|
|
||||||
foreach (PMItemScheduledUser pmsu in pmi.ScheduledUsers)
|
|
||||||
{
|
{
|
||||||
pmsu.StartDate = addts(pmsu.StartDate, tsAdd);
|
//days of week cant be used as flags hence our own
|
||||||
pmsu.StopDate = addts(pmsu.StopDate, tsAdd);
|
var excluded = new List<DayOfWeek>();
|
||||||
|
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Monday)) excluded.Add(DayOfWeek.Monday);
|
||||||
|
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Tuesday)) excluded.Add(DayOfWeek.Tuesday);
|
||||||
|
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Wednesday)) excluded.Add(DayOfWeek.Wednesday);
|
||||||
|
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Thursday)) excluded.Add(DayOfWeek.Thursday);
|
||||||
|
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Friday)) excluded.Add(DayOfWeek.Friday);
|
||||||
|
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Saturday)) excluded.Add(DayOfWeek.Saturday);
|
||||||
|
if (p.ExcludeDaysOfWeek.HasFlag(AyaDaysOfWeek.Sunday)) excluded.Add(DayOfWeek.Sunday);
|
||||||
|
|
||||||
|
while (excluded.Contains(NewNextServiceDate.DayOfWeek))
|
||||||
|
NewNextServiceDate = NewNextServiceDate.AddDays(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (PMItemLoan pml in pmi.Loans)
|
TimeSpan tsAdd = NewNextServiceDate - p.NextServiceDate;
|
||||||
{
|
|
||||||
pml.DueDate = addts(pml.DueDate, tsAdd);
|
|
||||||
pml.OutDate = addts(pml.OutDate, tsAdd);
|
|
||||||
pml.ReturnDate = addts(pml.ReturnDate, tsAdd);
|
|
||||||
}
|
|
||||||
foreach (PMItemLabor pmlab in pmi.Labors)
|
|
||||||
{
|
|
||||||
pmlab.ServiceStartDate = addts(pmlab.ServiceStartDate, tsAdd);
|
|
||||||
pmlab.ServiceStopDate = addts(pmlab.ServiceStopDate, tsAdd);
|
|
||||||
}
|
|
||||||
foreach (PMItemTravel pmtrav in pmi.Travels)
|
|
||||||
{
|
|
||||||
pmtrav.TravelStartDate = addts(pmtrav.TravelStartDate, tsAdd);
|
|
||||||
pmtrav.TravelStopDate = addts(pmtrav.TravelStopDate, tsAdd);
|
|
||||||
|
|
||||||
}
|
//Stop generating date reached??
|
||||||
foreach (PMItemTask pmt in pmi.Tasks)
|
if (p.StopGeneratingDate != null && p.StopGeneratingDate < NewNextServiceDate)
|
||||||
pmt.CompletedDate = addts(pmt.CompletedDate, tsAdd);
|
|
||||||
foreach (PMItemOutsideService pmo in pmi.OutsideServices)
|
|
||||||
{
|
{
|
||||||
pmo.SentDate = addts(pmo.SentDate, tsAdd);
|
p.Active = false;
|
||||||
pmo.ReturnDate = addts(pmo.ReturnDate, tsAdd);
|
await ct.SaveChangesAsync();
|
||||||
pmo.ETADate = addts(pmo.ETADate, tsAdd);
|
log.LogTrace($"PMBiz:: PM {p.Serial} has reached it's stop generating date and has been automatically deactivated");
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
try
|
//Re-schedule PM
|
||||||
{
|
p.NextServiceDate = NewNextServiceDate;
|
||||||
await ct.SaveChangesAsync();
|
SetGenerateDate(p);
|
||||||
|
foreach (PMItem pmi in p.Items)
|
||||||
|
{
|
||||||
|
pmi.RequestDate = addts(pmi.RequestDate, tsAdd);
|
||||||
|
foreach (PMItemScheduledUser pmsu in pmi.ScheduledUsers)
|
||||||
|
{
|
||||||
|
pmsu.StartDate = addts(pmsu.StartDate, tsAdd);
|
||||||
|
pmsu.StopDate = addts(pmsu.StopDate, tsAdd);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (PMItemLoan pml in pmi.Loans)
|
||||||
|
{
|
||||||
|
pml.DueDate = addts(pml.DueDate, tsAdd);
|
||||||
|
pml.OutDate = addts(pml.OutDate, tsAdd);
|
||||||
|
pml.ReturnDate = addts(pml.ReturnDate, tsAdd);
|
||||||
|
}
|
||||||
|
foreach (PMItemLabor pmlab in pmi.Labors)
|
||||||
|
{
|
||||||
|
pmlab.ServiceStartDate = addts(pmlab.ServiceStartDate, tsAdd);
|
||||||
|
pmlab.ServiceStopDate = addts(pmlab.ServiceStopDate, tsAdd);
|
||||||
|
}
|
||||||
|
foreach (PMItemTravel pmtrav in pmi.Travels)
|
||||||
|
{
|
||||||
|
pmtrav.TravelStartDate = addts(pmtrav.TravelStartDate, tsAdd);
|
||||||
|
pmtrav.TravelStopDate = addts(pmtrav.TravelStopDate, tsAdd);
|
||||||
|
|
||||||
|
}
|
||||||
|
foreach (PMItemTask pmt in pmi.Tasks)
|
||||||
|
pmt.CompletedDate = addts(pmt.CompletedDate, tsAdd);
|
||||||
|
foreach (PMItemOutsideService pmo in pmi.OutsideServices)
|
||||||
|
{
|
||||||
|
pmo.SentDate = addts(pmo.SentDate, tsAdd);
|
||||||
|
pmo.ReturnDate = addts(pmo.ReturnDate, tsAdd);
|
||||||
|
pmo.ETADate = addts(pmo.ETADate, tsAdd);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await ct.SaveChangesAsync();
|
||||||
#if (DEBUG)
|
#if (DEBUG)
|
||||||
log.LogInformation($"PMBiz::GenerateAsync updated PM after successful generation {p.Serial}");
|
log.LogInformation($"PMBiz::GenerateAsync updated PM after successful generation {p.Serial}");
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
log.LogError(ex, $"PMBiz::GenerateAsync error updating PM after generation {p.Serial}");
|
||||||
|
//todo: NOTIFY FAIL
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
log.LogError(ex, $"PMBiz::GenerateAsync error updating PM after generation {p.Serial}");
|
|
||||||
//todo: NOTIFY FAIL
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
log.LogError(ex, $"PMBiz::GenerateAsync error generating Work order from PM {p.Serial}");
|
||||||
|
//todo: NOTIFY FAIL
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5421,6 +5432,7 @@ namespace AyaNova.Biz
|
|||||||
var wip = new WorkOrderItemPart();
|
var wip = new WorkOrderItemPart();
|
||||||
wip.Description = pmp.Description;
|
wip.Description = pmp.Description;
|
||||||
wip.PartId = pmp.PartId;
|
wip.PartId = pmp.PartId;
|
||||||
|
wip.PartWarehouseId = pmp.PartWarehouseId;
|
||||||
wip.PriceOverride = pmp.PriceOverride;
|
wip.PriceOverride = pmp.PriceOverride;
|
||||||
wip.Quantity = pmp.Quantity;
|
wip.Quantity = pmp.Quantity;
|
||||||
//wip.Serials=pmp.Serials;
|
//wip.Serials=pmp.Serials;
|
||||||
|
|||||||
Reference in New Issue
Block a user