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..7c1e0d7 --- /dev/null +++ b/bemade_search_supplier_code/__manifest__.py @@ -0,0 +1,24 @@ +{ + 'name': 'Search Supplier Code', + 'version': '17.0.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', +} \ 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..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