Quintiq file version 2.0 
 | 
#parent: #root 
 | 
MethodOverride CreateRun () as LibOpt_Run 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    run := super.CreateRun(); 
 | 
     
 | 
    mp := this.Optimization().astype( Optimization ).MacroPlan();  
 | 
     
 | 
    settings := this.ActiveSettings().astype( OptimizerFullRunSettings );  
 | 
    puzzle := select( mp, OptimizerPuzzle, puzzle, true, puzzle.Name() = settings.PuzzleName() );  
 | 
     
 | 
    periodstart := minselect( mp, Period_MP, p, not p.IsHistorical(), p.StartDate() );  
 | 
    periodend := mp.LastPlanningPeriod();  
 | 
     
 | 
    this.Optimization().astype( Optimization ).GetPeriodsForOTS( periodstart, periodend, settings );  
 | 
     
 | 
    issmartplan := false;  
 | 
    issmartplanforperiodtask := false;   
 | 
    hastotalsupplyuser := false;  
 | 
    totalsupplyuser := 0.0;  
 | 
    smartplanpispips := null( ProductInStockingPointInPeriodPlanningLeafs );  
 | 
    isupstreamsmartplan := false;  
 | 
    ismiddleoutsmartplan := false;  
 | 
    isonlyplanonestepupstream := false;  
 | 
    ispostprocessing := false;  
 | 
    isforcenoautoscaling := true;  
 | 
    isoverridemanualplanning := settings.OverrideManualPlanning();  
 | 
    isinventoryoptimizationrun := false;  
 | 
    isusingselectedunits := false;  
 | 
    units := null( Units );  
 | 
    process := null( Process_MP );  
 | 
     
 | 
    algrun := mp.InitializeOptimizerRun( issmartplan,  
 | 
                                         issmartplanforperiodtask,  
 | 
                                         hastotalsupplyuser,  
 | 
                                         totalsupplyuser,  
 | 
                                         smartplanpispips,  
 | 
                                         isupstreamsmartplan,  
 | 
                                         ismiddleoutsmartplan,  
 | 
                                         isonlyplanonestepupstream,  
 | 
                                         ispostprocessing, 
 | 
                                         isforcenoautoscaling,  
 | 
                                         null( Strategy ), // for OTS we have a workaround via method  LibOpt_BT_RunSequenceElement.MyMethodTemp that copies the strategy 
 | 
                                         isoverridemanualplanning,  
 | 
                                         periodstart,  
 | 
                                         periodend,  
 | 
                                         isinventoryoptimizationrun,  
 | 
                                         isusingselectedunits,  
 | 
                                         units,  
 | 
                                         process,  
 | 
                                         puzzle );   
 | 
     
 | 
     
 | 
    context := RunContextForCapacityPlanning::Create( run, units, periodstart, periodend ); // our create component expects a fully initialized runcontext (for which we need an AlgorithmRun first) 
 | 
    context.Initialize( algrun ); 
 | 
    return run; 
 | 
  *] 
 | 
} 
 |