| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod Create ( | 
|   MacroPlan owner, | 
|   Strategy strategy | 
| ) as StrategyMacroPlan | 
| { | 
|   Description: 'Construct copy of strategy for use in MacroPlan dataset' | 
|   TextBody: | 
|   [* | 
|     strat := owner.StrategyMacroPlan( relnew );  | 
|     strat.ScenarioName( owner.ScenarioName() );  | 
|     strat.Name( strategy.Name() );  | 
|     strat.MassScalingFactor( strategy.MassScalingFactor() );  | 
|     strat.MonetaryScalingFactor( strategy.MonetaryScalingFactor() );  | 
|     strat.TimeScalingFactor( strategy.TimeScalingFactor() );  | 
|     strat.TimeAccountScalingFactor( strategy.TimeAccountScalingFactor() );  | 
|     strat.InventoryHoldingScalingFactor( strategy.InventoryHoldingScalingFactor() );  | 
|     strat.LastAutoScalingRun( strategy.LastAutoScalingRun() );  | 
|     strat.MetaOptimizerIsCollapseLevel( strategy.MetaOptimizerIsCollapseLevel() );  | 
|     strat.MetaOptimizerCollapseLevelWeight( strategy.MetaOptimizerCollapseLevelWeight() );  | 
|     strat.MetaOptimizerFirstLevelOverride( strategy.MetaOptimizerFirstLevelOverride() ); | 
|     strat.MetaOptimizerFirstLevelHasOverride( strategy.MetaOptimizerFirstLevelHasOverride() );   | 
|     strat.MetaOptimizerLastLevelOverride( strategy.MetaOptimizerLastLevelOverride() );  | 
|     strat.MetaOptimizerLastLevelHasOverride( strategy.MetaOptimizerLastLevelHasOverride() );  | 
|     strat.MetaOptimizerMinimizeInvEndAfterLastLevel( strategy.MetaOptimizerMinimizeInvEndAfterLastLevel() );  | 
|     strat.UseMetaOptimizer( strategy.UseMetaOptimizer() );  | 
|     strat.MetaOptimizerMaxNumberOfSecondsAllIterations( strategy.MetaOptimizerMaxNumberOfSecondsAllIterations() );  | 
|     strat.MetaOptimizerRunFullPlanPriorToFocus( strategy.MetaOptimizerRunFullPlanPriorToFocus() );  | 
|     strat.UseCampaignSequenceOptimizer( strategy.UseCampaignSequenceOptimizer() ) | 
|     strat.MaxNrOfElemementsCampaignOptimizerCombi( strategy.MaxNrOfElemementsCampaignOptimizerCombi() );  | 
|     strat.UseHierarchicalSolver( strategy.UseHierarchicalSolver() );  | 
|     strat.UseShiftOptimization( strategy.UseShiftOptimization() ); | 
|      | 
|     slevelzero := select(  strategy, StrategyLevel, l, true, l.Level() = 0 ); | 
|     if ( isnull( slevelzero ) ) // if strategy does not specify settings for hidden level 0, we create one on the fly | 
|     {  | 
|       strategy.CheckAddStrategyLevelZero();  | 
|     } | 
|      | 
|     minlevelvalue := minvalue( strategy.MetaOptimizerLastLevel(), strategy.MaxActiveLevel() );  | 
|     traverse( strategy,  | 
|               StrategyLevel,  | 
|               strategylevel,  | 
|               not strategy.UseMetaOptimizer() or strategylevel.Level() <= minlevelvalue )  | 
|     { | 
|       StrategyLevelMacroPlan::Create( strat, strategylevel );    | 
|     } | 
|      | 
|     traverse( strategy, KPIWeight, kpiweight )  | 
|     { | 
|       KPIWeightMacroPlan::Create( strat, kpiweight );    | 
|     } | 
|      | 
|     return strat; | 
|   *] | 
| } |