bemade_fsm: fix equipment name_search

This commit is contained in:
Marc Durepos 2024-09-23 17:22:08 -04:00
parent 017bde45dd
commit 64034e280c
6 changed files with 46 additions and 3 deletions

View file

@ -53,6 +53,7 @@ class Task(models.Model):
root_ancestor = fields.Many2one(
comodel_name="project.task",
compute="_compute_root_ancestor",
recursive=True,
)
def _compute_is_closed(self):

View file

@ -6,3 +6,4 @@ from . import test_fsm_visit
from . import test_task
from . import test_task_report
from . import test_settings
from . import test_equipment

View file

@ -0,0 +1,32 @@
from odoo.addons.bemade_fsm.tests.test_bemade_fsm_common import BemadeFSMBaseTest
from odoo.tests import tagged, Form
@tagged("-at_install", "post_install")
class TestEquipment(BemadeFSMBaseTest):
def test_equipment_search_domain_on_sale_order(self):
"""Equipment from other clients was showing up in sale order line
equipment choices. Make sure this doesn't happen."""
partner = self._generate_partner()
partner_2 = self._generate_partner()
equipment_1 = self._generate_equipment(partner=partner)
equipment_2 = self._generate_equipment(partner_2)
sale_order = self._generate_sale_order(partner=partner)
product = self._generate_product()
self.assertEqual(sale_order.valid_equipment_ids, equipment_1)
name_search_results = self.env["fsm.equipment"].name_search(
args=[
"&",
["id", "in", sale_order.valid_equipment_ids.ids],
"!",
["id", "in", []],
],
limit=8,
name="test",
operator="ilike",
)
self.assertNotIn(
(equipment_2.id, equipment_2.display_name), name_search_results
)
self.assertIn((equipment_1.id, equipment_1.display_name), name_search_results)

View file

@ -34,7 +34,6 @@
name="default_equipment_ids"
context="{'default_partner_id': partner_shipping_id,}"
widget="many2many_tags"
domain="[('id', 'in', valid_equipment_ids)]"
groups="account.group_delivery_invoice_address"
/>
</group>

View file

@ -1,4 +1,5 @@
from odoo import models, fields, api, _
from odoo.osv import expression
class Equipment(models.Model):
@ -56,9 +57,11 @@ class Equipment(models.Model):
@api.model
def name_search(self, name="", args=None, operator="ilike", limit=100):
args = args or []
if name:
equipments = self.search(
domain = expression.AND(
[
args,
[
"|",
"|",
@ -66,6 +69,12 @@ class Equipment(models.Model):
("name", operator, name),
("partner_id.name", operator, name),
],
]
)
if name:
equipments = self.search(
domain,
limit=limit,
)
else:

View file

@ -25,6 +25,7 @@ class Partner(models.Model):
@api.depends(
"equipment_ids",
"child_ids",
"child_ids.company_type",
"child_ids.equipment_ids",
)