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:
gsinghpal
2026-06-05 00:16:19 -04:00
parent c9eb61ee0c
commit 8c76a16366
789 changed files with 4692 additions and 4692 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2026 Nexa Systems Inc. DEMO DATA (temporary)
Copyright 2026 Nexa Systems Inc. - DEMO DATA (temporary)
Remove this file and its manifest entry before production release.
-->
<odoo noupdate="1">
@@ -45,7 +45,7 @@
<!-- ========== BAKE OVENS ========== -->
<record id="demo_oven_1" model="fusion.plating.bake.oven">
<field name="name">Bake Oven A EN Post-Plate</field>
<field name="name">Bake Oven A - EN Post-Plate</field>
<field name="code">OVEN-A</field>
<field name="facility_id" ref="fusion_plating.demo_facility_main"/>
<field name="work_center_id" ref="fusion_plating.demo_wc_en_line"/>
@@ -55,7 +55,7 @@
</record>
<record id="demo_oven_2" model="fusion.plating.bake.oven">
<field name="name">Bake Oven B Chrome Stress Relief</field>
<field name="name">Bake Oven B - Chrome Stress Relief</field>
<field name="code">OVEN-B</field>
<field name="facility_id" ref="fusion_plating.demo_facility_main"/>
<field name="work_center_id" ref="fusion_plating.demo_wc_chrome_line"/>
@@ -67,7 +67,7 @@
<!-- ========== BAKE WINDOWS ========== -->
<record id="demo_bake_1" model="fusion.plating.bake.window">
<field name="bath_id" ref="fusion_plating.demo_bath_en_mp"/>
<field name="part_ref">P/N 4422-B Hydraulic Cylinder Rod</field>
<field name="part_ref">P/N 4422-B - Hydraulic Cylinder Rod</field>
<field name="lot_ref">LOT-2026-0415</field>
<field name="customer_ref">WO-8841</field>
<field name="quantity">25</field>
@@ -79,7 +79,7 @@
<record id="demo_bake_2" model="fusion.plating.bake.window">
<field name="bath_id" ref="fusion_plating.demo_bath_cr_hard"/>
<field name="part_ref">P/N 7810-A Landing Gear Pin</field>
<field name="part_ref">P/N 7810-A - Landing Gear Pin</field>
<field name="lot_ref">LOT-2026-0413</field>
<field name="customer_ref">WO-8835</field>
<field name="quantity">6</field>
@@ -94,7 +94,7 @@
<record id="demo_bake_3" model="fusion.plating.bake.window">
<field name="bath_id" ref="fusion_plating.demo_bath_en_hp"/>
<field name="part_ref">P/N 2290-D Valve Body</field>
<field name="part_ref">P/N 2290-D - Valve Body</field>
<field name="lot_ref">LOT-2026-0410</field>
<field name="customer_ref">WO-8820</field>
<field name="quantity">12</field>
@@ -110,14 +110,14 @@
<record id="demo_bake_4" model="fusion.plating.bake.window">
<field name="bath_id" ref="fusion_plating.demo_bath_en_mp"/>
<field name="part_ref">P/N 5500-E Piston Rod</field>
<field name="part_ref">P/N 5500-E - Piston Rod</field>
<field name="lot_ref">LOT-2026-0408</field>
<field name="customer_ref">WO-8810</field>
<field name="quantity">8</field>
<field name="plate_exit_time" eval="(DateTime.now() - timedelta(hours=10)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="window_hours">4.0</field>
<field name="state">missed_window</field>
<field name="notes" type="html"><p>Window missed operator shift change, parts left on rack. Flagged for quality review.</p></field>
<field name="notes" type="html"><p>Window missed - operator shift change, parts left on rack. Flagged for quality review.</p></field>
</record>
<!-- First-piece gate demo records retired with the fp.first.piece.gate

View File

@@ -3,7 +3,7 @@
Copyright 2026 Nexa Systems Inc.
License OPL-1 (Odoo Proprietary License v1.0)
Phase 6 tablet PIN gate default knobs.
Phase 6 tablet PIN gate - default knobs.
All overridable via Settings → Technical → Parameters → System Parameters.
-->
<odoo noupdate="1">

View File

@@ -18,11 +18,11 @@
<!-- ===== Mail template ============================================
email_from is computed at send time (see _fp_resolve_from_header
on res.users) so it ALWAYS matches the active mail server's
from_filter eliminates the "No mail server matches the
from_filter - eliminates the "No mail server matches the
from_filter" warning and the DMARC misalignment that warning
signals. Without this alignment, M365 (nexasystems.ca's host)
greylists cross-provider mail with mismatched From for 515 min
before delivering. Subject dropped the 🔒 emoji emojis in
greylists cross-provider mail with mismatched From for 5-15 min
before delivering. Subject dropped the 🔒 emoji - emojis in
subject lines bump M365 spam scoring and slow delivery on
cross-provider mail.
-->
@@ -50,7 +50,7 @@
</div>
<p style="margin: 16px 0; font-size: 13px; opacity: 0.65;">
This code expires in 72 hours. If you didn't request it, ignore
this email no action needed. The previous PIN (if any) stays
this email - no action needed. The previous PIN (if any) stays
valid until you successfully complete the reset on the tablet.
</p>
</div>