Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method SetRecurrencePatternYearly ( 
 | 
  Number month_i, 
 | 
  String weekOfMonth_i, 
 | 
  String dayOfWeek_i 
 | 
) as LibCal_Event 
 | 
{ 
 | 
  Description: 'Set a recurrence pattern that recurs every year on a specific day of a month of the year.' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Use a FeedbackObject the collect the validation feedback. 
 | 
    feedback := LibCal_Validate::Event_Pattern_Yearly( month_i, weekOfMonth_i, dayOfWeek_i, this.GetEventInfo() ); 
 | 
     
 | 
    // Process the feedback that has been registered by the validation (if any). 
 | 
    LibCal_Util::ProcessFeedbackObject( feedback ); 
 | 
     
 | 
    // The below is only executed when no validation errors were encountered. 
 | 
    // Check if a new RecurrencePattern must be created. 
 | 
    pattern      := guard( this.RecurrencePattern().astype( LibCal_RecurrencePatternYearly ), null( LibCal_RecurrencePatternYearly ) ); 
 | 
    changeOfType := isnull( pattern ); 
 | 
     
 | 
    isChanged := changeOfType              // There was no pattern yet, or it was not a Yearly pattern. 
 | 
              or pattern.IsDay() <> false  // The existing Yearly pattern was a specific date. 
 | 
              or pattern.Month() <> month_i 
 | 
              or pattern.PatternWeekOfMonth() <> weekOfMonth_i 
 | 
              or pattern.PatternDayOfWeek()   <> dayOfWeek_i; 
 | 
     
 | 
    if( isChanged ) 
 | 
    { 
 | 
      // Create the RecurrencePattern. 
 | 
      LibCal_RecurrencePatternYearly::Create( this, month_i, weekOfMonth_i, dayOfWeek_i ); 
 | 
      this.IsChanged( true ); 
 | 
         
 | 
      // Initialize the RecurrencePeriod of the LeadingParticipation if necessary. 
 | 
      this.InitializeRecurrencePeriod(); 
 | 
    } 
 | 
     
 | 
    // Make the API fluent. 
 | 
    return this; 
 | 
  *] 
 | 
} 
 |