From ad1ad2932a2054af3bc93893cf8760fd7958abb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20V=C3=A9zina?= Date: Wed, 21 Feb 2024 08:43:07 -0500 Subject: [PATCH] search supplier code --- bemade_search_supplier_code/__init__.py | 0 bemade_search_supplier_code/__manifest__.py | 24 +++++++++++++++++++ .../models/__init__.py | 0 .../models/product_product.py | 19 +++++++++++++++ .../views/product_product_views.xml | 12 ++++++++++ 5 files changed, 55 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..e69de29 diff --git a/bemade_search_supplier_code/__manifest__.py b/bemade_search_supplier_code/__manifest__.py new file mode 100644 index 0000000..729b3fc --- /dev/null +++ b/bemade_search_supplier_code/__manifest__.py @@ -0,0 +1,24 @@ +{ + 'name': 'Search Supplier Code', + 'version': '1.0', + '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', +} \ No newline at end of file diff --git a/bemade_search_supplier_code/models/__init__.py b/bemade_search_supplier_code/models/__init__.py new file mode 100644 index 0000000..e69de29 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..62112a1 --- /dev/null +++ b/bemade_search_supplier_code/models/product_product.py @@ -0,0 +1,19 @@ +class ProductProduct(models.Model): + _inherit = 'product.product' + + supplier_codes = fields.Char(compute='_compute_supplier_codes', string='Supplier Codes', store=False, 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