Quintiq file version 2.0
|
#parent: #root
|
StaticMethod ValidateInput (
|
output String feedback_o,
|
output String sanitycheckfeedback_o,
|
MacroPlan macroplan,
|
SalesDemandBase salesdemand,
|
SalesSegment_MP salessegment,
|
StockingPoint_MP stockingpoint,
|
Product_MP product,
|
Date start,
|
Date end,
|
Currency_MP currency,
|
UnitOfMeasure_MP unitofmeasure,
|
Real quantity,
|
Real price,
|
Priority priority,
|
Real demanduncertaintypercentage,
|
Boolean isexcludedfromfulfillmentkpi,
|
Boolean validatestartend
|
) declarative remote as Boolean
|
{
|
Description: 'Validate user input from dialog'
|
TextBody:
|
[*
|
feedback_o := '';
|
sanitycheckfeedback_o := '';
|
|
gp := macroplan.GlobalParameters_MP();
|
typename := guard( salesdemand.GetTypeName(), 'Sales demand' );
|
|
// Check if sales segment is null
|
if( isnull( salessegment ) )
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_IsNullSalesSegment( typename );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if stocking point is null
|
else if( isnull( stockingpoint ) )
|
{
|
// Check if sales demand is null or sales demand have any stocking point id designated
|
if( isnull( salesdemand )
|
or salesdemand.StockingPointID() = '' )
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_IsNullStockingPoint( typename );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
else
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_IsNonExistingStockingPoint( salesdemand.StockingPointID(), typename );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
}
|
// Check if product is null
|
else if( isnull( product ) )
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_IsNullProduct( typename );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if quantity is valid
|
else if( quantity < 0.0 )
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_IsNegativeQuantity( quantity );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if currency is null
|
else if( isnull( currency ) )
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_IsNullCurrency( typename );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if unit of measure is null
|
else if( isnull( unitofmeasure ) )
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_IsNullUOM( typename );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if price is valid
|
else if( price < 0.0 )
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_IsNegativePrice( price );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if priority is valid
|
else if( not isexcludedfromfulfillmentkpi and isnull( priority ) )
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_IsNullPriority( typename );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if demand uncertainty percentage is within the allowed range
|
else if( demanduncertaintypercentage < 0.0 or demanduncertaintypercentage > 100.0 )
|
{
|
feedback_o := Translations::MP_NumericalValueRange_ValidateInput( "Demand uncertainty percentage", 0.0, 100.0 );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if start and end is valid
|
else if( start.IsInfinite() or end.IsInfinite() )
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_IsNullStartOrEnd( typename );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if start and end combination is valid
|
else if( validatestartend and start >= end )
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_IsInvalidStartEndDate( start, end );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
|
}
|
// Check if quantity is valid
|
else if( quantity <> 0
|
and not GlobalParameters_MP::GetIsValueWithinRange( quantity, gp.AbsoluteUpperLimit(), gp.AbsoluteLowerLimit() ) )
|
{
|
feedback_o := Translations::MP_SalesDemand_ValidateInput_InvalidQuantity( quantity,
|
gp.AbsoluteUpperLimit(),
|
gp.AbsoluteLowerLimit() );
|
sanitycheckfeedback_o := SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning();
|
}
|
|
// Add feedback text if any of the preconditions above are violated
|
if( feedback_o <> '' )
|
{
|
instance := SalesDemandBase::GetInstanceText( product, salessegment, start, end, typename );
|
feedback_o := SanityCheckMessage::GetFormattedMessage( instance, feedback_o );
|
}
|
|
return feedback_o = '';
|
*]
|
}
|