fix(jobs): registry load failure after Tier 2/3 persistence patches

Two compounding issues introduced by the persistence audit work:

1. fields.Text mismatch: sale.order.x_fc_internal_note and
   x_fc_external_note are actually fields.Html. I declared the
   sale.order.line related mirrors and the fp.job stored copies as
   fields.Text, so setup_related raised:
     TypeError: Type of related field
     sale.order.line.x_fc_internal_note is inconsistent with
     sale.order.x_fc_internal_note
   Fixed by switching both Note fields on fp.job and sale.order.line
   to fields.Html.

2. Module-load-order: Tier 3 fields (x_fc_delivery_method,
   x_fc_ship_via, x_fc_invoice_strategy) are defined in
   fusion_plating_jobs (related to sale.order via _inherit), but I
   referenced them in fusion_plating core's fp_job_views.xml — which
   loads BEFORE fusion_plating_jobs registers the fields. View
   validator raised "Field x_fc_delivery_method does not exist".
   Fixed by removing those 3 fields from the core view group and
   adding them via xpath in fusion_plating_jobs's fp_job_form_inherit
   (which loads after the fields are registered).

Both fixes deployed and verified — registry loads in 2s, all field
types match, related path resolves correctly. No data loss; the
fp.job rows that already had stored Text content for internal_note /
external_note will carry over into the Html field intact.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-05-12 08:45:59 -04:00
parent cba9a6da6b
commit 2d9779047b
7 changed files with 12 additions and 10 deletions

View File

@@ -5,7 +5,7 @@
{
'name': 'Fusion Plating',
'version': '19.0.18.15.8',
'version': '19.0.18.15.10',
'category': 'Manufacturing/Plating',
'summary': 'Core plating / metal finishing ERP: facilities, processes, tanks, baths, jobs, operators.',
'description': """

View File

@@ -308,12 +308,12 @@ class FpJob(models.Model):
)
# ---- Operational notes mirrored from sale.order ------------------
x_fc_internal_note = fields.Text(
x_fc_internal_note = fields.Html(
string='Internal Note',
tracking=True,
help='Shop-internal notes from the order. Not shown to customer.',
)
x_fc_external_note = fields.Text(
x_fc_external_note = fields.Html(
string='External Note',
tracking=True,
help='Customer-facing notes copied from the sale order. Printed '

View File

@@ -43,9 +43,6 @@
<field name="x_fc_rush_order"/>
<field name="x_fc_planned_start_date"/>
<field name="x_fc_internal_deadline"/>
<field name="x_fc_delivery_method"/>
<field name="x_fc_ship_via"/>
<field name="x_fc_invoice_strategy"/>
</group>
<group name="x_fc_notes" string="Notes">
<field name="x_fc_internal_note" nolabel="1" placeholder="Internal note (not shown to customer)…"/>