Skip to content
Snippets Groups Projects
Commit 8ecc1774 authored by Adrien Widart (awt)'s avatar Adrien Widart (awt)
Browse files

[FIX] stock{,_dropshipping}: set last delivery partner on lot

If `stock_dropshipping` is installed, the "Transfer To" field of a
lot does not work with standard flows

To reproduce the issue:
1. Create a tracked-by-sn product
2. Update its quantity with 1 x SN
3. Deliver SN to a partner
4. Open the list view of lots/serial numbers and enable the column
   "Transfer To"

Error: The field "Transfer To" for SN is empty, it should be the partner

The field `last_delivery_partner_id` is a computed one and the
compute method calls `_find_delivery_ids_by_lot` to get all relevant
information. In this method, we search the SMLs based on a domain
provided by `_get_delivery_ids_by_lot_domain`. If
`stock_dropshipping` is not installed, the method will return a
legit domain:
https://github.com/odoo/odoo/blob/7adc661be1eb426a90842160b2e062446d3ccc03/addons/stock/models/stock_lot.py#L191-L196
However, if the dropshipping module is installed, an override creates
the same domain (directly in the override, without any call to
`super`) and adds a `OR` condition:
https://github.com/odoo/odoo/blob/7adc661be1eb426a90842160b2e062446d3ccc03/addons/stock_dropshipping/models/stock.py#L62-L70


But it contains an error: the `AND` operator is missing, it should be
```py
'&', ('location_dest_id.usage', '=', 'customer'), ('location_id.usage',
'=', 'supplier')
```
As a result, for an SM to be found, its source location usage has to
be `supplier`. This is the reason why, in the above use case, the
lot does not have any `last_delivery_partner_id`: we did not find
such an SML.

OPW-3386247

closes odoo/odoo#128271

Signed-off-by: default avatarWilliam Henrotin (whe) <whe@odoo.com>
parent 1d858798
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment