Quintiq file version 2.0
|
#parent: #root
|
Method GetSupplyChain (
|
GraphProgramGraph tree
|
) as String
|
{
|
Description: 'Construct the CSV string of the product specific supply chain. Input is tree from Treeify algorithm'
|
TextBody:
|
[*
|
// Construct of strings, each element correspond to one line in CSV string
|
pisps_string := construct( Strings );
|
|
// Header in CSV string
|
pisps_string.Add( "product;upstream;downstream;leadtime")
|
|
// Select root node of tree
|
root := select( tree, Nodes, node, node.Name() = MEIO_Treeify::GetArtificialRootName() );
|
|
// Traverse through all non-root nodes to create CSV rows
|
traverse( tree, Nodes, node, node <> root )
|
{
|
downstream := node.Object1().astype( ProductInStockingPoint_MP );
|
upstream_node := select( node, Input, n, true );
|
if( not isnull( upstream_node ) )
|
{
|
// Collect leadtime, upstream PISP name, downstream PISP name, and leadtime between the two
|
leadtime := [String]downstream.MEIO_Leadtime();
|
upstream := upstream_node.Input().Object1().astype( ProductInStockingPoint_MP );
|
upstreamName := guard( upstream.Name(), MEIO_Treeify::GetArtificialRootName() );
|
|
// Create a row for the CSV on the header-format
|
pisp_string := downstream.Product_MP().Name() + this.Separator() + upstreamName + this.Separator() + downstream.Name() + this.Separator() + leadtime;
|
pisps_string.Add( pisp_string );
|
}
|
}
|
|
value := pisps_string.ToString( String::NewLine() );
|
Transaction::Transaction().Propagate( attribute( ProductInStockingPointInPeriodPlanningLeaf, IsActiveInMEIO ) );
|
|
return value;
|
*]
|
}
|