@@ -16,11 +16,15 @@ def onchange_maintenance_request_id(self):
16
16
self .project_id = self .maintenance_request_id .project_id
17
17
self .task_id = self .maintenance_request_id .task_id
18
18
19
- @api .model
20
- def create (self , values ):
21
- if values .get ("maintenance_request_id" ):
22
- self ._check_request_done (values .get ("maintenance_request_id" ))
23
- return super ().create (values )
19
+ @api .model_create_multi
20
+ def create (self , vals_list ):
21
+ maintenance_request_ids = [
22
+ vals .get ("maintenance_request_id" )
23
+ for vals in vals_list
24
+ if vals .get ("maintenance_request_id" )
25
+ ]
26
+ self ._check_request_done (maintenance_request_ids )
27
+ return super ().create (vals_list )
24
28
25
29
def write (self , values ):
26
30
current_request = self .maintenance_request_id
@@ -32,15 +36,19 @@ def write(self, values):
32
36
return super ().write (values )
33
37
34
38
def unlink (self ):
35
- for timesheet in self .filtered (lambda x : x .maintenance_request_id ):
36
- self ._check_request_done (timesheet .maintenance_request_id .id )
39
+ self ._check_request_done (
40
+ self .filtered (lambda x : x .maintenance_request_id ).maintenance_request_id .ids
41
+ )
37
42
return super ().unlink ()
38
43
39
- def _check_request_done (self , request_id ):
44
+ def _check_request_done (self , request_id : int | list [ int ] ):
40
45
"""
41
46
Editing a timesheet related to a finished request is forbidden.
42
47
"""
43
- if self .env ["maintenance.request" ].browse (request_id ).stage_id .done :
48
+ request_ids = [request_id ] if isinstance (request_id , int ) else request_id
49
+ if any (
50
+ self .env ["maintenance.request" ].browse (request_ids ).stage_id .mapped ("done" )
51
+ ):
44
52
raise ValidationError (
45
53
_ (
46
54
"Cannot save or delete a timesheet for "
0 commit comments