# Copyright 2017 Eficent Business and IT Consulting Services, S.L. # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). from odoo import _, api, fields, models from odoo.exceptions import ValidationError class StockMove(models.Model): _inherit = "stock.move" allocation_ids = fields.One2many( comodel_name="stock.request.allocation", inverse_name="stock_move_id", string="Stock Request Allocation", ) stock_request_ids = fields.One2many( comodel_name="stock.request", string="Stock Requests", compute="_compute_stock_request_ids", ) @api.depends("allocation_ids") def _compute_stock_request_ids(self): for rec in self: rec.stock_request_ids = rec.allocation_ids.mapped("stock_request_id") def _merge_moves_fields(self): res = super(StockMove, self)._merge_moves_fields() res["allocation_ids"] = [(4, m.id) for m in self.mapped("allocation_ids")] return res @api.constrains("company_id") def _check_company_stock_request(self): if any( self.env["stock.request.allocation"].search( [ ("company_id", "!=", rec.company_id.id), ("stock_move_id", "=", rec.id), ], limit=1, ) for rec in self ): raise ValidationError( _( "The company of the stock request must match with " "that of the location." ) )