| 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' } | 
| } |