| 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' } | 
| } |