diff --git a/fusion_plating/fusion_plating_configurator/wizard/fp_direct_order_wizard.py b/fusion_plating/fusion_plating_configurator/wizard/fp_direct_order_wizard.py
index b1e68727..999ef32c 100644
--- a/fusion_plating/fusion_plating_configurator/wizard/fp_direct_order_wizard.py
+++ b/fusion_plating/fusion_plating_configurator/wizard/fp_direct_order_wizard.py
@@ -193,6 +193,28 @@ class FpDirectOrderWizard(models.Model):
).id,
'target': 'current',
}
+
+ def action_open_draft(self):
+ """Route the drafts-list row-click to the form view matching view_source.
+
+ Drafts created in the Express view re-open in Express; drafts
+ created in the Legacy view re-open in Legacy. Either view's
+ header has a 'Switch to ...' button to bounce between.
+ """
+ self.ensure_one()
+ view_xmlid = (
+ 'fusion_plating_configurator.view_fp_express_order_form'
+ if self.view_source == 'express'
+ else 'fusion_plating_configurator.view_fp_direct_order_wizard_form'
+ )
+ return {
+ 'type': 'ir.actions.act_window',
+ 'res_model': 'fp.direct.order.wizard',
+ 'res_id': self.id,
+ 'view_mode': 'form',
+ 'view_id': self.env.ref(view_xmlid).id,
+ 'target': 'current',
+ }
invoice_strategy = fields.Selection(
[('deposit', 'Deposit'), ('progress', 'Progress Billing'),
('net_terms', 'Net Terms'), ('cod_prepay', 'COD / Prepay')],
diff --git a/fusion_plating/fusion_plating_configurator/wizard/fp_direct_order_wizard_views.xml b/fusion_plating/fusion_plating_configurator/wizard/fp_direct_order_wizard_views.xml
index 042bbef7..7128aa0b 100644
--- a/fusion_plating/fusion_plating_configurator/wizard/fp_direct_order_wizard_views.xml
+++ b/fusion_plating/fusion_plating_configurator/wizard/fp_direct_order_wizard_views.xml
@@ -24,7 +24,21 @@
invisible="state != 'cancelled'"/>