public void MoveNode(ContableAccountTreeNode node, FacturanetTreeNode parent)
        {
            node.Remove();

            var parentAsAccountTreeListItem = parent.Data as AccountTreeListItem;

            if (parentAsAccountTreeListItem != null)
            {
                node.ContableAccount.AccountTreeId   = parentAsAccountTreeListItem.Id;
                node.ContableAccount.ParentAccountId = null;
            }
            else
            {
                var parentAsContableAccount = parent.Data as ContableAccount;
                node.ContableAccount.AccountTreeId   = parentAsContableAccount.AccountTreeId;
                node.ContableAccount.ParentAccountId = parentAsContableAccount.Id;
            }

            parent.Nodes.Add(node);
        }
 private bool AllowMove(FacturanetTreeNode node, FacturanetTreeNode destination)
 {
     if (destination != null &&
         node != null &&
         destination != node &&
         !node.IsAncestorOf(destination))
     {
         Guid destinationTreeId;
         var  destinationAsAccountTreeListItem = destination.Data as AccountTreeListItem;
         if (destinationAsAccountTreeListItem != null)
         {
             destinationTreeId = destinationAsAccountTreeListItem.Id;
         }
         else
         {
             destinationTreeId = ((ContableAccount)destination.Data).AccountTreeId;
         }
         return(destinationTreeId == ((ContableAccount)node.Data).AccountTreeId);
     }
     else
     {
         return(false);
     }
 }