| Quintiq file version 2.0 | 
| #parent: #root | 
| Method AssignParent ( | 
|   LibCal_EventType parent | 
| ) | 
| { | 
|   Description: 'Assign this event type as a child of the given event type' | 
|   TextBody: | 
|   [* | 
|     // zlg Nov-20-2015 (created) | 
|     oldparent := this.Parent(); | 
|     newparentid := guard( parent.ID(), '' ); | 
|     hasnewparent := guard( oldparent.ID(), '' ) <> newparentid; | 
|      | 
|     if( this.HasDescendant( parent ) ) | 
|     { | 
|       parent.ParentID( this.ParentID() ); | 
|     } | 
|     this.ParentID( newparentid ); | 
|      | 
|     // Calculate siblings of the product to the new parent | 
|     if( hasnewparent ) | 
|     { | 
|       this.ParentID( guard( parent.ID(), '' ) ); | 
|      | 
|       traverse( this, AllChildren.AsChildren, p ) | 
|       { | 
|         p.SetAllParent(); | 
|       } | 
|      | 
|       // Propogate the HasParent attribute to use in setting root product | 
|       Transaction::Transaction().Propagate( attribute( Product_MP, HasParent ) ); | 
|       this.SetRootEvent(); | 
|     //  this.SetSiblings(); | 
|      | 
|       // Recalculate siblings for the old parent | 
|     //  traverse( oldparent, AllChildren, child ) | 
|     //  { | 
|     //    child.AsChildren().SetSiblings(); | 
|     //  } | 
|      | 
|     } | 
|   *] | 
| } |