| Quintiq file version 2.0 | 
| #parent: #root | 
| Method UpdateTypeIndex ( | 
|   String id | 
| ) | 
| { | 
|   Description: 'Update Lane TypeIndex and the linked instances.' | 
|   TextBody: | 
|   [* | 
|     // Execute the logic below only if the new ID is not the same as the old ID | 
|     if( this.ID() <> id ) | 
|     { | 
|       // Update all LaneLeg(s) that belongs to this Lane | 
|       traverse( this, LaneLeg, leg ) | 
|       { | 
|         leg.UpdateTypeIndex( id, leg.OriginStockingPointID(), leg.DestinationStockingPointID() ); | 
|       } | 
|      | 
|       // Update all origin StockingPointInLane(s) that belongs to this Lane | 
|       traverse( this, Origin, origin ) | 
|       { | 
|         origin.UpdateTypeIndex( origin.StockingPointID(), id, origin.DestinationLaneID(), false ); | 
|       } | 
|      | 
|       // Update all destination StockingPointInLane(s) that belongs to this Lane | 
|       traverse( this, Destination, destination ) | 
|       { | 
|         destination.UpdateTypeIndex( destination.StockingPointID(), destination.OriginLaneID(), id, false ); | 
|       } | 
|      | 
|       // Update all ProductInLane(s) that belongs to this Lane | 
|       traverse( this, ProductInLane, pil ) | 
|       { | 
|         pil.UpdateTypeIndex( id, pil.ProductID() ); | 
|       } | 
|      | 
|       // Update all LaneCost(s) that is associated to this Lane | 
|       traverse( this, LaneCost, lcost ) | 
|       { | 
|         lcost.UpdateForeignKey( id ); | 
|       } | 
|        | 
|       // Update the ID of this Lane | 
|       this.IsManuallyConfigured( true ); | 
|       Lane::ChangeKeyLaneTypeIndex( this, id ); | 
|     } | 
|   *] | 
| } |