From c19f2e29e653b7f80fbbc7aeaf00f91ed24b5acc Mon Sep 17 00:00:00 2001 From: Marc Durepos Date: Tue, 9 Sep 2025 15:27:10 -0400 Subject: [PATCH] [MIG] bemade_search_supplier_code to 18.0 --- bemade_search_supplier_code/__init__.py | 5 ++++ bemade_search_supplier_code/__manifest__.py | 21 +++++++++++++++ .../models/__init__.py | 1 + .../models/product_product.py | 26 +++++++++++++++++++ .../views/product_product_views.xml | 12 +++++++++ 5 files changed, 65 insertions(+) create mode 100644 bemade_search_supplier_code/__init__.py create mode 100644 bemade_search_supplier_code/__manifest__.py create mode 100644 bemade_search_supplier_code/models/__init__.py create mode 100644 bemade_search_supplier_code/models/product_product.py create mode 100644 bemade_search_supplier_code/views/product_product_views.xml diff --git a/bemade_search_supplier_code/__init__.py b/bemade_search_supplier_code/__init__.py new file mode 100644 index 0000000..02565c9 --- /dev/null +++ b/bemade_search_supplier_code/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +from . import models + + + diff --git a/bemade_search_supplier_code/__manifest__.py b/bemade_search_supplier_code/__manifest__.py new file mode 100644 index 0000000..d8dc09e --- /dev/null +++ b/bemade_search_supplier_code/__manifest__.py @@ -0,0 +1,21 @@ +{ + "name": "Bemade Search Supplier Code", + "version": "18.0.1.0.1", + "summary": "Search for products by supplier code", + "sequence": 10, + "description": """ + This module adds the ability to search for products by supplier code. + """, + "category": "Inventory/Purchase", + "author": "Bemade", + "website": "https://www.bemade.org", + "depends": ["purchase", "product"], + "data": [ + "views/product_product_views.xml", + ], + "demo": [], + "installable": True, + "application": False, + "auto_install": False, + "license": "LGPL-3", +} diff --git a/bemade_search_supplier_code/models/__init__.py b/bemade_search_supplier_code/models/__init__.py new file mode 100644 index 0000000..5c74c8c --- /dev/null +++ b/bemade_search_supplier_code/models/__init__.py @@ -0,0 +1 @@ +from . import product_product diff --git a/bemade_search_supplier_code/models/product_product.py b/bemade_search_supplier_code/models/product_product.py new file mode 100644 index 0000000..21c29cc --- /dev/null +++ b/bemade_search_supplier_code/models/product_product.py @@ -0,0 +1,26 @@ +from odoo import models, fields, api + + +class ProductProduct(models.Model): + _inherit = 'product.product' + + supplier_codes = fields.Char( + compute='_compute_supplier_codes', + string='Supplier Codes', + store=True, + search='_search_supplier_codes') + + @api.depends('variant_seller_ids', 'variant_seller_ids.product_code') + def _compute_supplier_codes(self): + for product in self: + codes = filter(lambda x: isinstance(x, str), product.variant_seller_ids.mapped('product_code')) + product.supplier_codes = ', '.join(codes) + + def _search_supplier_codes(self, operator, value): + if not value: + return [] + + supplierinfo_ids = self.env['product.supplierinfo'].search([('product_code', operator, value)]) + product_ids = supplierinfo_ids.mapped('product_id.id') + + return [('id', 'in', product_ids)] \ No newline at end of file diff --git a/bemade_search_supplier_code/views/product_product_views.xml b/bemade_search_supplier_code/views/product_product_views.xml new file mode 100644 index 0000000..61861b3 --- /dev/null +++ b/bemade_search_supplier_code/views/product_product_views.xml @@ -0,0 +1,12 @@ + + + product.product.search.inherit + product.product + + + + + + + + \ No newline at end of file