Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method GetInvalidCapacitySmoothingMsg () as String 
 | 
{ 
 | 
  Description: 'For a capacity smoothing head, the capacity usages of its elements conform to capacity smoothing constraints' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // srt Jul-8-2014 (created) 
 | 
    // Is capacity smoothing head and delta > Unit.CapacitySmoothingPercentageDelta 
 | 
    // Use rounding as capacites won't match exatly when optimizing with PercentageDelta = 0 
 | 
    value := ''; 
 | 
    if( not isnull( this.AsCapacitySmoothingHead() ) ) 
 | 
    { 
 | 
      maxusage := max( this.GetCapacitySmoothingElements(), Elements, csup, csup.UtilizationPercentage() ); 
 | 
      minusage := min( this.GetCapacitySmoothingElements(), Elements, csup, csup.UtilizationPercentage() ); 
 | 
      nrofdecimals := this.MacroPlan().GlobalParameters_MP().NumberOfDecimals(); 
 | 
     
 | 
      if( ( maxusage - minusage ).Round( nrofdecimals ) > this.Unit().CapacitySmoothingPercentageDelta() ) 
 | 
      { 
 | 
        value := Translations::MP_UnitPeriod_InvalidCapacitySmoothing( 
 | 
                   this.Start(), 
 | 
                   maxselect( this.GetCapacitySmoothingElements(), Elements, csup, true, csup.CapacitySmoothingSequenceNr() ).End(), 
 | 
                   maxusage, 
 | 
                   minusage, 
 | 
                   this.Unit().CapacitySmoothingPercentageDelta() ); 
 | 
      } 
 | 
    } 
 | 
    return value; 
 | 
  *] 
 | 
} 
 |