From d143593b4b0c339ddcad5186127aee39fd15becf Mon Sep 17 00:00:00 2001 From: emjay0921 Date: Tue, 10 Feb 2026 09:08:19 +0800 Subject: [PATCH] fix(spp_programs): open program form modal when clicking membership row --- .../static/src/js/custom_open_list.js | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/spp_programs/static/src/js/custom_open_list.js b/spp_programs/static/src/js/custom_open_list.js index 011f057..7eedb4a 100644 --- a/spp_programs/static/src/js/custom_open_list.js +++ b/spp_programs/static/src/js/custom_open_list.js @@ -12,7 +12,10 @@ patch(ListRenderer.prototype, { }, async onCellClicked(record, column, ev) { - if (record.resModel === "spp.program") { + if ( + record.resModel === "spp.program" || + record.resModel === "spp.program.membership" + ) { // Skip custom behavior if in selection mode (e.g., Many2one "Search More..." dialog) // In selection mode, don't open form - let dialog handle row selection const isSelectionMode = @@ -26,8 +29,24 @@ patch(ListRenderer.prototype, { // In selection mode, use default behavior which handles selection return super.onCellClicked(record, column, ev); } + + let programId = record.resId; + if (record.resModel === "spp.program.membership") { + const programField = record.data.program_id; + if (programField && programField.id) { + programId = programField.id; + } else { + return super.onCellClicked(record, column, ev); + } + } + // Get the stored action from the server (includes action id for proper routing) - var action = await this.orm.call("spp.program", "open_program_form", [record.resId]); + var action = await this.orm.call("spp.program", "open_program_form", [ + programId, + ]); + if (record.resModel === "spp.program.membership") { + action.target = "new"; + } this.actionService.doAction(action); } else { super.onCellClicked(record, column, ev);