When the putaway selects a tray and a cell according to the storage
type, we still want the user to be able to override the selection by
scanning another tray type.
The use cases we want to cover are:
1. Putaway for a package/good without storage type
2. Putaway for a package with a storage type configured to be
stored in a tray (associated with a tray type)
3. Putaway for a package with a storage type NOT configured on a tray
type
The case 1. is implement in "stock_vertical_lift", the 2. was already
implement in this module, this commit implements the case 3.
A typical flow is:
* We configure a generic Kardex Box storage type, not associated with
any tray type, that is set on the package at reception (the reception
person doesn't know the tray type at this point). this Kardex Box
storage type is set on the Vertical Lift view (above the shuttles).
* On the putaway transfer, as per the configuration above, the putaway
changes the destination location to the Vertical Lift view.
* When we scan the package in the shuttle's screen, as we have a storage
type which is not configured on any locations in the shuttle
(reminder, if we had, it would select the tray automatically), the
user is asked to scan a tray type of the correct size.
Compatibility module between stock_vertical_lift and stock_storage_type
(in OCA/wms).
In the vertical lift's Putaway screen, when a good is scanned for a putaway, the
user has to scan the tray type of the corresponding size, so an empty place in a
matching tray is found. When we use storage types, we should know what tray is
compatible with the storage type.
Changes with this module:
* The storage types of trays cannot be selected in the locations form, they have
to be set in the Tray types.
* In the lift put-away screen, when a package has a storage type, the user isn't
asked to scan a tray type, instead, the putaway of the Package Storage Type is
applied.
* Rename methods that fetch a tray to prevent confusion
* Add methods to release a tray
* The Kardex method to fetch a tray has to send "0" in the carrier and
carrierNext field
* The pick and inventory screens release the tray only when there is no next
line, because the release is implicit when we fetch the next line,
the put screen releases everytime because the operator may take time
to start the next line and we don't know if they are going to scan a
next line or not.
* Exiting the screen or switching screen between put/pick/put-away has
to release the tray as well.
* Add vertical_lift_shuttle_id field on stock.location, help to find the
shuttle for a location
* Add StockLocation.fetch_vertical_lift_tray(), that needs to be
implemented in addons to send commands to the hardward to fetch a tray,
and if existing show a cell (laser pointer, ...)
* Add helpers on stock.move.line fetch_vertical_lift_tray_source() and
fetch_vertical_lift_tray_dest() that fetch the tray directly from a move
line's source or destination location