Quintiq file version 2.0
#parent: #root
Method NewKBBranch (
  internal[KBFullID] kbfullid,
  Scenario scenario
) id:Method_ApplicationLibMacroPlanner_NewKBBranch
{
  #keys: '[11122.0.58944168]'
  Body:
  [*
    // Save as ... for a KnowledgeBase
    saveid := kbfullid;
    
    dlg := construct( dlgEditKBID );
    dlg.Data( saveid );
    
    if (saveid.Branch() = '' )
    {
      edit := select (Domain.KnowledgeBaseDefinitions(),Elements,el,el.Name() = saveid.Name() and el.Domain().Domain() = saveid.Domain());
      dlg.EditorBranch().Text( edit.DefaultBranchName() );
      dlg.EditorVersion().Text( '1.0.0.0' );
    }
    
    if ( dlg.DoModal( this ) > 0 )
    {
      editor := CKBEditor::Create();
      componentmds := ComponentMDS::CreateForLoadedMDSsOnly( Application );
      mdsinstance := selectobject( componentmds, ComponentMDSKinds.ComponentMDSInstances, m, m.MDSID().Equals( scenario.DatasetMDSID() ) );
      mdshandle := mdsinstance.GetMDSHandle();
    
      if ( kbfullid.ChangeNr() = 0 )
      {
        ckbhandle := editor.LoadMDSKB( mdshandle, kbfullid.KBID() );
        modelkb := editor.GetModelKB( kbfullid.KBID() );
        ckbhandle.CKB().Upgrade( modelkb.CKB() );
    
        editor.ApplyMDSKB( mdshandle,ckbhandle, true );
      }
    
      editor.SaveMDSKBAs( mdshandle, saveid, 'New branch' );
      ScenarioManager.UpdateScenarioKBInfo( scenario, saveid.Name(), saveid.Branch(), saveid.ChangeNr(), scenario.State(), '' )
    }
  *]
}
