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 ); 
 | 
  *] 
 | 
} 
 |