Files
tra_backend/history_employee/models/history.py
2020-07-21 10:09:46 +00:00

227 lines
8.0 KiB
Python

# -*- coding: utf-8 -*-
from datetime import datetime
from odoo import models, api, fields, _
from odoo.exceptions import UserError
class DepartmentDetails(models.Model):
_inherit = 'hr.employee'
@api.onchange('department_id')
def _onchange_department(self):
employee_id = self.env['hr.employee'].search([('id', '=', self._origin.id)])
vals = {
'employee_id': self._origin.id,
'employee_name': employee_id.name,
'updated_date': datetime.now(),
'changed_field': 'Department',
'current_value': self.department_id.name
}
self.env['department.history'].sudo().create(vals)
@api.onchange('job_id')
def onchange_job_id(self):
employee_id = self.env['hr.employee'].search([('id', '=', self._origin.id)])
vals = {
'employee_id': self._origin.id,
'employee_name': employee_id.name,
'updated_date': datetime.today(),
'changed_field': 'Job Position',
'current_value': self.job_id.name
}
self.env['department.history'].sudo().create(vals)
@api.onchange('timesheet_cost')
def _onchange_timesheet_cost(self):
employee_id = self.env['hr.employee'].search([('id', '=', self._origin.id)])
vals = {
'employee_id': self._origin.id,
'employee_name': employee_id.name,
'updated_date': datetime.now(),
'current_value': self.timesheet_cost
}
self.env['timesheet.cost'].sudo().create(vals)
def department_details(self):
res_user = self.env['res.users'].search([('id', '=', self._uid)])
if res_user.has_group('hr.group_hr_manager'):
return {
'name': _("Department History"),
'view_mode': 'tree',
'res_model': 'department.history',
'type': 'ir.actions.act_window',
'target': 'new',
'domain': [('employee_id', '=', self.id)],
}
elif self.id == self.env.user.employee_id.id:
return {
'name': _("Department History"),
'view_mode': 'tree',
'res_model': 'department.history',
'type': 'ir.actions.act_window',
'target': 'new',
}
else:
raise UserError('You cannot access this field!!!!')
def time_sheet(self):
res_user = self.env['res.users'].search([('id', '=', self._uid)])
if res_user.has_group('hr.group_hr_manager'):
return {
'name': _("Timesheet Cost Details"),
'view_mode': 'tree',
'res_model': 'timesheet.cost',
'type': 'ir.actions.act_window',
'target': 'new',
'domain': [('employee_id', '=', self.id)]
}
elif self.id == self.env.user.employee_id.id:
return {
'name': _("Timesheet Cost Details"),
'view_mode': 'tree',
'res_model': 'timesheet.cost',
'type': 'ir.actions.act_window',
'target': 'new'
}
else:
raise UserError('You cannot access this field!!!!')
def salary_history(self):
res_user = self.env['res.users'].search([('id', '=', self._uid)])
if res_user.has_group('hr.group_hr_manager'):
return {
'name': _("Salary History"),
'view_mode': 'tree',
'res_model': 'salary.history',
'type': 'ir.actions.act_window',
'target': 'new',
'domain': [('employee_id', '=', self.id)]
}
elif self.id == self.env.user.employee_id.id:
return {
'name': _("Salary History"),
'view_mode': 'tree',
'res_model': 'salary.history',
'type': 'ir.actions.act_window',
'target': 'new'
}
else:
raise UserError('You cannot access this field!!!!')
def contract_history(self):
res_user = self.env['res.users'].search([('id', '=', self._uid)])
if res_user.has_group('hr.group_hr_manager'):
return {
'name': _("Contract History"),
'view_mode': 'tree',
'res_model': 'contract.history',
'type': 'ir.actions.act_window',
'target': 'new',
'domain': [('employee_id', '=', self.id)]
}
if self.id == self.env.user.employee_id.id:
return {
'name': _("Contract History"),
'view_mode': 'tree',
'res_model': 'contract.history',
'type': 'ir.actions.act_window',
'target': 'new'
}
else:
raise UserError('You cannot access this field!!!!')
class WageDetails(models.Model):
_inherit = 'hr.contract'
@api.onchange('wage')
def onchange_wage(self):
vals = {
'employee_id': self.employee_id.id,
'employee_name': self.employee_id,
'updated_date': datetime.today(),
'current_value': self.wage,
}
self.env['salary.history'].sudo().create(vals)
@api.onchange('name')
def onchange_name(self):
vals = {
'employee_id': self.employee_id.id,
'employee_name': self.employee_id,
'updated_date': datetime.today(),
'changed_field': 'Contract Reference',
'current_value': self.name,
}
self.env['contract.history'].create(vals)
@api.onchange('date_start')
def onchange_datestart(self):
vals = {
'employee_id': self.employee_id.id,
'employee_name': self.employee_id,
'updated_date': datetime.today(),
'changed_field': 'Start Date',
'current_value': self.date_start,
}
self.env['contract.history'].create(vals)
@api.onchange('date_end')
def onchange_dateend(self):
vals = {
'employee_id': self.employee_id.id,
'employee_name': self.employee_id,
'updated_date': datetime.today(),
'changed_field': 'End Date',
'current_value': self.date_end,
}
self.env['contract.history'].create(vals)
class DepartmentHistory(models.Model):
_name = 'department.history'
employee_id = fields.Char(string='Employee Id', help="Employee")
employee_name = fields.Char(string='Employee Name', help="Name")
changed_field = fields.Char(string='Job position', help="Displays the changed department/job position")
updated_date = fields.Date(string='Date', help="Display the date on which department or job position changed")
current_value = fields.Char(string='Designation', help="Display the designation")
class TimesheetCost(models.Model):
_name = 'timesheet.cost'
employee_id = fields.Char(string='Employee Id', help="Employee")
employee_name = fields.Char(string='Employee Name', help="Name")
updated_date = fields.Date(string='Updated On', help="Updated Date of Time Sheet")
current_value = fields.Char(string='Current Cost', help="Updated Value of Time Sheet")
class SalaryHistory(models.Model):
_name = 'salary.history'
employee_id = fields.Char(string='Employee Id', help="Employee")
employee_name = fields.Char(string='Employee Name', help="Name")
updated_date = fields.Date(string='Updated On', help="Salary Updated Date")
current_value = fields.Char(string='Current Salary', help="Updated Salary")
class ContractHistory(models.Model):
_name = 'contract.history'
employee_id = fields.Char(string='Employee Id', help="Employee")
employee_name = fields.Char(string='Employee Name', help="Name")
updated_date = fields.Date(string='Updated On', help="Contract Updated Date")
changed_field = fields.Char(string='Changed Field', help="Updated Field's")
current_value = fields.Char(string='Current Contract', help="Updated Value of Contract")