189 lines
8.2 KiB
Python
Executable File
189 lines
8.2 KiB
Python
Executable File
from datetime import datetime, date
|
|
from odoo import fields, models, api
|
|
|
|
#
|
|
# class NameChangeHrEmployee(models.Model):
|
|
# _inherit = "hr.employee"
|
|
#
|
|
# employee_name_ids1 = fields.One2many('employee.disciplinary', 'disp_name')
|
|
# employee_self_service_line_ids = fields.One2many('manage.incident', 'emp_incident', domain=[('state', '=', 'closed')])
|
|
#
|
|
# def name_get(self):
|
|
# result = []
|
|
# for record in self:
|
|
# if self.env.context.get('new_custom_name', False):
|
|
# result.append((record.id, "{} - {}".format(record.name, record.identification_id)))
|
|
# else:
|
|
# return super(NameChangeHrEmployee, self).name_get()
|
|
# return result
|
|
|
|
|
|
class EmployeeDisciplinary(models.Model):
|
|
_name = 'employee.disciplinary'
|
|
_inherit = ['mail.thread', 'mail.activity.mixin']
|
|
_rec_name = 'incident_type'
|
|
|
|
incident_date = fields.Datetime(string='Incident Date & Time', tracking=True, default=datetime.now(), required=True)
|
|
incident_type = fields.Many2one('incident.employee', string='Incident Type', tracking=True, required=True)
|
|
incident_sub_type = fields.Many2many('incident.sub.employee', string='Incident Sub Type', tracking=True,
|
|
required=True)
|
|
incident_details = fields.Char(string='Incident Details', tracking=True, required=True)
|
|
seized_items = fields.Char(string='Seized Items', tracking=True)
|
|
incident_summary = fields.Text(string='Incident Summary', tracking=True, required=True)
|
|
attach = fields.Many2many('ir.attachment', string='Attachments', tracking=True)
|
|
emp_many_disp = fields.Many2many('hr.employee', 'new_custom_table', string='Employees Involved in the Incident',
|
|
tracking=True, required=True)
|
|
date_action = fields.Date(string='Date')
|
|
employee = fields.Many2one('manage.incident')
|
|
employee_code = fields.Many2one("hr.employee", string="Employee Name", required=True)
|
|
employee_name = fields.Char(related="employee_code.identification_id")
|
|
disp_name = fields.Many2one('hr.employee')
|
|
|
|
@api.onchange('incident_type')
|
|
def return_incident_sub_type(self):
|
|
print(self.incident_type.sub_type)
|
|
listed = []
|
|
for recs in self.incident_type.sub_type:
|
|
listed.append(recs.id)
|
|
return {'domain': {'incident_sub_type': [('id', 'in', listed)]}}
|
|
|
|
@api.constrains('incident_type')
|
|
def create_manage_incidents(self):
|
|
for rec in self:
|
|
print('created')
|
|
self.env['manage.incident'].create({
|
|
'employee_disciplinary_id': rec.id,
|
|
})
|
|
|
|
@api.constrains('employee')
|
|
def holds_hr_employee(self):
|
|
for rec in self:
|
|
rec.disp_name = rec.employee.employee_code_list1
|
|
|
|
|
|
class IncidentEmployee(models.Model):
|
|
_name = 'incident.employee'
|
|
|
|
name = fields.Char(string='Incident')
|
|
sub_type = fields.Many2many('incident.sub.employee', string='Sub type')
|
|
|
|
|
|
class IncidentSubEmployee(models.Model):
|
|
_name = 'incident.sub.employee'
|
|
|
|
name = fields.Char(string='Incident Sub')
|
|
|
|
class DisciplinaryMistakeType(models.Model):
|
|
_name = 'disciplinary.mistake.type'
|
|
_description = 'Disciplinary Mistake Type'
|
|
|
|
name = fields.Char(string="Mistake Type", required=True)
|
|
|
|
class IncidentSubEmployee(models.Model):
|
|
_name = 'incident.sub.employee'
|
|
_description = 'Incident Sub Type'
|
|
|
|
name = fields.Char(string="Incident Sub Type", required=True)
|
|
|
|
class EmployeeDisciplinaryLines(models.Model):
|
|
_name = 'employee.disciplinary.line'
|
|
_rec_name = 'hr_emp_many'
|
|
|
|
emp_many = fields.Many2one('employee.disciplinary', string='Employee Disp')
|
|
hr_emp_many = fields.Many2one('hr.employee', string='Employee Number')
|
|
hr_emp_many_name = fields.Char(related='hr_emp_many.name', string='Employee Name')
|
|
|
|
|
|
class ManageIncident(models.Model):
|
|
_name = 'manage.incident'
|
|
_inherit = ['mail.thread', 'mail.activity.mixin']
|
|
|
|
# employee_name_ids = fields.One2many('employee.disciplinary','employee',string="Employee Name")
|
|
employee_disciplinary_id = fields.Many2one("employee.disciplinary", string="Employee Disp")
|
|
employee_code_list1 = fields.Many2many("hr.employee", string="Employees Involved in the Incident",
|
|
related='employee_disciplinary_id.emp_many_disp', tracking=True)
|
|
incident_dat = fields.Datetime(related='employee_disciplinary_id.incident_date', string='Incident Date & Time',
|
|
tracking=True)
|
|
employee_by_code = fields.Many2one(related='employee_disciplinary_id.employee_code',
|
|
string="Reported By Employee Name")
|
|
incident_sum = fields.Text(related='employee_disciplinary_id.incident_summary', string='Incident Summary',
|
|
tracking=True)
|
|
incident_typ = fields.Many2one(related='employee_disciplinary_id.incident_type', string="Incident Type",
|
|
tracking=True)
|
|
incident_sub_typ = fields.Many2many(related='employee_disciplinary_id.incident_sub_type',
|
|
string="Incident Sub Type", tracking=True)
|
|
# corrective_action_emp_id = fields.Many2one(related='employee_disciplinary_id.corrective_action_id',
|
|
# string="Corrective Action", tracking=True)
|
|
state = fields.Selection(([
|
|
('pending_inquiry', 'Pending Inquiry'),
|
|
('in_progress', 'In Process'),
|
|
('closed', 'Closed')
|
|
]), string="Status", default='pending_inquiry', tracking=True)
|
|
emp_incident = fields.Many2one('hr.employee')
|
|
employee_inquiry = fields.One2many('manage.incident.line', 'employee_inquiry_state')
|
|
|
|
def button_in_progress(self):
|
|
self.state = 'in_progress'
|
|
|
|
# def button_closed(self):
|
|
# for rec in self:
|
|
# rec.state = 'closed'
|
|
|
|
def button_closed(self):
|
|
for rec in self:
|
|
rec.state = 'closed'
|
|
update_into_employee = rec.env['hr.employee'].search([('id', '=', rec.employee_code_list1.id)])
|
|
records = {
|
|
}
|
|
if records:
|
|
update_into_employee.write(records)
|
|
|
|
print('triggered 2')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CorrectiveActions(models.Model):
|
|
_name = "corrective.actions"
|
|
|
|
name = fields.Char(string="Name")
|
|
|
|
|
|
class ManageIncidentLine(models.Model):
|
|
_name = 'manage.incident.line'
|
|
_inherit = ['mail.thread']
|
|
_description = 'Manage Incident Line'
|
|
|
|
corrective_action_id = fields.Many2one('corrective.actions', string="Corrective Action", tracking=True,
|
|
required=True)
|
|
internal_panel = fields.Many2many('hr.employee', string="Internal Panel Members", tracking=True,
|
|
required=True)
|
|
external_panel = fields.Char(string="External Panel Members")
|
|
due_date = fields.Date(string="Due Date")
|
|
last_action_date = fields.Datetime(string="Last Action Date", compute='_compute_last_action_date',
|
|
default=date.today())
|
|
recommendation = fields.Char(string="Recommendation", tracking=True, required=True)
|
|
venue = fields.Char(string='Venue')
|
|
inquiry_summary = fields.Char(string='Inquiry Summary', tracking=True, required=True)
|
|
is_guilty = fields.Selection(([
|
|
('yes', 'Yes'),
|
|
('no', 'No'),
|
|
]), string="Is the Employee Guilt of the Incident", default='no', tracking=True)
|
|
inquiry_date = fields.Datetime(string="Inquiry Date and Time", required=True)
|
|
employee_inquiry_state = fields.Many2one('manage.incident')
|
|
|
|
@api.depends('inquiry_date')
|
|
def _compute_last_action_date(self):
|
|
for line in self:
|
|
if not line.employee_inquiry_state or line == line.employee_inquiry_state.employee_inquiry[0]:
|
|
line.last_action_date = False
|
|
else:
|
|
previous_line = line.employee_inquiry_state.employee_inquiry.filtered(lambda l: l.inquiry_date < line.inquiry_date)
|
|
sorted_previous_line = previous_line.sorted(key=lambda l: l.inquiry_date, reverse=True)
|
|
if sorted_previous_line:
|
|
line.last_action_date = sorted_previous_line[0].inquiry_date
|
|
else:
|
|
line.last_action_date = False
|