Quintiq file version 2.0
|
#parent: #root
|
Function CalcEnd
|
{
|
TextBody:
|
[*
|
tt := this.TransitionType_MP();
|
value := tt.Unit().MacroPlan().StartOfPlanning();
|
gapduration := Duration::Zero();
|
|
if ( not isnull( this.FromCampaign() )
|
and this.FromCampaign().HasNextTransitionDurationByOpt() and this.FromCampaign().NextTransitionDurationByOpt() > Duration::Zero() )
|
{
|
// case: end of transition determined by campaign sequence optimizer
|
value := this.Start() + this.FromCampaign().NextTransitionDurationByOpt();
|
}
|
else
|
{
|
// case: end of transition determined by decision support system
|
if( not isnull( this.ToCampaign() )
|
and not isnull( this.FromCampaign() ) and this.ToCampaign().Start().IsFinite() and this.FromCampaign().End().IsFinite() )
|
{
|
value := this.ToCampaign().Start();
|
gapduration := this.ToCampaign().Start() - this.FromCampaign().End();
|
}
|
|
if( gapduration > tt.DefaultDuration() )
|
{
|
duration := minvalue( gapduration, tt.DefaultDuration() );
|
value := this.Start() + duration;
|
}
|
|
if( not tt.IsDuration() and this.OperationInTransition( relsize ) > 0 )
|
{
|
duration := tt.DefaultDuration();
|
value := this.Start() + duration
|
}
|
|
if( not isnull( this.FromCampaign() )
|
and this.FromCampaign().HistoricalTransitionDuration() > Duration::Zero() )
|
{
|
duration := this.FromCampaign().HistoricalTransitionDuration();
|
value := this.Start() + duration;
|
}
|
|
|
}
|
|
this.End( value );
|
*]
|
}
|