Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Function CalcStatus 
 | 
{ 
 | 
  Description: 'Calculate the status depending of the parent and the childs' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Calculate status 
 | 
     
 | 
    // Default value 
 | 
    value := OptimizerPuzzleBase::StatusIcon_Check(); 
 | 
     
 | 
    isChild := this.ChildSubsetNonSystem( relsize ) = 0; 
 | 
    // Is a child 
 | 
    if( isChild ) 
 | 
    { 
 | 
      value := ifexpr( this.IsIncludeFinal(), OptimizerPuzzleBase::StatusIcon_Check(), OptimizerPuzzleBase::StatusIcon_Uncheck() ); 
 | 
    } 
 | 
    // Is a parent 
 | 
    else 
 | 
    { 
 | 
      // Get all children unique status  
 | 
      uniqueStatus := selectuniquevalues( this, ChildSubsetNonSystem, child, true, child.Status() ); 
 | 
      uniqueStatusFirstElement := uniqueStatus.Element( 0 ); 
 | 
       
 | 
      if( this.IsIncludeFinal() ) 
 | 
      { 
 | 
        // If all children having same status AND inclusion state equals me => set my status to equal the unique value of my children status (partial check or check) 
 | 
        value := ifexpr( uniqueStatus.Size() = 1 and this.GetIsPartialOrFullyCheck( uniqueStatusFirstElement ), 
 | 
                         uniqueStatusFirstElement,  
 | 
                         OptimizerPuzzleBase::StatusIcon_PartialCheck() ); 
 | 
      } 
 | 
      else 
 | 
      { 
 | 
        // If all children having same status AND inclusion state equals me => set my status to equal the unique value of my children status (partial uncheck or uncheck) 
 | 
        value := ifexpr( uniqueStatus.Size() = 1 and this.GetIsPartialOrFullyUncheck( uniqueStatusFirstElement ),  
 | 
                         uniqueStatusFirstElement,  
 | 
                         OptimizerPuzzleBase::StatusIcon_PartialUncheck() ); 
 | 
      } 
 | 
    } 
 | 
     
 | 
    this.Status( value ); 
 | 
  *] 
 | 
} 
 |