Quintiq file version 2.0
|
#parent: #root
|
Method ResequenceCampaign (
|
Campaign_MP sourcecampaign,
|
Campaign_MP targetcampaign,
|
Transition_MP transition,
|
DateTime droptime
|
)
|
{
|
Description: 'Resequence selected campaign.'
|
TextBody:
|
[*
|
campaigns := construct( Campaign_MPs );
|
campaigns.Add( sourcecampaign );
|
beforesource := sourcecampaign.PreviousCampaign();
|
|
if( isnull( targetcampaign ) and isnull( transition ) )
|
{
|
targetcampaign := maxselect( this, Campaign_MP, cpg, cpg.End() <= droptime and cpg <> sourcecampaign, cpg.End() );
|
this.MoveAfterCampaign( sourcecampaign, targetcampaign );
|
campaigns.Add( targetcampaign );
|
}
|
else if( not isnull( transition ) )
|
{
|
targetcampaign := transition.FromCampaign();
|
this.MoveAfterCampaign( sourcecampaign, targetcampaign );
|
campaigns.Add( targetcampaign );
|
}
|
else
|
{
|
this.MoveBeforeCampaign( sourcecampaign, targetcampaign );
|
campaigns.Add( targetcampaign );
|
}
|
|
// Reset and delete related period tasks
|
Unit::ResetAndDeletePeriodTasks( campaigns );
|
|
// replan the next transition duration to be declarative (not optimizer determined anymore)
|
campaigns.Add( beforesource );
|
traverse( campaigns, Elements, campaign )
|
{
|
campaign.HasNextTransitionDurationByOpt( false );
|
}
|
*]
|
}
|