Wrong computation of move done
The method does not take into account the sign of the quantity.
So in some case it could return wrongly True because it is a return (negative quantity) and all move are in the state done (but not all quantity has been created) so the the quantity computed will be negative.