[FIX] stock: unreserve picking with latest scheduled date

- Create a product P with 10 units on hand
- Create a SO with 5 units, validate
- Create another SO with 5 units, validate
- Update the quantity on hand to 8

The picking linked to the first SO as 2 units unreserved, while one
would expect the unreservation on the second picking.

When unreserving, sort the move lines according to the picking scheduled
date. The latest schedule date comes first.

opw-2233331

closes odoo/odoo#49830

X-original-commit: 41c05cbfb015407dbbf7100233999ecd154267dc
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
This commit is contained in:
Nicolas Martinelli
2020-04-21 08:23:30 +00:00
parent 9d312ac85b
commit cf078da86e
+7 -1
View File
@@ -563,7 +563,13 @@ class StockMoveLine(models.Model):
('product_qty', '>', 0.0),
('id', 'not in', ml_to_ignore.ids),
]
current_picking_first = lambda cand: cand.picking_id != self.move_id.picking_id
# We take the current picking first, then the pickings with the latest scheduled date
current_picking_first = lambda cand: (
cand.picking_id != self.move_id.picking_id,
-(cand.picking_id.scheduled_date or cand.move_id.date_expected).timestamp()
if cand.picking_id or cand.move_id
else -cand.id,
)
outdated_candidates = self.env['stock.move.line'].search(outdated_move_lines_domain).sorted(current_picking_first)
# As the move's state is not computed over the move lines, we'll have to manually