Quintiq file version 2.0
|
#parent: #root
|
Method GetKPI (
|
Boolean includeintbased,
|
Boolean intbasedonly,
|
const WeightLevelNonFinancial weightlevels,
|
output RealVector financialvec_o,
|
output RealVector financialvec_pos_o,
|
output String financialdescr
|
) as owning RealVector
|
{
|
TextBody:
|
[*
|
maxlevel := this.MaxLevel() ;
|
result := RealVector::Construct( maxlevel + 1 ); // 1 more for slack level
|
financialvec_o.Resize( maxlevel + 1, 0.0 ); // 1 more for slack level
|
financialvec_pos_o.Resize( maxlevel + 1, 0.0 ); // 1 more for slack level
|
applyrounding := this.RoundPuzzleScoreDecimal() >= 0;
|
financialdescr := '';
|
for ( i := 0; i <= maxlevel; i++ )
|
{
|
minweightused := Real::MaxReal();
|
maxweightused := 0.0;
|
fdescr := '';
|
score_vec := this.GetPuzzleScore( i, includeintbased, intbasedonly, weightlevels, minweightused, maxweightused, fdescr );
|
score := score_vec.Get( 0 );
|
score_financial := score_vec.Get( 2 );
|
score_financialpos := score_vec.Get( 3 );
|
if ( not fdescr = '' )
|
{
|
financialdescr := financialdescr + 'level=' + [String] i + fdescr;
|
}
|
if ( applyrounding )
|
{
|
score := score.Round( this.RoundPuzzleScoreDecimal() );
|
score_financial := score_financial.Round( this.RoundPuzzleScoreDecimal() );
|
score_financialpos := score_financialpos.Round( this.RoundPuzzleScoreDecimal() );
|
}
|
result.Set( i, score / maxvalue( 1.0, maxweightused ) );
|
financialvec_o.Set( i, score_financial / maxvalue( 1.0, maxweightused ) );
|
financialvec_pos_o.Set( i, score_financialpos / maxvalue( 1.0, maxweightused ) );
|
}
|
return &result
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|