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; 
 | 
  *] 
 | 
} 
 |