from odoo import models, fields, api, _ class ProjectPortfolio(models.Model): _inherit = 'project.portfolio' def get_portfolio_projects(self): """Return portfolio projects data for dashboard""" self.ensure_one() projects = [] for project in self.project_ids.filtered(lambda p: p.active): projects.append({ 'id': project.id, 'name': project.name, 'estimated_amount': project.estimated_amount, 'project_cost': project.project_cost, 'actual_cost': project.actual_cost, 'profit': project.profit, 'loss': project.loss, 'budget_variance_percent': ( (project.estimated_amount - project.actual_cost) / project.estimated_amount * 100) if project.estimated_amount else 0, 'active': project.active, }) return projects def get_employee_performance(self): """Return employee performance data for dashboard""" self.ensure_one() performance = [] for perf in self.employee_performance_ids: performance.append({ 'id': perf.id, 'employee_id': perf.employee_id.id, 'employee_name': perf.employee_id.name, 'department_id': perf.department_id.id if perf.department_id else False, 'department_name': perf.department_id.name if perf.department_id else '', 'total_estimated_hours': perf.total_estimated_hours, 'total_actual_hours': perf.total_actual_hours, 'time_variance_percent': perf.time_variance_percent, 'on_time_completion_rate': perf.on_time_completion_rate, 'efficiency_rate': perf.efficiency_rate, 'performance_status': perf.performance_status, }) return performance