summaryrefslogtreecommitdiff
path: root/addons/stock/models/stock_picking.py
diff options
context:
space:
mode:
authorRémy Voet (ryv) <ryv@odoo.com>2020-07-29 14:19:26 +0000
committerRémy Voet (ryv) <ryv@odoo.com>2020-08-18 07:48:27 +0000
commite40553723b893bcd2244e9b9fcc5c1a7e1bf27d3 (patch)
tree24eae5579cb91e9554226c7f56dd2afd3830e1c4 /addons/stock/models/stock_picking.py
parentbb9ef004524e21c642abdff16aa6caa9abbb37ba (diff)
[IMP] stock,mrp,purchase: refactor priority
- MO/picking/PO/stock.move have now the "same" `priority` fields (Boolean logic: Normal or Urgent). These models are now sort by priority first. Note that the priority field of stock move is a technical one. - For MO and picking, the set of `priority` field change priority of the related stock move. The prioriry field on stock move is used by the scheduler for reservation ('Urgent' before 'Normal') - The Stock Replenishment Report also take in account the priority to be consistent with the reservation. task-2246665
Diffstat (limited to 'addons/stock/models/stock_picking.py')
-rw-r--r--addons/stock/models/stock_picking.py20
1 files changed, 2 insertions, 18 deletions
diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py
index a9b50f93168..d28dde6de9b 100644
--- a/addons/stock/models/stock_picking.py
+++ b/addons/stock/models/stock_picking.py
@@ -280,10 +280,7 @@ class Picking(models.Model):
'procurement.group', 'Procurement Group',
readonly=True, related='move_lines.group_id', store=True)
priority = fields.Selection(
- PROCUREMENT_PRIORITIES, string='Priority',
- compute='_compute_priority', inverse='_set_priority', store=True,
- index=True, tracking=True,
- states={'done': [('readonly', True)], 'cancel': [('readonly', True)]},
+ PROCUREMENT_PRIORITIES, string='Priority', default='0', index=True,
help="Products will be reserved first for the transfers with the highest priorities.")
scheduled_date = fields.Datetime(
'Scheduled Date', compute='_compute_scheduled_date', inverse='_set_scheduled_date', store=True,
@@ -483,19 +480,6 @@ class Picking(models.Model):
else:
picking.state = relevant_move_state
- @api.depends('move_lines.priority')
- def _compute_priority(self):
- for picking in self:
- if picking.mapped('move_lines'):
- priorities = [priority for priority in picking.mapped('move_lines.priority') if priority] or ['1']
- picking.priority = max(priorities)
- else:
- picking.priority = '1'
-
- def _set_priority(self):
- for picking in self:
- picking.move_lines.write({'priority': picking.priority})
-
@api.depends('move_lines.date_expected')
def _compute_scheduled_date(self):
for picking in self:
@@ -767,7 +751,7 @@ class Picking(models.Model):
new_move._action_confirm()
todo_moves |= new_move
todo_moves._action_done(cancel_backorder=self.env.context.get('cancel_backorder'))
- self.write({'date_done': fields.Datetime.now()})
+ self.write({'date_done': fields.Datetime.now(), 'priority': '0'})
# if incoming moves make other confirmed/partially_available moves available, assign them
done_incoming_moves = self.filtered(lambda p: p.picking_type_id.code == 'incoming').move_lines.filtered(lambda m: m.state == 'done')