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:
@@ -8,7 +8,7 @@ entech at write time) have free-text values like "FedEx", "Purolator"
|
||||
in carrier_name. This migration walks them and populates the new M2O
|
||||
when a unique case-insensitive name match exists.
|
||||
|
||||
delivery.carrier.name is jsonb (translatable) in Odoo 19 — match
|
||||
delivery.carrier.name is jsonb (translatable) in Odoo 19 - match
|
||||
strips to the en_US translation. Ambiguous values stay as text in
|
||||
carrier_name for the operator to pick manually.
|
||||
"""
|
||||
@@ -19,7 +19,7 @@ _logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def migrate(cr, version):
|
||||
# Skip if the field doesn't exist yet (defensive — the column is
|
||||
# Skip if the field doesn't exist yet (defensive - the column is
|
||||
# added by the registry update that runs before post-migrate).
|
||||
cr.execute("""
|
||||
SELECT 1
|
||||
@@ -28,7 +28,7 @@ def migrate(cr, version):
|
||||
AND column_name = 'x_fc_carrier_id'
|
||||
""")
|
||||
if not cr.fetchone():
|
||||
_logger.warning('x_fc_carrier_id column not present — skip.')
|
||||
_logger.warning('x_fc_carrier_id column not present - skip.')
|
||||
return
|
||||
|
||||
cr.execute("""
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
#
|
||||
# Backfill fp.job.qty_received from closed fp.receiving lines.
|
||||
#
|
||||
# Triggering issue (2026-05-20): WO-30043 — and any other job created
|
||||
# before the new _update_job_qty_received hook shipped — has
|
||||
# Triggering issue (2026-05-20): WO-30043 - and any other job created
|
||||
# before the new _update_job_qty_received hook shipped - has
|
||||
# qty_received=0 even though its receiving is closed. The
|
||||
# button_mark_done gate then blocks the operator with no obvious next
|
||||
# step ("Quantity Received is blank — close the receiving record...").
|
||||
# step ("Quantity Received is blank - close the receiving record...").
|
||||
# Receiving IS closed. The propagation was missing.
|
||||
#
|
||||
# This migration walks every (closed / accepted / resolved) receiving,
|
||||
@@ -39,6 +39,6 @@ def migrate(cr, version):
|
||||
if updated:
|
||||
_logger.info(
|
||||
'fp.job.qty_received backfilled from receiving lines on '
|
||||
'%d job(s) — fixes WO-30043 and any sibling stuck jobs.',
|
||||
'%d job(s) - fixes WO-30043 and any sibling stuck jobs.',
|
||||
updated,
|
||||
)
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
# Copyright 2026 Nexa Systems Inc.
|
||||
# License OPL-1 (Odoo Proprietary License v1.0)
|
||||
#
|
||||
# 2026-05-20 — `staged` state retirement.
|
||||
# 2026-05-20 - `staged` state retirement.
|
||||
#
|
||||
# Drop `staged` from the active receiving state machine. The state had
|
||||
# zero downstream effect (same SO mapping as counted), no captured
|
||||
# data, and median dwell of 11 sec — pure ceremony between Counted
|
||||
# data, and median dwell of 11 sec - pure ceremony between Counted
|
||||
# and Closed. Any existing records currently sitting in `staged` get
|
||||
# promoted to `closed` (they're already past the box-count step;
|
||||
# closed is the next logical resting place).
|
||||
#
|
||||
# `staged` stays in the Selection as a (legacy) value so historical
|
||||
# records that ever held it can still be read — we just don't write
|
||||
# records that ever held it can still be read - we just don't write
|
||||
# to it anymore. The view's statusbar_visible drops it.
|
||||
|
||||
import logging
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Phase 6 (Sub 11) — drop legacy MRP column from fp_racking_inspection.
|
||||
# Phase 6 (Sub 11) - drop legacy MRP column from fp_racking_inspection.
|
||||
|
||||
import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -11,7 +11,7 @@ field), leaving every auto-generated receiving line with an empty
|
||||
to prefill ``received_qty``.
|
||||
|
||||
This migration walks existing receiving records and rebuilds the line
|
||||
metadata from the linked SO's order lines via position-based zip — only
|
||||
metadata from the linked SO's order lines via position-based zip - only
|
||||
when the receiving line count matches the SO line count (otherwise the
|
||||
mapping isn't safe and we leave the record alone for manual review).
|
||||
"""
|
||||
@@ -52,7 +52,7 @@ def migrate(cr, version):
|
||||
""", (so_id,))
|
||||
so_lines = cr.fetchall()
|
||||
if len(so_lines) != len(recv_line_ids):
|
||||
# Mismatch — don't risk corrupting a non-trivial mapping.
|
||||
# Mismatch - don't risk corrupting a non-trivial mapping.
|
||||
skipped += 1
|
||||
continue
|
||||
# Receiving lines come ordered by id ascending (the create call
|
||||
|
||||
Reference in New Issue
Block a user