Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod ValidateInput ( 
 | 
  output String feedback_o, 
 | 
  output String sanitycheckcategory_o, 
 | 
  MacroPlan owner, 
 | 
  FulfillmentTarget fulfillmenttarget, 
 | 
  String name, 
 | 
  Product_MP product, 
 | 
  StockingPoint_MP stockingpoint, 
 | 
  SalesSegment_MP salessegment, 
 | 
  Real targetpercentage, 
 | 
  Date start, 
 | 
  Date end, 
 | 
  Boolean isforsafetystock, 
 | 
  String objecttype 
 | 
) declarative remote as Boolean 
 | 
{ 
 | 
  Description: 'Validate inputs for service level.' 
 | 
  TextBody: 
 | 
  [* 
 | 
    feedback_o := '' 
 | 
    sanitycheckcategory_o := ''; 
 | 
     
 | 
    // If name is not entered 
 | 
    if( name = '' ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_ServiceLevel_ValidateInput_IsInvalidName( objecttype ); 
 | 
      sanitycheckcategory_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    // If target percentage is out of range (0-100) 
 | 
    else if( targetpercentage <= 0 or targetpercentage > 100 ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_FulfillmentTarget_ValidateInput_IsInvalidTargetPercentage( targetpercentage ); 
 | 
      sanitycheckcategory_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    // If the start time is larger than end time 
 | 
    else if( start > end ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_ServiceLevel_ValidateInput_IsInvalidStart( objecttype ); 
 | 
      sanitycheckcategory_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    // If another FulfillmentTarget with the same specifications exists 
 | 
    else if( exists( owner, FulfillmentTarget, sl, 
 | 
                     sl <> fulfillmenttarget 
 | 
                     and sl.IsUsedForSafetyStockCalculation() = isforsafetystock 
 | 
                     and sl.Product_MP() = product 
 | 
                     and sl.StockingPoint_MP() = stockingpoint 
 | 
                     and sl.SalesSegment_MP() = salessegment  
 | 
                     and sl.Start() = start 
 | 
                     and sl.End() = end ) ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_ServiceLevel_ValidateInput_IsNotUnique( objecttype ); 
 | 
      sanitycheckcategory_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    // If product, stocking point, and sales segment are not provided 
 | 
    else if( isnull( product ) and isnull( stockingpoint ) and isnull( salessegment ) ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_ServiceLevel_ValidateInput_IsNullLinks( objecttype ); 
 | 
      sanitycheckcategory_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning(); 
 | 
    } 
 | 
     
 | 
    // If any of the precondition is violated 
 | 
    if( feedback_o <> '' ) 
 | 
    { 
 | 
      displayname := MacroPlan::GetSubstituteName( name ); 
 | 
      instance := Translations::MP_ServiceLevel_Instance( objecttype, displayname ); 
 | 
      feedback_o := SanityCheckMessage::GetFormattedMessage( instance, feedback_o ); 
 | 
    } 
 | 
     
 | 
    return feedback_o = ''; 
 | 
  *] 
 | 
} 
 |