# Copyright 2018 Tecnativa - David Vidal # Copyright 2018 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import api, fields, models class StockPicking(models.Model): _inherit = "stock.picking" procure_method = fields.Selection( selection="_selection_procure_method", compute="_compute_procure_method", inverse="_inverse_procure_method", string="Supply Method", help="By default, the system will take from the stock in the source " "location and passively wait for availability. The other " "possibility allows you to directly create a procurement on the " "source location (and thus ignore its current stock) to gather " "products. If we want to chain moves and have this one to wait " "for the previous, this second option should be chosen.", ) def _selection_procure_method(self): return self.env["stock.move"].fields_get(allfields=["procure_method"])[ "procure_method" ]["selection"] @api.depends("move_lines.procure_method") def _compute_procure_method(self): for picking in self: procure_method = False for move in picking.move_lines: if not procure_method: procure_method = move.procure_method elif procure_method != move.procure_method: procure_method = False break picking.procure_method = procure_method def _inverse_procure_method(self): self.filtered("procure_method").mapped("move_lines").update( {"procure_method": self.procure_method} )