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