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