Quintiq file version 2.0
#parent: #root
Method CleanUp (
  String selectedkb
) id:Method_FormKBManagement_CleanUp
{
  #keys: '[11660.0.301399095]'
  Body:
  [*
    //clean up
    dlg := construct( DialogNumberOfKBToKeep );
    dlg.LabelSelectedKB().Text( selectedkb );
    
    retvalue := dlg.DoModal(  this );
    
    if ( retvalue > 0 and not isnull( MacroPlan ) )
    {
      nr :=  ApplicationLibMacroPlanner.FormatStringToReal( dlg.EditorNr().Text() );
      strings := StringListKnowledgeBase.GetSelectedLine().Tokenize( ':');
    
      if ( strings.Size() = 4 and nr >= 0 )
      {
        name := strings.Element( 1 );
        editor := CKBEditor::Create();
    
        kb := select( MacroPlan.MDSMacroPlan(), MDSKBs, kb, kb.Name().ToUpper() = ScenarioManager.CompanyKBName().ToUpper() );
        kbfullid := KBFullID::Create( kb.Domain(), kb.Name(), kb.Branch(), kb.Version(), kb.ChangeNr() );
    
        infos := editor.GetKBStructure( kbfullid.KBID() );
        highestid := max( infos, Elements.KBFullID, i, i.Branch() = name and i.ChangeNr().IsFinite() and i.ChangeNr() > 0, i.ChangeNr() );
    
        if ( highestid.IsFinite() and highestid > 0 )
        {
          toberemoved := highestid - nr;
          tobedeletedset := selectset ( infos, Elements.KBFullID, i, i.Branch() = name and i.ChangeNr() <= toberemoved, true )
          traverse ( tobedeletedset, Elements, el )
          {
            editor.DeleteKBChange( el );
          }
        }
      }
    }
  *]
}
