fix(certs): surface Fischerscope upload inline in Issue Certs wizard
Reported 2026-05-20: clicking "Issue Cert" on a job opened the wizard with a banner saying "Fischerscope file or readings needed — fill it in below before confirming", but the list view only showed status toggles (Needs Thickness / Is Ready). No upload affordance was visible. Operators had to know they could click a list row to expand into a hidden detail form where the upload field lived. The wizard model already had the file field, the .docx parser (_fp_parse_fischerscope_docx), and the @onchange that prefills readings — only the view was hiding it. Fix: promote the file upload into the list as its own editable binary column, alongside the existing Needs Thickness toggle. Operator now sees: Reference │ Type │ Customer │ Needs Thickness │ Fischerscope File (PDF or .docx) │ Parsed │ Ready Drop the file → onchange fires → readings + parsed summary populate in-row. Click "Confirm & Issue" to commit. The per-line expanded form is preserved (still accessible via row click) as a "details" panel for editing individual readings after upload — but the primary upload action is now in the list row where the operator's eyes are. Module: fusion_plating_jobs 19.0.10.15.0 → 19.0.10.16.0. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
# License OPL-1 (Odoo Proprietary License v1.0)
|
||||
{
|
||||
'name': 'Fusion Plating — Native Jobs',
|
||||
'version': '19.0.10.15.0',
|
||||
'version': '19.0.10.16.0',
|
||||
'category': 'Manufacturing/Plating',
|
||||
'summary': 'Native plating job model — replaces mrp.production / mrp.workorder bridge.',
|
||||
'author': 'Nexa Systems Inc.',
|
||||
|
||||
@@ -24,15 +24,43 @@
|
||||
(Fischerscope file or readings). Fill it in
|
||||
below before confirming.
|
||||
</div>
|
||||
<!-- 2026-05-20: surface the file upload INLINE in the
|
||||
list instead of behind a row-click into a sub-form.
|
||||
Operators kept missing the upload affordance — the
|
||||
list looked like a status display, not an action
|
||||
surface. Adding the binary field as a column lets
|
||||
them drop the Fischerscope file right where they
|
||||
see "Needs Thickness" turned on. The form behind
|
||||
the row click stays as a "details" expansion for
|
||||
per-reading editing after upload. -->
|
||||
<field name="line_ids" nolabel="1">
|
||||
<list editable="bottom" create="false" delete="false">
|
||||
<field name="cert_name" readonly="1"/>
|
||||
<field name="cert_type" readonly="1"/>
|
||||
<field name="partner_id" readonly="1"/>
|
||||
<field name="cert_name" readonly="1"
|
||||
string="Reference"/>
|
||||
<field name="cert_type" readonly="1"
|
||||
string="Type"/>
|
||||
<field name="partner_id" readonly="1"
|
||||
string="Customer"/>
|
||||
<field name="needs_thickness" readonly="1"
|
||||
widget="boolean_toggle"/>
|
||||
widget="boolean_toggle"
|
||||
string="Needs Thickness"/>
|
||||
<!-- Upload column. Visible/required only when
|
||||
the cert needs thickness data. Triggers
|
||||
the @onchange-driven .docx parser. -->
|
||||
<field name="fischer_filename" column_invisible="1"/>
|
||||
<field name="fischer_file"
|
||||
filename="fischer_filename"
|
||||
widget="binary"
|
||||
string="Fischerscope File (PDF or .docx)"
|
||||
invisible="not needs_thickness"
|
||||
readonly="not needs_thickness"/>
|
||||
<field name="parsed_summary" readonly="1"
|
||||
string="Parsed"
|
||||
optional="show"
|
||||
invisible="not needs_thickness or not parsed_summary"/>
|
||||
<field name="is_ready" widget="boolean_toggle"
|
||||
readonly="1"
|
||||
string="Ready"
|
||||
decoration-success="is_ready"
|
||||
decoration-danger="not is_ready"/>
|
||||
</list>
|
||||
@@ -61,13 +89,20 @@
|
||||
<field name="fischer_filename"
|
||||
invisible="1"/>
|
||||
</group>
|
||||
<div class="text-muted"
|
||||
<div class="alert alert-info"
|
||||
role="alert"
|
||||
invisible="not needs_thickness or not parsed_summary">
|
||||
<i class="fa fa-check-circle me-1"/>
|
||||
<field name="parsed_summary"
|
||||
readonly="1" nolabel="1"/>
|
||||
</div>
|
||||
<separator string="Thickness Readings"
|
||||
invisible="not needs_thickness"/>
|
||||
<p class="text-muted small"
|
||||
invisible="not needs_thickness">
|
||||
Auto-filled from the .docx upload above.
|
||||
Edit/add rows manually as needed.
|
||||
</p>
|
||||
<field name="reading_line_ids"
|
||||
invisible="not needs_thickness">
|
||||
<list editable="bottom">
|
||||
|
||||
Reference in New Issue
Block a user