From 76fd607ad776026ac624f76e45f5634d7639ab94 Mon Sep 17 00:00:00 2001 From: Miquel Rosell Date: Thu, 2 Jul 2026 12:12:14 +0200 Subject: [PATCH 1/2] fix(hr_course_schedule): show attendee results on completed schedules --- hr_course/views/hr_course_schedule_views.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hr_course/views/hr_course_schedule_views.xml b/hr_course/views/hr_course_schedule_views.xml index 403ed34e4a3..06a82d05939 100644 --- a/hr_course/views/hr_course_schedule_views.xml +++ b/hr_course/views/hr_course_schedule_views.xml @@ -133,7 +133,8 @@ Date: Thu, 2 Jul 2026 12:12:14 +0200 Subject: [PATCH 2/2] fix(hr_course_schedule): check pending results per record in validation2complete --- hr_course/models/hr_course_schedule.py | 5 ++--- hr_course/tests/test_hr_course.py | 28 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/hr_course/models/hr_course_schedule.py b/hr_course/models/hr_course_schedule.py index 641002c4dc8..5d5d2227451 100644 --- a/hr_course/models/hr_course_schedule.py +++ b/hr_course/models/hr_course_schedule.py @@ -118,14 +118,13 @@ def inprogress2validation(self): def validation2complete(self): for record in self: - if self.course_attendee_ids.filtered( + if record.course_attendee_ids.filtered( lambda r: r.result == "pending" and r.active ): raise ValidationError( _("You cannot complete the course with pending results") ) - else: - record.write(record._validation2complete_values()) + record.write(record._validation2complete_values()) def back2draft(self): for record in self: diff --git a/hr_course/tests/test_hr_course.py b/hr_course/tests/test_hr_course.py index b692a1cfb51..1e6e001161e 100644 --- a/hr_course/tests/test_hr_course.py +++ b/hr_course/tests/test_hr_course.py @@ -75,3 +75,31 @@ def test_hr_course_schedule(self): ) self.course_schedule_id.validation2complete() self.assertEqual(self.course_schedule_id.state, "completed") + + def test_validation2complete_multi_record(self): + self.course_schedule_id.draft2waiting() + self.course_schedule_id.attendant_ids = [(6, 0, [self.employee1.id])] + self.course_schedule_id.waiting2inprogress() + self.course_schedule_id.inprogress2validation() + self.course_schedule_id.all_passed() + + course_schedule_2 = self.env["hr.course.schedule"].create( + { + "name": "Convocatory 2", + "course_id": self.course_id.id, + "cost": 100, + "authorized_by": self.employee1.id, + } + ) + course_schedule_2.draft2waiting() + course_schedule_2.attendant_ids = [(6, 0, [self.employee2.id])] + course_schedule_2.waiting2inprogress() + course_schedule_2.inprogress2validation() + + with self.assertRaises(ValidationError): + (self.course_schedule_id | course_schedule_2).validation2complete() + + course_schedule_2.all_passed() + (self.course_schedule_id | course_schedule_2).validation2complete() + self.assertEqual(self.course_schedule_id.state, "completed") + self.assertEqual(course_schedule_2.state, "completed")