Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Function CalcIsBottleneck 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // ying ying Jul-18-2014 (created) 
 | 
     
 | 
    numofup := this.MacroPlan().PeriodInBottleneckWindow( relsize ); 
 | 
    bottleneckpercentage := 0.0; 
 | 
     
 | 
    if( numofup > 0 ) 
 | 
    { 
 | 
      bottleneckpercentage := ( this.NumBottleneckPeriods() /  numofup ) * 100; // we take percentage 
 | 
    } 
 | 
     
 | 
    // Must exceed the GP tolerance in order to flag as bottleneck 
 | 
    // If tolerance is 50%, at most can tolerate half of the periods to be bottleneck 
 | 
    // If tolerance is 100%, then unit will never be bottleneck even though all periods within window are bottleneck 
 | 
    value := bottleneckpercentage > this.MacroPlan().GlobalParameters_MP().BottleneckTolerance(); 
 | 
     
 | 
    if( this.Child( relsize ) > 0 ) 
 | 
    { 
 | 
      value := value or exists( this, Child, c, c.IsBottleneck() ); 
 | 
    } 
 | 
     
 | 
    this.IsBottleneck( value ); 
 | 
  *] 
 | 
} 
 |