admin
2025-01-22 7e31442f0e9b07764e9c6a9680d3d4aeba5fe1de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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;
  *]
}