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