| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetPeriodsForOperation ( | 
|   const LibOpt_Scope scope, | 
|   const Operation operation | 
| ) const as constcontent owning Period_MPs | 
| { | 
|   Description: 'Returns the periods on which the input operation should be considered by the optimizer' | 
|   TextBody: | 
|   [* | 
|     periods := construct( Period_MPs, constcontent ); | 
|      | 
|     if( this.GetPeriodsFromPeriodTaskOperation() ) | 
|     { | 
|       periods := selectset( operation,  | 
|                              PeriodTaskOperationInScope.UnitPeriod.Period_MP,  | 
|                              period,  | 
|                              true,  | 
|                              true );  | 
|     } | 
|     else // if this is a regular optimizer run, select all periods in this algorithm run with a valid PT | 
|     { | 
|       periods := selectset( scope.GetPeriodInOptimizerRunConst(),  | 
|                             Elements,  | 
|                             period,  | 
|                             not operation.IsFrozenInPeriod( period )  | 
|                             and PeriodTaskOperation::GetIsValidPeriodTask( operation, period ) );   | 
|     } | 
|      | 
|     return &periods | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |