renhao
2023-09-21 1aa9f2bb83dd9e4b7517f1cbf06b0db53979bb31
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
31
32
33
34
Quintiq file version 2.0
#parent: #root
Method GetHasNoOverload () declarative remote as Boolean
{
  Description: 'Check if unit period has no overload'
  TextBody:
  [*
    value := true;
    if( this.IsPlanning()
        and this.NrOfOpen() > 0 )
    {
      overloadthreshold := this.MaximumLoadPercentage();
      nooverload := this.DisplayUtilizationPercentageWithMaxLoadRatio() <= overloadthreshold
                    or this.MacroPlan().GlobalParameters_MP().GetIsBalanceWithinTolerance( this.DisplayUtilizationPercentageWithMaxLoadRatio(), overloadthreshold );
      
      //when no capacity is defined, any utilization should fire an overload error
      if( not this.GetHasAvailableCapacity() )
      {
        nooverload := this.UtilizationPercentage() = 0
      }
    
      value := this.IsPlannedInfinite() or nooverload;
    }
    
    // Flag aggregated child when the parent is overloaded. 
    // Agg-child is wont be utilize because the capacity usage is aggregated up to parent level, thus flag according to parent
    if( this.IsPlanning() and this.Unit().IsForCapacityAggregation() and this.GetHasAvailableCapacity() )
    {
      value := this.ParentOfUnitDimension().HasNoOverload();
    }
    
    return value
  *]
}