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,7 +1,7 @@
# -*- coding: utf-8 -*-
# Copyright 2026 Nexa Systems Inc.
# License OPL-1
# Sub 9 Process Variants per Part. Runs on upgrade to 19.0.15.0.0.
# Sub 9 - Process Variants per Part. Runs on upgrade to 19.0.15.0.0.
#
# For every part that had a default_process_id, mark its root node as
# the default variant and seed a friendly label. Idempotent (NULL guards).
@@ -13,7 +13,7 @@ _logger = logging.getLogger(__name__)
def migrate(cr, version):
if not version:
return # Fresh install nothing to migrate
return # Fresh install - nothing to migrate
_logger.info("Sub 9: backfilling process variant flags")

View File

@@ -2,7 +2,7 @@
# Copyright 2026 Nexa Systems Inc.
# License OPL-1 (Odoo Proprietary License v1.0)
#
# Phase 1 multi-serial backfill the new M2M relations from the
# Phase 1 multi-serial - backfill the new M2M relations from the
# pre-existing single-M2O column on sale.order.line and account.move.line.
#
# x_fc_serial_id was historically a stored Many2one. Phase 1 made it a
@@ -34,7 +34,7 @@ def backfill_table(cr, source_table, m2m_table, line_col):
return
# Make sure the M2M table exists (Odoo creates it on registry load,
# but the migration runs BEFORE the registry comes up on upgrade
# but the migration runs BEFORE the registry comes up on upgrade -
# use IF NOT EXISTS to be safe).
cr.execute(
f"""

View File

@@ -3,8 +3,8 @@
"""Drop the redundant ``revision_number`` Integer column on fp.part.catalog.
The model historically carried two revision fields:
* ``revision`` (Char, required) the customer's actual revision label
* ``revision_number`` (Integer) an internal counter
* ``revision`` (Char, required) - the customer's actual revision label
* ``revision_number`` (Integer) - an internal counter
The Integer counter duplicated information already in ``revision`` and
got out of sync whenever the customer used a non-numeric scheme

View File

@@ -4,7 +4,7 @@
Sub 8 (2026-04-22) moved part inspection out of receiving and into the
recipe's racking step. The SO-level receiving status no longer needs
'inspected' as a terminal value 'received' (boxes counted/staged/
'inspected' as a terminal value - 'received' (boxes counted/staged/
closed) is now the final state.
This migration flips any existing rows with the obsolete value to the

View File

@@ -9,11 +9,11 @@ Actions:
1. Rename `fp_direct_order_wizard.notes` → `terms_and_conditions`.
Existing data preserves its semantic (always was customer-facing because
the old `action_create_order` wrote it to sale.order.note).
2. Add the new Express columns (idempotent IF NOT EXISTS guards).
2. Add the new Express columns (idempotent - IF NOT EXISTS guards).
3. Backfill `pricelist_id` from the legacy `currency_id` via any active
pricelist matching the currency. After this, the model's stored-related
currency_id (related='pricelist_id.currency_id') takes over.
4. (No currency_id column drop here Odoo's schema sync recognises the
4. (No currency_id column drop here - Odoo's schema sync recognises the
related field and keeps the column shape; data refreshes from the
related lookup on subsequent writes.)
@@ -58,7 +58,7 @@ def migrate(cr, version):
ALTER TABLE fp_direct_order_wizard
ADD COLUMN IF NOT EXISTS view_source VARCHAR DEFAULT 'legacy'
""")
# Note: view_source defaults to 'legacy' for EXISTING rows they were
# Note: view_source defaults to 'legacy' for EXISTING rows - they were
# created via the legacy view. New rows default to 'express' via the model.
# 3. Backfill pricelist_id from any active pricelist matching the

View File

@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
"""Pre-migration for 19.0.22.1.0 material_process Char → Many2One.
"""Pre-migration for 19.0.22.1.0 - material_process Char → Many2One.
The material_process field on fp.direct.order.wizard was originally a
free-text Char tag for shop-level metadata (e.g. "ENP-STEEL-HP-ADVANCED").
@@ -12,7 +12,7 @@ when the new field declaration loads. Per the Express Orders spec
section 12 (dev-stage, ignore past orders), losing the old Char values
is acceptable.
Idempotent IF EXISTS guards mean a re-run is safe.
Idempotent - IF EXISTS guards mean a re-run is safe.
"""

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Copyright 2026 Nexa Systems Inc.
# License OPL-1
# Sub 2 Part Data Model Overhaul. Runs on upgrade from < 19.0.9.0.0.
# Sub 2 - Part Data Model Overhaul. Runs on upgrade from < 19.0.9.0.0.
# Idempotent (NULL / empty guards). Safe to re-run.
import logging
@@ -11,7 +11,7 @@ _logger = logging.getLogger(__name__)
def migrate(cr, version):
if not version:
return # Fresh install nothing to migrate
return # Fresh install - nothing to migrate
_logger.info("Sub 2: starting part-data-model migration to %s", version)