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>
134 lines
7.0 KiB
XML
134 lines
7.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
|
|
<!-- ============================================================ -->
|
|
<!-- S19 — Surface Fischerscope thickness PDF on the cert form -->
|
|
<!-- ============================================================ -->
|
|
<!-- Without this extension the operator has no way to know, -->
|
|
<!-- before clicking Issue, whether the QC's Fischerscope PDF -->
|
|
<!-- will be appended to the CoC. After Issue, no indicator that -->
|
|
<!-- the merged PDF actually contains it. This extension fixes -->
|
|
<!-- both gaps with a banner + smart button + clickable file. -->
|
|
<record id="fp_certificate_view_form_jobs"
|
|
model="ir.ui.view">
|
|
<field name="name">fp.certificate.form.inherit.jobs</field>
|
|
<field name="model">fp.certificate</field>
|
|
<field name="inherit_id"
|
|
ref="fusion_plating_certificates.fp_certificate_view_form"/>
|
|
<field name="arch" type="xml">
|
|
|
|
<!-- 1. Smart button: linked Plating Job, and a separate -->
|
|
<!-- smart button for the Fischerscope-source QC. -->
|
|
<xpath expr="//div[@name='button_box']" position="inside">
|
|
<button name="action_open_job"
|
|
type="object"
|
|
class="oe_stat_button"
|
|
icon="fa-cogs"
|
|
invisible="not x_fc_job_id">
|
|
<field name="x_fc_job_id" widget="statinfo"
|
|
string="Work Order"/>
|
|
</button>
|
|
<button name="action_view_thickness_qc"
|
|
type="object"
|
|
class="oe_stat_button"
|
|
icon="fa-microscope"
|
|
invisible="not x_fc_thickness_qc_id">
|
|
<div class="o_field_widget o_stat_info">
|
|
<span class="o_stat_text">
|
|
<field name="x_fc_thickness_status" widget="badge"
|
|
decoration-info="x_fc_thickness_status == 'pending'"
|
|
decoration-success="x_fc_thickness_status == 'merged'"/>
|
|
</span>
|
|
<span class="o_stat_text">Fischerscope</span>
|
|
</div>
|
|
</button>
|
|
</xpath>
|
|
|
|
<!-- 2. Banner row above the title — explicit, can't miss. -->
|
|
<!-- Three states with distinct alert classes. -->
|
|
<xpath expr="//sheet/div[@class='oe_title']" position="before">
|
|
<div class="alert alert-info" role="alert"
|
|
invisible="x_fc_thickness_status != 'pending'">
|
|
<i class="fa fa-info-circle" title="Info"
|
|
aria-label="Info"/>
|
|
<strong> Fischerscope thickness PDF is on file.</strong>
|
|
It will be automatically appended as page 2 of
|
|
the CoC when you click <strong>Issue</strong>.
|
|
</div>
|
|
<div class="alert alert-success" role="alert"
|
|
invisible="x_fc_thickness_status != 'merged'">
|
|
<i class="fa fa-check-circle" title="Merged"
|
|
aria-label="Merged"/>
|
|
<strong> Fischerscope thickness report merged.</strong>
|
|
The issued CoC PDF includes the Fischerscope report
|
|
as page 2 — open the Certificate PDF tab to verify.
|
|
</div>
|
|
<div class="alert alert-warning" role="alert"
|
|
invisible="not x_fc_job_id or state != 'draft' or x_fc_thickness_status != 'none' or not partner_id"
|
|
style="margin-top:0;">
|
|
<i class="fa fa-exclamation-triangle" title="Warning"
|
|
aria-label="Warning"/>
|
|
<strong> No Fischerscope PDF on the linked QC.</strong>
|
|
If this customer expects an XRF report with the CoC,
|
|
have the operator upload the Fischerscope PDF on the
|
|
QC check before issuing.
|
|
</div>
|
|
</xpath>
|
|
|
|
<!-- 3. Add a Thickness Report tab right next to the -->
|
|
<!-- Certificate PDF tab so operator can preview the -->
|
|
<!-- Fischerscope file before merging into the cert. -->
|
|
<xpath expr="//notebook/page[@name='pdf']" position="after">
|
|
<page string="Thickness Report (Fischerscope)"
|
|
name="thickness_pdf"
|
|
invisible="not x_fc_job_id">
|
|
<group>
|
|
<field name="x_fc_thickness_status" widget="badge"
|
|
readonly="1"
|
|
decoration-muted="x_fc_thickness_status == 'none'"
|
|
decoration-info="x_fc_thickness_status == 'pending'"
|
|
decoration-success="x_fc_thickness_status == 'merged'"/>
|
|
<field name="x_fc_thickness_qc_id" readonly="1"
|
|
invisible="not x_fc_thickness_qc_id"/>
|
|
<field name="x_fc_thickness_pdf_id" readonly="1"
|
|
widget="many2one_binary"
|
|
invisible="not x_fc_thickness_pdf_id"/>
|
|
</group>
|
|
<div class="text-muted"
|
|
invisible="x_fc_thickness_status != 'none'">
|
|
<p>
|
|
No Fischerscope thickness PDF has been
|
|
uploaded on the linked QC yet. The CoC will
|
|
be issued without an appended thickness
|
|
report. To attach one:
|
|
</p>
|
|
<ol>
|
|
<li>Open the linked Plating Job (smart
|
|
button above)</li>
|
|
<li>Click into the auto-spawned Quality
|
|
Check</li>
|
|
<li>Go to the <em>Thickness Report</em> tab
|
|
and upload the PDF from the Fischerscope
|
|
/ XDAL 600 export</li>
|
|
<li>Pass the QC, then come back here and
|
|
click Issue</li>
|
|
</ol>
|
|
</div>
|
|
<div class="text-muted"
|
|
invisible="x_fc_thickness_status != 'pending'">
|
|
<p>
|
|
<i class="fa fa-arrow-up" title="Action"
|
|
aria-label="Action"/>
|
|
Click <strong>Issue</strong> in the header
|
|
and the Fischerscope PDF above will be
|
|
merged into page 2 of the CoC.
|
|
</p>
|
|
</div>
|
|
</page>
|
|
</xpath>
|
|
|
|
</field>
|
|
</record>
|
|
|
|
</odoo>
|