chore(plating): de-dash shipped code + intake-neutral customer emails
Replace em-dashes and en-dashes with hyphens across 789 shipped source files (py/xml/js/scss) so the delivered module reads as human-written; em-dashes had become a recognizable AI-generated tell. Internal .md dev notes are excluded. The WO-sticker mojibake strippers keep their dash search targets (now written — / –). No logic changes: comments and display strings only; validated with py_compile + lxml parse. Rewrite the 7 customer notification emails to be intake-neutral (ship-in / drop-off / pickup) and repair-aware, and fix the Shipped email documents line (packing slip vs bill of lading; certificate only when issued). Subjects use a hyphen separator. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -149,7 +149,7 @@
|
||||
<group>
|
||||
<field name="thickness_report_pdf_id"
|
||||
widget="many2one_binary"
|
||||
help="Upload the Fischerscope / XDAL 600 PDF — readings will be auto-extracted."/>
|
||||
help="Upload the Fischerscope / XDAL 600 PDF - readings will be auto-extracted."/>
|
||||
<field name="thickness_reading_count" readonly="1"/>
|
||||
<field name="require_thickness_readings" readonly="1"/>
|
||||
<field name="require_thickness_report_pdf" readonly="1"/>
|
||||
@@ -218,7 +218,7 @@
|
||||
<field name="search_view_id" ref="fp_quality_check_search"/>
|
||||
</record>
|
||||
|
||||
<!-- ===== Menu — add QC Checks + QC Templates under Quality ===== -->
|
||||
<!-- ===== Menu - add QC Checks + QC Templates under Quality ===== -->
|
||||
<menuitem id="menu_fp_quality_check"
|
||||
name="Quality Checks"
|
||||
parent="fusion_plating_quality.menu_fp_quality"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Copyright 2026 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Plating product family.
|
||||
Sub 5 — Serial Number registry views.
|
||||
Sub 5 - Serial Number registry views.
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
sequence="55"
|
||||
groups="fusion_plating.group_fusion_plating_manager"/>
|
||||
|
||||
<!-- Employee form — Shop Roles + Lead Hand For + Proficiency tracker -->
|
||||
<!-- Employee form - Shop Roles + Lead Hand For + Proficiency tracker -->
|
||||
<record id="view_hr_employee_form_fp_roles" model="ir.ui.view">
|
||||
<field name="name">hr.employee.form.fp.roles</field>
|
||||
<field name="model">hr.employee</field>
|
||||
@@ -141,7 +141,7 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Process node form — add role field -->
|
||||
<!-- Process node form - add role field -->
|
||||
<record id="view_fp_process_node_form_fp_roles" model="ir.ui.view">
|
||||
<field name="name">fusion.plating.process.node.form.fp.roles</field>
|
||||
<field name="model">fusion.plating.process.node</field>
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<div><strong><field name="name"/></strong></div>
|
||||
<div class="text-muted">
|
||||
Qty: <field name="qty_remaining"/>
|
||||
<t t-if="record.duration.raw_value"> — <field name="duration" widget="float_time"/> elapsed</t>
|
||||
<t t-if="record.duration.raw_value"> - <field name="duration" widget="float_time"/> elapsed</t>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_record_bottom">
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//div[@name='button_box']" position="inside">
|
||||
<!-- Sale Order — back to the customer's order -->
|
||||
<!-- Sale Order - back to the customer's order -->
|
||||
<button name="action_view_sale_order" type="object"
|
||||
class="oe_stat_button" icon="fa-file-text-o"
|
||||
invisible="not x_fc_sale_order_id">
|
||||
@@ -73,13 +73,13 @@
|
||||
<span class="o_stat_text">Sale Order</span>
|
||||
</div>
|
||||
</button>
|
||||
<!-- Work Orders — drill into the WO list -->
|
||||
<!-- Work Orders - drill into the WO list -->
|
||||
<button name="action_view_workorders" type="object"
|
||||
class="oe_stat_button" icon="fa-cogs">
|
||||
<field name="x_fc_workorder_count" widget="statinfo"
|
||||
string="Work Orders"/>
|
||||
</button>
|
||||
<!-- Receiving — link to the parts-receiving record(s) -->
|
||||
<!-- Receiving - link to the parts-receiving record(s) -->
|
||||
<button name="action_view_receiving" type="object"
|
||||
class="oe_stat_button" icon="fa-truck"
|
||||
invisible="x_fc_receiving_count == 0">
|
||||
@@ -111,7 +111,7 @@
|
||||
<field name="x_fc_consumption_count" widget="statinfo"
|
||||
string="Consumables"/>
|
||||
</button>
|
||||
<!-- Quality Check — tablet-style checklist -->
|
||||
<!-- Quality Check - tablet-style checklist -->
|
||||
<button name="action_open_active_qc" type="object"
|
||||
class="oe_stat_button" icon="fa-check-square-o"
|
||||
invisible="x_fc_qc_check_count == 0">
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
</xpath>
|
||||
|
||||
<!-- ============================================================
|
||||
3. CUSTOMER FIELD — left column, after workcenter_id
|
||||
3. CUSTOMER FIELD - left column, after workcenter_id
|
||||
============================================================ -->
|
||||
<xpath expr="//sheet//field[@name='workcenter_id']" position="after">
|
||||
<field name="x_fc_customer_id" readonly="1"
|
||||
@@ -86,7 +86,7 @@
|
||||
</xpath>
|
||||
|
||||
<!-- ============================================================
|
||||
3b. STEP BADGE + PRIORITY — right column, after production_id
|
||||
3b. STEP BADGE + PRIORITY - right column, after production_id
|
||||
============================================================ -->
|
||||
<xpath expr="//sheet//field[@name='production_id']" position="after">
|
||||
<field name="x_fc_step_display" widget="badge" readonly="1"/>
|
||||
@@ -112,7 +112,7 @@
|
||||
</xpath>
|
||||
|
||||
<!-- ============================================================
|
||||
SIGN OFF BUTTON — only visible when the recipe step
|
||||
SIGN OFF BUTTON - only visible when the recipe step
|
||||
requires a sign-off and the WO is in progress.
|
||||
============================================================ -->
|
||||
<xpath expr="//header" position="inside">
|
||||
@@ -145,7 +145,7 @@
|
||||
</xpath>
|
||||
|
||||
<!-- ============================================================
|
||||
5. NOTEBOOK — restructured tabs
|
||||
5. NOTEBOOK - restructured tabs
|
||||
============================================================ -->
|
||||
|
||||
<!-- 5a. Rename "Time Tracking" → "Time & Cost" and add cost summary -->
|
||||
@@ -185,7 +185,7 @@
|
||||
</group>
|
||||
</xpath>
|
||||
|
||||
<!-- 5b. Process Details tab — content adapts to WO kind so
|
||||
<!-- 5b. Process Details tab - content adapts to WO kind so
|
||||
operators see only the equipment fields that matter. -->
|
||||
<xpath expr="//notebook/page[@name='time_tracking']" position="after">
|
||||
<page string="Process Details" name="plating_details">
|
||||
@@ -227,7 +227,7 @@
|
||||
</group>
|
||||
</group>
|
||||
<!-- Rack / de-rack WOs.
|
||||
Note: required="x_fc_wo_kind == 'rack'" (not "1") —
|
||||
Note: required="x_fc_wo_kind == 'rack'" (not "1") -
|
||||
in Odoo 19 a `required="1"` on a field inside an
|
||||
invisible group still triggers the missing-required
|
||||
flag, painting the whole tab red on every WO. -->
|
||||
@@ -248,14 +248,14 @@
|
||||
<!-- Inspection -->
|
||||
<group invisible="x_fc_wo_kind != 'inspect'">
|
||||
<div class="alert alert-info" role="alert">
|
||||
Inspection — record Fischerscope readings via
|
||||
Inspection - record Fischerscope readings via
|
||||
the Tablet Station. Cal-std + n measurements
|
||||
per part. Readings auto-link to the CoC.
|
||||
</div>
|
||||
</group>
|
||||
<group invisible="x_fc_wo_kind != 'other'">
|
||||
<div class="alert alert-light text-muted" role="alert">
|
||||
Generic operation — equipment is identified
|
||||
Generic operation - equipment is identified
|
||||
by the work centre.
|
||||
</div>
|
||||
</group>
|
||||
@@ -287,9 +287,9 @@
|
||||
</page>
|
||||
</xpath>
|
||||
|
||||
<!-- 5d. Components tab already exists at name="components" — no change needed -->
|
||||
<!-- 5d. Components tab already exists at name="components" - no change needed -->
|
||||
|
||||
<!-- 5e. Blocked By tab — keep existing, just push it last visually
|
||||
<!-- 5e. Blocked By tab - keep existing, just push it last visually
|
||||
(it's already the last page in the base view, so no reorder needed) -->
|
||||
|
||||
<!-- ============================================================
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
</button>
|
||||
</xpath>
|
||||
|
||||
<!-- Hide Odoo's default state statusbar — replaced below by
|
||||
<!-- Hide Odoo's default state statusbar - replaced below by
|
||||
the custom plating workflow statusbar that reflects the
|
||||
real lifecycle (awaiting parts → in production → shipped → ...). -->
|
||||
<xpath expr="//header//field[@name='state']" position="attributes">
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
<!-- ===== Contextual workflow buttons on the header =====
|
||||
One (sometimes two) visible at a time. Pattern mirrors
|
||||
fusion_claims ADP handling — invisible bindings key off
|
||||
fusion_claims ADP handling - invisible bindings key off
|
||||
the computed x_fc_workflow_stage selector. -->
|
||||
<xpath expr="//header" position="inside">
|
||||
<field name="x_fc_workflow_stage" widget="statusbar"
|
||||
@@ -80,7 +80,7 @@
|
||||
string="Accept Parts" type="object"
|
||||
class="btn-primary" icon="fa-check"
|
||||
invisible="x_fc_workflow_stage not in ('inspecting', 'accept_parts')"
|
||||
help="Parts pass inspection — ready for assignment."/>
|
||||
help="Parts pass inspection - ready for assignment."/>
|
||||
|
||||
<button name="action_fp_assign_to_me"
|
||||
string="Assign To Me & Release" type="object"
|
||||
@@ -101,7 +101,7 @@
|
||||
help="Close the open delivery record(s) and fire auto-invoice per strategy."/>
|
||||
</xpath>
|
||||
|
||||
<!-- Workflow stage banner — sits ABOVE the form header so it's
|
||||
<!-- Workflow stage banner - sits ABOVE the form header so it's
|
||||
the first thing users see, matches the Account Hold banner.
|
||||
Hidden for terminal states (invoicing/paid/complete/cancelled)
|
||||
and the initial draft so it only shows when there's an
|
||||
|
||||
Reference in New Issue
Block a user