odoo18/addons_extensions/hr_emp_dashboard/controllers/employee_dashboard.py

41 lines
1.4 KiB
Python

from odoo import http
from odoo.http import request
class EmployeeDashboard(http.Controller):
@http.route('/employee/leave/balance', auth='user', type='json')
def get_leave_balance(self):
employee = request.env.user.employee_id
if not employee:
return {'error': 'No employee linked to this user'}
leave_data = {}
leave_types = request.env['hr.leave.type'].search([
])
if not leave_types:
return []
for leave_type in leave_types:
allocations = request.env['hr.leave.allocation'].search([
('employee_id', '=', employee.id),
('holiday_status_id', '=', leave_type.id),
('state', '=', 'validate'),
])
taken_leaves = request.env['hr.leave'].search([
('employee_id', '=', employee.id),
('holiday_status_id', '=', leave_type.id),
('state', '=', 'validate'),
])
total_allocated = sum(a.number_of_days for a in allocations)
total_taken = sum(l.number_of_days for l in taken_leaves)
remaining = total_allocated - total_taken
leave_data[leave_type.name] = {
'allocated': total_allocated,
'taken': total_taken,
'remaining': remaining,
}
return leave_data