This commit is contained in:
2021-07-28 17:06:09 +00:00
parent 6b9b381355
commit 68132e9426
2 changed files with 88 additions and 4 deletions

View File

@@ -409,10 +409,93 @@ namespace AyaNova.Biz
}
/// <summary>
/// Calculate generate date based on service date and
/// threshold span and unit
/// </summary>
internal void SetGenerateDate()
{
if (this.mNextServiceDate.IsEmpty) return;
if (this.mThresholdSpan == 0)
{
this.mGenerateDate = this.mNextServiceDate;
MarkDirty();
return;
}
mGenerateDate = new SmartDate(Workorder.GetDateFromSpanAndUnit(mNextServiceDate.Date, this.mThresholdSpanUnit, -mThresholdSpan));
MarkDirty();
}
#region Date time calcs helpers
//Takes an AyaNova day of week and returns
//a System.DayOfWeek
//Assumes that AyaDayOfWeek is NOT "AnyDay"
internal static System.DayOfWeek AyaToSystemDayOfWeek(AyaDayOfWeek day)
{
switch (day)
{
case AyaDayOfWeek.Monday:
return DayOfWeek.Monday;
case AyaDayOfWeek.Tuesday:
return DayOfWeek.Tuesday;
case AyaDayOfWeek.Wednesday:
return DayOfWeek.Wednesday;
case AyaDayOfWeek.Thursday:
return DayOfWeek.Thursday;
case AyaDayOfWeek.Friday:
return DayOfWeek.Friday;
case AyaDayOfWeek.Saturday:
return DayOfWeek.Saturday;
case AyaDayOfWeek.Sunday:
return DayOfWeek.Sunday;
}
throw new System.ArgumentOutOfRangeException("DayOfWeekConverter: AyaDayOfWeek.AnyDayOfWeek is not supported");
}
internal static DateTime GetDateFromSpanAndUnit(DateTime StartDate, AyaUnitsOfTime unit, int multiple)
{
switch (unit)
{
case AyaUnitsOfTime.Seconds:
return StartDate.AddSeconds(multiple);
case AyaUnitsOfTime.Minutes:
return StartDate.AddMinutes(multiple);
case AyaUnitsOfTime.Hours:
return StartDate.AddHours(multiple);
case AyaUnitsOfTime.Days:
return StartDate.AddDays(multiple);
case AyaUnitsOfTime.Weeks:
throw new System.NotSupportedException("GetDateFromSpanAndUnit: Weeks not supported");
case AyaUnitsOfTime.Months:
return StartDate.AddMonths(multiple);
case AyaUnitsOfTime.Years:
return StartDate.AddYears(multiple);
}
//fail safe:
return StartDate;
}
*/
#endregion gen service wo from pm
internal class PMBiz : BizObject, IJobObject, ISearchAbleObject, IReportAbleObject, IExportAbleObject
{
internal PMBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles, UserType currentUserType)

View File

@@ -3702,9 +3702,10 @@ namespace AyaNova.Util
o.ExcludeDaysOfWeek= new bool[]{true,true,true,true,true,false,false};//Monday to Sunday (0-6 index)
o.Active=true;
o.NextServiceDate=woDate.AddDays(1);
o.Repeat=new TimeSpan()
// public TimeSpan Repeat { get; set; }//was generate span
// public TimeSpan GenerateBefore { get; set; }//was threshold span
o.RepeatInterval=1;
o.RepeatUnit= PMTimeUnit.Months;
o.GenerateBeforeInterval=3;
o.GenerateBeforeUnit=PMTimeUnit.Days;
// public DateTime? GenerateDate { get; set; }//Internal, not exposed to UI and is the date to do the next generate on that takes into account generatebefore and next service date and is calcd when generate happens for next time see pmbiz top with reference v7 code
//------