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_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
||||
"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_TZ_OFFSET": "-7",
|
||||
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"
|
||||
|
||||
@@ -5244,95 +5244,106 @@ namespace AyaNova.Biz
|
||||
//todo: NOTIFY FAIL
|
||||
continue;
|
||||
}
|
||||
//make new workorder
|
||||
if (await NewServiceWorkOrderFromPMAsync(p, ct, log))
|
||||
try
|
||||
{
|
||||
//Success
|
||||
|
||||
//Calculate next service date
|
||||
DateTime NewNextServiceDate = CalculateNewDateFromSpanAndUnit(p.NextServiceDate, p.RepeatUnit, p.RepeatInterval);
|
||||
|
||||
//Check Exclusions and adjust
|
||||
if ((int)p.ExcludeDaysOfWeek != 0)
|
||||
//make new workorder
|
||||
if (await NewServiceWorkOrderFromPMAsync(p, ct, log))
|
||||
{
|
||||
//days of week cant be used as flags hence our own
|
||||
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);
|
||||
//Success
|
||||
|
||||
while (excluded.Contains(NewNextServiceDate.DayOfWeek))
|
||||
NewNextServiceDate = NewNextServiceDate.AddDays(1);
|
||||
}
|
||||
//Calculate next service date
|
||||
DateTime NewNextServiceDate = CalculateNewDateFromSpanAndUnit(p.NextServiceDate, p.RepeatUnit, p.RepeatInterval);
|
||||
|
||||
TimeSpan tsAdd = NewNextServiceDate - p.NextServiceDate;
|
||||
|
||||
//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)
|
||||
//Check Exclusions and adjust
|
||||
if ((int)p.ExcludeDaysOfWeek != 0)
|
||||
{
|
||||
pmsu.StartDate = addts(pmsu.StartDate, tsAdd);
|
||||
pmsu.StopDate = addts(pmsu.StopDate, tsAdd);
|
||||
//days of week cant be used as flags hence our own
|
||||
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)
|
||||
{
|
||||
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);
|
||||
TimeSpan tsAdd = NewNextServiceDate - p.NextServiceDate;
|
||||
|
||||
}
|
||||
foreach (PMItemTask pmt in pmi.Tasks)
|
||||
pmt.CompletedDate = addts(pmt.CompletedDate, tsAdd);
|
||||
foreach (PMItemOutsideService pmo in pmi.OutsideServices)
|
||||
//Stop generating date reached??
|
||||
if (p.StopGeneratingDate != null && p.StopGeneratingDate < NewNextServiceDate)
|
||||
{
|
||||
pmo.SentDate = addts(pmo.SentDate, tsAdd);
|
||||
pmo.ReturnDate = addts(pmo.ReturnDate, tsAdd);
|
||||
pmo.ETADate = addts(pmo.ETADate, tsAdd);
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
try
|
||||
{
|
||||
await ct.SaveChangesAsync();
|
||||
|
||||
//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);
|
||||
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)
|
||||
log.LogInformation($"PMBiz::GenerateAsync updated PM after successful generation {p.Serial}");
|
||||
log.LogInformation($"PMBiz::GenerateAsync updated PM after successful generation {p.Serial}");
|
||||
#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();
|
||||
wip.Description = pmp.Description;
|
||||
wip.PartId = pmp.PartId;
|
||||
wip.PartWarehouseId = pmp.PartWarehouseId;
|
||||
wip.PriceOverride = pmp.PriceOverride;
|
||||
wip.Quantity = pmp.Quantity;
|
||||
//wip.Serials=pmp.Serials;
|
||||
|
||||
Reference in New Issue
Block a user