Quintiq file version 2.0
|
#parent: #root
|
Method FindPeggingCircularity (
|
output Process_MPs processes_o
|
) as String
|
{
|
TextBody:
|
[*
|
// soh yee Aug-13-2014 (created)
|
|
// Cycle examples:
|
// Example 1:
|
// Scrap + Prime -> Caster -> Ingot + Scrap
|
// Example 2:
|
// Scrap + Prime -> Caster -> Ingot
|
// Ingot -> Furnace -> Molten + Scrap
|
|
hascycle := false;
|
value := '';
|
searchdepth := GlobalParameters_MP::GetSearchDepthForPeggingCircular();
|
|
for( i := 1; i <= searchdepth and not hascycle; i++ )
|
{
|
traverse( this, LastBasePeriod.StockingPointInPeriod.LeafPlanningPISPIPs, pispip, not hascycle )
|
{
|
hascycle := pispip.GetHasCycle( pispip, processes_o, 0, i );
|
|
if( hascycle )
|
{
|
processes := selectvalues( processes_o, Elements, process, true, process.AsProcess_MP().Name() + ": " + process.Name() );
|
value := Translations::MP_MacroPlan_FindPeggingCircularity_CircularityFound( i, pispip.ProductInStockingPoint_MP().Name(), processes.ToString( String::NewLine() ) )
|
}
|
}
|
}
|
|
// No cycle is found for all active pispip. Return a not found message
|
if( not hascycle )
|
{
|
value := Translations::MP_MacroPlan_FindPeggingCircularity_CircularityNotFound( searchdepth );
|
}
|
|
return value;
|
*]
|
}
|