Quintiq file version 2.0 
 | 
#parent: #root 
 | 
MethodOverride SyncSubsetEntity ( 
 | 
  OptimizerPuzzleBase target 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Copy subset entity from WIP to OP 
 | 
    optimizerpuzzle := target.astype( OptimizerPuzzle ); 
 | 
    isfromdb := false; 
 | 
     
 | 
    currentList := selectset( optimizerpuzzle, SubsetEntityInOptimizerPuzzle, sub , true ); 
 | 
    newList := construct( SubsetEntityInOptimizerPuzzles ); 
 | 
     
 | 
    // Copy or update isuserAction subsets 
 | 
    // Not taking into consideration Entity without Parent if Include because of default behaviour 
 | 
    traverse( this, SubsetEntityInOptimizerPuzzleWip, subsource, subsource.IsUserAction() ) 
 | 
    { 
 | 
      targetSubset := SubsetEntityInOptimizerPuzzle::FindSubsetEntityOptimizerPuzzleTypeIndices( optimizerpuzzle.Name(), subsource.EntityID(), subsource.EntityType() ); 
 | 
      // Case create a new OptimizerPuzzle 
 | 
      if( isnull( targetSubset ) ) 
 | 
      { 
 | 
        // Create a SubsetEntity for OptimizerPuzzle.  
 | 
        targetSubset := SubsetEntityInOptimizerPuzzle::Create( optimizerpuzzle, subsource.Entity(), isfromdb );  
 | 
      } 
 | 
      // Case edit 
 | 
      else 
 | 
      { 
 | 
        if( targetSubset.OptimizerPuzzleName() <> this.Name() ) 
 | 
        { 
 | 
          // Update OptimizerPuzzleID, EntityID and EntityType 
 | 
          SubsetEntityInOptimizerPuzzle::ChangeKeySubsetEntityOptimizerPuzzleTypeIndices( targetSubset, this.Name(), targetSubset.EntityID(), targetSubset.EntityType() ); 
 | 
        } 
 | 
      } 
 | 
       
 | 
      // Update IsInclude and IsUserAction 
 | 
      targetSubset.IsIncluded( subsource.IsIncluded() ); 
 | 
      targetSubset.IsUserAction( subsource.IsUserAction() ); 
 | 
      newList.Add( targetSubset ); 
 | 
    } 
 | 
     
 | 
    toBeDeleted := currentList.Difference( newList );  
 | 
    SubsetEntityInOptimizerPuzzle::Delete( toBeDeleted ); 
 | 
  *] 
 | 
} 
 |