Quintiq file version 2.0
|
#parent: #root
|
StaticMethod GetDateOfDayOfMonth (
|
Date startOfMonth_i,
|
String weekOfMonth_i,
|
String dayOfWeek_i
|
) declarative remote as Date
|
{
|
Description:
|
[*
|
Determine the date of the applicable day of the month.
|
Is implemented as a static method so it can be also used by RecurrencePatternYearly.
|
*]
|
TextBody:
|
[*
|
date := startOfMonth_i;
|
|
// Get the first applicable day of the week.
|
days := Translations::Pattern_Days().Tokenize( ";" );
|
dayOfWeek := days.Find( dayOfWeek_i ) + 1; // + 1 because monday = 1
|
|
while( date.DayOfWeek() <> dayOfWeek )
|
{
|
date := date + 1;
|
}
|
|
// Take the same day of the Nth week.
|
weeks := Translations::Pattern_WeekOfMonth().Tokenize( ";" );
|
week := weeks.Find( weekOfMonth_i );
|
|
date := date + week * 7;
|
|
// If 'last' results in a date in the next month, take the day of the previous week
|
// (i.e. the fourth week is the last).
|
if( date.Month() <> startOfMonth_i.Month() )
|
{
|
date := date - 7;
|
}
|
|
return date;
|
*]
|
}
|