Quintiq file version 2.0
|
#parent: #root
|
StaticMethod ValidateInput (
|
output String feedback_o,
|
output String sanitycheckfeedback_o,
|
String id,
|
MacroPlan macroplan,
|
PeriodSpecification_MP periodspecification,
|
String timeunit,
|
Number nroftimeunit,
|
DateTime periodalignment,
|
Number nrofhistoricalperiod,
|
Number nroffutureperiod,
|
Boolean checkunique
|
) declarative remote as Boolean
|
{
|
Description: 'Validate input entered by user at period definition'
|
TextBody:
|
[*
|
feedback_o := '';
|
sanitycheckfeedback_o := '';
|
instance := Translations::MP_PeriodSpecification_MP_Instance( id );
|
// Get all time units and tokenize them into a set of structured string
|
timeunits := PeriodSpecification_MP::GetAllTimeUnit().Tokenize( ';' );
|
|
// Check if ID is entered
|
if( id = '' )
|
{
|
feedback_o := Translations::MP_PeriodSpecification_MP_ValidateInput_IsIDEmpty();
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if time unit is valid
|
else if( timeunits.Find( timeunit ) < 0 )
|
{
|
feedback_o := Translations::MP_PeriodSpecification_MP_ValidateInput_InvalidTimeUnit();
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if number of time unit is valid
|
else if( nroftimeunit <= 0 )
|
{
|
feedback_o := Translations::MP_PeriodSpecification_MP_ValidateInput_IsInvalidNrOfTimeUnit( nroftimeunit );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if numbero f future period is valid
|
else if( nroffutureperiod < 0 )
|
{
|
feedback_o := Translations::MP_PeriodSpecification_MP_ValidateInput_IsInvalidNrOfFuturePeriod( nroffutureperiod );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if number of historical period is valid
|
else if( nrofhistoricalperiod < 0 )
|
{
|
feedback_o := Translations::MP_PeriodSpecification_MP_ValidateInput_IsInvalidNrOfHistoricalPeriod( nrofhistoricalperiod );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// For period specification of time unit Month, Quarter, and Year, the start of current period is not allowed to be on 29th, 30th or 31st of the month
|
// To prevent unclear specification due to variable duration of these periods. For example for monthly period with start of period 30 January, it's not clear where period should end.
|
else if( timeunit <> Translations::MP_GlobalParameters_Hour()
|
and timeunit <> Translations::MP_GlobalParameters_Day()
|
and timeunit <> Translations::MP_GlobalParameters_Week()
|
and periodalignment.Day() > 28 )
|
{
|
feedback_o := Translations::MP_PeriodSpecification_MP_ValidateInput_IsInvalidPeriodAlignment_LimitOfMonth( periodalignment, timeunit );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if ID is unique
|
else if( checkunique
|
and exists( macroplan, PeriodSpecification_MP, pdef,
|
pdef <> periodspecification,
|
pdef.ID() = id ) )
|
{
|
feedback_o := Translations::MP_PeriodSpecification_MP_ValidateInput_IsNotUnique();
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
else if( checkunique
|
and exists( macroplan,
|
PeriodSpecification_MP, pdef,
|
pdef <> periodspecification,
|
pdef.ID() <> id
|
and pdef.TimeUnit() = timeunit
|
and pdef.NrOfTimeUnit() = nroftimeunit ) )
|
{
|
feedback_o := Translations::MP_PeriodSpecification_MP_ValidateInput_DuplicateGranularity();
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
|
// Add feedback text if any of the precondition above is violated
|
if( feedback_o <> '' )
|
{
|
feedback_o := SanityCheckMessage::GetFormattedMessage( instance, feedback_o );
|
}
|
|
return feedback_o = '';
|
*]
|
}
|