Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method CleanUpStockingPointCapacity 
 | 
{ 
 | 
  Description: 'Find sets of equivalent stocking point capacities in consecutive periods and remove all but the first one' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Find sets of equivalent stocking point capacities in consecutive periods and remove all but the first one 
 | 
    sortedspcs := selectsortedset( this, StockingPointCapacity, spc,  
 | 
                                   true,  
 | 
                                   spc.Start() ); 
 | 
     
 | 
    head := null( StockingPointCapacity ); 
 | 
     
 | 
    // Traverse the sorted set of StockingPointCapacities 
 | 
    traverse( sortedspcs, Elements, spc ) 
 | 
    { 
 | 
      // Check if there are any selected StockingPointCapacity, if none, set the current StockingPointCapacity as selected 
 | 
      if( isnull( head ) ) 
 | 
      { 
 | 
        head := spc; 
 | 
      } 
 | 
     
 | 
      // Get the index of the selected StockingPointCapacity in the sorted set 
 | 
      headpos := sortedspcs.Find( head ); 
 | 
      // Get the next StockingPointCapacity after the selected StockingPointCapacity in the sorted set 
 | 
      nextspc := guard( sortedspcs.Element( headpos + 1 ), null( StockingPointCapacity ) ); 
 | 
     
 | 
      // Check if next StockingPointCapacity is found 
 | 
      if( not isnull( nextspc ) ) 
 | 
      { 
 | 
        // Check if next StockingPointCapacity has the same data as the selected StockingPointCapacity 
 | 
        if( head.HasSameData( nextspc ) ) 
 | 
        { 
 | 
          // If next StockingPointCapacity has the same data as the selected StockingPointCapacity, 
 | 
          // remove it from the sorted set and delete from the dataset 
 | 
          sortedspcs.Remove( nextspc ); 
 | 
          nextspc.Delete(); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
          // If the next StockingPointCapacity doesn't has the same data as the selected StockingPointCapacity, 
 | 
          // set it as the selected StockingPointCapacity 
 | 
          head := nextspc; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  *] 
 | 
} 
 |