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

@@ -90,7 +90,7 @@ class FpQcController(http.Controller):
}
# ------------------------------------------------------------------
# GET state OWL calls this on mount + after every action
# GET state - OWL calls this on mount + after every action
# ------------------------------------------------------------------
@http.route(
'/fp/qc/get', type='jsonrpc', auth='user', methods=['POST'],
@@ -135,7 +135,7 @@ class FpQcController(http.Controller):
if check.state == 'draft':
check.action_start()
# Numeric value handling write before action to let
# Numeric value handling - write before action to let
# _compute_value_in_range update the record.
vals = {}
if value is not None and line.requires_value:

View File

@@ -22,7 +22,7 @@ from odoo.http import request
_logger = logging.getLogger(__name__)
# Canonical section order drives sections[] in the response.
# Canonical section order - drives sections[] in the response.
# Sections whose model isn't installed are omitted (no error).
SECTION_ORDER = ['cert', 'hold', 'ncr', 'rma', 'capa', 'check']
@@ -50,7 +50,7 @@ TYPE_CONFIG = {
}
# Per-type "overdue" thresholds (reused from the old counts endpoint
# Per-type "overdue" thresholds (reused from the old counts endpoint -
# battle-tested). CAPA branches on due_date < today via use_due_date.
OVERDUE_THRESHOLDS = {
'cert': {'days': 1, 'use_due_date': False,
@@ -152,7 +152,7 @@ class FpQualityDashboardSnapshot:
Returns list of item dicts in the snapshot shape.
"""
state_dom = list(OVERDUE_THRESHOLDS[type_code]['state_domain'])
# We need urgency labels per record fetch open set, sort in
# We need urgency labels per record - fetch open set, sort in
# Python by (overdue_flag, age) so the top-N reflects urgency.
recs = Model.search(state_dom, limit=200) # safety cap
if not recs:
@@ -169,7 +169,7 @@ class FpQualityDashboardSnapshot:
for r in top]
def _overdue_ids(self, type_code, Model):
"""IDs of overdue records for the type reuses _overdue_count
"""IDs of overdue records for the type - reuses _overdue_count
domain logic."""
cfg = OVERDUE_THRESHOLDS[type_code]
dom = list(cfg['state_domain'])
@@ -184,7 +184,7 @@ class FpQualityDashboardSnapshot:
def _build_item(self, type_code, rec, is_overdue):
"""Shape one record into the snapshot item dict."""
cfg = TYPE_CONFIG[type_code]
# Customer name partner_id direct, OR via job_id for check
# Customer name - partner_id direct, OR via job_id for check
partner = self._resolve_partner(rec)
return {
'id': rec.id,
@@ -215,7 +215,7 @@ class FpQualityDashboardSnapshot:
def _build_subtitle(self, type_code, rec, is_overdue):
"""Second-line text per type. Implementation-phase choice
per spec open question 1."""
# Age in human terms hours if < 24h, days otherwise
# Age in human terms - hours if < 24h, days otherwise
if rec.create_date:
age = self.now - rec.create_date
hours = int(age.total_seconds() / 3600)
@@ -232,7 +232,7 @@ class FpQualityDashboardSnapshot:
def _fetch_banner_candidates(self, type_code, Model):
"""Per-type pull of records that qualify for the banner:
(overdue) OR (critical-customer AND state-is-open). Returns
list of (rec, urgency, critical_badge) tuples deduped.
list of (rec, urgency, critical_badge) tuples - deduped.
"""
overdue_ids = set(self._overdue_ids(type_code, Model))
critical_ids = set(self._critical_customer_ids(type_code, Model))
@@ -281,7 +281,7 @@ class FpQualityDashboardSnapshot:
if not critical_partner_ids:
return []
partner_path = partner_field_map.get(type_code, 'partner_id')
# Compose the record-side filter direct or via dotted path
# Compose the record-side filter - direct or via dotted path
dom = list(OVERDUE_THRESHOLDS[type_code]['state_domain'])
dom.append((partner_path, 'in', critical_partner_ids))
try:
@@ -303,7 +303,7 @@ class FpQualityDashboardSnapshot:
return 'RUSH'
if 'x_fc_vip' in partner._fields and getattr(partner, 'x_fc_vip', False):
return 'VIP'
# Aerospace check part name OR spec code if reachable
# Aerospace - check part name OR spec code if reachable
for path in ('part_catalog_id.name', 'customer_spec_id.code'):
head, _, attr = path.partition('.')
if head in rec._fields and rec[head] \