# -*- coding: utf-8 -*- """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"). Per 2026-05-27 customer feedback, it should instead link directly to a recipe (fusion.plating.process.node, node_type='recipe') so that picking a tag auto-applies the recipe to every order line. Drop the old VARCHAR column so Odoo can recreate it as an INTEGER FK 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. """ def migrate(cr, version): # Same model needs the same pre-migration on sale.order too for table, column in ( ('fp_direct_order_wizard', 'material_process'), ('sale_order', 'x_fc_material_process'), ): cr.execute(""" SELECT data_type FROM information_schema.columns WHERE table_name = %s AND column_name = %s """, (table, column)) row = cr.fetchone() if not row: continue data_type = row[0] # Only drop if the existing column is the old Char shape if data_type in ('character varying', 'text'): cr.execute( f"ALTER TABLE {table} DROP COLUMN IF EXISTS {column}" )