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 ); 
 | 
    } 
 | 
  *] 
 | 
} 
 |