Files
stock-logistics-warehouse/stock_picking_procure_method/models/stock_picking.py
2022-08-17 15:45:59 +02:00

45 lines
1.7 KiB
Python

# 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}
)