chenqinghong
2024-05-07 3ec06a830367465068963156dcc1d8e522571c13
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
34
35
36
37
38
39
40
41
42
43
44
45
Quintiq file version 2.0
#parent: #root
Method SelectScenarioReadOnly (
  Scenario scenario
) as Boolean id:Method_ApplicationLibMacroPlanner_SelectScenarioReadOnly
{
  #keys: '[144528.3.487223653]'
  Body:
  [*
    // Select the active MacroPlan based on passed in scenario
    // Set active MacroPlan to the application
    // ComponentMDS::Create( Application ) is not available in Editor -- still finding, if exist, all this code will be moved.
    status := false;
    
    if( not isnull( scenario ) )
    {
      loop := true;
      p := Progress::Level( 'Loading scenario...', 10 );
    
      // changed the operation in "p.Current() < p.Maximum()" from <= to < as p.Maximum will never be reached
      // causing an infinite loop when a dataset is no longer available
      while( loop and p.Current() < p.Maximum() )
      {
        componentmds := ComponentMDS::CreateForLoadedMDSsOnly( Application );
        mdsinstance := select( componentmds, ComponentMDSKinds.ComponentMDSInstances, m, m.MDSID().MDSKey() = scenario.DatasetMDSID() );
    
        if( not isnull( mdsinstance ) )
        {
          mdsinstance.ComponentMDSKind().SelectInstance( mdsinstance );
          componentmds.Apply();
          // To set the data holder if only a scenario has changed.
          if( DataHolderActiveScenario.Data() <> scenario )
          {
            DataHolderActiveScenario.Data( scenario );
          }
          status := true;
          loop := false;
        }
        p.Increment();
      }
    }
    
    return status;
  *]
}