Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Function CalcIsModified 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    isModified    := false; 
 | 
    participation := this.Participation(); 
 | 
    timezone      := this.Calendar().astype( LibCal_Calendar ).GetTimeZone(); 
 | 
     
 | 
    if( participation.IsLeading() ) 
 | 
    { 
 | 
      event := participation.Event(); 
 | 
      isMoved24Hours := this.InitialStart().IsFinite()  // Ignore 'old' intervals that don't have an initial start registered. 
 | 
                  and   this.Start() <> this.InitialStart() 
 | 
                  and ( this.Start()  - this.InitialStart() ).HoursAsReal() mod 24 = 0; 
 | 
                       
 | 
      isModified := this.Start().TimeOfDay( timezone ) <> event.StartTimeOfDay() 
 | 
                 or this.End().  TimeOfDay( timezone ) <> event.EndTimeOfDay() 
 | 
                 or isMoved24Hours                                      // To detect a move or change in duration of a multitude of 24 hours, 
 | 
                 or ( this.End() - this.Start() ) <> event.Duration();  // because in that case the TimesOfDay or not changed. 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
      // For a subscribingETI, take over the value from the LeadingETI. 
 | 
      isModified := this.LeadingETI().IsModified(); 
 | 
    } 
 | 
     
 | 
    this.IsModified( isModified ); 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |