| 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 ); | 
|   *] | 
| } |