Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method CreateScaleFactors ( 
 | 
  StrategyLevelMacroPlan slm 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    strategymp := this.MacroPlan().StrategyMacroPlan(); 
 | 
    invholding := strategymp.InventoryHoldingScalingFactor() 
 | 
    mass := strategymp.MassScalingFactor();  
 | 
    money := strategymp.MonetaryScalingFactor();  
 | 
    time := strategymp.TimeScalingFactor();  
 | 
    timeaccount := strategymp.TimeAccountScalingFactor();  
 | 
     
 | 
     
 | 
    if ( not isnull( slm ) and slm.MetaLastAutoScalingRun().IsFinite() ) // when providing slm we use level specific factors instead  
 | 
    { 
 | 
      invholding := slm.MetaScalingFactorInventoryHolding();  
 | 
      mass := slm.MetaScalingFactorMass();  
 | 
      money := slm.MetaScalingFactorMonetary();  
 | 
      time := slm.MetaScalingFactorTime();  
 | 
      timeaccount := slm.MetaScalingFactorTimeAccount();  
 | 
      assert( invholding > 0 and mass > 0 and money > 0 and time > 0 and timeaccount > 0, 'Unexpected scaling factor <=0. For level ', slm.Level() );  
 | 
    } 
 | 
     
 | 
    scalingalgorithm := this.AlgorithmScaling();   
 | 
     
 | 
    scalingalgorithm.SetScaleFactor( Optimization::ScalingTypeNameInventoryHolding(), invholding  );  
 | 
    scalingalgorithm.SetScaleFactor( Optimization::ScalingTypeNameMass(), mass );  
 | 
    scalingalgorithm.SetScaleFactor( Optimization::ScalingTypeNameMonetary(), money );  
 | 
    scalingalgorithm.SetScaleFactor( Optimization::ScalingTypeNameNone(), 1.0 );  
 | 
    scalingalgorithm.SetScaleFactor( Optimization::ScalingTypeNameTime(), time );  
 | 
    scalingalgorithm.SetScaleFactor( Optimization::ScalingTypeNameTimeAccount(), timeaccount ); 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |