| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod CanCreate ( | 
|   output String feedback_o, | 
|   Units units, | 
|   MacroPlan macroplan | 
| ) declarative remote as Boolean | 
| { | 
|   Description: 'Can create new operation' | 
|   TextBody: | 
|   [* | 
|     // Ensure units dropped are not child of units with aggregated capacity | 
|     isrootunits := not exists( units, Elements, e, e.IsChildOfAggregatedCapacity() ); | 
|      | 
|     // Ensure that we have at least a unit in MacroPlan when creating a new operation. | 
|     hasunits := macroplan.Unit( relsize ) > 0 ; | 
|      | 
|     // Has no transport unit | 
|     hasnotransportunits := not exists( units, Elements, e, e.HasCapacityTypeTransportBase() ); | 
|      | 
|     isvalid := isrootunits and hasunits and hasnotransportunits; | 
|      | 
|     if( not isrootunits ) | 
|     { | 
|       feedback_o := Translations::MP_Operation_CanCreate_NotAggregatedUnit(); | 
|     } | 
|     else if( not hasunits ) | 
|     { | 
|       feedback_o := Translations::MP_Operation_CanCreate_IsUnitExists(); | 
|     } | 
|     // Transport unit cannot be used for operation | 
|     else if( not hasnotransportunits ) | 
|     { | 
|       feedback_o := Translations::MP_Process_ValidateInput_IsNotTransportUnit(); | 
|     } | 
|      | 
|     return isvalid; | 
|   *] | 
| } |