| Quintiq file version 2.0 | 
| #parent: #root | 
| Method SynchronizeSolverSettings | 
| { | 
|   Description: 'Synchronizes the SolverSetting of all SolverSettingGroup based on the KT' | 
|   TextBody: | 
|   [* | 
|     // Martijn van Elzakker Jul-21-2015 (created) | 
|     // Sets all current solversettings to not be in the KT | 
|     // then it traverses the KT and for each SolverSettingGroup it checks if a solversetting with the ParameterNumber from the KT exists | 
|     // if it does not, it creates a new SolverSetting | 
|     // if it does exist, it updates that solversetting | 
|     // in both cases it flags the solversetting as being part of the KT | 
|     // at the end of the method all solversetting that are still flagged as not part of the KT are deleted | 
|      | 
|     traverse( this, SolverSettingGroup.SolverSetting, solversetting ) | 
|     { | 
|       solversetting.IsInKnowledgeTable( false ); | 
|     } | 
|      | 
|     solversettingstable := SolverSettingsTable::Table(); | 
|      | 
|     traverse( solversettingstable, Rows, row ) | 
|     { | 
|       owner := select( this, | 
|                        SolverSettingGroup, | 
|                        solversettinggroup, | 
|                        solversettinggroup.Name() = row.Name() ); | 
|      | 
|       if( not isnull( owner ) ) | 
|       { | 
|         setting := select( owner, | 
|                            SolverSetting, | 
|                            solversetting, | 
|                            solversetting.ParameterNumber() = row.ParameterNumber() ); | 
|      | 
|         if( isnull( setting ) ) | 
|         { | 
|           setting := SolverSetting::Create( owner, row.ParameterNumber(), row.ParameterValue(), row.IsNumberParameter(), row.Notes() ); | 
|         } | 
|         else | 
|         { | 
|           setting.Update( row.ParameterNumber(), row.ParameterValue(), row.IsNumberParameter(), row.Notes() ); | 
|         } | 
|         setting.IsInKnowledgeTable( true ); | 
|       } | 
|     } | 
|      | 
|     traverse( this, SolverSettingGroup.SolverSetting, solversetting, not solversetting.IsInKnowledgeTable() ) | 
|     { | 
|       solversetting.Delete() | 
|     } | 
|   *] | 
| } |