[FIX] hr_timesheet_attendance: base report on employees, not users
The report is currently base on timesheets/attendances.user_id.employee_id. As a result, some data weren't taken into account. As both models have employee_id, there is no reason not to use it. task-3251675 closes odoo/odoo#127492 Related: odoo/upgrade#4900 Signed-off-by: Xavier Bol (xbo) <xbo@odoo.com>
This commit is contained in:
committed by
Xavier Bol (xbo)
parent
dfd5d33a05
commit
9e0277eeec
@@ -9,7 +9,7 @@ class TimesheetAttendance(models.Model):
|
||||
_auto = False
|
||||
_description = 'Timesheet Attendance Report'
|
||||
|
||||
user_id = fields.Many2one('res.users', readonly=True)
|
||||
employee_id = fields.Many2one('hr.employee', readonly=True)
|
||||
date = fields.Date(readonly=True)
|
||||
total_timesheet = fields.Float("Timesheets Hours", readonly=True)
|
||||
total_attendance = fields.Float("Attendance Hours", readonly=True)
|
||||
@@ -24,7 +24,7 @@ class TimesheetAttendance(models.Model):
|
||||
self._cr.execute("""CREATE OR REPLACE VIEW %s AS (
|
||||
SELECT
|
||||
max(id) AS id,
|
||||
t.user_id,
|
||||
t.employee_id,
|
||||
t.date,
|
||||
t.company_id,
|
||||
coalesce(sum(t.attendance), 0) AS total_attendance,
|
||||
@@ -37,19 +37,18 @@ class TimesheetAttendance(models.Model):
|
||||
SELECT
|
||||
-hr_attendance.id AS id,
|
||||
hr_employee.hourly_cost AS emp_cost,
|
||||
resource_resource.user_id AS user_id,
|
||||
hr_attendance.employee_id AS employee_id,
|
||||
hr_attendance.worked_hours AS attendance,
|
||||
NULL AS timesheet,
|
||||
hr_attendance.check_in::date AS date,
|
||||
resource_resource.company_id as company_id
|
||||
hr_employee.company_id as company_id
|
||||
FROM hr_attendance
|
||||
LEFT JOIN hr_employee ON hr_employee.id = hr_attendance.employee_id
|
||||
LEFT JOIN resource_resource on resource_resource.id = hr_employee.resource_id
|
||||
UNION ALL
|
||||
SELECT
|
||||
ts.id AS id,
|
||||
hr_employee.hourly_cost AS emp_cost,
|
||||
ts.user_id AS user_id,
|
||||
ts.employee_id AS employee_id,
|
||||
NULL AS attendance,
|
||||
ts.unit_amount AS timesheet,
|
||||
ts.date AS date,
|
||||
@@ -58,7 +57,7 @@ class TimesheetAttendance(models.Model):
|
||||
LEFT JOIN hr_employee ON hr_employee.id = ts.employee_id
|
||||
WHERE ts.project_id IS NOT NULL
|
||||
) AS t
|
||||
GROUP BY t.user_id, t.date, t.company_id, t.emp_cost
|
||||
GROUP BY t.employee_id, t.date, t.company_id, t.emp_cost
|
||||
ORDER BY t.date
|
||||
)
|
||||
""" % self._table)
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
<field name="model">hr.timesheet.attendance.report</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Timesheet Attendance">
|
||||
<field name="user_id" string="Employee"/>
|
||||
<filter string="My Team" name="my_team" domain="[('user_id.employee_parent_id.user_id', '=', uid)]"/>
|
||||
<filter string="My Department" name="my_department" domain="[('user_id.employee_id.member_of_department', '=', True)]"/>
|
||||
<field name="employee_id" string="Employee"/>
|
||||
<filter string="My Team" name="my_team" domain="[('employee_id.parent_id.user_id', '=', uid)]"/>
|
||||
<filter string="My Department" name="my_department" domain="[('employee_id.member_of_department', '=', True)]"/>
|
||||
<separator/>
|
||||
<filter name="month" string="Date" date="date"/>
|
||||
<filter name="group_by_user" string="Employee" context="{'group_by': 'user_id'}"/>
|
||||
<filter name="group_by_user" string="Employee" context="{'group_by': 'employee_id'}"/>
|
||||
<filter name="group_by_month" string="Date" date="date" context="{'group_by': 'date'}"/>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -25,7 +25,7 @@ class TestTimesheetAttendance(TestCommonTimesheet):
|
||||
'date': datetime(2022, 2, 9),
|
||||
})
|
||||
total_timesheet, total_attendance = self.env['hr.timesheet.attendance.report']._read_group(
|
||||
[('user_id', '=', self.user_employee.id),
|
||||
[('employee_id', '=', self.empl_employee.id),
|
||||
('date', '>=', datetime(2022, 2, 9, 8, 0)), ('date', '<=', datetime(2022, 2, 9, 16, 0))],
|
||||
aggregates=['total_timesheet:sum', 'total_attendance:sum'],
|
||||
)[0]
|
||||
|
||||
Reference in New Issue
Block a user