feat(configurator): display_name compute for fp.part.catalog (Sub 2 Task 8)

This commit is contained in:
gsinghpal
2026-04-21 20:18:33 -04:00
parent fb2f360e7b
commit b89737f3c9

View File

@@ -18,8 +18,13 @@ class FpPartCatalog(models.Model):
_name = 'fp.part.catalog'
_description = 'Fusion Plating — Part Catalog'
_inherit = ['mail.thread', 'mail.activity.mixin']
_order = 'partner_id, part_number, name'
_order = 'partner_id, part_number, revision desc'
display_name = fields.Char(
string='Display Name',
compute='_compute_display_name',
store=True,
)
name = fields.Char(string='Part Name', required=True, tracking=True)
partner_id = fields.Many2one(
'res.partner', string='Customer', required=True, ondelete='cascade',
@@ -348,6 +353,24 @@ class FpPartCatalog(models.Model):
for part in self:
part.description_template_count = len(part.description_template_ids)
@api.depends('part_number', 'revision', 'name')
def _compute_display_name(self):
"""Display = 'PART-NUMBER (Rev X) — Optional Name'.
Used by m2o pickers, breadcrumbs, kanban cards. Falls back to
name-only when part_number is missing (legacy / in-progress records).
"""
for rec in self:
if rec.part_number:
core = f"{rec.part_number}"
if rec.revision:
core += f" (Rev {rec.revision})"
if rec.name:
core += f"{rec.name}"
rec.display_name = core
else:
rec.display_name = rec.name or _('[unnamed part]')
def action_view_customer(self):
self.ensure_one()
return {