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

@@ -9,7 +9,7 @@
fp.job state transitions through awaiting_cert. Recipients are
resolved by _fp_resolve_cert_authority_users (QM / Manager / Owner
via all_group_ids, transitive). The mail templates are bound to
fp.job the source record passed to _dispatch.
fp.job - the source record passed to _dispatch.
noupdate="1" so admin edits in the UI survive -u (per CLAUDE.md
Rule 22 / mail-template gotcha).
@@ -25,7 +25,7 @@
<!-- Only reference CORE fp.job fields here. The notifications
module loads BEFORE fusion_plating_jobs in dep order, and
mail.template parsing renders subject/body once to validate
fields added by inheriting modules (display_wo_name,
- fields added by inheriting modules (display_wo_name,
part_catalog_id) would AttributeError at parse time. -->
<field name="subject">🏷️ Job {{ object.name }} ready for CoC issuance</field>
<field name="email_from">{{ (object.company_id.email or user.email) }}</field>
@@ -58,7 +58,7 @@
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25);">
<td style="padding: 8px 4px;">Recipe</td>
<td style="padding: 8px 4px; text-align: right;">
<t t-out="(object.recipe_id.name if object.recipe_id else '') or ''"/>
<t t-out="(object.recipe_id.name if object.recipe_id else '') or '-'"/>
</td>
</tr>
</table>
@@ -85,12 +85,12 @@
</record>
<!-- ============================================================= -->
<!-- 2. Cert Voided Please Re-Issue (Urgent, #DC2626) -->
<!-- 2. Cert Voided - Please Re-Issue (Urgent, #DC2626) -->
<!-- ============================================================= -->
<record id="fp_mail_template_cert_voided_re_notify" model="mail.template">
<field name="name">FP: Cert Voided Re-Issue</field>
<field name="name">FP: Cert Voided - Re-Issue</field>
<field name="model_id" ref="fusion_plating.model_fp_job"/>
<field name="subject">⚠️ Job {{ object.name }} CoC voided please re-issue</field>
<field name="subject">⚠️ Job {{ object.name }} CoC voided - please re-issue</field>
<field name="email_from">{{ (object.company_id.email or user.email) }}</field>
<field name="auto_delete" eval="True"/>
<field name="body_html" type="html">
@@ -99,7 +99,7 @@
<div style="font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: #DC2626; font-weight: 600; margin-bottom: 8px;">
Cert Regression
</div>
<h2 style="margin: 0 0 8px 0; font-size: 22px; font-weight: bold;">CoC Voided Please Re-Issue</h2>
<h2 style="margin: 0 0 8px 0; font-size: 22px; font-weight: bold;">CoC Voided - Please Re-Issue</h2>
<p style="margin: 0 0 20px 0; font-size: 15px; opacity: 0.75;">
A previously-issued CoC for job
<strong t-out="object.name"/>
@@ -117,7 +117,7 @@
</record>
<record id="fp_notif_cert_voided_re_notify" model="fp.notification.template">
<field name="name">Cert Voided Re-Issue Required</field>
<field name="name">Cert Voided - Re-Issue Required</field>
<field name="trigger_event">cert_voided_re_notify</field>
<field name="mail_template_id" ref="fp_mail_template_cert_voided_re_notify"/>
<field name="active" eval="True"/>

View File

@@ -16,7 +16,7 @@
<record id="fp_mail_template_quote_sent" model="mail.template">
<field name="name">FP: Quotation Sent</field>
<field name="model_id" ref="sale.model_sale_order"/>
<field name="subject">Quotation {{ object.name }} Electroless Nickel Technologies Inc. (ENTECH)</field>
<field name="subject">Quotation {{ object.name }} - Electroless Nickel Technologies Inc. (ENTECH)</field>
<field name="email_from">{{ (object.company_id.email or user.email) }}</field>
<field name="email_to">{{ object.partner_id.email }}</field>
<field name="auto_delete" eval="True"/>
@@ -49,7 +49,7 @@
</tr>
</table>
<div style="border-left: 3px solid #2B6CB0; padding: 12px 16px; margin: 20px 0; font-size: 14px;">
<strong>Next steps:</strong> Reply with a PO number or signed copy to accept. Once we receive your parts, we'll confirm receipt and begin production.
<strong>Next steps:</strong> Reply with a PO number or signed copy to accept. Once your parts are with us, we'll confirm receipt and get started.
</div>
<div style="margin-top: 32px; font-size: 14px;">
Best regards,<br/>
@@ -71,7 +71,7 @@
<record id="fp_mail_template_so_confirmed" model="mail.template">
<field name="name">FP: Order Confirmation</field>
<field name="model_id" ref="sale.model_sale_order"/>
<field name="subject">Order Confirmed {{ object.name }}</field>
<field name="subject">Order Confirmed - {{ object.name }}</field>
<field name="email_from">{{ (object.company_id.email or user.email) }}</field>
<field name="email_to">{{ object.partner_id.email }}</field>
<field name="auto_delete" eval="True"/>
@@ -83,7 +83,7 @@
</div>
<h2 style="margin: 0 0 8px 0; font-size: 22px; font-weight: bold;">Order Confirmed</h2>
<p style="margin: 0 0 20px 0; font-size: 15px; opacity: 0.65;">
Thank you, <t t-out="object.partner_id.name or ''"/>. We have your order and will notify you the moment your parts arrive at our facility.
Thank you, <t t-out="object.partner_id.name or ''"/>. Your order is confirmed, and we'll keep you posted at every step.
</p>
<table style="width: 100%; border-collapse: collapse; margin: 20px 0;">
<tr style="border-bottom: 2px solid rgba(128,128,128,0.35);">
@@ -96,11 +96,11 @@
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25); background: rgba(128,128,128,0.06);">
<td style="padding: 8px 4px;">Customer PO</td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="object.x_fc_po_number or ''"/></td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="object.x_fc_po_number or '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25);">
<td style="padding: 8px 4px;">Order Date</td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="format_datetime(object.date_order, tz=(user.tz or object.company_id.x_fc_default_tz or 'UTC'), dt_format='MMM d, y') if object.date_order else ''"/></td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="format_datetime(object.date_order, tz=(user.tz or object.company_id.x_fc_default_tz or 'UTC'), dt_format='MMM d, y') if object.date_order else '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25); background: rgba(128,128,128,0.06);">
<td style="padding: 8px 4px;"><strong>Total</strong></td>
@@ -108,7 +108,7 @@
</tr>
</table>
<div style="border-left: 3px solid #38a169; padding: 12px 16px; margin: 20px 0; font-size: 14px;">
<strong>What's next:</strong> Ship your parts to our facility. We'll inspect on arrival, run the process, and keep you posted at each milestone.
<strong>What's next:</strong> If your parts aren't already with us, ship or drop them off at your convenience. Once they're on-site, we'll inspect them, complete the work, and update you at each milestone.
</div>
<div style="margin-top: 32px; font-size: 14px;">
Best regards,<br/>
@@ -130,7 +130,7 @@
<record id="fp_mail_template_parts_received" model="mail.template">
<field name="name">FP: Parts Received</field>
<field name="model_id" ref="fusion_plating_receiving.model_fp_receiving"/>
<field name="subject">Parts Received {{ object.sale_order_id.name or object.name }}</field>
<field name="subject">Parts Received - {{ object.sale_order_id.name or object.name }}</field>
<field name="email_from">{{ (object.sale_order_id.company_id.email or user.email) }}</field>
<field name="email_to">{{ object.partner_id.email }}</field>
<field name="auto_delete" eval="True"/>
@@ -142,7 +142,7 @@
</div>
<h2 style="margin: 0 0 8px 0; font-size: 22px; font-weight: bold;">Parts Received</h2>
<p style="margin: 0 0 20px 0; font-size: 15px; opacity: 0.65;">
Good news, <t t-out="object.partner_id.name or ''"/>. Your parts have arrived at our facility and passed incoming inspection.
Good news, <t t-out="object.partner_id.name or ''"/>! Your parts are in and have passed incoming inspection.
</p>
<table style="width: 100%; border-collapse: collapse; margin: 20px 0;">
<tr style="border-bottom: 2px solid rgba(128,128,128,0.35);">
@@ -151,7 +151,7 @@
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25);">
<td style="padding: 8px 4px;">Sale Order</td>
<td style="padding: 8px 4px; text-align: right; font-family: monospace;"><t t-out="object.sale_order_id.name or ''"/></td>
<td style="padding: 8px 4px; text-align: right; font-family: monospace;"><t t-out="object.sale_order_id.name or '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25); background: rgba(128,128,128,0.06);">
<td style="padding: 8px 4px;">Receiving Reference</td>
@@ -163,7 +163,7 @@
</tr>
</table>
<div style="border-left: 3px solid #2B6CB0; padding: 12px 16px; margin: 20px 0; font-size: 14px;">
<strong>Next step:</strong> Your job has entered our production queue. Expect a manufacturing-complete email once the job is through processing.
<strong>Next step:</strong> Your job is now in our queue. We'll keep you posted as it moves through the shop.
</div>
<div style="margin-top: 32px; font-size: 14px;">
Best regards,<br/>
@@ -177,7 +177,7 @@
</field>
</record>
<!-- Phase 5 (Sub 11) fp_mail_template_mo_complete removed.
<!-- Phase 5 (Sub 11) - fp_mail_template_mo_complete removed.
The native equivalent fires from fp.job.button_mark_done via
fp.notification.template's `job_complete` trigger, defined
in fp_notification_template_data.xml. -->
@@ -191,7 +191,7 @@
<record id="fp_mail_template_shipment_labeled" model="mail.template">
<field name="name">FP: Shipping Label Generated</field>
<field name="model_id" ref="fusion_shipping.model_fusion_shipment"/>
<field name="subject">Tracking #{{ object.tracking_number }} your order is being prepared for shipment</field>
<field name="subject">Tracking #{{ object.tracking_number }} - your order is being prepared for shipment</field>
<field name="email_from">{{ (object.company_id.email or user.email) }}</field>
<field name="email_to">{{ (object.sale_order_id and object.sale_order_id.partner_id.email) or '' }}</field>
<field name="auto_delete" eval="True"/>
@@ -212,15 +212,15 @@
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25);">
<td style="padding: 8px 4px;">Sale Order</td>
<td style="padding: 8px 4px; text-align: right; font-family: monospace;"><t t-out="object.sale_order_id.name or ''"/></td>
<td style="padding: 8px 4px; text-align: right; font-family: monospace;"><t t-out="object.sale_order_id.name or '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25); background: rgba(128,128,128,0.06);">
<td style="padding: 8px 4px;">Carrier</td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="object.carrier_id.name or ''"/></td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="object.carrier_id.name or '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25);">
<td style="padding: 8px 4px;">Tracking Number</td>
<td style="padding: 8px 4px; text-align: right; font-family: monospace; font-weight: bold;"><t t-out="object.tracking_number or ''"/></td>
<td style="padding: 8px 4px; text-align: right; font-family: monospace; font-weight: bold;"><t t-out="object.tracking_number or '-'"/></td>
</tr>
</table>
<div t-if="object.x_fc_tracking_url" style="margin: 24px 0; text-align: center;">
@@ -232,7 +232,7 @@
</a>
</div>
<div style="border-left: 3px solid #2B6CB0; padding: 12px 16px; margin: 20px 0; font-size: 14px;">
<strong>What's next:</strong> Once the carrier collects the package, you'll receive a Shipped confirmation with the Certificate of Conformance attached.
<strong>What's next:</strong> Once the carrier collects the package, you'll receive a Shipped confirmation with your shipping documents attached.
</div>
<div style="margin-top: 32px; font-size: 14px;">
Best regards,<br/>
@@ -252,7 +252,7 @@
<record id="fp_mail_template_shipped" model="mail.template">
<field name="name">FP: Shipped / Delivered</field>
<field name="model_id" ref="fusion_plating_logistics.model_fusion_plating_delivery"/>
<field name="subject">Shipped {{ object.job_ref or object.name }}</field>
<field name="subject">Shipped - {{ object.job_ref or object.name }}</field>
<field name="email_from">{{ (object.company_id.email or user.email) }}</field>
<field name="email_to">{{ object.partner_id.email }}</field>
<field name="auto_delete" eval="True"/>
@@ -264,7 +264,7 @@
</div>
<h2 style="margin: 0 0 8px 0; font-size: 22px; font-weight: bold;">Your Parts Have Shipped</h2>
<p style="margin: 0 0 20px 0; font-size: 15px; opacity: 0.65;">
Hi <t t-out="object.partner_id.name or ''"/>, your order has left our facility. Certificate of Conformance and Bill of Lading are attached for your records.
Hi <t t-out="object.partner_id.name or ''"/>, your order is complete. Your packing slip or bill of lading is attached, along with the Certificate of Conformance where applicable, for your records.
</p>
<table style="width: 100%; border-collapse: collapse; margin: 20px 0;">
<tr style="border-bottom: 2px solid rgba(128,128,128,0.35);">
@@ -277,19 +277,19 @@
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25); background: rgba(128,128,128,0.06);">
<td style="padding: 8px 4px;">Job Reference</td>
<td style="padding: 8px 4px; text-align: right; font-family: monospace;"><t t-out="object.job_ref or ''"/></td>
<td style="padding: 8px 4px; text-align: right; font-family: monospace;"><t t-out="object.job_ref or '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25);">
<td style="padding: 8px 4px;">Delivered</td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="format_datetime(object.delivered_at, tz=(user.tz or object.company_id.x_fc_default_tz or 'UTC'), dt_format='MMM d, y HH:mm') if object.delivered_at else ''"/></td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="format_datetime(object.delivered_at, tz=(user.tz or object.company_id.x_fc_default_tz or 'UTC'), dt_format='MMM d, y HH:mm') if object.delivered_at else '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25); background: rgba(128,128,128,0.06);">
<td style="padding: 8px 4px;">Driver</td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="object.assigned_driver_id.name or ''"/></td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="object.assigned_driver_id.name or '-'"/></td>
</tr>
</table>
<div style="border-left: 3px solid #38a169; padding: 12px 16px; margin: 20px 0; font-size: 14px;">
<strong>Next:</strong> Your invoice will follow shortly. Please inspect your parts on receipt and contact us with any questions.
<strong>Next:</strong> Your invoice will follow shortly. Please inspect your parts and reach out with any questions.
</div>
<div style="margin-top: 32px; font-size: 14px;">
Best regards,<br/>
@@ -309,7 +309,7 @@
<record id="fp_mail_template_invoice_posted" model="mail.template">
<field name="name">FP: Invoice Notification</field>
<field name="model_id" ref="account.model_account_move"/>
<field name="subject">Invoice {{ object.name }} Electroless Nickel Technologies Inc. (ENTECH)</field>
<field name="subject">Invoice {{ object.name }} - Electroless Nickel Technologies Inc. (ENTECH)</field>
<field name="email_from">{{ (object.company_id.email or user.email) }}</field>
<field name="email_to">{{ object.partner_id.email }}</field>
<field name="auto_delete" eval="True"/>
@@ -334,15 +334,15 @@
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25); background: rgba(128,128,128,0.06);">
<td style="padding: 8px 4px;">Source Order</td>
<td style="padding: 8px 4px; text-align: right; font-family: monospace;"><t t-out="object.invoice_origin or ''"/></td>
<td style="padding: 8px 4px; text-align: right; font-family: monospace;"><t t-out="object.invoice_origin or '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25);">
<td style="padding: 8px 4px;">Invoice Date</td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="format_date(object.invoice_date, date_format='MMM d, y') if object.invoice_date else ''"/></td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="format_date(object.invoice_date, date_format='MMM d, y') if object.invoice_date else '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25); background: rgba(128,128,128,0.06);">
<td style="padding: 8px 4px;">Due Date</td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="format_date(object.invoice_date_due, date_format='MMM d, y') if object.invoice_date_due else ''"/></td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="format_date(object.invoice_date_due, date_format='MMM d, y') if object.invoice_date_due else '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25);">
<td style="padding: 8px 4px;"><strong>Amount Due</strong></td>
@@ -372,7 +372,7 @@
<record id="fp_mail_template_payment_received" model="mail.template">
<field name="name">FP: Payment Received</field>
<field name="model_id" ref="account.model_account_payment"/>
<field name="subject">Payment Received {{ object.name }}</field>
<field name="subject">Payment Received - {{ object.name }}</field>
<field name="email_from">{{ (object.company_id.email or user.email) }}</field>
<field name="email_to">{{ object.partner_id.email }}</field>
<field name="auto_delete" eval="True"/>
@@ -382,7 +382,7 @@
<div style="font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: #38a169; font-weight: 600; margin-bottom: 8px;">
Electroless Nickel Technologies Inc. (ENTECH)
</div>
<h2 style="margin: 0 0 8px 0; font-size: 22px; font-weight: bold;">Payment Received Thank You</h2>
<h2 style="margin: 0 0 8px 0; font-size: 22px; font-weight: bold;">Payment Received - Thank You</h2>
<p style="margin: 0 0 20px 0; font-size: 15px; opacity: 0.65;">
Hi <t t-out="object.partner_id.name or ''"/>, we've received your payment. Your receipt is attached.
</p>
@@ -397,11 +397,11 @@
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25); background: rgba(128,128,128,0.06);">
<td style="padding: 8px 4px;">Payment Method</td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="object.payment_method_line_id.name or ''"/></td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="object.payment_method_line_id.name or '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25);">
<td style="padding: 8px 4px;">Payment Date</td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="format_date(object.date, date_format='MMM d, y') if object.date else ''"/></td>
<td style="padding: 8px 4px; text-align: right;"><t t-out="format_date(object.date, date_format='MMM d, y') if object.date else '-'"/></td>
</tr>
<tr style="border-bottom: 1px solid rgba(128,128,128,0.25); background: rgba(128,128,128,0.06);">
<td style="padding: 8px 4px;"><strong>Amount</strong></td>