| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod CanDragAndDropResourceNodes ( | 
|   Unit dpfocusedunit, | 
|   output String feedback_o, | 
|   Units units | 
| ) declarative remote as Boolean | 
| { | 
|   Description: | 
|   [* | 
|     If current supply chain view is displaying all root unit, dragging and dropping of resource nodes should not be allowed (Resource nodes are unit nodes that has parent) | 
|     control / shift key is to prevent collision with other drag and drop. | 
|   *] | 
|   TextBody: | 
|   [* | 
|     // If current supply chain view is displaying all root unit, dragging and dropping of resource nodes should not be allowed (Resource nodes are unit nodes that has parent) | 
|     // control / shift key is to prevent collision with other drag and drop | 
|     feedback_o := ''; | 
|      | 
|     // Check if the selected set of units has different parents | 
|     if( units.Size() > 0 and exists( units, Elements, el, el.Parent() <> units.Element( 0 ).Parent() ) ) | 
|     { | 
|       feedback_o := Translations::MP_SupplyChainView_CanDragAndDropResourceNodes_DifferentLevel(); | 
|     } | 
|     else | 
|     { | 
|       level := units.Element( 0 ).Level(); | 
|       parentname := guard( units.Element( 0 ).Parent().Name(), '' ); | 
|       // Check if dpfocusedunit is null | 
|       if( isnull( dpfocusedunit ) ) | 
|       { | 
|         // Check if level is not equals to 1 | 
|         if( level <> 1 ) | 
|         { | 
|         feedback_o := Translations::MP_SupplyChainView_CanDragAndDropResourceNodes_DrillTowards( parentname ); | 
|         } | 
|       } | 
|       else | 
|       { | 
|         // Check if dpfocusedunit's level + 1 is not equals to level | 
|         // or dpfocusedunit's name is not equals to parentname | 
|         if( dpfocusedunit.Level() + 1 <> level or parentname <> dpfocusedunit.Name() ) | 
|         { | 
|           feedback_o := Translations::MP_SupplyChainView_CanDragAndDropResourceNodes_DrillTowards( parentname ); | 
|      | 
|           // Check if level equals to 1 | 
|           if( level = 1 ) | 
|           { | 
|             feedback_o := Translations::MP_SupplyChainView_CanDragAndDropResourceNodes_DrillTowardsRootLevel(); | 
|           } | 
|         } | 
|       } | 
|     } | 
|      | 
|     return feedback_o = ''; | 
|   *] | 
| } |