Quintiq file version 2.0
#parent: #root
Method SelectKBBranch (
  Scenario scenario
) id:Method_ApplicationLibMacroPlanner_SelectKBBranch
{
  #keys: '[11122.0.58944127]'
  Body:
  [*
    // Select a kb branch
    dlg := construct( dlgSelectKnowledge );
    componentmds := ComponentMDS::CreateForLoadedMDSsOnly( Application );
    mdsinstance := selectobject( componentmds, ComponentMDSKinds.ComponentMDSInstances, m, m.MDSID().Equals( scenario.DatasetMDSID() ) );
    mdshandle := mdsinstance.GetMDSHandle();
    dlg.dpMDSHandle().Data( mdshandle );
    
    kbinfo := null( MDSObjectKB );
    if ( scenario.istype( ScenarioMP ) )
    {
      kbinfo := select( mdsinstance.GetMDSHandle().AsMacroPlan().MDSMacroPlan(), MDSKBs, kb, kb.Name().ToUpper() = GlobalParameters_MP::GetKBName().ToUpper() );
    }
    
    if ( not isnull( kbinfo ) )
    {
      kbfullid := KBFullID::Create( kbinfo.Domain(), kbinfo.Name(), kbinfo.Branch(), kbinfo.Version(), kbinfo.ChangeNr() );
      dlg.Data( kbfullid );
    
      result := dlg.DoModal( this );
    
      if ( result > 0 )
      {
        ScenarioManager.UpdateScenarioKBInfo( scenario, dlg.dpSelected().Data().Name(), dlg.dpSelected().Data().Branch(), dlg.dpSelected().Data().ChangeNr(), scenario.State(), scenario.KBDescription() );
      }
    }
  *]
}
