feat(configurator): display_name compute for fp.part.catalog (Sub 2 Task 8)
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user