Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method Update ( 
 | 
  DateTime base_i, 
 | 
  Duration updateInterval_i, 
 | 
  Number windowNrOfDays_i, 
 | 
  Number historyNrOfDays_i 
 | 
) as LibCal_Calendar 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // First validate the settings. 
 | 
    // If something is wrong the validation results in an error so that the actual update below will not be executed. 
 | 
    this.Validate( base_i, updateInterval_i, windowNrOfDays_i, historyNrOfDays_i ); 
 | 
     
 | 
    this.Base(           base_i            ); 
 | 
    this.UpdateInterval( updateInterval_i  ); 
 | 
    this.Window(         windowNrOfDays_i  ); 
 | 
    this.History(        historyNrOfDays_i );  // History is part of the Window. 
 | 
     
 | 
    // Recalcultate the EndDate and the StartDate of the calendar (also recalculates End and Start). 
 | 
    Transaction::Transaction().Propagate( attribute( LibCal_Calendar, EndDate   ) ); 
 | 
    Transaction::Transaction().Propagate( attribute( LibCal_Calendar, StartDate ) ); 
 | 
     
 | 
    // Re-generated the occurrences of all the events; this only needs to be done when the calendar window has been changed. 
 | 
    // Doing this here explicitly lets the changes be part of the current transaction, instead of only of the next transaction,  
 | 
    // triggered by Notification StartOrEndChanged. The Notification will still fire when the Start or End of the calendar was changed,  
 | 
    // but it will not re-generate the occurrences anymore because that is already done here. 
 | 
    this.GenerateOccurrencesWhenWindowChanged(); 
 | 
     
 | 
    return this; 
 | 
  *] 
 | 
} 
 |