Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method RemoveUnusedOperationPeriodTaskAfterSmartPlan ( 
 | 
  LibOpt_Task task 
 | 
) 
 | 
{ 
 | 
  Description: 'Remove the period task with quantity = 0 after running optimizer, to reduce memory consumption' 
 | 
  TextBody: 
 | 
  [* 
 | 
    runcontext := RunContextForCapacityPlanning::GetRunContextCapacityPlanning( task.Run() );  
 | 
    userperiodtasks := runcontext.GetUserPeriodTaskOperations();  
 | 
     
 | 
    periodtasks := selectset( task, TaskContext.astype( TaskContextSmartPlan ).PeriodTaskOperation, periodtask,  
 | 
                              not periodtask.HasFeedback()  
 | 
                              and not periodtask.UnitPeriod().IsPeriodFrozen()  
 | 
                              and periodtask.OptimizerQuantity() = 0 );  
 | 
     
 | 
    periodtasks := periodtasks.Difference( userperiodtasks );   // Remove those with manual planning quantity set to 0. 
 | 
     
 | 
    traverse( periodtasks, Elements, pt ) 
 | 
    { 
 | 
      pt.Delete(); 
 | 
    } 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |