# Copyright 2023-2024 Akretion France (https://www.akretion.com) # @author Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import fields, models class StockMove(models.Model): _inherit = 'stock.move' # for optional display in list view product_supplier_code = fields.Char( compute='_compute_product_supplier_code', string="Vendor Product Code") def _compute_product_supplier_code(self): pso = self.env['product.supplierinfo'] for move in self: code = False if move.purchase_line_id and move.purchase_line_id.order_id: po = move.purchase_line_id.order_id partner_id = po.partner_id.commercial_partner_id.id if partner_id: sinfo = pso.search_read([ ('product_tmpl_id', '=', move.product_id.product_tmpl_id.id), ('product_id', 'in', (False, move.product_id.id)), ('partner_id', '=', partner_id), ('product_code', '!=', False), ('company_id', 'in', (False, move.company_id.id)), ], ['product_code'], limit=1, order='product_id') # if I order by product_id, I get the null values at the end if sinfo: code = sinfo[0]['product_code'] move.product_supplier_code = code