Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method SetBookmarkElement ( 
 | 
  const Units units, 
 | 
  const StockingPoint_MPs stocking_points, 
 | 
  const Product_MPs products, 
 | 
  const SalesSegment_MPs sales_segments, 
 | 
  const structured_Object periodObjects 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Set the elements to be bookmarked in a Bookmark 
 | 
    oldBookmarks := selectset( this, AllBookmarkElement, e, true ); 
 | 
    newBookmarks := construct( BookmarkElementBases ); 
 | 
     
 | 
    // Find/Create bookmark elements according to the units passed in and assign it to newBookmarks 
 | 
    traverse( units, Elements, e ) 
 | 
    { 
 | 
      newBookmarks.Add( BookmarkUnitElement::FindCreate( this, e ) ); 
 | 
    } 
 | 
     
 | 
    // Find/Create bookmark elements according to the stocking points passed in and assign it to newBookmarks 
 | 
    traverse( stocking_points, Elements, e ) 
 | 
    { 
 | 
      newBookmarks.Add( BookmarkStockingPointElement::FindCreate( this, e ) ); 
 | 
    } 
 | 
     
 | 
    // Find/Create bookmark elements according to the products passed in and assign it to newBookmarks 
 | 
    traverse( products, Elements, e ) 
 | 
    { 
 | 
      newBookmarks.Add( BookmarkProductElement::FindCreate( this, e ) ); 
 | 
    } 
 | 
     
 | 
    // Find/Create bookmark elements according to the sales segment passed in and assign it to newBookmarks 
 | 
    traverse( sales_segments, Elements, e ) 
 | 
    { 
 | 
      newBookmarks.Add( BookmarkSalesSegmentElement::FindCreate( this, e ) ); 
 | 
    } 
 | 
     
 | 
    // Find/Create bookmark elements according to the periodObjects consist of PeriodSpecification passed in and assign it to newBookmarks 
 | 
    traverse( periodObjects, Elements.astype( PeriodSpecification_MP ), e ) 
 | 
    { 
 | 
      newBookmarks.Add( BookmarkPeriodSpecificationElement::FindCreate( this, e ) ); 
 | 
    } 
 | 
     
 | 
    // Find/Create bookmark elements according to the periodObjects consist of PeriodSpecificationPeriod passed in and assign it to newBookmarks 
 | 
    traverse( periodObjects, Elements.astype( PeriodSpecificationPeriod ), e ) 
 | 
    { 
 | 
      newBookmarks.Add( BookmarkPeriodSpecificationPeriodElement::FindCreate( this, e ) ); 
 | 
    } 
 | 
     
 | 
    // Get old bookmark elements that is not in the updated set of bookmark elements 
 | 
    oldBookmarks := oldBookmarks.Difference( newBookmarks ); 
 | 
     
 | 
    // Delete all old bookmark elements 
 | 
    BookmarkElementBase::Delete( oldBookmarks ); 
 | 
  *] 
 | 
} 
 |