From 04f3cac527ad03bc9c0254918a01cd597a476675 Mon Sep 17 00:00:00 2001 From: Arnold Moyaux <arm@odoo.com> Date: Fri, 27 Aug 2021 07:52:33 +0000 Subject: [PATCH] [IMP] stock, mrp: computed picking type on stock.move.line Easier to access and avoid overwrite in function to check picking type on manufacturing order closes odoo/odoo#75691 Enterprise-pr: https://github.com/odoo/enterprise/pull/20102 Related: odoo/enterprise#20102 Related: odoo/upgrade#2785 Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com> --- addons/mrp/models/stock_move.py | 10 ++++++++++ addons/stock/models/stock_move_line.py | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/addons/mrp/models/stock_move.py b/addons/mrp/models/stock_move.py index 1d9ea817440d..7c9aa5a7c045 100644 --- a/addons/mrp/models/stock_move.py +++ b/addons/mrp/models/stock_move.py @@ -11,6 +11,16 @@ class StockMoveLine(models.Model): workorder_id = fields.Many2one('mrp.workorder', 'Work Order', check_company=True) production_id = fields.Many2one('mrp.production', 'Production Order', check_company=True) + @api.depends('production_id') + def _compute_picking_type_id(self): + line_to_remove = self.env['stock.move.line'] + for line in self: + if not line.production_id: + continue + line.picking_type_id = line.production_id.picking_type_id + line_to_remove |= line + return super(StockMoveLine, self - line_to_remove)._compute_picking_type_id() + @api.model_create_multi def create(self, values): res = super(StockMoveLine, self).create(values) diff --git a/addons/stock/models/stock_move_line.py b/addons/stock/models/stock_move_line.py index 4b700923e4c3..27465cb126ec 100644 --- a/addons/stock/models/stock_move_line.py +++ b/addons/stock/models/stock_move_line.py @@ -58,6 +58,8 @@ class StockMoveLine(models.Model): location_dest_id = fields.Many2one('stock.location', 'To', domain="[('usage', '!=', 'view')]", check_company=True, required=True) lots_visible = fields.Boolean(compute='_compute_lots_visible') picking_code = fields.Selection(related='picking_id.picking_type_id.code', readonly=True) + picking_type_id = fields.Many2one( + 'stock.picking.type', 'Operation type', compute='_compute_picking_type_id') picking_type_use_create_lots = fields.Boolean(related='picking_id.picking_type_id.use_create_lots', readonly=True) picking_type_use_existing_lots = fields.Boolean(related='picking_id.picking_type_id.use_existing_lots', readonly=True) picking_type_entire_packs = fields.Boolean(related='picking_id.picking_type_id.show_entire_packs', readonly=True) @@ -81,6 +83,13 @@ class StockMoveLine(models.Model): else: line.lots_visible = line.product_id.tracking != 'none' + @api.depends('picking_id') + def _compute_picking_type_id(self): + self.picking_type_id = False + for line in self: + if line.picking_id: + line.picking_type_id = line.picking_id.picking_type_id + @api.depends('product_id', 'product_uom_id', 'product_uom_qty') def _compute_product_qty(self): for line in self: -- GitLab