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(),
}
|