It could not work properly here as we need the "fallback" to apply
even if there is no quantity at all in the stock. As we hook the
reservation rules in StockMove._update_reserved_quantity(), and
this method is called only if we have at least 1 product in qty,
the fallback was not applied with zero qty.
A new module will handle this concept: https://github.com/OCA/wms/pull/28
Example of configuration:
Rule location: Stock
Removal rule 1: Stock/Zone1
Removal rule 2: Stock/Zone2
Reservation of a stock move with Stock/Zone2 as source location.
Previously, it would reserve in Stock/Zone1.
Now, it will never be allowed to reserve in Stock/Zone1.
A warning message was added previously to warn the user about potential
issues, which is now obsolete so I removed it.
Before the change, the implementation of the fallback goes like this:
If I reserve a move of 3000 and it finds 600 units, it splits the move
to create a new move of 2400 and pretend to the caller that 3000 was
reserved so the initial move is changed to 'assigned'.
Now, if we have a move of 2400 and finds zero, it still splits the move,
and pretend to the caller that 2400 was reserved → the initial move has
no move line but is assigned. In this case, we should not split the move
but only update the source location of the move.