Quintiq file version 2.0
|
#parent: #root
|
Method GenerateCombisforExistingCampaignPlan
|
{
|
TextBody:
|
[*
|
this.PreprocessExistingTransitionsToSpanGaps();
|
|
Transaction::Transaction().Propagate(); // above method has changed durations of transitions possibly, ensure all declarative objects ( transition periods, etc.) are good
|
|
campaigns := selectsortedset( this, OptCampaignUnitSubPeriod.UnitPeriod.CampaignPeriod_MP.Campaign_MP, c, c.End() > c.Unit().EndOfFrozen(), c.Start() );
|
transitions := selectsortedset( this, OptCampaignUnitSubPeriod.UnitPeriod.TransitionPeriod_MP.Transition_MP, t, t.End() > t.Unit().EndOfFrozen(), t.Start() );
|
|
lastocuspforcombicreate := null( OptCampaignUnitSubPeriod ); // used to keep track of where we will be adding the new combi
|
|
done := false;
|
|
while ( campaigns.Size() + transitions.Size() > 0 and not done )
|
{
|
firstcampaign := guard( campaigns.Element( 0 ), null( Campaign_MP ) );
|
firsttransition := guard( transitions.Element( 0 ), null( Transition_MP ) );
|
|
if ( isnull( firstcampaign ) )
|
{
|
// only transition left (expected to be 1)
|
this.GenerateCombiExistingTransition( firsttransition, lastocuspforcombicreate, false ); // false means do not create multi period combi
|
done := true;
|
}
|
else
|
{
|
if ( isnull( firsttransition ) )
|
{
|
// only a campaign left (expected to be 1)
|
this.GenerateCombiExistingCampaign( firstcampaign, lastocuspforcombicreate, false ); // false means do not create multi period combi
|
done := true;
|
|
}
|
else
|
{
|
// we still have both campaigns and transitions
|
if ( firstcampaign.Start() < firsttransition.Start() )
|
{
|
combi := this.GenerateCombiExistingCampaign( firstcampaign, lastocuspforcombicreate, true ); // true means create multi period combi
|
campaigns.Remove( firstcampaign );
|
this.CompleteCombiForLastPeriod( combi, campaigns, transitions );
|
}
|
else
|
{
|
combi := this.GenerateCombiExistingTransition( firsttransition, lastocuspforcombicreate, true ); // true means create multi period combi
|
transitions.Remove( firsttransition );
|
this.CompleteCombiForLastPeriod( combi, campaigns, transitions );
|
}
|
}
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|