summaryrefslogtreecommitdiff
path: root/hrms_dashboard/report/broadfactor.py
blob: dfda9d33e2296b7b876cafe78f8c4b1a5a40e51f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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(),
        }