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

@@ -2,7 +2,7 @@
# Copyright 2026 Nexa Systems Inc.
# License OPL-1 (Odoo Proprietary License v1.0)
# Part of the Fusion Plating product family.
"""Operator proficiency tracker counts successful WO completions per
"""Operator proficiency tracker - counts successful WO completions per
(employee, role) pair and auto-promotes the employee once the role's
mastery threshold is crossed.
@@ -20,7 +20,7 @@ from odoo import _, api, fields, models
class FpOperatorProficiency(models.Model):
_name = 'fp.operator.proficiency'
_description = 'Fusion Plating Operator Task Proficiency'
_description = 'Fusion Plating - Operator Task Proficiency'
_rec_name = 'display_name'
_order = 'employee_id, role_id'
@@ -52,7 +52,7 @@ class FpOperatorProficiency(models.Model):
index=True,
help='True once the role has been added to the operator\'s Shop '
'Roles automatically. Stays True even if a manager removes '
'the role afterwards the count and promotion history are '
'the role afterwards - the count and promotion history are '
'preserved as a training record.',
)
promoted_at = fields.Datetime(
@@ -80,7 +80,7 @@ class FpOperatorProficiency(models.Model):
def _compute_display_name(self):
for rec in self:
rec.display_name = (
f'{rec.employee_id.name or "?"} {rec.role_id.name or "?"}'
f'{rec.employee_id.name or "?"} - {rec.role_id.name or "?"}'
)
@api.depends('completed_count', 'role_id.mastery_required')
@@ -99,7 +99,7 @@ class FpOperatorProficiency(models.Model):
def _record_completion(self, employee, role):
"""Increment the (employee, role) tally and promote if at threshold.
Idempotent for the (employee, role) pair if no record exists,
Idempotent for the (employee, role) pair - if no record exists,
we create one. Always uses sudo() because the worker may not
have write access to their own profile.
"""
@@ -163,7 +163,7 @@ class FpOperatorProficiency(models.Model):
})
employee.message_post(
body=Markup(_(
'🎉 <b>%(name)s promoted</b> qualified for '
'🎉 <b>%(name)s promoted</b> - qualified for '
'<b>%(role)s</b> after %(count)s successful '
'completions.'
)) % {