Quintiq file version 2.0
#parent: TabPageGeneral/DataHolderProduct
Response OnCreated () id:Response_TabPageGeneral_DataHolderProduct_OnCreated
{
  #keys: '[106810.1.80242690]'
  Body:
  [*
    // Extract the parent product by filtering out the descendents of the selected products in order to prevent circularity
    data := Dialog.Data().WrappedInstance();
    isNew := isnull( data );
    products := null( Product_MPs, owning );
    
    if( isNew
        or data.IsLeaf() ) // Is leaf
    {
      products := selectset( MacroPlan, Product_MP, p, true );
      currentScope := DataHolderEditingProduct.Data();
      
      products := products.Difference( currentScope );
    }
    else if( not data.HasParent() ) // Is root level
    {
      products := selectset( MacroPlan, RootProduct, p, p <> data );
    }
    else // Has Parent and Child
    {
      allProducts := selectset( MacroPlan, Product_MP, p, p <> data );
      myChildren := selectset( data, AllChildren.AsChildren, c, true );
    
      products := allProducts.Difference( myChildren );
    }
    
    this.Data( products.Copy() );
  *]
  DefinitionID: 'Responsedef_GUIComponent_OnCreated'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
}
