ui(rename): "Plating Job" -> "Work Order" / display "WO # 01368"
Standardise user-facing terminology across 5 modules (27 files):
- display_name compute: 'Work Order # 01368' -> 'WO # 01368'
- _description on 5 models: Plating Job{," Step"," Step Time Log"," Margin Report"," Recipe Node Override"} -> Work Order equivalents
- field labels (string=...) on 13 Many2one / One2many fields
across fp.batch, fp.thickness_reading, fp.quality.hold,
fp.job_consumption, fp.portal.job, fp.certificate, fp.delivery,
fp.quality.check, fp.racking.inspection, res.partner, sale.order
- XML view labels: action names, list/form/search strings,
portal template names, dashboard tile titles
What's deliberately preserved:
- DB model name 'fp.job' (technical identifier — used by
sale_order.x_fc_plating_job_ids and all comodel refs)
- Module name 'fusion_plating_jobs' (directory / import path)
- Settings -> Apps display label 'Fusion Plating Jobs' (module
identity for Odoo's app picker)
- 'Use Native Plating Jobs' migration toggle (internal mechanism
flag, not user-facing terminology)
Verified on entech: WH/JOB/01368 now displays as 'WO # 01368'
everywhere humans look (form header, breadcrumbs, M2O dropdowns,
error messages, smart-button titles).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
{
|
||||
'name': 'Fusion Plating',
|
||||
'version': '19.0.18.15.4',
|
||||
'version': '19.0.18.15.5',
|
||||
'category': 'Manufacturing/Plating',
|
||||
'summary': 'Core plating / metal finishing ERP: facilities, processes, tanks, baths, jobs, operators.',
|
||||
'description': """
|
||||
|
||||
@@ -50,7 +50,7 @@ class FpJob(models.Model):
|
||||
if dt.tzinfo is None:
|
||||
dt = pytz.UTC.localize(dt)
|
||||
return dt.astimezone(tz).strftime(fmt)
|
||||
_description = 'Plating Job'
|
||||
_description = 'Work Order'
|
||||
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||
# Sub 12d — state-aware sort. Active work bubbles to the top
|
||||
# (in_progress → confirmed/draft → on_hold → done → cancelled),
|
||||
@@ -69,7 +69,7 @@ class FpJob(models.Model):
|
||||
|
||||
@api.depends('name')
|
||||
def _compute_display_name(self):
|
||||
"""Reformat 'WH/JOB/00011' → 'Work Order # 00011' for every
|
||||
"""Reformat 'WH/JOB/00011' → 'WO # 00011' for every
|
||||
human-facing surface (form header, breadcrumbs, M2O dropdowns,
|
||||
smart-button titles, error messages). The DB `name` is
|
||||
unchanged so existing certs / deliveries / chatter references
|
||||
@@ -78,7 +78,7 @@ class FpJob(models.Model):
|
||||
for job in self:
|
||||
if job.name and '/' in job.name:
|
||||
suffix = job.name.rsplit('/', 1)[-1]
|
||||
job.display_name = _('Work Order # %s') % suffix
|
||||
job.display_name = _('WO # %s') % suffix
|
||||
else:
|
||||
job.display_name = job.name or ''
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ from odoo.exceptions import AccessError, UserError
|
||||
|
||||
class FpJobStep(models.Model):
|
||||
_name = 'fp.job.step'
|
||||
_description = 'Plating Job Step'
|
||||
_description = 'Work Order Step'
|
||||
_inherit = ['mail.thread']
|
||||
_order = 'job_id, sequence, id'
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ from odoo.exceptions import AccessError, UserError
|
||||
|
||||
class FpJobStepTimeLog(models.Model):
|
||||
_name = 'fp.job.step.timelog'
|
||||
_description = 'Plating Job Step Time Log'
|
||||
_description = 'Work Order Step Time Log'
|
||||
_inherit = ['mail.thread']
|
||||
_order = 'date_started desc'
|
||||
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
</record>
|
||||
|
||||
<record id="action_fp_job" model="ir.actions.act_window">
|
||||
<field name="name">Plating Jobs</field>
|
||||
<field name="name">Work Orders</field>
|
||||
<field name="res_model">fp.job</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="search_view_id" ref="view_fp_job_search"/>
|
||||
|
||||
Reference in New Issue
Block a user