| Quintiq file version 2.0 | 
| #parent: #root | 
| Method UpdateTypeIndex ( | 
|   String id | 
| ) | 
| { | 
|   Description: 'Update currency TypeIndex and the linked instances' | 
|   TextBody: | 
|   [* | 
|     // Execute the code only if the ID is changed | 
|     if( this.ID() <> id ) | 
|     { | 
|       // Update CurrencyRate_MP with the new currency ID | 
|       traverse( this, CurrencyRate_MP, cr ) | 
|       { | 
|         cr.UpdateTypeIndex( id, cr.Start() ); | 
|       } | 
|        | 
|       // Update SalesDemand with the new currency ID | 
|       traverse( this, SalesDemand, sd ) | 
|       { | 
|         sd.UpdateForeignKey( sd.ProductID(), | 
|                              sd.StockingPointID(), | 
|                              sd.SalesSegmentName(), | 
|                              sd.PriorityName(), | 
|                              id, | 
|                              sd.UnitOfMeasureName() );                        | 
|       } | 
|      | 
|       // Update StockingPoint_MP with the new currency ID | 
|       traverse( this, StockingPoint_MP, sp ) | 
|       { | 
|         sp.UpdateForeignKey( sp.UnitOfMeasureName(), id, sp.GroupName(), sp.UnitID() ); | 
|       } | 
|      | 
|       // Update Unit with the new currency ID | 
|       traverse( this, Unit, unit ) | 
|       { | 
|         unit.UpdateForeignKey( id, | 
|                                unit.GroupName(), | 
|                                unit.ParentUnitID(), | 
|                                unit.UnitOfMeasureName() ); | 
|       } | 
|        | 
|       // Update this Currency_MP with the new currency ID | 
|       this.IsManuallyConfigured( true ); | 
|       Currency_MP::ChangeKeyCurrencyTypeIndex( this, id ); | 
|     } | 
|   *] | 
| } |