diff options
| author | Rémy Voet (ryv) <ryv@odoo.com> | 2020-07-29 14:19:26 +0000 |
|---|---|---|
| committer | Rémy Voet (ryv) <ryv@odoo.com> | 2020-08-18 07:48:27 +0000 |
| commit | e40553723b893bcd2244e9b9fcc5c1a7e1bf27d3 (patch) | |
| tree | 24eae5579cb91e9554226c7f56dd2afd3830e1c4 /addons/stock/models/stock_picking.py | |
| parent | bb9ef004524e21c642abdff16aa6caa9abbb37ba (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.py | 20 |
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') |
