| Quintiq file version 2.0 | 
| #parent: #root | 
| Method SynchronizeTools ( | 
|   LibOpt_Scope scope | 
| ) | 
| { | 
|   Description: | 
|   [* | 
|     Method to create Tool and ToolInUnitPeriod objects. | 
|     These objects are used as index objects within the optimizer | 
|   *] | 
|   TextBody: | 
|   [* | 
|     this.MacroPlan().Tool( relflush);  | 
|      | 
|     traverse( scope.GetUnitInOptimizerRun(), Elements, unit, unit.HasToolOperations() )  | 
|     { | 
|       traverse( unit, UnitPeriod, up, scope.Contains( up.UnitPeriodInOptimizerRun() ) ) | 
|       { | 
|         unitperiodoperations := this.GetOperationsForUnitPeriod( scope, up ); | 
|         unitperiodtools := selectuniquevalues( unitperiodoperations, Elements.RoutingStep, routingstep, true, routingstep.Tool() ); | 
|          | 
|         traverse( unitperiodtools, Elements, toolname, toolname.Length() > 0) | 
|         { | 
|           tool := select( this, MacroPlan.Tool, t, t.Name() = toolname ); | 
|            | 
|           if ( isnull( tool ) ) | 
|           { | 
|             tool := this.MacroPlan().Tool( relnew, Name := toolname ) | 
|           } | 
|           if( not exists( tool, ToolInUnitPeriod.UnitPeriod, unitperiod, unitperiod = up ) ) | 
|           { | 
|             toolinperiod := tool.ToolInUnitPeriod( relnew ) | 
|             toolinperiod.UnitPeriod( relset, up) | 
|           }   | 
|         } | 
|       } | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |