Quintiq file version 2.0
|
#parent: #root
|
Function CalcMinDurationCombi
|
{
|
TextBody:
|
[*
|
value := guard( this.FirstCombiElement().OptCampaignElementType().MinDurationCombi(), Duration::Zero() );
|
prevocusp := this.OptCampaignUnitSubPeriod().PreviousSubPeriod();
|
optunit := this.OptCampaignUnitSubPeriod().OptCampaignUnit();
|
|
if( guard( prevocusp.IsFixed(), true ) )
|
{
|
//if this is start of horizon and we have an existing campaign/transition planned
|
//we want to take its duration in account in the calculation
|
lastcampaign := optunit.LastCampaignBeforeOptHorizon();
|
lasttransition := optunit.LastTransitionBeforeOptHorizon();
|
if( not isnull( lastcampaign ) )
|
{
|
value := maxvalue( value - lastcampaign.Duration(), Duration::Zero() );
|
}
|
else if ( not isnull( lasttransition ) )
|
{
|
duration := this.OptCampaignUnitSubPeriod().StartTime() - lasttransition.Start();
|
value := maxvalue( value - duration, Duration::Zero() );
|
}
|
}
|
|
this.MinDurationCombi( value );
|
*]
|
}
|