@@ -12,7 +12,10 @@ patch(ListRenderer.prototype, {
1212 } ,
1313
1414 async onCellClicked ( record , column , ev ) {
15- if ( record . resModel === "spp.program" ) {
15+ if (
16+ record . resModel === "spp.program" ||
17+ record . resModel === "spp.program.membership"
18+ ) {
1619 // Skip custom behavior if in selection mode (e.g., Many2one "Search More..." dialog)
1720 // In selection mode, don't open form - let dialog handle row selection
1821 const isSelectionMode =
@@ -26,8 +29,24 @@ patch(ListRenderer.prototype, {
2629 // In selection mode, use default behavior which handles selection
2730 return super . onCellClicked ( record , column , ev ) ;
2831 }
32+
33+ let programId = record . resId ;
34+ if ( record . resModel === "spp.program.membership" ) {
35+ const programField = record . data . program_id ;
36+ if ( programField && programField . id ) {
37+ programId = programField . id ;
38+ } else {
39+ return super . onCellClicked ( record , column , ev ) ;
40+ }
41+ }
42+
2943 // Get the stored action from the server (includes action id for proper routing)
30- var action = await this . orm . call ( "spp.program" , "open_program_form" , [ record . resId ] ) ;
44+ var action = await this . orm . call ( "spp.program" , "open_program_form" , [
45+ programId ,
46+ ] ) ;
47+ if ( record . resModel === "spp.program.membership" ) {
48+ action . target = "new" ;
49+ }
3150 this . actionService . doAction ( action ) ;
3251 } else {
3352 super . onCellClicked ( record , column , ev ) ;
0 commit comments