Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod ValidateInput ( 
 | 
  String name, 
 | 
  ScenarioManager sm, 
 | 
  Strategy strategy, 
 | 
  Real massscalingfactor, 
 | 
  Real monetaryscalingfactor, 
 | 
  Real timescalingfactor, 
 | 
  Real timeaccountscalingfactor, 
 | 
  Real inventoryholdingscalingfactor, 
 | 
  Number defaultnumberofperiodsavgdemand, 
 | 
  Number numberofperiodssmartplan, 
 | 
  Boolean isslidinghorizon, 
 | 
  Number numberofperiodsinwindow, 
 | 
  Number numberofperiodsperslide, 
 | 
  Boolean ismetaoptimizer, 
 | 
  Boolean isfirstleveloverride, 
 | 
  Boolean islastleveloverride, 
 | 
  Number firstfocuslevel, 
 | 
  Number lastfocuslevel, 
 | 
  Number maxtimealliterations, 
 | 
  Number maxnumberelecampaigncombi, 
 | 
  Boolean iscollapse, 
 | 
  Real collapselevelweight 
 | 
) declarative remote as String 
 | 
{ 
 | 
  Description: 'Called by designer' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Validate input for Strategy 
 | 
    feedback := ''; 
 | 
     
 | 
    // Check if name is entered 
 | 
    if( name = '' ) 
 | 
    { 
 | 
      feedback := Translations::Strategy_ValidateInput_IsNameEmpty(); 
 | 
    } 
 | 
    // Check if the name is unique 
 | 
    else if( exists( sm, Strategy, s, 
 | 
                     s <> strategy and s.Name() = name ) ) 
 | 
    { 
 | 
      feedback := Translations::Strategy_ValidateInput_IsNameExists( name ); 
 | 
    } 
 | 
    // Check if mass scaling factor not less than zero 
 | 
    else if( massscalingfactor <= 0.0 ) 
 | 
    { 
 | 
      feedback := Translations::Strategy_ValidateInput_InvalidMassScalingFactor(); 
 | 
    } 
 | 
    // Check if monetory scaling factor not less than zero 
 | 
    else if( monetaryscalingfactor <= 0.0 ) 
 | 
    { 
 | 
      feedback := Translations::Strategy_ValidateInput_InvalidMonetaryScalingFactor(); 
 | 
    } 
 | 
    // Check if time scaling factor not less than zero 
 | 
    else if( timescalingfactor <= 0.0 ) 
 | 
    { 
 | 
      feedback := Translations::Strategy_ValidateInput_InvalidTimeScalingFactor(); 
 | 
    } 
 | 
    // Check if time account scaling factor not less than zero 
 | 
    else if( timeaccountscalingfactor <= 0.0 ) 
 | 
    { 
 | 
      feedback := Translations::Strategy_ValidateInput_InvalidTimeAccountScalingFactor(); 
 | 
    } 
 | 
    // Check if inventory holding scaling factor not less than zero 
 | 
    else if( inventoryholdingscalingfactor <= 0.0 ) 
 | 
    { 
 | 
      feedback := Translations::Strategy_ValidateInput_InvalidInventoryHoldingScalingFactor(); 
 | 
    } 
 | 
    //default number of periods average demand 
 | 
    else if( defaultnumberofperiodsavgdemand <= 0 ) 
 | 
    { 
 | 
      feedback := Translations::MP_GlobalParameters_MP_ValidateInput_InvalidNumberOfPeriodsForAvgSD( defaultnumberofperiodsavgdemand ); 
 | 
    } 
 | 
    else if( numberofperiodssmartplan <= 0 ) 
 | 
    { 
 | 
      feedback := Translations::MP_GlobalParameters_MP_ValidateInput_InsufficientPeriods( numberofperiodssmartplan ); 
 | 
    } 
 | 
    else if( isslidinghorizon and numberofperiodsinwindow <= 0 ) 
 | 
    { 
 | 
      feedback := Translations::MP_GlobalParameters_MP_ValidateInput_InsufficientPeriodsInWindow( numberofperiodsinwindow ); 
 | 
    } 
 | 
    else if( isslidinghorizon and numberofperiodsperslide <= 0 ) 
 | 
    { 
 | 
      feedback := Translations::MP_GlobalParameters_MP_ValidateInput_InsufficientPeriodsPerSlide( numberofperiodsperslide ); 
 | 
    } 
 | 
    else if( isslidinghorizon and numberofperiodsinwindow < numberofperiodsperslide ) 
 | 
    { 
 | 
      feedback := Translations::MP_GlobalParameters_MP_ValidateInput_TooManyPeriodsInSlide( numberofperiodsinwindow, numberofperiodsperslide ); 
 | 
    } 
 | 
    // Check MetaOptimizer inputs 
 | 
     
 | 
    // Check if first level focus is not less than 0 
 | 
    if( ismetaoptimizer and isfirstleveloverride and firstfocuslevel < 0.0 ) 
 | 
    { 
 | 
      feedback := ifexpr( firstfocuslevel.IsFinite(), 
 | 
                          Translations::Strategy_ValidateInput_InvalidFirstFocusLevel( firstfocuslevel ), 
 | 
                          Translations::Strategy_ValidateInput_IsEmptyInput( Translations::Strategy_Input_FirstFocusLevel() ) ); 
 | 
    } 
 | 
     
 | 
    // Check if first level focus is not less than 1 
 | 
    else if( ismetaoptimizer and islastleveloverride and lastfocuslevel <= 0.0 ) 
 | 
    { 
 | 
      feedback := ifexpr( lastfocuslevel.IsFinite(), 
 | 
                          Translations::Strategy_ValidateInput_InvalidLastFocusLevel( lastfocuslevel ), 
 | 
                          Translations::Strategy_ValidateInput_IsEmptyInput( Translations::Strategy_Input_LastFocusLevel() ) ); 
 | 
    } 
 | 
     
 | 
    // Check if first level focus > last level focus 
 | 
    else if( ismetaoptimizer and isfirstleveloverride and islastleveloverride and firstfocuslevel > lastfocuslevel ) 
 | 
    { 
 | 
      feedback := Translations::Strategy_ValidateInput_InvalidLastFocusLevelGreaterThanFirstFocusLevel( firstfocuslevel, lastfocuslevel ); 
 | 
    } 
 | 
     
 | 
    // Check if maximum time for all iterations is not less than 1 
 | 
    else if( ismetaoptimizer and maxtimealliterations <= 0.0 ) 
 | 
    { 
 | 
      feedback := ifexpr( maxtimealliterations.IsFinite(), 
 | 
                          Translations::Strategy_ValidateInput_InvalidMaximumTimeAllIterations( maxtimealliterations ), 
 | 
                          Translations::Strategy_ValidateInput_IsEmptyInput( Translations::Strategy_Input_MaximumTimeAllIterations() ) ); 
 | 
    } 
 | 
    else if ( ismetaoptimizer and iscollapse and collapselevelweight <= 0.0 )  
 | 
    { 
 | 
      feedback := ifexpr( collapselevelweight.IsFinite(),  
 | 
                          Translations::Strategy_ValidateInput_InvalidCollapseLevelWeight( collapselevelweight ),  
 | 
                          Translations::Strategy_ValidateInput_IsEmptyInput( Translations::Strategy_Input_CollapseWeight() ) );  
 | 
                            
 | 
    } 
 | 
     
 | 
    // Check if maximum number of elements in campaign combi is not less than 1 
 | 
    else if( maxnumberelecampaigncombi <= 0.0 ) 
 | 
    { 
 | 
      feedback := ifexpr( maxnumberelecampaigncombi.IsFinite(), 
 | 
                          Translations::Strategy_ValidateInput_InvalidMaximumNumberElementsCampaignCombi( maxnumberelecampaigncombi ), 
 | 
                          Translations::Strategy_ValidateInput_IsEmptyInput( Translations::Strategy_Input_MaximumNumberOfElementInCampaignCombi() ) ); 
 | 
    } 
 | 
     
 | 
    return feedback; 
 | 
  *] 
 | 
} 
 |