Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Function CalcHasIllegalNextElement 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    value := false;  
 | 
    next := this.NextCombiElement();  
 | 
    if ( not isnull( next ) and next.OptCampaignElementType() <> this.OptCampaignElementType() ) // ok to continue with the same element type as those will be planned back as one  
 | 
    { 
 | 
      if ( this.istype( OptCampaignCombiElementTransition ) )  
 | 
      { 
 | 
        requirednextcampaign := this.OptCampaignElementType().astype( OptCampaignTransitionType ).TransitionType_MP().ToCampaignType();  
 | 
        value := guard( not next.astype( OptCampaignCombiElementCampaign ).CampaignType_MP() = requirednextcampaign, true );  
 | 
      } 
 | 
      else 
 | 
      {   
 | 
        requirednextfromcampaign := this.OptCampaignElementType().astype( OptCampaignCampaignType ).CampaignType_MP();  
 | 
        value := guard( not next.OptCampaignElementType().astype( OptCampaignTransitionType ).TransitionType_MP().FromCampaignType() = requirednextfromcampaign, // next must be transition starting out with my type 
 | 
                        true );  
 | 
      } 
 | 
    } 
 | 
     
 | 
    this.HasIllegalNextElement( value ); 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |