Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod ValidateInput ( 
 | 
  output String feedback_o, 
 | 
  output String sanitycheckfeedback_o, 
 | 
  MacroPlan macroplan, 
 | 
  ShiftPattern shiftpattern, 
 | 
  String disaggregationratio, 
 | 
  Number numberofdecimal, 
 | 
  Real balancetolerance, 
 | 
  Real lotsizetolerance, 
 | 
  Real bottlenecktolerance, 
 | 
  Duration bottleneckwindowstart, 
 | 
  Duration bottleneckwindowend, 
 | 
  Date startofkpihorizon, 
 | 
  Date endofkpihorizon, 
 | 
  String defaultsmartplanstrategyname, 
 | 
  Real capacitybelowthreshold, 
 | 
  Real capacityabovethreshold, 
 | 
  Number sanitychecklimit, 
 | 
  Real absoluteupperlimit, 
 | 
  Real absolutelowerlimit, 
 | 
  Real defaultallocation, 
 | 
  Real defaultefficiency, 
 | 
  Real defaultmincapacityforunit, 
 | 
  Real defaultmaxcapacityforunit, 
 | 
  Real defaultmaxloadpercentage, 
 | 
  Real defaultmaxcapacityforstockingpoint, 
 | 
  Real defaultoperationinputoutputquantity, 
 | 
  Boolean hasdefaultinventoryholding, 
 | 
  String defaultaccountforinventoryvalue, 
 | 
  Boolean hasabsolutecostforinventoryholding, 
 | 
  Real defaultabsolutecostforinventoryholding, 
 | 
  Real defaultannualinterestrateforinventoryholding, 
 | 
  String periodspecificationforunitactual, 
 | 
  Number defaultnumberofperiodsavgdemand, 
 | 
  Real optimizernoisethreshold, 
 | 
  Number numberofperiodssmartplan, 
 | 
  Boolean isslidinghorizon, 
 | 
  Number numberofperiodsinwindow, 
 | 
  Number numberofperiodsperslide, 
 | 
  Real defaultservicelevel, 
 | 
  Real stockingpointbottleneckthreshold 
 | 
) declarative remote as Boolean 
 | 
{ 
 | 
  Description: 'Called by designer' 
 | 
  TextBody: 
 | 
  [* 
 | 
    /***** 
 | 
     PLEASE ENSURE THAT DATA ISSUE IS CHECKED BEFORE DATA WARNING 
 | 
    **/ 
 | 
    feedback_o := ''; 
 | 
    sanitycheckfeedback_o := ''; 
 | 
     
 | 
    // ShiftPattern 
 | 
    if( isnull( shiftpattern ) ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNullDefaultShiftPattern(); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    // Absolute upper and lower limit 
 | 
    else if( absoluteupperlimit <= absolutelowerlimit ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsAbsoluteUpperLimitLowerThanAbsoluteLowerLimit( absoluteupperlimit, absolutelowerlimit ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    //default number of periods average demand 
 | 
    else if( defaultnumberofperiodsavgdemand <= 0 ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_InvalidNumberOfPeriodsForAvgSD( defaultnumberofperiodsavgdemand ); 
 | 
      sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    // Number of decimal 
 | 
    else if( numberofdecimal < 0 ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeNumberOfDecimals( numberofdecimal ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Lot size tolerance 
 | 
    else if( lotsizetolerance < 0 ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeLotSizeTolerance( lotsizetolerance ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // KPI horizon start and end 
 | 
    else if( startofkpihorizon > endofkpihorizon ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsStartAfterEndOfKPIHorizon( endofkpihorizon, startofkpihorizon ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Default smart plan strategy 
 | 
    else if( defaultsmartplanstrategyname = '' ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsDefaultSmartPlanStrategyNameEmpty(); 
 | 
    sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Sanity check limit 
 | 
    else if( sanitychecklimit < 0 ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeSanityCheckLimit( sanitychecklimit ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Default allocation 
 | 
    else if( defaultallocation < 0 ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultAllocation( defaultallocation ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Default Efficiency 
 | 
    else if( defaultefficiency < 0 ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultEfficiency( defaultefficiency ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Default capacity for unit 
 | 
    else if( defaultmincapacityforunit < 0 ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultMinCapacityForUnit( defaultmincapacityforunit ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Default max capacity for unit 
 | 
    else if( defaultmaxcapacityforunit < 0 ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultMaxCapacityForUnit( defaultmaxcapacityforunit ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Default min and max capacity 
 | 
    else if( defaultmincapacityforunit > defaultmaxcapacityforunit ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsUnitDefaultMinCapacityGreaterThanDefaultMaxCapacity( defaultmaxcapacityforunit, defaultmincapacityforunit ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Default max load percentage 
 | 
    else if( defaultmaxloadpercentage < 0 ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultMaxLoadPercentage( defaultmaxloadpercentage ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Default max capacity for stocking point 
 | 
    else if( defaultmaxcapacityforstockingpoint < 0 ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultMaxCapacityForStockingPoint( defaultmaxcapacityforstockingpoint ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Default operation in/out quantity 
 | 
    else if( defaultoperationinputoutputquantity < 0 ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultOperationInputOutputQuantity( defaultoperationinputoutputquantity ); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Check valid period specification for actuals 
 | 
    else if( not GlobalParameters_MP::GetHasValidPeriodSpecificationUnitActual( macroplan, periodspecificationforunitactual ) ) 
 | 
    { 
 | 
       feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsInvalidPeriodSpecificationForUnitActual(); 
 | 
       sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    // Check for disaggregation factor 
 | 
    else if( not GlobalParameters_MP::GetIsValidDisaggregationFactor( disaggregationratio ) ) 
 | 
    { 
 | 
     feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_InvalidDisaggregationRatio(); 
 | 
     sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    else if( optimizernoisethreshold < 0 ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeOptimizerNoiseThreshold( optimizernoisethreshold ); 
 | 
      sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
    else if( numberofperiodssmartplan <= 0 ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_InsufficientPeriods( numberofperiodssmartplan ); 
 | 
      sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    else if( isslidinghorizon and numberofperiodsinwindow <= 0 ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_InsufficientPeriodsInWindow( numberofperiodsinwindow ); 
 | 
    } 
 | 
    else if( isslidinghorizon and numberofperiodsperslide <= 0 ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_InsufficientPeriodsPerSlide( numberofperiodsperslide ); 
 | 
    } 
 | 
    else if( isslidinghorizon and numberofperiodsinwindow < numberofperiodsperslide ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_TooManyPeriodsInSlide( numberofperiodsinwindow, numberofperiodsperslide ); 
 | 
    } 
 | 
    // check for 
 | 
    else if( hasdefaultinventoryholding ) 
 | 
    { 
 | 
      isValidDefaultInventoryHolding := GlobalParameters_MP::ValidateDefaultInventoryHoldingCosts( feedback_o, sanitycheckfeedback_o, macroplan, 
 | 
                                                                                                   defaultaccountforinventoryvalue, 
 | 
                                                                                                   hasabsolutecostforinventoryholding, 
 | 
                                                                                                   defaultabsolutecostforinventoryholding, 
 | 
                                                                                                   defaultannualinterestrateforinventoryholding ); 
 | 
      if( isValidDefaultInventoryHolding ) 
 | 
      { 
 | 
        if( defaultservicelevel <= 50 or defaultservicelevel >= 100 ) 
 | 
        { 
 | 
        feedback_o := Translations::MP_GlobalParameters_MP_IsValidDefaultServiceLevel( defaultservicelevel ); 
 | 
        sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
        } 
 | 
        else if( feedback_o.Length() = 0 ) 
 | 
        { 
 | 
          GlobalParameters_MP::ValidateBottlenecktInput( feedback_o, sanitycheckfeedback_o, macroplan, bottlenecktolerance,bottleneckwindowstart, bottleneckwindowend, capacitybelowthreshold,capacityabovethreshold, stockingpointbottleneckthreshold, false );  
 | 
        } 
 | 
      } 
 | 
    } 
 | 
     
 | 
    // Add instance text 
 | 
    if( feedback_o <> '' ) 
 | 
    { 
 | 
     feedback_o := SanityCheckMessage::GetFormattedMessage( Translations::MP_GlobalParameters_Instance(), feedback_o ); 
 | 
    } 
 | 
     
 | 
    return feedback_o = ''; 
 | 
  *] 
 | 
} 
 |