Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method GetFinancialKPI ( 
 | 
  Number level, 
 | 
  output Real minweightused, 
 | 
  output Real maxweightused, 
 | 
  output Real financialpos, 
 | 
  output String financialdescr 
 | 
) as Real 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Storing of goal value to instances 
 | 
       
 | 
    // Account kpis 
 | 
     
 | 
    total := 0.0;  
 | 
    financialpos := 0.0;  
 | 
    financialdescr := '';  
 | 
    traverse( this, Suboptimizer.astype( CapacityPlanningSuboptimizer ).MacroPlan.Account_MP, account, account.IsUsedByOptimizer() and account.Level() = level )  
 | 
    { 
 | 
      term := ifexpr( account.IsMaximize(), 1.0, -1.0 ) * account.Value() * this.AdjustMinMax( minweightused, maxweightused, account.Weight() );  
 | 
      total := total + term;  
 | 
      financialdescr := financialdescr + account.Name() + '[' +[String] term + ']';  
 | 
      if ( account.IsMaximize() )  
 | 
      { 
 | 
        financialpos := financialpos + term;  
 | 
      } 
 | 
    } 
 | 
    total := ifexpr( this.RoundPuzzleScoreDecimal() >= 0, total.Round( this.RoundPuzzleScoreDecimal() ), total ); // negative means no round 
 | 
    return  total; 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |