summaryrefslogtreecommitdiff
path: root/hrms_dashboard/report/broadfactor.py
diff options
context:
space:
mode:
Diffstat (limited to 'hrms_dashboard/report/broadfactor.py')
-rw-r--r--hrms_dashboard/report/broadfactor.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/hrms_dashboard/report/broadfactor.py b/hrms_dashboard/report/broadfactor.py
new file mode 100644
index 0000000..dfda9d3
--- /dev/null
+++ b/hrms_dashboard/report/broadfactor.py
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+from datetime import date, datetime
+
+from odoo import tools
+from odoo import api, fields, models
+
+
+class EmployeeBroadFactor(models.Model):
+ _name = "hr.employee.broad.factor"
+ _description = "Employee Broadfactor"
+ _auto = False
+
+ name = fields.Char()
+ no_of_occurrence = fields.Integer()
+ no_of_days = fields.Integer()
+ broad_factor = fields.Integer()
+
+ def init(self):
+ tools.drop_view_if_exists(self._cr, 'hr_employee_broad_factor')
+ date_today = date.today()
+ print("date_today", date_today)
+ self._cr.execute("""
+ create or replace view hr_employee_broad_factor as (
+ select
+ e.id,
+ e.name,
+ count(h.*) as no_of_occurrence,
+ sum(h.number_of_days) as no_of_days,
+ count(h.*)*count(h.*)*sum(h.number_of_days) as broad_factor
+ from hr_employee e
+ full join (select * from hr_leave where state = 'validate' and date_to <= now()::timestamp) h
+ on e.id =h.employee_id
+ group by e.id
+ )""")
+
+
+class ReportOverdue(models.AbstractModel):
+ _name = 'report.hrms_dashboard.report_broadfactor'
+
+ @api.model
+ def get_report_values(self, docids=None, data=None):
+ sql = """select * from hr_employee_broad_factor"""
+ self.env.cr.execute(sql)
+ lines = self.env.cr.dictfetchall()
+ return {
+ 'doc_model': 'hr.employee.broad_factor',
+ 'lines': lines,
+ 'Date': fields.date.today(),
+ }