| 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 ); | 
|   *] | 
| } |