haorenhui
2023-10-30 6d6cc10d9e8e242661da7fd655dec155a09d676c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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' }
}