Quintiq file version 2.0
|
#parent: #root
|
Method InitializeLaneAfterImport
|
{
|
Description: 'Set StockingPointInLane after import Lane & LaneLeg'
|
TextBody:
|
[*
|
// Jian Giang Aug-17-2016 (created)
|
|
//traverse laneleg for origin
|
traverse( this, Unit.Lane, lane )
|
{
|
originSPs := construct( StockingPoint_MPs );
|
destSPs := construct( StockingPoint_MPs );
|
|
oristockingpointinlanes := construct( StockingPointInLanes );
|
desstockingpointinlanes := construct( StockingPointInLanes );
|
|
// select the old stockingpointinlanes
|
oldoristockingpointinlanes := selectset( lane, Origin, ori, true, true );
|
olddesstockingpointinlanes := selectset( lane, Destination, dest, true, true );
|
|
traverse( lane, LaneLeg, laneleg )
|
{
|
laneid := lane.ID();
|
orispil := select( lane, Origin, o,
|
o.OriginLaneID() = laneid and o.StockingPointID() = laneleg.OriginStockingPointID() );
|
desspil := select( lane, Destination, d,
|
d.DestinationLaneID() = laneid and d.StockingPointID() = laneleg.DestinationStockingPointID() );
|
|
oristockingpointinlanes.Add( orispil );
|
desstockingpointinlanes.Add( desspil );
|
|
orisp := StockingPoint_MP::FindStockingPointTypeIndex( laneleg.OriginStockingPointID() );
|
if( not isnull( orisp ) )
|
{
|
originSPs.Add( orisp );
|
}
|
destsp := StockingPoint_MP::FindStockingPointTypeIndex( laneleg.DestinationStockingPointID() );
|
if( not isnull( destsp ) )
|
{
|
destSPs.Add( destsp );
|
}
|
}
|
originSPs := originSPs.Unique();
|
if( originSPs.Size() > 0 )
|
{
|
lane.AddStockingPoints( originSPs, true, true );
|
}
|
|
destSPs := destSPs.Unique();
|
if( destSPs.Size() > 0 )
|
{
|
lane.AddStockingPoints( destSPs, false, true );
|
}
|
//delete unused stockingointinlanes
|
obsoleteoristockingpointinlanes := oldoristockingpointinlanes.Difference( oristockingpointinlanes );
|
obsoletedesstockingpointinlanes := olddesstockingpointinlanes.Difference( desstockingpointinlanes );
|
Lane::DeleteLaneLegs( lane, obsoleteoristockingpointinlanes, true );
|
Lane::DeleteLaneLegs( lane, obsoletedesstockingpointinlanes, false );
|
}
|
*]
|
}
|