Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method CreateDemoScenariosAndImport ( 
 | 
  String democategory, 
 | 
  String demoscenario, 
 | 
  MPSync mpsync, 
 | 
  MPDomainHandler mpdomainhandler, 
 | 
  SWF_WorkflowDataset workflow, 
 | 
  String snopusername 
 | 
) as ScenarioMP 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Load Sales demo workflow data from binary string 
 | 
    this.SynchronizeDemoWorkflowDataset( democategory, workflow );   
 | 
     
 | 
    // Retrive DemoScenario kt 
 | 
    table := DemoScenarioTable::Table(); 
 | 
    scenarios := construct( Strings ); 
 | 
    scenarioMP := null( ScenarioMP ); 
 | 
    datapath := GlobalParameters_MP::GetDefinitonsDir() + "/" + GlobalParameters_MP::GetSalesDemoPath() + "/" + democategory; 
 | 
    i := 0; 
 | 
     
 | 
     
 | 
    scenarios := selectvalues( table, Rows, r, r.Demo() = democategory and ( demoscenario = Translations::Scenario_DemoScenario_All() or r.Scenario() = demoscenario ), r.Scenario() ); 
 | 
     
 | 
    // To make sure Transaction in domainhandler is completed 
 | 
    Transaction::Transaction().Propagate(); 
 | 
     
 | 
    // Go through every row in DemoScenario and create scenario and import data respectively 
 | 
    traverse( scenarios, Elements, e , e <> Translations::Scenario_DemoScenario_All() ) 
 | 
    {   
 | 
      base := null( ScenarioMP ); 
 | 
       
 | 
      foldername :=  ifexpr( e = '-', democategory, democategory + '/' + e ); 
 | 
      datasetname := ScenarioManager::GetUniqueCompanyDatasetName( ScenarioManager::ScenarioMP() ); 
 | 
     
 | 
      rootfolder := select( this, RootScenarioFolder, root, true, true ); 
 | 
      folder := select( rootfolder, Children, child, child.Name() = democategory ); 
 | 
       
 | 
      if( isnull( folder ) ) 
 | 
      { 
 | 
        folder := this.CreateFolder( rootfolder, democategory, democategory, snopusername ); 
 | 
      } 
 | 
       
 | 
      // We do not use the CreateScenarioMP because we need specific dataset name. 
 | 
      base := ScenarioMP::Create( this, 
 | 
                                  folder, 
 | 
                                  datasetname, 
 | 
                                  ifexpr( e = '-', foldername, e ), 
 | 
                                  '', 
 | 
                                  GlobalParameters_MP::GetStorageState(), 
 | 
                                  '', 
 | 
                                  snopusername ); 
 | 
     
 | 
      // We will return the first created demo dataset to be selected in App. 
 | 
      // All strategies, account and bookmarks for a Demo type is the same, we only need to import it once 
 | 
     if( i = 0 )  
 | 
      {     
 | 
        scenarioMP := base; // We will return the first created demo dataset to be selected in App. 
 | 
            
 | 
        accounts := ScenarioManager::ReadAccountFile( datapath ); 
 | 
        this.SynchronizeAccounts( accounts ); 
 | 
        
 | 
        strategies := ScenarioManager::ReadStrategiesFile( datapath ); 
 | 
        this.ImportStrategies( strategies ); 
 | 
     
 | 
        bookmarks := ScenarioManager::ReadBookmarksFile( datapath );   
 | 
        this.ImportBookmarks( bookmarks );  
 | 
         
 | 
        kpisettings := ScenarioManager::ReadKPISettingsFile( datapath ); 
 | 
        this.ImportKPISettings( kpisettings ); 
 | 
         
 | 
        importprofiles := MPSync::ReadImportProfilesFile( datapath ); 
 | 
        mpsync.ImportUserGroupProfiles( importprofiles );  
 | 
        mpsync.SynchronizeDemoImportProfiles( datapath ); 
 | 
      } 
 | 
      
 | 
      i := i + 1;  
 | 
        
 | 
      // Add authorization to all user groups to scenario 
 | 
      base.AuthorizeAll(); 
 | 
     
 | 
      kb := select( this.MDSScenarioManager(), MDSKBs, kb, kb.Name().ToUpper() = this.CompanyKBName().ToUpper() ); 
 | 
      this.UpdateScenarioKBInfo( base, kb.Name(), kb.Branch(), kb.ChangeNr(), base.State(), kb.Description() ); 
 | 
     
 | 
      mdsid := MDSID::Create( base.DatasetMDSID() ); 
 | 
      row := select( table, Rows, r, r.Demo() = democategory and r.Scenario() = base.Name() );     
 | 
       
 | 
      strategy := ifexpr( row.StrategyIsWildcard(), Strategy::DefaultStrategyName(), row.Strategy() ) 
 | 
         
 | 
      MacroPlan::JobSynchronizeDemoDataAndRunOptimizer( mdsid, base, foldername, democategory, strategy ); 
 | 
    } 
 | 
     
 | 
    return scenarioMP; 
 | 
  *] 
 | 
} 
 |