From b8b6ee9fb5c9734473bcf2c0bb0fd9a0b3ec0e1f Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Wed, 3 Mar 2021 17:04:01 -0800 Subject: [PATCH] [FIX] hr_payroll_attendance: duplicate attendances during initial form create --- hr_payroll_attendance/models/hr_payslip.py | 3 ++- hr_payroll_attendance/tests/test_payroll_attendance.py | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/hr_payroll_attendance/models/hr_payslip.py b/hr_payroll_attendance/models/hr_payslip.py index 30504d27..1a07bafb 100755 --- a/hr_payroll_attendance/models/hr_payslip.py +++ b/hr_payroll_attendance/models/hr_payslip.py @@ -39,6 +39,7 @@ class HrPayslip(models.Model): ('employee_id', '=', self.employee_id.id), ('check_out', '<=', self.date_to), ('payslip_id', '=', False), + ('id', 'not in', attendance_to_keep.ids), ]) self.update({'attendance_ids': [(6, 0, attendance_to_keep.ids)]}) @@ -87,7 +88,7 @@ class HrPayslip(models.Model): def _pre_aggregate_attendance_data(self, default_workentrytype): worked_attn = defaultdict(list) - for attn in self.attendance_ids: + for attn in self.attendance_ids.sorted('check_in'): if attn.worked_hours: # Avoid in/outs attn_iso = attn.check_in.isocalendar() diff --git a/hr_payroll_attendance/tests/test_payroll_attendance.py b/hr_payroll_attendance/tests/test_payroll_attendance.py index 4bd80c8d..5a1e943a 100644 --- a/hr_payroll_attendance/tests/test_payroll_attendance.py +++ b/hr_payroll_attendance/tests/test_payroll_attendance.py @@ -126,7 +126,11 @@ class TestUsPayslip(common.TransactionCase): return categories def test_attendance_hourly(self): - self.payslip._onchange_employee() + payslip_form = common.Form(self.env['hr.payslip']) + payslip_form.date_from = '2020-01-06' + payslip_form.date_to = '2020-01-19' + payslip_form.employee_id = self.employee + self.payslip = payslip_form.save() self.assertTrue(self.payslip.contract_id, 'No auto-discovered contract!') self.payslip.compute_sheet() # 58.97 => 40hr regular, 18.97hr OT