Quintiq file version 2.0
|
#parent: #root
|
StaticMethod ValidateInput (
|
output String feedback_o,
|
output String sanitycheckfeedback_o,
|
MacroPlan macroplan,
|
ShiftPattern shiftpattern,
|
String disaggregationratio,
|
Number numberofdecimal,
|
Real balancetolerance,
|
Real lotsizetolerance,
|
Real bottlenecktolerance,
|
Duration bottleneckwindowstart,
|
Duration bottleneckwindowend,
|
Date startofkpihorizon,
|
Date endofkpihorizon,
|
String defaultsmartplanstrategyname,
|
Real capacitybelowthreshold,
|
Real capacityabovethreshold,
|
Number sanitychecklimit,
|
Real absoluteupperlimit,
|
Real absolutelowerlimit,
|
Real defaultallocation,
|
Real defaultefficiency,
|
Real defaultmincapacityforunit,
|
Real defaultmaxcapacityforunit,
|
Real defaultmaxloadpercentage,
|
Real defaultmaxcapacityforstockingpoint,
|
Real defaultoperationinputoutputquantity,
|
Boolean hasdefaultinventoryholding,
|
String defaultaccountforinventoryvalue,
|
Boolean hasabsolutecostforinventoryholding,
|
Real defaultabsolutecostforinventoryholding,
|
Real defaultannualinterestrateforinventoryholding,
|
String periodspecificationforunitactual,
|
Number defaultnumberofperiodsavgdemand,
|
Real optimizernoisethreshold,
|
Number numberofperiodssmartplan,
|
Boolean isslidinghorizon,
|
Number numberofperiodsinwindow,
|
Number numberofperiodsperslide,
|
Real defaultservicelevel,
|
Real stockingpointbottleneckthreshold
|
) declarative remote as Boolean
|
{
|
Description: 'Called by designer'
|
TextBody:
|
[*
|
/*****
|
PLEASE ENSURE THAT DATA ISSUE IS CHECKED BEFORE DATA WARNING
|
**/
|
feedback_o := '';
|
sanitycheckfeedback_o := '';
|
|
// ShiftPattern
|
if( isnull( shiftpattern ) )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNullDefaultShiftPattern();
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Absolute upper and lower limit
|
else if( absoluteupperlimit <= absolutelowerlimit )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsAbsoluteUpperLimitLowerThanAbsoluteLowerLimit( absoluteupperlimit, absolutelowerlimit );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
//default number of periods average demand
|
else if( defaultnumberofperiodsavgdemand <= 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_InvalidNumberOfPeriodsForAvgSD( defaultnumberofperiodsavgdemand );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Number of decimal
|
else if( numberofdecimal < 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeNumberOfDecimals( numberofdecimal );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Lot size tolerance
|
else if( lotsizetolerance < 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeLotSizeTolerance( lotsizetolerance );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// KPI horizon start and end
|
else if( startofkpihorizon > endofkpihorizon )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsStartAfterEndOfKPIHorizon( endofkpihorizon, startofkpihorizon );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Default smart plan strategy
|
else if( defaultsmartplanstrategyname = '' )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsDefaultSmartPlanStrategyNameEmpty();
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Sanity check limit
|
else if( sanitychecklimit < 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeSanityCheckLimit( sanitychecklimit );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Default allocation
|
else if( defaultallocation < 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultAllocation( defaultallocation );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Default Efficiency
|
else if( defaultefficiency < 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultEfficiency( defaultefficiency );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Default capacity for unit
|
else if( defaultmincapacityforunit < 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultMinCapacityForUnit( defaultmincapacityforunit );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Default max capacity for unit
|
else if( defaultmaxcapacityforunit < 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultMaxCapacityForUnit( defaultmaxcapacityforunit );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Default min and max capacity
|
else if( defaultmincapacityforunit > defaultmaxcapacityforunit )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsUnitDefaultMinCapacityGreaterThanDefaultMaxCapacity( defaultmaxcapacityforunit, defaultmincapacityforunit );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Default max load percentage
|
else if( defaultmaxloadpercentage < 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultMaxLoadPercentage( defaultmaxloadpercentage );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Default max capacity for stocking point
|
else if( defaultmaxcapacityforstockingpoint < 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultMaxCapacityForStockingPoint( defaultmaxcapacityforstockingpoint );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Default operation in/out quantity
|
else if( defaultoperationinputoutputquantity < 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeDefaultOperationInputOutputQuantity( defaultoperationinputoutputquantity );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Check valid period specification for actuals
|
else if( not GlobalParameters_MP::GetHasValidPeriodSpecificationUnitActual( macroplan, periodspecificationforunitactual ) )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsInvalidPeriodSpecificationForUnitActual();
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
// Check for disaggregation factor
|
else if( not GlobalParameters_MP::GetIsValidDisaggregationFactor( disaggregationratio ) )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_InvalidDisaggregationRatio();
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
else if( optimizernoisethreshold < 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_IsNegativeOptimizerNoiseThreshold( optimizernoisethreshold );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
else if( numberofperiodssmartplan <= 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_InsufficientPeriods( numberofperiodssmartplan );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
else if( isslidinghorizon and numberofperiodsinwindow <= 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_InsufficientPeriodsInWindow( numberofperiodsinwindow );
|
}
|
else if( isslidinghorizon and numberofperiodsperslide <= 0 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_InsufficientPeriodsPerSlide( numberofperiodsperslide );
|
}
|
else if( isslidinghorizon and numberofperiodsinwindow < numberofperiodsperslide )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_ValidateInput_TooManyPeriodsInSlide( numberofperiodsinwindow, numberofperiodsperslide );
|
}
|
// check for
|
else if( hasdefaultinventoryholding )
|
{
|
isValidDefaultInventoryHolding := GlobalParameters_MP::ValidateDefaultInventoryHoldingCosts( feedback_o, sanitycheckfeedback_o, macroplan,
|
defaultaccountforinventoryvalue,
|
hasabsolutecostforinventoryholding,
|
defaultabsolutecostforinventoryholding,
|
defaultannualinterestrateforinventoryholding );
|
if( isValidDefaultInventoryHolding )
|
{
|
if( defaultservicelevel <= 50 or defaultservicelevel >= 100 )
|
{
|
feedback_o := Translations::MP_GlobalParameters_MP_IsValidDefaultServiceLevel( defaultservicelevel );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
else if( feedback_o.Length() = 0 )
|
{
|
GlobalParameters_MP::ValidateBottlenecktInput( feedback_o, sanitycheckfeedback_o, macroplan, bottlenecktolerance,bottleneckwindowstart, bottleneckwindowend, capacitybelowthreshold,capacityabovethreshold, stockingpointbottleneckthreshold, false );
|
}
|
}
|
}
|
|
// Add instance text
|
if( feedback_o <> '' )
|
{
|
feedback_o := SanityCheckMessage::GetFormattedMessage( Translations::MP_GlobalParameters_Instance(), feedback_o );
|
}
|
|
return feedback_o = '';
|
*]
|
}
|