| 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; | 
|   *] | 
| } |