| Quintiq file version 2.0 | 
| #parent: #root | 
| Method UpdateTypeIndex ( | 
|   String name | 
| ) | 
| { | 
|   Description: 'Update sales segment TypeIndex.' | 
|   TextBody: | 
|   [* | 
|     // Execute the logic below only if the new name is not the same as the old name | 
|     if( name <> this.Name() ) | 
|     { | 
|       // Update foreign key of this SalesSegment_MPs' children SalesSegment_MPs | 
|       traverse( this, Child, c ) | 
|       { | 
|         c.UpdateForeignKey( name ); | 
|       } | 
|        | 
|       // Update type index of this SalesSegment_MPs' FulfillmentRestrictions | 
|       traverse( this, FulfillmentRestriction, fr ) | 
|       { | 
|         fr.UpdateTypeIndex( name, fr.ProductID(), fr.StartDate() ); | 
|       } | 
|      | 
|       // Update foreign key of this SalesSegment_MPs' SalesDemands | 
|       traverse( this, SalesDemand, sdemand ) | 
|       { | 
|         sdemand.UpdateForeignKey( sdemand.ProductID(), | 
|                                   sdemand.StockingPointID(), | 
|                                   name, | 
|                                   sdemand.PriorityName(), | 
|                                   sdemand.CurrencyID(), | 
|                                   sdemand.UnitOfMeasureName() ); | 
|       } | 
|        | 
|       // Update type index of this SalesSegment_MPs' PostponementSpecification | 
|       if( not isnull( this.PostponementSpecification() ) ) | 
|       { | 
|         this.PostponementSpecification().UpdateTypeIndex( name ); | 
|       } | 
|        | 
|       // Update foreign key of this SalesSegment_MPs' SalesLevel | 
|       traverse( this, ServiceLevelBase, sl )  | 
|       { | 
|         sl.UpdateForeignKey( sl.ProductID(), sl.StockingPointID(), name );  | 
|       } | 
|        | 
|       // Update type index of this SalesSegment_MP | 
|       SalesSegment_MP::ChangeKeySalesSegmentTypeIndex( this, name ); | 
|     } | 
|   *] | 
| } |