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