| 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' } | 
| } |