diff --git a/product_multi_company/models/__init__.py b/product_multi_company/models/__init__.py index 8e4939c9bfd..e9cce9df06b 100644 --- a/product_multi_company/models/__init__.py +++ b/product_multi_company/models/__init__.py @@ -3,3 +3,4 @@ from . import product_template from . import product_category +from . import product_product diff --git a/product_multi_company/models/product_product.py b/product_multi_company/models/product_product.py new file mode 100644 index 00000000000..2da6722165d --- /dev/null +++ b/product_multi_company/models/product_product.py @@ -0,0 +1,13 @@ +# Copyright 2024 Tecnativa - David Vidal +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html + +from odoo import api, models + + +class ProductProduct(models.Model): + _inherit = "product.product" + + @api.model + def search(self, args, offset=0, limit=None, order=None, count=False): + dom = self.env["multi.company.abstract"]._patch_company_domain(args) + return super().search(dom, offset=offset, limit=limit, order=order, count=count) diff --git a/product_multi_company/static/description/index.html b/product_multi_company/static/description/index.html index 79141dc2770..efbd78d0141 100644 --- a/product_multi_company/static/description/index.html +++ b/product_multi_company/static/description/index.html @@ -1,4 +1,3 @@ - @@ -9,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -429,7 +429,9 @@

Contributors

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

diff --git a/product_multi_company/tests/test_product_multi_company.py b/product_multi_company/tests/test_product_multi_company.py index 55cb3de883b..6f1ffe78da7 100644 --- a/product_multi_company/tests/test_product_multi_company.py +++ b/product_multi_company/tests/test_product_multi_company.py @@ -60,6 +60,29 @@ def test_company_2(self): self.user_company_2 ).description_sale = "Test 3" + def test_search_product(self): + """Products with no company are shared across companies but we need to convert + those queries with an or operator""" + expected_products = ( + self.product_company_both + + self.product_company_1 + + self.product_company_none + ) + searched_templates = self.env["product.template"].search( + [ + ("company_id", "in", [self.company_1.id, False]), + ("id", "in", expected_products.product_tmpl_id.ids), + ] + ) + self.assertEqual(searched_templates, expected_products.product_tmpl_id) + searched_products = self.product_obj.search( + [ + ("company_id", "in", [self.company_1.id, False]), + ("id", "in", expected_products.ids), + ] + ) + self.assertEqual(searched_products, expected_products) + def test_uninstall(self): from ..hooks import uninstall_hook