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 @@
# -*- coding: utf-8 -*-
# Consolidated 2026-04-24: the parallel OWL/controller stack was
# removed. job_scan is the only controller retained it powers the
# removed. job_scan is the only controller retained - it powers the
# QR-sticker scan redirect for fp.job records.
from . import job_scan
from . import record_inputs

View File

@@ -2,12 +2,12 @@
# Copyright 2026 Nexa Systems Inc.
# License OPL-1 (Odoo Proprietary License v1.0)
#
# /fp/job/<id> scan-redirect endpoint for native fp.job stickers.
# /fp/job/<id> - scan-redirect endpoint for native fp.job stickers.
#
# The fp.job sticker (Phase 5) embeds a QR encoding this URL. When a
# warehouse user scans it, this controller redirects them to either
# the fp.job form (for managers) or the upcoming process-tree client
# action (for operators Phase 6 expansion).
# action (for operators - Phase 6 expansion).
from odoo import http
from odoo.http import request

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.
"""Record Inputs Dialog (OWL) JSONRPC backend.
"""Record Inputs Dialog (OWL) - JSONRPC backend.
Replaces the v3 form-based wizard with a custom OWL dialog. The dialog
loads step + prompt metadata via /fp/record_inputs/load, then commits
@@ -20,7 +20,7 @@ from odoo.http import request
class FpRecordInputsController(http.Controller):
# ------------------------------------------------------------------
# Load return the prompt definitions + an empty values payload
# Load - return the prompt definitions + an empty values payload
# ------------------------------------------------------------------
@http.route('/fp/record_inputs/load', type='jsonrpc', auth='user')
def load(self, step_id):
@@ -30,7 +30,7 @@ class FpRecordInputsController(http.Controller):
return {'ok': False, 'error': 'Step not found.'}
step.check_access('read')
# Mirror the wizard's default_get logic build prompts from
# Mirror the wizard's default_get logic - build prompts from
# the recipe node's input_ids filtered to step_input + collect.
prompts = []
node = step.recipe_node_id
@@ -57,7 +57,7 @@ class FpRecordInputsController(http.Controller):
'is_authored': True,
})
# Operator initials used by the JS dialog to pre-fill
# Operator initials - used by the JS dialog to pre-fill
# signature / "Reviewer Initials" prompts. The user can edit
# the value in the dialog and the new value is persisted back
# via /fp/record_inputs/commit so future jobs and other steps
@@ -68,7 +68,7 @@ class FpRecordInputsController(http.Controller):
except AttributeError:
user_initials = ''
# Instruction images the recipe author's reference photos /
# Instruction images - the recipe author's reference photos /
# screenshots that show the operator HOW to do this step
# (masking patterns, fixture orientation, annotated diagrams).
# Returned as URL pointers so the dialog renders thumbnails
@@ -82,13 +82,13 @@ class FpRecordInputsController(http.Controller):
'mimetype': att.mimetype or '',
'url': '/web/image/%s' % att.id,
})
# Operator instructions text shown above the prompts so the
# Operator instructions text - shown above the prompts so the
# author's written guidance is visible at runtime.
instructions_html = ''
if node and node.description:
instructions_html = node.description
# Recipe root id surfaced so the dialog's "Edit Recipe" shortcut
# Recipe root id - surfaced so the dialog's "Edit Recipe" shortcut
# opens the Simple Editor on the EXACT recipe variant this job is
# reading from. Avoids the trap where the operator edits a sibling
# variant (e.g. the template, while the job runs the part-specific
@@ -119,7 +119,7 @@ class FpRecordInputsController(http.Controller):
}
# ------------------------------------------------------------------
# Commit write values via the existing wizard (reuse semantics)
# Commit - write values via the existing wizard (reuse semantics)
# ------------------------------------------------------------------
@http.route('/fp/record_inputs/commit', type='jsonrpc', auth='user')
def commit(self, step_id, values, advance_after=False, user_initials=None):