Quintiq file version 2.0
|
#parent: #root
|
Method SetOptimizerPuzzle (
|
OptimizerPuzzle optpuzzle,
|
Period_MPs periods
|
)
|
{
|
TextBody:
|
[*
|
verify( not isnull( optpuzzle ), Translations::Algorithm_MP_NoOptimizerPuzzleAvailableError() );
|
|
macroplan := this.MacroPlan();
|
traverse( macroplan, Period_MP, period )
|
{
|
period.IsInOptimizerPuzzle( false );
|
}
|
|
traverse( periods, Elements, period )
|
{
|
period.IsInOptimizerPuzzle( true );
|
}
|
|
// set is included flags on product. Only used within this method to make selection of PISPs more efficient.
|
traverse( macroplan, Product_MP, product )
|
{
|
product.IsInOptimizerPuzzle( false ); // clear flags on all
|
}
|
traverse( optpuzzle.GetIncludedProducts(), Elements, product )
|
{
|
product.IsInOptimizerPuzzle( true ); // set according to puzzle
|
}
|
|
units := optpuzzle.GetIncludedUnits();
|
sps := optpuzzle.GetIncludedStockingPoints( units );
|
|
traverse( macroplan, StockingPoint_MP, sp )
|
{
|
sp.isInOptimizerPuzzle( false );
|
}
|
traverse( sps, Elements, sp )
|
{
|
sp.isInOptimizerPuzzle( true );
|
}
|
|
traverse( macroplan, Unit, unit )
|
{
|
unit.IsInOptimizerPuzzle( false );
|
}
|
|
traverse( units, Elements, unit )
|
{
|
unit.IsInOptimizerPuzzle( true );
|
unit.OptimizerFullRunAddedOperationOrTrip( false );
|
}
|
|
if ( this.DebugMode() ) // write back values to check we adhere to the sub puzzle
|
{
|
traverse( macroplan, Unit.UnitPeriod, up )
|
{
|
up.DebugSubPuzzleQuantityToProcessPrior( up.QuantityToProcess() );
|
}
|
|
traverse( macroplan, StockingPoint_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriodPlanning, p )
|
{
|
p.DebugSubPuzzleInventoryEndPrior( p.InventoryLevelEnd() );
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|