Quintiq file version 2.0
|
#parent: #root
|
Method GetHasValidContinuousLevels (
|
output String feedback_o,
|
Boolean iswebapp
|
) declarative remote as Boolean
|
{
|
Description: 'Method to check whether the KPIWeight levels are continuous and start from level 1.'
|
TextBody:
|
[*
|
|
isvalid := true;
|
|
uniquevalues := selectuniquevalues( this, KPIWeight, 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.
|
{
|
delimiter := ", ";
|
maxlevel := sortedvalues.Element( sortedvalues.Size() - 1 );
|
isvalid := sortedvalues.Size() = maxlevel
|
newlevels := construct( Strings );
|
|
if( not isvalid )
|
{
|
levels := sortedvalues.ToString( delimiter );
|
|
if( iswebapp )
|
{
|
//web client level start from Constraint, priority 1,2..
|
traverse( levels.Tokenize( delimiter ), Elements, e )
|
{
|
i := [Number]e;
|
|
if ( i >1 )
|
{
|
i := i-1;
|
newlevels.Add( [String]i );
|
}
|
else
|
{
|
newlevels.Add( Translations::ScenarioManager_StrategyLevel_Constraints() );
|
}
|
}
|
levels := newlevels.ToString( delimiter );
|
|
feedback_o := Translations::Strategy_ValidateInput_IsLevelContinuousWebApp( levels );
|
}
|
else
|
{
|
feedback_o := Translations::Strategy_ValidateInput_IsLevelContinuous( levels );
|
}
|
}
|
}
|
return isvalid;
|
*]
|
}
|