yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
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 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' }
}