| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod GetAvailableStart ( | 
|   DateTime earlieststart, | 
|   Campaign_MP sourcecampaign | 
| ) declarative remote as DateTime | 
| { | 
|   TextBody: | 
|   [* | 
|     value := earlieststart; | 
|     previouscampaign := sourcecampaign.PreviousCampaign(); | 
|          | 
|     if( not isnull( previouscampaign ) ) | 
|     { | 
|        | 
|       transitionduration := ifexpr( previouscampaign.HasNextTransitionDurationByOpt(),  | 
|                                     previouscampaign.NextTransitionDurationByOpt(),  | 
|                                     Campaign_MP::GetMinTransitionDuration( previouscampaign.CampaignType_MP(), sourcecampaign.CampaignType_MP() ) ); | 
|        | 
|       if( previouscampaign.HistoricalTransitionDuration() > Duration::Zero() ) | 
|       { | 
|         transitionduration := previouscampaign.HistoricalTransitionDuration(); | 
|       } | 
|      | 
|       newcampaignstart := previouscampaign.End() + transitionduration; | 
|       value := maxvalue( earlieststart, newcampaignstart );    | 
|     } | 
|          | 
|     return value; | 
|   *] | 
| } |