| Quintiq file version 2.0 | 
| #parent: #root | 
| Method UpdateTypeIndex ( | 
|   String operationid | 
| ) | 
| { | 
|   Description: 'Update operation TypeIndex and the linked instances.' | 
|   TextBody: | 
|   [* | 
|     // Update type indices if the current Operation ID is not the same as the new ID | 
|     if( this.ID() <> operationid ) | 
|     { | 
|       // Update foreign key of all linked OperationInputOutput | 
|       traverse( this, OperationInputOutput, rio ) | 
|       { | 
|         rio.UpdateForeignKey( operationid, | 
|                               guard( rio.ProductInStockingPoint_MP().ProductID(), '' ), | 
|                               guard( rio.ProductInStockingPoint_MP().StockingPointID(), '' ) ); | 
|       } | 
|      | 
|       // Update type index of all linked PeriodTaskOperation | 
|       traverse( this, PeriodTaskOperation, ptr ) | 
|       { | 
|         ptr.UpdateTypeIndex( ptr.StartAsTypeIndex(), operationid ); | 
|       } | 
|      | 
|       // Update foreign key of all linked OperationCost | 
|       traverse( this, OperationCost, oc ) | 
|       { | 
|         oc.UpdateForeignKey( operationid ); | 
|       } | 
|      | 
|       // Update type index of all linked OperationInCampaignType | 
|       traverse( this, OperationInCampaignType, rict ) | 
|       { | 
|         rict.UpdateTypeIndex( operationid, rict.CampaignTypeName(), rict.UnitID() ); | 
|       } | 
|      | 
|       // Update foreign key of all linked FeedbackPeriodTaskOperation | 
|       traverse( this, FeedbackPeriodTaskOperation, fptr ) | 
|       { | 
|         fptr.UpdateForeignKey( operationid ); | 
|       } | 
|      | 
|       // Update type index of all linked SourceOperationLink | 
|       traverse( this, SourceOperationLink, sol ) | 
|       { | 
|         sol.UpdateTypeIndex( operationid, sol.DestOperationID() ); | 
|       } | 
|      | 
|       // Update type index of all linked DestinationOperationLink | 
|       traverse( this, DestinationOperationLink, dol ) | 
|       { | 
|         dol.UpdateTypeIndex( dol.SourceOperationID(), operationid ); | 
|       } | 
|      | 
|       // Update type index of all linked OperationBOM | 
|       traverse( this, OperationBOM, oiopl ) | 
|       { | 
|         oiopl.UpdateTypeIndex( operationid, oiopl.ProductID(), oiopl.StockingPointID(), oiopl.IsInput() ); | 
|       } | 
|      | 
|       // Update type index of all linked OperationInputGroup | 
|       traverse( this, OperationInputGroup, oig ) | 
|       { | 
|         oig.UpdateTypeIndex( operationid, oig.InputGroupID() ); | 
|       } | 
|      | 
|       // Update type index of all linked OperationInputSet | 
|       traverse( this, OperationInputSet, ois ) | 
|       { | 
|         ois.UpdateTypeIndex( ois.Name(), operationid ); | 
|       } | 
|        | 
|       // Update type index of all linked OperationInTransitionType | 
|       traverse( this, OperationInTransitionType, oit ) | 
|       { | 
|         oit.UpdateTypeIndex( operationid, oit.TransitionTypeName(), oit.UnitID() ); | 
|       } | 
|        | 
|       // Update type index of this Operation | 
|       Operation::ChangeKeyOperationTypeIndex( this, operationid ); | 
|       this.IsManuallyConfigured( true ); | 
|     } | 
|   *] | 
| } |