Quintiq file version 2.0 
 | 
#parent: #root 
 | 
MethodOverride DeleteCondition (LibOpt_Task task) as Boolean 
 | 
{ 
 | 
  Description: 
 | 
  [* 
 | 
    This method checks if a rollback or an error occured on this component or on any downstream components. If there are no rollbacks and no errors, then the dataset that is attached to the `LibOpt_DatasetCopyOnRollbackOrError` is deleted. 
 | 
     
 | 
    Extending this method (or subclassing the `LibOpt_DatasetCopyOnRollbackOrError` type) will break the unit tests. We recommend you to create a new subclass from the `LibOpt_DatasetCopyConditional` type if you want to modify this method. 
 | 
  *] 
 | 
  TextBody: 
 | 
  [* 
 | 
    descendants := task.SnapshotComponent().Descendants(); 
 | 
     
 | 
    hasrollback := exists( descendants, 
 | 
                           Elements.astype( LibOpt_SnapshotKPI ), 
 | 
                           snapshotKPI,  
 | 
                           snapshotKPI.IsRolledBack() ); 
 | 
     
 | 
    hasrollbackorerror := hasrollback  
 | 
                          or exists( descendants, 
 | 
                                     Elements.astype( LibOpt_SnapshotError ), 
 | 
                                     snapshoterror,  
 | 
                                     true ); 
 | 
     
 | 
    return not hasrollbackorerror; 
 | 
  *] 
 | 
} 
 |