| 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 = ''; | 
|   *] | 
| } |