Quintiq file version 2.0
|
#parent: #root
|
StaticMethod CheckNoGap (
|
const LibOpt_Scope scope
|
) const
|
{
|
TextBody:
|
[*
|
if ( scope.Run().OptimizationConst().astype( Optimization ).DebugMode() )
|
{
|
traverse( scope.GetProductInStockingPointInOptimizerRunConst(), Elements, pisp, pisp.IsLeaf() )
|
{
|
current := pisp.FirstPlanningPISPIP();
|
state := 0;
|
while( not isnull( current ) )
|
{
|
if ( scope.Contains( current.PISPIPInOptimizerRun() ) and state = 0 )
|
{
|
state := 1; // in scope block started
|
assert( current = pisp.EarliestPISPIPInScope(), 'wrong earliest pispip for ', pisp.Name() );
|
}
|
if ( not scope.Contains( current.PISPIPInOptimizerRun() ) and state = 1 )
|
{
|
state := 2; // in scope block exited - anything encounter in scope now -> error
|
if ( not current.PreviousPlanningPISPIP() = pisp.LatestPISPIPInScope() )
|
{
|
traverse( pisp, ProductInStockingPointInPeriodPlanning, pispip )
|
{
|
debuginfo( pispip.Start(), scope.Contains( pispip.PISPIPInOptimizerRun() ), pispip.DefinitionName() );
|
}
|
}
|
assert( current.PreviousPlanningPISPIP() = pisp.LatestPISPIPInScope(), 'wrong latest pispip for ', pisp.Name() );
|
}
|
if ( scope.Contains( current.PISPIPInOptimizerRun() ) and state = 2 )
|
{
|
error( 'failed no gaps property for ', pisp.Name(), current.Start() );
|
}
|
current := current.NextPlanningPISPIP();
|
}
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|