|
@ -47,37 +47,38 @@ class Employee(models.Model): |
|
|
def get_user_employee_info(self): |
|
|
def get_user_employee_info(self): |
|
|
"""To get the employee information""" |
|
|
"""To get the employee information""" |
|
|
uid = request.session.uid |
|
|
uid = request.session.uid |
|
|
employee_id = self.env['hr.employee'].sudo().search([ |
|
|
employee_user_id = self.env['hr.employee'].sudo().search([ |
|
|
('user_id', '=', uid)], limit=1) |
|
|
('user_id', '=', uid) |
|
|
|
|
|
], limit=1) |
|
|
employee = self.env['hr.employee'].sudo().search_read([ |
|
|
employee = self.env['hr.employee'].sudo().search_read([ |
|
|
('user_id', '=', uid)], limit=1) |
|
|
('user_id', '=', uid)], limit=1) |
|
|
attendance_count = self.env['hr.attendance'].sudo().search( |
|
|
attendance_count = self.env['hr.attendance'].sudo().search( |
|
|
[('employee_id', '=', employee_id.id), |
|
|
[('employee_id', '=', employee_user_id.id), |
|
|
('attendance_date', '=', date.today())]) |
|
|
('attendance_date', '=', date.today())]) |
|
|
manager_attendance_count = self.env['hr.attendance'].sudo().search( |
|
|
manager_attendance_count = self.env['hr.attendance'].sudo().search( |
|
|
[('attendance_date', '=', date.today())]) |
|
|
[('attendance_date', '=', date.today())]) |
|
|
leave_request_count = self.env['hr.leave'].sudo().search( |
|
|
leave_request_count = self.env['hr.leave'].sudo().search( |
|
|
[('employee_id', '=', employee_id.id), |
|
|
[('employee_id', '=', employee_user_id.id), |
|
|
('request_date_from', '=', date.today())]) |
|
|
('request_date_from', '=', date.today())]) |
|
|
manager_leave_request = self.env['hr.leave'].sudo().search( |
|
|
manager_leave_request = self.env['hr.leave'].sudo().search( |
|
|
[('request_date_from', '=', date.today())]) |
|
|
[('request_date_from', '=', date.today())]) |
|
|
employee_contracts = self.env['hr.contract'].sudo().search([ |
|
|
employee_contracts = self.env['hr.contract'].sudo().search([ |
|
|
('employee_id', '=', employee_id.id)]) |
|
|
('employee_id', '=', employee_user_id.id)]) |
|
|
payslips = self.env['hr.payslip'].sudo().search([ |
|
|
payslips = self.env['hr.payslip'].sudo().search([ |
|
|
('employee_id', '=', employee_id.id)]) |
|
|
('employee_id', '=', employee_user_id.id)]) |
|
|
salary_rules = self.env['hr.salary.rule'].sudo().search([]) |
|
|
salary_rules = self.env['hr.salary.rule'].sudo().search([]) |
|
|
salary_structures = self.env['hr.payroll.structure'].sudo().search([]) |
|
|
salary_structures = self.env['hr.payroll.structure'].sudo().search([]) |
|
|
salary_rule_count = len(salary_rules) |
|
|
salary_rule_count = len(salary_rules) |
|
|
salary_structure_count = len(salary_structures) |
|
|
salary_structure_count = len(salary_structures) |
|
|
emp_leave = len(manager_leave_request) if employee_id.is_manager \ |
|
|
emp_leave = len(manager_leave_request) if employee_user_id.is_manager \ |
|
|
else len(leave_request_count) |
|
|
else len(leave_request_count) |
|
|
payslip_count = len(payslips) if not employee_id.is_manager \ |
|
|
payslip_count = len(payslips) if not employee_user_id.is_manager \ |
|
|
else len(self.env['hr.payslip'].sudo().search([])) |
|
|
else len(self.env['hr.payslip'].sudo().search([])) |
|
|
emp_contracts_count = len(employee_contracts) \ |
|
|
emp_contracts_count = len(employee_contracts) \ |
|
|
if not employee_id.is_manager else len( |
|
|
if not employee_user_id.is_manager else len( |
|
|
self.env['hr.contract'].sudo().search([])) |
|
|
self.env['hr.contract'].sudo().search([])) |
|
|
attendance_today = len(manager_attendance_count) \ |
|
|
attendance_today = len(manager_attendance_count) \ |
|
|
if employee_id.is_manager else len(attendance_count) |
|
|
if employee_user_id.is_manager else len(attendance_count) |
|
|
if employee: |
|
|
if employee: |
|
|
data = { |
|
|
data = { |
|
|
'emp_timesheets': attendance_today, |
|
|
'emp_timesheets': attendance_today, |
|
@ -128,20 +129,34 @@ class Employee(models.Model): |
|
|
@api.model |
|
|
@api.model |
|
|
def get_department_leave(self): |
|
|
def get_department_leave(self): |
|
|
"""return department wise leave details""" |
|
|
"""return department wise leave details""" |
|
|
|
|
|
employee = False |
|
|
month_list = [] |
|
|
month_list = [] |
|
|
graph_result = [] |
|
|
graph_result = [] |
|
|
uid = request.session.uid |
|
|
uid = request.session.uid |
|
|
|
|
|
employee_user = self.env['hr.employee'].sudo().search_read([ |
|
|
|
|
|
('user_id', '=', uid) |
|
|
|
|
|
], limit=1) |
|
|
|
|
|
employees = self.env['hr.employee'].sudo().search_read([], limit=1) |
|
|
|
|
|
if employee_user: |
|
|
employee = self.env['hr.employee'].sudo().search_read([ |
|
|
employee = self.env['hr.employee'].sudo().search_read([ |
|
|
('user_id', '=', uid)], limit=1) |
|
|
('user_id', '=', uid)], limit=1) |
|
|
|
|
|
employee_id = self.env['hr.employee'].browse( |
|
|
|
|
|
employee[0]['id']) |
|
|
|
|
|
elif employees: |
|
|
|
|
|
employee = self.env['hr.employee'].sudo().search_read([], limit=1) |
|
|
|
|
|
employee_id = self.env['hr.employee'].browse( |
|
|
|
|
|
employee[0]['id']) |
|
|
|
|
|
|
|
|
for i in range(5, -1, -1): |
|
|
for i in range(5, -1, -1): |
|
|
last_month = datetime.now() - relativedelta(months=i) |
|
|
last_month = datetime.now() - relativedelta(months=i) |
|
|
text = format(last_month, '%B %Y') |
|
|
text = format(last_month, '%B %Y') |
|
|
month_list.append(text) |
|
|
month_list.append(text) |
|
|
|
|
|
|
|
|
self.env.cr.execute("""select id, name from hr_department |
|
|
self.env.cr.execute("""select id, name from hr_department |
|
|
where active=True""") |
|
|
where active=True""") |
|
|
departments = self.env.cr.dictfetchall() |
|
|
departments = self.env.cr.dictfetchall() |
|
|
department_list = [x['name'] for x in departments] |
|
|
department_list = [x['name'] for x in departments] |
|
|
|
|
|
|
|
|
for month in month_list: |
|
|
for month in month_list: |
|
|
leave = {} |
|
|
leave = {} |
|
|
for dept in departments: |
|
|
for dept in departments: |
|
@ -151,8 +166,8 @@ class Employee(models.Model): |
|
|
'leave': leave |
|
|
'leave': leave |
|
|
} |
|
|
} |
|
|
graph_result.append(vals) |
|
|
graph_result.append(vals) |
|
|
employee_id = self.env['hr.employee'].browse(employee[0]['id']) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if employee: |
|
|
sql = """ |
|
|
sql = """ |
|
|
SELECT h.id, h.employee_id,h.department_id |
|
|
SELECT h.id, h.employee_id,h.department_id |
|
|
, extract('month' FROM y)::int AS leave_month |
|
|
, extract('month' FROM y)::int AS leave_month |
|
@ -172,6 +187,7 @@ class Employee(models.Model): |
|
|
self.env.cr.execute(sql) |
|
|
self.env.cr.execute(sql) |
|
|
results = self.env.cr.dictfetchall() |
|
|
results = self.env.cr.dictfetchall() |
|
|
leave_lines = [] |
|
|
leave_lines = [] |
|
|
|
|
|
|
|
|
for line in results: |
|
|
for line in results: |
|
|
employee = self.browse(line['employee_id']) |
|
|
employee = self.browse(line['employee_id']) |
|
|
from_dt = fields.Datetime.from_string(line['date_from']) |
|
|
from_dt = fields.Datetime.from_string(line['date_from']) |
|
@ -184,6 +200,7 @@ class Employee(models.Model): |
|
|
'days': days |
|
|
'days': days |
|
|
} |
|
|
} |
|
|
leave_lines.append(vals) |
|
|
leave_lines.append(vals) |
|
|
|
|
|
|
|
|
if leave_lines: |
|
|
if leave_lines: |
|
|
df = pd.DataFrame(leave_lines) |
|
|
df = pd.DataFrame(leave_lines) |
|
|
rf = df.groupby(['l_month', 'department']).sum() |
|
|
rf = df.groupby(['l_month', 'department']).sum() |
|
@ -191,25 +208,39 @@ class Employee(models.Model): |
|
|
for month in month_list: |
|
|
for month in month_list: |
|
|
for line in result_lines: |
|
|
for line in result_lines: |
|
|
if month.replace(' ', '') == line[0].replace(' ', ''): |
|
|
if month.replace(' ', '') == line[0].replace(' ', ''): |
|
|
match = list(filter(lambda d: d['l_month'] in [month], |
|
|
match = list(filter( |
|
|
|
|
|
lambda d: d['l_month'] in [month], |
|
|
graph_result))[0]['leave'] |
|
|
graph_result))[0]['leave'] |
|
|
dept_name = self.env['hr.department'].browse( |
|
|
dept_name = self.env['hr.department'].browse( |
|
|
line[1]).name |
|
|
line[1]).name |
|
|
if match: |
|
|
if match: |
|
|
match[dept_name] = result_lines[line]['days'] |
|
|
match[dept_name] = result_lines[line]['days'] |
|
|
|
|
|
|
|
|
for result in graph_result: |
|
|
for result in graph_result: |
|
|
result['l_month'] = result['l_month'].split(' ')[:1][0].strip()[:3] \ |
|
|
result['l_month'] = result[ |
|
|
+ " " + result['l_month'].split(' ')[1:2][0] |
|
|
'l_month' |
|
|
|
|
|
].split(' ')[:1][0].strip()[:3] + " " +\ |
|
|
|
|
|
result['l_month'].split(' ')[1:2][0] |
|
|
return graph_result, department_list |
|
|
return graph_result, department_list |
|
|
|
|
|
else: |
|
|
|
|
|
return False |
|
|
@api.model |
|
|
@api.model |
|
|
def get_employee_expense(self): |
|
|
def get_employee_expense(self): |
|
|
"""return employee expense details""" |
|
|
"""return employee expense details""" |
|
|
month_list = [] |
|
|
month_list = [] |
|
|
graph_result = [] |
|
|
graph_result = [] |
|
|
uid = request.session.uid |
|
|
uid = request.session.uid |
|
|
|
|
|
employee = False |
|
|
|
|
|
employee_user = self.env['hr.employee'].sudo().search_read([ |
|
|
|
|
|
('user_id', '=', uid) |
|
|
|
|
|
], limit=1) |
|
|
|
|
|
employees = self.env['hr.employee'].sudo().search_read([], limit=1) |
|
|
|
|
|
if employee_user: |
|
|
employee = self.env['hr.employee'].sudo().search_read([ |
|
|
employee = self.env['hr.employee'].sudo().search_read([ |
|
|
('user_id', '=', uid)], limit=1) |
|
|
('user_id', '=', uid) |
|
|
|
|
|
], limit=1) |
|
|
|
|
|
elif employees: |
|
|
|
|
|
employees = self.env['hr.employee'].sudo().search_read([], limit=1) |
|
|
|
|
|
|
|
|
for i in range(5, -1, -1): |
|
|
for i in range(5, -1, -1): |
|
|
last_month = datetime.now() - relativedelta(months=i) |
|
|
last_month = datetime.now() - relativedelta(months=i) |
|
@ -228,6 +259,7 @@ class Employee(models.Model): |
|
|
'leave': leave |
|
|
'leave': leave |
|
|
} |
|
|
} |
|
|
graph_result.append(vals) |
|
|
graph_result.append(vals) |
|
|
|
|
|
if employee: |
|
|
employee_id = self.env['hr.employee'].browse(employee[0]['id']) |
|
|
employee_id = self.env['hr.employee'].browse(employee[0]['id']) |
|
|
|
|
|
|
|
|
sql = """ |
|
|
sql = """ |
|
@ -269,6 +301,8 @@ class Employee(models.Model): |
|
|
result['l_month'] = result['l_month'].split(' ')[:1][0].strip()[:3] \ |
|
|
result['l_month'] = result['l_month'].split(' ')[:1][0].strip()[:3] \ |
|
|
+ " " + result['l_month'].split(' ')[1:2][0] |
|
|
+ " " + result['l_month'].split(' ')[1:2][0] |
|
|
return graph_result, department_list |
|
|
return graph_result, department_list |
|
|
|
|
|
else: |
|
|
|
|
|
return False |
|
|
|
|
|
|
|
|
@api.model |
|
|
@api.model |
|
|
def employee_leave_trend(self): |
|
|
def employee_leave_trend(self): |
|
@ -281,8 +315,19 @@ class Employee(models.Model): |
|
|
text = format(last_month, '%B %Y') |
|
|
text = format(last_month, '%B %Y') |
|
|
month_list.append(text) |
|
|
month_list.append(text) |
|
|
uid = request.session.uid |
|
|
uid = request.session.uid |
|
|
|
|
|
employee = False |
|
|
|
|
|
employee_user = self.env['hr.employee'].sudo().search_read([ |
|
|
|
|
|
('user_id', '=', uid) |
|
|
|
|
|
], limit=1) |
|
|
|
|
|
employees = self.env['hr.employee'].sudo().search_read([], limit=1) |
|
|
|
|
|
|
|
|
|
|
|
if employee_user: |
|
|
employee = self.env['hr.employee'].sudo().search_read([ |
|
|
employee = self.env['hr.employee'].sudo().search_read([ |
|
|
('user_id', '=', uid)], limit=1) |
|
|
('user_id', '=', uid) |
|
|
|
|
|
], limit=1) |
|
|
|
|
|
elif employees: |
|
|
|
|
|
employee = self.env['hr.employee'].sudo().search_read([], limit=1) |
|
|
|
|
|
|
|
|
for month in month_list: |
|
|
for month in month_list: |
|
|
vals = { |
|
|
vals = { |
|
|
'l_month': month, |
|
|
'l_month': month, |
|
@ -305,6 +350,7 @@ class Employee(models.Model): |
|
|
date_trunc('month', now()) |
|
|
date_trunc('month', now()) |
|
|
and h.employee_id = %s |
|
|
and h.employee_id = %s |
|
|
""" |
|
|
""" |
|
|
|
|
|
if employee: |
|
|
self.env.cr.execute(sql, (employee[0]['id'],)) |
|
|
self.env.cr.execute(sql, (employee[0]['id'],)) |
|
|
results = self.env.cr.dictfetchall() |
|
|
results = self.env.cr.dictfetchall() |
|
|
for line in results: |
|
|
for line in results: |
|
@ -331,6 +377,8 @@ class Employee(models.Model): |
|
|
result['l_month'] = result['l_month'].split(' ')[:1][0].strip()[:3] \ |
|
|
result['l_month'] = result['l_month'].split(' ')[:1][0].strip()[:3] \ |
|
|
+ " " + result['l_month'].split(' ')[1:2][0] |
|
|
+ " " + result['l_month'].split(' ')[1:2][0] |
|
|
return graph_result |
|
|
return graph_result |
|
|
|
|
|
else: |
|
|
|
|
|
return False |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Contract(models.Model): |
|
|
class Contract(models.Model): |
|
@ -383,15 +431,29 @@ class HrExpense(models.Model): |
|
|
last_month = datetime.now() - relativedelta(months=i) |
|
|
last_month = datetime.now() - relativedelta(months=i) |
|
|
text = format(last_month, '%B %Y') |
|
|
text = format(last_month, '%B %Y') |
|
|
month_list.append(text) |
|
|
month_list.append(text) |
|
|
|
|
|
|
|
|
for month in month_list: |
|
|
for month in month_list: |
|
|
vals = { |
|
|
vals = { |
|
|
'l_month': month, |
|
|
'l_month': month, |
|
|
'count': 0 |
|
|
'count': 0 |
|
|
} |
|
|
} |
|
|
approved_trend.append(vals) |
|
|
approved_trend.append(vals) |
|
|
|
|
|
|
|
|
uid = request.session.uid |
|
|
uid = request.session.uid |
|
|
|
|
|
employee = False |
|
|
|
|
|
employee_user = self.env['hr.employee'].sudo().search_read([ |
|
|
|
|
|
('user_id', '=', uid) |
|
|
|
|
|
], limit=1) |
|
|
|
|
|
employees = self.env['hr.employee'].sudo().search_read([], limit=1) |
|
|
|
|
|
|
|
|
|
|
|
if employee_user: |
|
|
employee = self.env['hr.employee'].sudo().search_read([ |
|
|
employee = self.env['hr.employee'].sudo().search_read([ |
|
|
('user_id', '=', uid)], limit=1) |
|
|
('user_id', '=', uid) |
|
|
|
|
|
], limit=1) |
|
|
|
|
|
elif employees: |
|
|
|
|
|
employee = self.env['hr.employee'].sudo().search_read([], limit=1) |
|
|
|
|
|
|
|
|
|
|
|
if employee: |
|
|
employee_id = self.env['hr.employee'].browse(employee[0]['id']) |
|
|
employee_id = self.env['hr.employee'].browse(employee[0]['id']) |
|
|
if not employee_id.is_manager: |
|
|
if not employee_id.is_manager: |
|
|
sql = ('''select to_char(date, 'Month YYYY') as l_month, |
|
|
sql = ('''select to_char(date, 'Month YYYY') as l_month, |
|
@ -424,6 +486,8 @@ class HrExpense(models.Model): |
|
|
'values': approved_trend |
|
|
'values': approved_trend |
|
|
}] |
|
|
}] |
|
|
return graph_result |
|
|
return graph_result |
|
|
|
|
|
else: |
|
|
|
|
|
return False |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HrAttendance(models.Model): |
|
|
class HrAttendance(models.Model): |
|
|