haorenhui
2023-10-30 6d6cc10d9e8e242661da7fd655dec155a09d676c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Quintiq file version 2.0
#parent: #root
Method SetDefaultValue () id:Method_DialogCreateEditProduct_SetDefaultValue
{
  #keys: '[135040.0.213300467]'
  Body:
  [*
    // Set default + init dialog
    dialogInstance := DataHolderDialogData.Data().WrappedInstance();
    isNew := isnull( dialogInstance );
    
    // Extract the parent product by filtering out the descendents of the selected products in order to prevent circularity
    products := construct( Product_MPs );
    if( isNew
        or dialogInstance.IsLeaf() ) // Is leaf
    {
      products := selectset( MacroPlan, Product_MP, p, true );
      currentScope := DataHolderDialogDatas.Data();
      
      products := products.Difference( currentScope );
    }
    else if( not dialogInstance.HasParent() ) // Is root level
    {
      products := selectset( MacroPlan, RootProduct, p, p <> dialogInstance );
    }
    else // Has Parent and Child
    {
      allProducts := selectset( MacroPlan, Product_MP, p, p <> dialogInstance );
      myChildren := selectset( dialogInstance, AllChildren.AsChildren, c, true );
    
      products := allProducts.Difference( myChildren );
    }
    
    DataHolderParentProductSelection.Data( products.Copy() );
  *]
}