Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Function CalcExpectedCompletionDate 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    ecd := Date::MinDate(); 
 | 
     
 | 
    // If the step is finished then esimated date is the actual completion date 
 | 
    if ( this.IsCompleted() ) 
 | 
    { 
 | 
      ecd := this.CompletionDate(); 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
      // If user didn't provide an estimate then we assume completion on duedate 
 | 
      ecd := ifexpr ( this.HasExpectedCompletionDateManual() 
 | 
                    , this.ExpectedCompletionDateManual() 
 | 
                    , this.DueDate() 
 | 
                    ); 
 | 
       
 | 
      // if the duedate or estimate is in past then we assume completion still today  
 | 
      ecd := maxvalue( ecd, this.GetCurrentDate() ); 
 | 
    } 
 | 
     
 | 
    this.ExpectedCompletionDate( ecd ); 
 | 
  *] 
 | 
} 
 |