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:
@@ -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': """
|
||||
|
||||
@@ -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 '
|
||||
|
||||
@@ -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)…"/>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
{
|
||||
'name': 'Fusion Plating — Configurator',
|
||||
'version': '19.0.18.10.2',
|
||||
'version': '19.0.18.10.3',
|
||||
'category': 'Manufacturing/Plating',
|
||||
'summary': 'Quotation configurator with part catalog, coating configs, and formula-based pricing engine.',
|
||||
'description': """
|
||||
|
||||
@@ -672,13 +672,13 @@ class SaleOrderLine(models.Model):
|
||||
readonly=True,
|
||||
store=True,
|
||||
)
|
||||
x_fc_internal_note = fields.Text(
|
||||
x_fc_internal_note = fields.Html(
|
||||
related='order_id.x_fc_internal_note',
|
||||
string='Internal Note',
|
||||
readonly=True,
|
||||
store=True,
|
||||
)
|
||||
x_fc_external_note = fields.Text(
|
||||
x_fc_external_note = fields.Html(
|
||||
related='order_id.x_fc_external_note',
|
||||
string='External Note',
|
||||
readonly=True,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# License OPL-1 (Odoo Proprietary License v1.0)
|
||||
{
|
||||
'name': 'Fusion Plating — Native Jobs',
|
||||
'version': '19.0.8.21.4',
|
||||
'version': '19.0.8.21.5',
|
||||
'category': 'Manufacturing/Plating',
|
||||
'summary': 'Native plating job model — replaces mrp.production / mrp.workorder bridge.',
|
||||
'author': 'Nexa Systems Inc.',
|
||||
|
||||
@@ -283,6 +283,11 @@
|
||||
</button>
|
||||
</div>
|
||||
</xpath>
|
||||
<xpath expr="//group[@name='x_fc_customer_refs']" position="inside">
|
||||
<field name="x_fc_delivery_method"/>
|
||||
<field name="x_fc_ship_via"/>
|
||||
<field name="x_fc_invoice_strategy"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
||||
Reference in New Issue
Block a user