Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method GenerateBenchmarkAddPeriods ( 
 | 
  Number nrperiodstoadd 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // modify period specification - metal demo has only 1 planning period  
 | 
    if ( nrperiodstoadd > 0 )  
 | 
    { 
 | 
      lasperiodforcopysalesdemand := maxselect(  this, Period_MP, p, p.IsPlanning(), p.Start() );  
 | 
      debuginfo(  'Used to copy sales demand period start = ', lasperiodforcopysalesdemand.Start() );  
 | 
      periodspec := select(  this, PeriodSpecification_MP, p, true, p.IsUsedForPlanning() );  
 | 
      periodspec.Update(  periodspec.ID(),  
 | 
                          periodspec.TimeUnit(),  
 | 
                          periodspec.NrOfTimeUnit(),  
 | 
                          periodspec.PeriodAlignment(), 
 | 
                          periodspec.NrOfHistoricalPeriod(),  
 | 
                          periodspec.NrOfFuturePeriod() + nrperiodstoadd,  
 | 
                          true,  
 | 
                          false,  
 | 
                          true,  
 | 
                          false );   
 | 
       
 | 
      Transaction::Transaction().Propagate();  
 | 
       
 | 
      // copy sales demand of last period into new periods 
 | 
      salesdemandslast := selectset(  this, SalesDemand.astype( Forecast), sd, true, sd.StartDate() = lasperiodforcopysalesdemand.StartDate() );  
 | 
      traverse( periodspec, Period_MP, period, period.StartDate() > lasperiodforcopysalesdemand.StartDate() ) 
 | 
      { 
 | 
        newsalesdemand := Forecast::Copy( salesdemandslast );  
 | 
        traverse( newsalesdemand, Elements, sd )  
 | 
        { 
 | 
          sd.StartDate( period.StartDate() );  
 | 
          sd.EndDate( period.End().Date() );  
 | 
          sd.SynchronizeSalesDemandInPeriod( true ); 
 | 
        } 
 | 
      } 
 | 
       
 | 
      // update kpi horizon  
 | 
      this.GlobalParameters_MP().EndOfKPIHorizon( max(  this, Period_MP, p, p.IsPlanning(), p.End().Date() ) ); 
 | 
    } 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |