Quintiq file version 2.0
|
#parent: #root
|
Method AssignParent (
|
Unit parent
|
)
|
{
|
Description: 'Assign this unit as a child the given unit.'
|
TextBody:
|
[*
|
// desmondt Jul-2-2015 (created)
|
oldparent := this.Parent();
|
newparentid := guard( parent.ID(), '' );
|
hasnewparent := this.ParentUnitID() <> newparentid;
|
|
if( this.HasDescendant( parent ) )
|
{
|
parent.ParentUnitID( this.ParentUnitID() );
|
}
|
this.ParentUnitID( newparentid );
|
|
// Calculate siblings of the product to the new parent
|
if( hasnewparent )
|
{
|
this.ParentUnitID( newparentid );
|
|
traverse( this, AllChildren.AsChildren, u )
|
{
|
u.SetAllParent();
|
}
|
|
// Propogate the HasParent attribute to use in setting root product
|
Transaction::Transaction().Propagate( attribute( Unit, HasParent ) );
|
this.SetRootUnit();
|
this.SetSiblings();
|
|
// Recalculate siblings for the old parent
|
traverse( oldparent, AllChildren, child )
|
{
|
child.AsChildren().SetSiblings();
|
}
|
}
|
*]
|
}
|