From 4f3b54a2e7e5696391f05e58174e3eae094b4688 Mon Sep 17 00:00:00 2001 From: Risvana Cybro Date: Tue, 4 Nov 2025 10:27:34 +0530 Subject: [PATCH] Nov 04: [FIX] Bug Fixed 'hr_leave_dashboard' --- hr_leave_dashboard/models/hr_leave.py | 1 + .../static/src/js/emp_org_chart.js | 63 ++++++++++++------- 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/hr_leave_dashboard/models/hr_leave.py b/hr_leave_dashboard/models/hr_leave.py index 070157575..e3d6fbc06 100644 --- a/hr_leave_dashboard/models/hr_leave.py +++ b/hr_leave_dashboard/models/hr_leave.py @@ -20,6 +20,7 @@ # ############################################################################### import pytz + from odoo import api, fields, models diff --git a/hr_leave_dashboard/static/src/js/emp_org_chart.js b/hr_leave_dashboard/static/src/js/emp_org_chart.js index d23291de9..87ccb1e03 100644 --- a/hr_leave_dashboard/static/src/js/emp_org_chart.js +++ b/hr_leave_dashboard/static/src/js/emp_org_chart.js @@ -59,38 +59,55 @@ export class TimeOffEmpOrgChart extends Component { this.lastRecord = this.props.record; await this.fetchEmployeeData(this.state.employee_id, forceReload); } - async fetchEmployeeData(employeeId, force = false) { - employeeId = this.props.id - if (!employeeId) { - this.managers = []; - this.children = []; - if (this.view_employee_id) { - this.render(true); - } - this.view_employee_id = null; - } else if (employeeId !== this.view_employee_id || force) { - this.view_employee_id = employeeId; - var orgData = await this.rpc( - '/hr/get_org_chart', - { - employee_id: employeeId, - context: session.user_context, - } - ); +async fetchEmployeeData(employeeId, force = false) { + employeeId = this.props.id; + + if (!employeeId) { + this.managers = []; + this.children = []; + if (this.view_employee_id) { + this.render(true); + } + this.view_employee_id = null; + } else if (employeeId !== this.view_employee_id || force) { + this.view_employee_id = employeeId; + + try { + // Force create a proper context object + const safeContext = { + new_parent_id: null, + lang: 'en_US', + max_level: 2, // ADD THIS LINE + + uid: user.userId, + ...(session.user_context || {}) + }; + + const orgData = await this.rpc('/hr/get_org_chart', { + employee_id: employeeId, + context: safeContext, + }); + if (Object.keys(orgData).length === 0) { - orgData = { - managers: [], - children: [], - } + orgData = { managers: [], children: [] }; } - this.managers = orgData.managers; + this.managers = orgData.managers; this.children = orgData.children; this.managers_more = orgData.managers_more; this.self = orgData.self; this.render(true); + + } catch (error) { + console.error("Error:", error); + this.managers = []; + this.children = []; + this.managers_more = false; + this.self = null; + this.render(true); } } +} _onOpenPopover(event, employee) { this.popover.open(event.currentTarget, { employee });