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' } 
 | 
} 
 |