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 @@
This module is maintained by the OCA.
-
+
+
+
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