Simplify cases and logic for moving Products
Update calls to hasChild from hasDescendentProductContainer