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

@@ -3,9 +3,9 @@
# License OPL-1 (Odoo Proprietary License v1.0)
# Part of the Fusion Plating product family.
#
# Sub 8 Racking-time inspection record. Captures the per-part
# Sub 8 - Racking-time inspection record. Captures the per-part
# inspection the racking crew performs when they open the customer's
# boxes (which is DIFFERENT from receiving receiving is box count
# boxes (which is DIFFERENT from receiving - receiving is box count
# only). One record per MO.
from dateutil.relativedelta import relativedelta
@@ -21,7 +21,7 @@ class FpRackingInspection(models.Model):
_order = 'create_date desc, id desc'
name = fields.Char(compute='_compute_name', store=True)
# Phase 6 (Sub 11) production_id retired (MRP module gone).
# Phase 6 (Sub 11) - production_id retired (MRP module gone).
# x_fc_job_id is the canonical link. Declared here so this module's
# views can reference it at view-load time; fusion_plating_jobs adds
# the constraints + compute overrides via inheritance.
@@ -83,7 +83,7 @@ class FpRackingInspection(models.Model):
flagged_count = fields.Integer(compute='_compute_line_stats')
has_variance = fields.Boolean(compute='_compute_line_stats')
# Phase 6 (Sub 11) production_id retired (MRP module gone). The
# Phase 6 (Sub 11) - production_id retired (MRP module gone). The
# uniqueness constraint that used to ride on production_id is now
# enforced via @api.constrains on x_fc_job_id (added by
# fusion_plating_jobs).
@@ -153,7 +153,7 @@ class FpRackingInspection(models.Model):
'inspection_completed': fields.Datetime.now(),
})
if new_state == 'discrepancy_flagged':
# 2026-04-28 Activity must land on a real user.
# 2026-04-28 - Activity must land on a real user.
# Resolve the assignee in priority order:
# 1. The job's plating manager (if set on fp.job)
# 2. The inspector who just flagged it
@@ -180,18 +180,18 @@ class FpRackingInspection(models.Model):
rec.name or ''
),
note=_(
'%(n)d line(s) flagged review before starting '
'%(n)d line(s) flagged - review before starting '
'the first plating WO.'
) % {'n': rec.flagged_count},
user_id=assignee,
date_deadline=deadline,
)
rec.message_post(body=_(
'Inspection completed %(ok)d ok / %(flag)d flagged.'
'Inspection completed - %(ok)d ok / %(flag)d flagged.'
) % {'ok': rec.ok_count, 'flag': rec.flagged_count})
def action_reopen(self):
"""Manager only reopen a done inspection."""
"""Manager only - reopen a done inspection."""
if not self.env.user.has_group(
'fusion_plating.group_fusion_plating_manager'):
raise UserError(_('Only a Plating Manager can reopen a completed '
@@ -239,7 +239,7 @@ class FpRackingInspectionLine(models.Model):
)
notes = fields.Char(string='Notes')
# 2026-04-28 photos on a line (compliance need: damage evidence,
# 2026-04-28 - photos on a line (compliance need: damage evidence,
# box-by-box condition record). Many2many to ir.attachment so an
# operator can shoot multiple angles per box from the floor without
# leaving the form. Cascade-deleted with the line.
@@ -267,7 +267,7 @@ class FpRackingInspectionLine(models.Model):
def create(self, vals_list):
# Auto-populate part_catalog_id from the parent inspection's job
# when the operator added a line without picking a part. The
# job's SO carries the customer's part pre-fill the line so
# job's SO carries the customer's part - pre-fill the line so
# the audit trail captures it without requiring extra clicks.
for vals in vals_list:
if not vals.get('part_catalog_id') and vals.get('inspection_id'):