Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method OnOk () id:Method_DialogCreateEditScenario_OnOk #extension 
 | 
{ 
 | 
  Body: 
 | 
  [* 
 | 
    // Disabled button to prevent the possibility of multiple firing 
 | 
     
 | 
    //macroPlanOld := MacroPlan; 
 | 
     
 | 
    btnOK.Enabled( false, '' ) 
 | 
     
 | 
    // On ok execution, create new scenario, copy or edit 
 | 
    this.ApplyChanges(); 
 | 
     
 | 
    data := DataHolderDialogData.Data(); 
 | 
    newscenario := null( Scenario ); 
 | 
    strategy := null( Strategy ); 
 | 
     
 | 
    // New version 
 | 
    globalotdtable := GlobalOTDTable; 
 | 
    globalotdsop := GlobalOTDSOP; 
 | 
    testbusinesstype := "集团"; 
 | 
    if( data.IsCreateNewVersion() ){ 
 | 
      VersionControl::CreateNewSceneVersion( globalotdsop, testbusinesstype ); 
 | 
      }else{ 
 | 
        VersionControl::CopyVersion( globalotdsop, testbusinesstype ); 
 | 
        } 
 | 
    versionname := VersionControl::GetVersionInfo( globalotdsop, testbusinesstype ).Element( 3 ); 
 | 
     
 | 
    // Get Version Name 
 | 
    if( data.Name() = "" ){ 
 | 
      data.Name( versionname ); 
 | 
      } 
 | 
     
 | 
    // Get Business Type from Scenario Name 
 | 
    businesstype := guard( select( globalotdtable,  
 | 
                                   BusinessType,  
 | 
                                   b,  
 | 
                                   b.ScenarioName()=data.ScenarioName() ).BusinessTypeName(),  
 | 
                           "" ); 
 | 
    data.BusinessType( businesstype ); 
 | 
     
 | 
    // Copy scenario 
 | 
    if( isnull( data.WrappedInstance() ) ) 
 | 
    { 
 | 
      if(  DataHolderActionCopy.Data() ) 
 | 
      {  
 | 
        scenario := data.Parent().astype( ScenarioMP ); 
 | 
        strategy := data.SelectedStrategy(); 
 | 
              
 | 
        newscenario:= scenario.Copy( data.Parent(), data.Name(), edtAssumption.Text(), 
 | 
                                     data.Comment(), data.State() ); 
 | 
        scenario.EnableSync( data.EnableSync() ); 
 | 
        scenario.BusinessType( data.BusinessType() ); 
 | 
        scenario.IsKeyProduct( data.IsKeyProduct() ); 
 | 
        scenario.CreatePurchaseSupplyMaterial( data.CreatePurchaseSupplyMaterial() ); 
 | 
      } 
 | 
      // If DatasetMDSID is set, it means the scenario 
 | 
      // will be linked to an existing dataset 
 | 
      else if( data.DatasetMDSID() <> Key::ZeroKey() ) 
 | 
      { 
 | 
        sc := ScenarioManager.CreateScenarioMPFromDataset( data.Parent(), 
 | 
                                                     data.Name(), 
 | 
                                                     edtAssumption.Text(), 
 | 
                                                     data.Comment(), 
 | 
                                                     '', 
 | 
                                                     data.DatasetName(), 
 | 
                                                     data.DatasetMDSID(), 
 | 
                                                     data.State() ); 
 | 
        sc.EnableSync( data.EnableSync() ); 
 | 
        sc.BusinessType( data.BusinessType() ); 
 | 
        sc.IsKeyProduct( data.IsKeyProduct() ); 
 | 
        sc.CreatePurchaseSupplyMaterial( data.CreatePurchaseSupplyMaterial() ); 
 | 
      } 
 | 
      else 
 | 
      { 
 | 
        newscenario := ScenarioManager.CreateScenarioMP( data.Parent(), 
 | 
                                                         data.Name(), 
 | 
                                                         edtAssumption.Text(), 
 | 
                                                         data.Comment(), 
 | 
                                                         data.State(), 
 | 
                                                         '', 
 | 
                                                         ApplicationMacroPlanner.GetUserName() ); 
 | 
        newscenario.EnableSync( data.EnableSync() ); 
 | 
        newscenario.BusinessType( data.BusinessType() ); 
 | 
        newscenario.IsKeyProduct( data.IsKeyProduct() ); 
 | 
        newscenario.CreatePurchaseSupplyMaterial( data.CreatePurchaseSupplyMaterial() ); 
 | 
        strategy := data.SelectedStrategy(); 
 | 
      } 
 | 
    } 
 | 
    // Edit scenario 
 | 
    else 
 | 
    { 
 | 
      data.WrappedInstance().Update( data.Name(), data.Comment(), data.State() ); 
 | 
      data.WrappedInstance().SelectedStrategy( relset, data.SelectedStrategy() ); 
 | 
      data.WrappedInstance().EnableSync( data.EnableSync() ); 
 | 
      data.WrappedInstance().BusinessType( data.BusinessType() ); 
 | 
      data.WrappedInstance().IsKeyProduct( data.IsKeyProduct() ); 
 | 
      data.WrappedInstance().CreatePurchaseSupplyMaterial( data.CreatePurchaseSupplyMaterial() ); 
 | 
    } 
 | 
     
 | 
    // Post scenario creation 
 | 
    // Set kb and strategy after creation of scenario and set the scenario as active 
 | 
    if( not isnull( newscenario ) ) 
 | 
    {            
 | 
      newscenario.SelectedStrategy( relset, strategy );  
 | 
      if ( not DataHolderActionCopy.Data() ) 
 | 
      {                                                                                                     
 | 
        ApplicationMacroPlanner.SelectScenario( newscenario.astype( ScenarioMP ) ); 
 | 
      }   
 | 
    } 
 | 
     
 | 
    macroPlanNew := MacroPlan; 
 | 
    //ManufactureLTImputation::Transfer( macroPlanOld, macroPlanNew ); 
 | 
     
 | 
    // sync data 
 | 
    if( data.EnableSync() ) { 
 | 
        MacroPlan::DoSync( macroPlanNew,  
 | 
                           data.BusinessType(), data.IsKeyProduct(), data.CreatePurchaseSupplyMaterial() ,GlobalOTDTable); 
 | 
    } 
 | 
    macroPlanNew.BusinessType( businesstype ); 
 | 
    macroPlanNew.IsKeyProduct( data.IsKeyProduct() ); 
 | 
    macroPlanNew.CreatePurchaseSupplyMaterial( data.CreatePurchaseSupplyMaterial() ); 
 | 
     
 | 
    MacroPlan.UpdateStartOfPlanning( dsPlanningStart.Date().DateTime() ); 
 | 
     
 | 
    this.Close(); 
 | 
  *] 
 | 
} 
 |