Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method GetKPIServiceLevel () const declarative remote as Real 
 | 
{ 
 | 
  Description: 'Return the average planned percentage of service levels' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // edz1 Jul-14-2016 (created) 
 | 
    totaldemandinsls := sum( this, AllServiceLevelBase, sl, 
 | 
                             sl.IsEnabled() 
 | 
                             and sl.IsUsedForSafetyStockCalculation() 
 | 
                             and sl.End() >= this.GlobalParameters_MP().GetStartOfKPIHorizon() 
 | 
                             and sl.Start() <= this.GlobalParameters_MP().GetEndOfKPIHorizon(), 
 | 
                             sl.TotalDemandQuantity() ) 
 | 
    value := 0.0; 
 | 
    if( totaldemandinsls > 0.0 ) 
 | 
    { 
 | 
      // Calculated the weighted average service level (weighted by demand per service level) 
 | 
      value := sum( this, AllServiceLevelBase, sl,  
 | 
                    sl.IsEnabled() 
 | 
                    and sl.IsUsedForSafetyStockCalculation() 
 | 
                    and sl.End() >= this.GlobalParameters_MP().GetStartOfKPIHorizon() 
 | 
                    and sl.Start() <= this.GlobalParameters_MP().GetEndOfKPIHorizon() , 
 | 
                    sl.TotalFulfilledQuantity() / totaldemandinsls  ); 
 | 
    } 
 | 
                    
 | 
    return 100 * value; 
 | 
  *] 
 | 
} 
 |