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:
@@ -58,7 +58,7 @@ class TestActionIssueGates(TransactionCase):
|
||||
# ---- spec_reference is OPTIONAL (client request 2026-05-28) ----
|
||||
|
||||
def test_no_block_on_missing_spec_reference(self):
|
||||
"""Spec Reference no longer gates issuance — the customer-facing
|
||||
"""Spec Reference no longer gates issuance - the customer-facing
|
||||
description now serves as the cert's spec/certificate info. A
|
||||
cert with everything else present must issue even with a blank
|
||||
spec_reference."""
|
||||
@@ -124,7 +124,7 @@ class TestActionIssueGates(TransactionCase):
|
||||
|
||||
def test_blocks_thickness_report_with_no_data(self):
|
||||
"""A thickness_report cert with zero readings and no Fischerscope
|
||||
PDF is empty paper — must block at issue."""
|
||||
PDF is empty paper - must block at issue."""
|
||||
cert = self._make_cert(certificate_type='thickness_report')
|
||||
with self.assertRaises(UserError) as exc:
|
||||
cert.action_issue()
|
||||
@@ -141,7 +141,7 @@ class TestActionIssueGates(TransactionCase):
|
||||
|
||||
def test_coc_does_not_require_thickness_data_by_default(self):
|
||||
"""Commercial CoC (no strict_thickness flag) should still pass
|
||||
even without readings — only thickness_report type is gated."""
|
||||
even without readings - only thickness_report type is gated."""
|
||||
cert = self._make_cert(certificate_type='coc')
|
||||
cert.action_issue()
|
||||
self.assertEqual(cert.state, 'issued')
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# License OPL-1 (Odoo Proprietary License v1.0)
|
||||
#
|
||||
# Unit tests for the Fischerscope thickness-report parser.
|
||||
# Pure-Python tests — no Odoo DB needed. Builds synthetic .docx files
|
||||
# Pure-Python tests - no Odoo DB needed. Builds synthetic .docx files
|
||||
# matching the real XDAL 600 export layout and verifies extraction.
|
||||
|
||||
import io
|
||||
@@ -26,11 +26,11 @@ class TestFischerscopeParser(TransactionCase):
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
try:
|
||||
import docx # python-docx — required for tests
|
||||
import docx # python-docx - required for tests
|
||||
cls.docx = docx
|
||||
except ImportError:
|
||||
cls.docx = None
|
||||
# Resolve the parser by absolute path at first use — relative
|
||||
# Resolve the parser by absolute path at first use - relative
|
||||
# `from ..lib import` at module top trips the test loader's
|
||||
# partially-initialised-package check.
|
||||
from odoo.addons.fusion_plating_certificates.lib import (
|
||||
|
||||
Reference in New Issue
Block a user