Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod ValidateInput ( 
 | 
  output String feedback_o, 
 | 
  output String sanitycheckfeedback_o, 
 | 
  const MacroPlan macroplan, 
 | 
  const SalesSegment_MP salessegment, 
 | 
  const Product_MP product, 
 | 
  Date startdate, 
 | 
  Date enddate, 
 | 
  const FulfillmentRestriction fulfillmentrestriction 
 | 
) declarative remote as Boolean 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Validate input from GUI 
 | 
    feedback_o := ''; 
 | 
    sanitycheckfeedback_o := ''; 
 | 
     
 | 
    // Check if sales segment is null 
 | 
    if( isnull( salessegment ) ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_FulfillmentRestriction_ValidateInput_IsNullSalesSegment(); 
 | 
      sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    // Check if product is null 
 | 
    else if( isnull( product ) ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_FulfillmentRestriction_ValidateInput_IsNullProduct(); 
 | 
      sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    // Check if start/end date combination is valid 
 | 
    else if( startdate >= enddate ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_FulfillmentRestriction_ValidateInput_IsInvalidStartDate( startdate, enddate ); 
 | 
      sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    // Check if FulfillmentRestriction is unique 
 | 
    else if( exists( salessegment, FulfillmentRestriction, fr,  
 | 
                     fr <> fulfillmentrestriction, 
 | 
                     fr.Product_MP() = product and fr.StartDate() = startdate ) ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_FulfillmentRestriction_ValidateInput_IsNotUnique(); 
 | 
      sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
    // Check there is no overlapping with any other fulfillment restriction 
 | 
    else if( exists( salessegment, FulfillmentRestriction, fr,  
 | 
                     fr <> fulfillmentrestriction, 
 | 
                     fr.Product_MP() = product  
 | 
                     and( startdate < fr.EndDate() and fr.StartDate() < enddate ) ) ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_FulfillmentRestriction_ValidateInput_NoOverlapping(); 
 | 
      sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue(); 
 | 
    } 
 | 
     
 | 
    // Add feedback text 
 | 
    if( feedback_o <> '' ) 
 | 
    { 
 | 
      salessegmentname := MacroPlan::GetSubstituteName( guard( salessegment.Name(), '' ) ); 
 | 
      feedback_o := SanityCheckMessage::GetFormattedMessage( Translations::MP_FulfillmentRestriction_Instance( salessegmentname ), 
 | 
                                                             feedback_o ); 
 | 
    } 
 | 
     
 | 
    return feedback_o = ''; 
 | 
  *] 
 | 
} 
 |