@@ -78,30 +78,54 @@ def _compute_required_fields(self):
7878 "tab_filter_id" ,
7979 "add_select_tab" ,
8080 ]
81- if record .name :
82- required = []
83- field , model , level = self ._get_last_relation_field (
84- record .model1_id .model , record .name
85- )
86- ftype = self .env [model ]._fields [field ].type
87- if ftype in ["many2one" , "many2many" ]:
88- level += 1
89- hidden_fields .remove ("add_select_tab" )
90- for idx in range (2 , level + 1 ):
91- required .append (f"field{ idx } _id" )
92- if ftype in ["one2many" , "many2many" ]:
93- required .append ("number_occurence" )
94- if ftype in "one2many" :
95- required .append ("sub_pattern_config_id" )
96- record .required_fields = "," .join (required )
97- if record .add_select_tab :
98- # this field is optionnal
99- required .append ("tab_filter_id" )
100- hidden_fields = list (set (hidden_fields ) - set (required ))
101- record .hidden_fields = "," .join (hidden_fields )
102- else :
81+
82+ if not record .name :
10383 record .required_fields = ""
10484 record .hidden_fields = ""
85+ continue
86+
87+ required = []
88+
89+ field , model , level = self ._get_last_relation_field (
90+ record .model1_id .model , record .name
91+ )
92+
93+ if model not in self .env :
94+ record .required_fields = ""
95+ record .hidden_fields = "," .join (hidden_fields )
96+ continue
97+
98+ model_obj = self .env [model ]
99+
100+ field_obj = model_obj ._fields .get (field )
101+ if not field_obj :
102+ record .required_fields = ""
103+ record .hidden_fields = "," .join (hidden_fields )
104+ continue
105+
106+ ftype = field_obj .type
107+
108+ if ftype in ["many2one" , "many2many" ]:
109+ level += 1
110+ if "add_select_tab" in hidden_fields :
111+ hidden_fields .remove ("add_select_tab" )
112+
113+ for idx in range (2 , level + 1 ):
114+ required .append (f"field{ idx } _id" )
115+
116+ if ftype in ["one2many" , "many2many" ]:
117+ required .append ("number_occurence" )
118+
119+ if ftype == "one2many" :
120+ required .append ("sub_pattern_config_id" )
121+
122+ if record .add_select_tab :
123+ required .append ("tab_filter_id" )
124+
125+ record .required_fields = "," .join (required )
126+
127+ hidden_fields = list (set (hidden_fields ) - set (required ))
128+ record .hidden_fields = "," .join (hidden_fields )
105129
106130 def _inverse_name (self ):
107131 super ()._inverse_name ()
0 commit comments