Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method UpdateTypeIndex ( 
 | 
  String unitid 
 | 
) 
 | 
{ 
 | 
  Description: 'Update unit TypeIndex and the linked instances.' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Update unit TypeIndex and the linked instances if the new ID is not the same as the old ID 
 | 
    if( this.ID() <> unitid ) 
 | 
    {    
 | 
      // Update type index of all linked UnitPeriods 
 | 
      traverse( this, UnitPeriod, up ) 
 | 
      { 
 | 
        up.UpdateTypeIndex( unitid, up.Start(), up.End() ); 
 | 
      } 
 | 
     
 | 
      // Update foreign key of all linked Children 
 | 
      traverse( this, Child, c ) 
 | 
      { 
 | 
        c.UpdateForeignKey( c.CurrencyID(), c.GroupName(), unitid, c.UnitOfMeasureName() ) 
 | 
      } 
 | 
     
 | 
      // Update type index of all linked CampaignType_MPs 
 | 
      traverse( this, CampaignType_MP, ct ) 
 | 
      { 
 | 
        ct.UpdateTypeIndex( ct.Name(), unitid ); 
 | 
      } 
 | 
     
 | 
      // Update foreign key of all linked Lanes 
 | 
      traverse( this, Lane, lane ) 
 | 
      { 
 | 
        lane.UpdateForeignKey( unitid ); 
 | 
      } 
 | 
     
 | 
      // Update foreign key of all linked Operations 
 | 
      traverse( this, Operation, operation ) 
 | 
      { 
 | 
        operation.UpdateForeignKey( unitid, operation.RoutingID(), operation.RoutingStepName() ); 
 | 
      } 
 | 
     
 | 
      // Update foreign key of all linked StockingPoint_MPs 
 | 
      traverse( this, StockingPoint_MP, sp ) 
 | 
      { 
 | 
        sp.UpdateForeignKey( sp.UnitOfMeasureName(), sp.CurrencyID(), sp.GroupName(), unitid ); 
 | 
      } 
 | 
     
 | 
      // Update type index of all linked StockingPointUnits 
 | 
      traverse( this, StockingPointUnit, spunit ) 
 | 
      { 
 | 
        spunit.UpdateTypeIndex( spunit.StockingPointID(), unitid, spunit.IsInput() ); 
 | 
      } 
 | 
     
 | 
      // Update type index of all linked SupplySpecifications 
 | 
      traverse( this, SupplySpecification, starget ) 
 | 
      { 
 | 
        starget.UpdateTypeIndex( unitid, starget.ProductID(), starget.Start(), starget.End() ); 
 | 
      } 
 | 
     
 | 
      // Update foreign key of all linked UnitAccounts 
 | 
      traverse( this, UnitAccount, uaccount ) 
 | 
      { 
 | 
        uaccount.UpdateForeignKey( unitid ); 
 | 
      } 
 | 
     
 | 
      // Update foreign key of all linked UnitCosts 
 | 
      traverse( this, UnitCost, ucost ) 
 | 
      { 
 | 
        ucost.UpdateForeignKey( unitid ); 
 | 
      } 
 | 
     
 | 
      // Update type index of all linked UnitAvailabilities 
 | 
      traverse( this, UnitAvailability, uavailability ) 
 | 
      { 
 | 
        uavailability.UpdateTypeIndex( unitid, uavailability.Start() ); 
 | 
      } 
 | 
       
 | 
      // Update type index of all linked UnitCalendarElements 
 | 
      traverse( this, UnitCalendarElement, ucelement ) 
 | 
      { 
 | 
        ucelement.UpdateTypeIndex( unitid, ucelement.Start(), ucelement.End() ); 
 | 
      } 
 | 
     
 | 
      // Update type index of all linked UnitCapacities 
 | 
      traverse( this, UnitCapacity, ucapacity ) 
 | 
      { 
 | 
        ucapacity.UpdateTypeIndex( unitid, ucapacity.Start() ); 
 | 
      } 
 | 
       
 | 
      // Update type index of all linked TransitionType_MPs 
 | 
      traverse( this, TransitionType_MP, transtype ) 
 | 
      { 
 | 
        transtype.UpdateTypeIndex( transtype.Name(), unitid ); 
 | 
      } 
 | 
       
 | 
      // Update type index of all linked TransportAvailabilities 
 | 
      traverse( this, TransportAvailability, transcap ) 
 | 
      { 
 | 
        transcap.UpdateTypeIndex( unitid, transcap.Start() ); 
 | 
      } 
 | 
       
 | 
      // Update EntityID of subsets for Unit 
 | 
      traverse( this, SubsetEntityInOptimizerPuzzleBase, subsets ) 
 | 
      { 
 | 
        subsets.UpdateTypeIndex( subsets.OptimizerPuzzleName(), unitid, subsets.EntityType() ); 
 | 
      }  
 | 
       
 | 
      // Update type index of all linked UnitShiftPatterns 
 | 
      traverse( this, UnitShiftPattern, unitshiftpattern ) 
 | 
      { 
 | 
        unitshiftpattern.UpdateTypeIndex( unitid, unitshiftpattern.ShiftPatternName() ); 
 | 
      } 
 | 
       
 | 
      // Update type index of this Unit 
 | 
      this.IsManuallyConfigured( true ); 
 | 
      Unit::ChangeKeyUnitTypeIndex( this, unitid ); 
 | 
       
 | 
      // Update ID of the calendar associate to this Unit 
 | 
      this.UnitCalendar().SetCalendarID(); 
 | 
    } 
 | 
  *] 
 | 
} 
 |