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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user