chenqinghong
2024-05-07 3ec06a830367465068963156dcc1d8e522571c13
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
Quintiq file version 2.0
#parent: #root
Method GenerateOptCampaignUnits
{
  TextBody:
  [*
    //Get existing opt campaign units
    debuginfo( "__>>>__", this.DefinitionName(), this.Key(), 'GenerateOptCampaignUnits' )
    optcampaignunitstoberemoved := this.OptCampaignUnit( relget );
    
    //Select the units which should be included for the campaign optimizer
    unitswithcampaigns := selectset( this.Macroplan(), Unit, u, u.HasCampaignType() )
    
    //Create the opt campaign units
    traverse( unitswithcampaigns, Elements, unit )
    {
      optcampaignunit := select(  this, OptCampaignUnit, ocu, ocu.UnitID() = unit.ID() );
    
      if( isnull( optcampaignunit ) )
      {
        optcampaignunit := OptCampaignUnit::Create( this, unit ); 
      }  
      //remove the optcampaignunit from the original set if it already existed
      optcampaignunitstoberemoved.Remove( optcampaignunit );
    }
    
    //remove the obsolete optcampaignunits
    OptCampaignUnit::Delete( optcampaignunitstoberemoved );
  *]
}