Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method AddSubscription ( 
 | 
  LibCal_Calendar subscriber_i, 
 | 
  Boolean useLeadingPeriod_i 
 | 
) as LibCal_Subscription 
 | 
{ 
 | 
  Description: 'Let subscriber_i subscribe to the Participation by creating a copy of it and registering it as Subscription.' 
 | 
  TextBody: 
 | 
  [* 
 | 
    subscription := null( LibCal_Subscription ); 
 | 
     
 | 
    // Don't add a subscripton to self (safe-guard). 
 | 
    if( this.Calendar() <> subscriber_i ) 
 | 
    { 
 | 
      // Create a subscription for calendar_i, including the RecurrencePeriod if applicable. 
 | 
      includingPeriod := not useLeadingPeriod_i; 
 | 
      subscription    := LibCal_Subscription::Create( subscriber_i, this, includingPeriod ); 
 | 
      subscription.UseLeadingPeriod( useLeadingPeriod_i ); 
 | 
       
 | 
      // Register as subscription of the current LeadingParticipation. 
 | 
      this.Subscription( relinsert, subscription ); 
 | 
     
 | 
      // Copy all occurrences of the LeadingParticipation. 
 | 
      // The ones that are not applicable will be removed later on, if necessary. 
 | 
      subscription.CopyOccurrences(); 
 | 
    } 
 | 
     
 | 
    return subscription; 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |