hongji.li
2023-11-07 1a1ba3ad5ed9e4380185aa1ccad20204a0e5f115
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
35
36
37
38
Quintiq file version 2.0
#parent: #root
Method ValidateLevels (
  output String feedback_o,
  structured[shadow[KPIWeight]] kpis
) as Boolean id:Method_DialogCreateEditStrategy_ValidateLevels
{
  #keys: '[146140.1.1703773120]'
  Body:
  [*
    //Checks for discontinuity in the level sequence
    uniquevalues := selectuniquevalues( kpis, 
                                        Elements, 
                                        weight,
                                        weight.Level() > 0,
                                        weight.Level() );
    
    sortedvalues := selectsortedset( uniquevalues, 
                                     Elements, 
                                     level,
                                     true,
                                     level );
    
    if( uniquevalues.Size() > 0 )   // There is at least a goal activated. We allow the optimizer run without any goal too.
    {
      maxlevel := sortedvalues.Element( sortedvalues.Size() - 1 );
    
      if( sortedvalues.Size() <> maxlevel )
      {
        levels := sortedvalues.ToString( ', ' );
        feedback_o := Translations::Strategy_ValidateInput_IsLevelContinuous( levels );
      }
    }
    
    return feedback_o = '';
  *]
  Declarative: true
}