From deec7e35638561e716c82db6c46c543eb48e4df1 Mon Sep 17 00:00:00 2001 From: Edilio Escalona Almira Date: Tue, 19 May 2026 11:02:55 -0500 Subject: [PATCH] [FIX] fieldservice_stage_server_action: pass active_ids on stage action --- .../models/fsm_order.py | 1 + .../tests/test_fsm_order_run_action.py | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/fieldservice_stage_server_action/models/fsm_order.py b/fieldservice_stage_server_action/models/fsm_order.py index 684a8dcdcb..4a13fcd6ed 100644 --- a/fieldservice_stage_server_action/models/fsm_order.py +++ b/fieldservice_stage_server_action/models/fsm_order.py @@ -27,5 +27,6 @@ def _run_stage_server_action(self): ctx = { "active_model": self._name, "active_id": order.id, + "active_ids": [order.id], } action_id.with_context(**ctx).run() diff --git a/fieldservice_stage_server_action/tests/test_fsm_order_run_action.py b/fieldservice_stage_server_action/tests/test_fsm_order_run_action.py index 5dfce0dc90..eb99669161 100644 --- a/fieldservice_stage_server_action/tests/test_fsm_order_run_action.py +++ b/fieldservice_stage_server_action/tests/test_fsm_order_run_action.py @@ -38,3 +38,34 @@ def test_fsm_order_run_action(self): tag = capture.records self.assertEqual(1, len(tag)) self.assertEqual("New test tag", tag.name) + + def test_stage_server_action_overrides_stale_active_ids(self): + action = self.env["ir.actions.server"].create( + { + "name": "Check active FSM order", + "model_id": self.env["ir.model"]._get_id("fsm.order"), + "state": "code", + "code": "record.message_post(body='Stage action executed')", + } + ) + self.stage2.action_id = action + order = self.Order.create( + { + "location_id": self.test_location.id, + "stage_id": self.stage1.id, + } + ) + order.with_context( + active_model="fsm.order", + active_id=order.id, + active_ids=[999999], + ).write({"stage_id": self.stage2.id}) + self.assertTrue( + self.env["mail.message"].search( + [ + ("model", "=", "fsm.order"), + ("res_id", "=", order.id), + ("body", "ilike", "Stage action executed"), + ] + ) + )