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