yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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;
  *]
}