#fix:Discplinary few HRMS bugs
This commit is contained in:
parent
3ff97c7c8a
commit
f40d78f5dc
|
|
@ -0,0 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import models
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
{
|
||||
'name': 'Disciplinary',
|
||||
'version': '1.0.0',
|
||||
'category': 'Apps',
|
||||
'summary': 'Disciplinary',
|
||||
'description': 'Employee Disciplinary',
|
||||
'sequence': '10',
|
||||
'author': '',
|
||||
'company': 'FTPROTECH',
|
||||
'website': 'https://www.ftprotech.in',
|
||||
'depends': ['mail', 'hr', 'base', 'website_hr_recruitment', 'contacts', 'point_of_sale'],
|
||||
'demo': [],
|
||||
'data': [
|
||||
'data/sequence.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'views/disciplinary_view.xml',
|
||||
'views/employee_displance.xml',
|
||||
'views/mistake_type_views.xml',
|
||||
'views/incident_sub_type.xml',
|
||||
'views/disciplinary_complaint_type.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'application': False,
|
||||
'auto_install': False,
|
||||
'license': 'LGPL-3',
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="incident_report_sequence" model="ir.sequence">
|
||||
<field name="name">Employee Disciplinary</field>
|
||||
<field name="code">employee.disciplinary</field>
|
||||
<field name="prefix">IR</field>
|
||||
<field name="padding">5</field>
|
||||
<field name="company_id" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="manage_incident_report_sequence" model="ir.sequence">
|
||||
<field name="name">Manage Incident</field>
|
||||
<field name="code">manage.incident</field>
|
||||
<field name="prefix">MI</field>
|
||||
<field name="padding">5</field>
|
||||
<field name="company_id" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="seq_employee_disciplinary_sequence" model="ir.sequence">
|
||||
<field name="name">Disciplinary Sequence</field>
|
||||
<field name="code">hr.employee.sequence</field>
|
||||
<field name="prefix">ED</field>
|
||||
<field name="padding">5</field>
|
||||
<field name="company_id" eval="False"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
from . import disciplinary
|
||||
from . import employee_displane
|
||||
|
|
@ -0,0 +1,188 @@
|
|||
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
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_employee_disciplinary,employee_disciplinary,model_employee_disciplinary,,1,1,1,1
|
||||
access_incident_employee,incident_employee,model_incident_employee,,1,1,1,1
|
||||
access_incident_sub_employee,incident_sub_employee,model_incident_sub_employee,,1,1,1,1
|
||||
access_employee_disciplinary_line,employee_disciplinary_line,model_employee_disciplinary_line,,1,1,1,1
|
||||
access_manage_incident,manage_incident,model_manage_incident,,1,1,1,1
|
||||
access_manage_incident_line,manage_incident_line,model_manage_incident_line,,1,1,1,1
|
||||
access_corrective_actions,corrective_actions,model_corrective_actions,,1,1,1,1
|
||||
|
||||
access_hr_employee_disciplinary,hr.employee.disciplinary,model_hr_employee_disciplinary,,1,1,1,1
|
||||
access_hr_disciplinary_complaint_line,hr.disciplinary.complaint.line,model_hr_disciplinary_complaint_line,,1,1,1,1
|
||||
access_hr_disciplinary_action_line,hr.disciplinary.action.line,model_hr_disciplinary_action_line,,1,1,1,1
|
||||
access_disciplinary_action_type,disciplinary.action.type,model_disciplinary_action_type,,1,1,1,1
|
||||
access_disciplinary_complaint_type,disciplinary.complaint.type,model_disciplinary_complaint_type,,1,1,1,1
|
||||
access_disciplinary_mistake_type,disciplinary.mistake.type,model_disciplinary_mistake_type,,1,1,1,1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,264 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
|
||||
<record id="employee_disciplinary_list" model="ir.ui.view">
|
||||
<field name="name">Employee Disciplinary list</field>
|
||||
<field name="model">employee.disciplinary</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="incident_date"/>
|
||||
<field name="incident_type"/>
|
||||
<field name="incident_sub_type" widget="many2many_tags"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="employee_disciplinary_form" model="ir.ui.view">
|
||||
<field name="name">Employee Disciplinary form</field>
|
||||
<field name="model">employee.disciplinary</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="incident_date"/>
|
||||
<field name="incident_type" options="{'no_open': True,}"/>
|
||||
<field name="incident_sub_type" widget="many2many_tags" readonly="0"
|
||||
options="{'no_open': True}"/>
|
||||
<label for="employee_code" string="Reported By Employee Code"/>
|
||||
<div class="address_format">
|
||||
<field name="employee_code" style="width: 50%" options="{'no_open': True,}"/>
|
||||
<field name="employee_name" style="width: 50%"/>
|
||||
</div>
|
||||
<field name="incident_details"/>
|
||||
<field name="seized_items"/>
|
||||
<field name="incident_summary"/>
|
||||
<field name="attach" widget="many2many_binary" options="{'preview_image': True}"/>
|
||||
<field name="emp_many_disp" widget="many2many_tags" context="{'new_custom_name': True}"/>
|
||||
</group>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="manage_incident_list" model="ir.ui.view">
|
||||
<field name="name">Manage Incident list</field>
|
||||
<field name="model">manage.incident</field>
|
||||
<field name="arch" type="xml">
|
||||
<list create="0">
|
||||
<field name="employee_code_list1" widget="many2many_tags" context="{'new_custom_name': True}"/>
|
||||
<!-- <field name="incident_dat"/>-->
|
||||
<field name="incident_typ"/>
|
||||
<field name="incident_sub_typ" widget="many2many_tags"/>
|
||||
<field name="incident_sum"/>
|
||||
<field name="state"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="manage_incident_form" model="ir.ui.view">
|
||||
<field name="name">Manage Incident form</field>
|
||||
<field name="model">manage.incident</field>
|
||||
<field name="arch" type="xml">
|
||||
<form create="0">
|
||||
<header>
|
||||
<button name="button_in_progress" string="In Progress" class="oe_highlight" type="object"/>
|
||||
<!-- states="pending_inquiry"/>-->
|
||||
<!-- attrs="{'invisible' : ('state','!=','pending_inquiry')}"/>-->
|
||||
<button name="button_closed" string="Closed" class="oe_highlight" type="object"/>
|
||||
<!-- states="in_progress"/>-->
|
||||
<!-- attrs="{'invisible' : ('state','!=','in_progress')}"/>-->
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="employee_code_list1" widget="many2many_tags"
|
||||
context="{'new_custom_name': True}"/>
|
||||
<field name="employee_by_code" options="{'no_open': True,}"/>
|
||||
<!-- <field name="incident_dat"/>-->
|
||||
</group>
|
||||
<group>
|
||||
<field name="incident_typ" options="{'no_open': True,}"/>
|
||||
<field name="incident_sub_typ" widget="many2many_tags"/>
|
||||
<field name="incident_sum"/>
|
||||
</group>
|
||||
</group>
|
||||
<field name="employee_inquiry" string="Manage Incident">
|
||||
<!-- attrs="{'readonly': [('state', '=','closed')]}">-->
|
||||
<list>
|
||||
<field name="inquiry_date"/>
|
||||
<field name="corrective_action_id"/>
|
||||
<field name="due_date"/>
|
||||
<field name="last_action_date"/>
|
||||
</list>
|
||||
<form>
|
||||
<group>
|
||||
<field name="inquiry_date"/>
|
||||
<field name="venue"/>
|
||||
<field name="internal_panel" widget="many2many_tags"
|
||||
context="{'new_custom_name': True}"/>
|
||||
<field name="external_panel"/>
|
||||
<field name="inquiry_summary"/>
|
||||
<field name="is_guilty" widget="radio" options="{'horizontal':true}"/>
|
||||
<field name="corrective_action_id" options="{'no_open': True,}"/>
|
||||
<field name="recommendation"/>
|
||||
<field name="due_date"/>
|
||||
<field name="last_action_date"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</sheet>
|
||||
<chatter/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- <record id="career_history_tab_sub_menu" model="ir.ui.view">-->
|
||||
<!-- <field name="name">Career History Tab Sub Menu</field>-->
|
||||
<!-- <field name="model">hr.employee</field>-->
|
||||
<!-- <field name="inherit_id" ref="employee_life_cycle.career_history_tab_menu"/>-->
|
||||
<!-- <field name="arch" type="xml">-->
|
||||
<!-- <xpath expr="//page/field[@name='career_history_field']" position="after">-->
|
||||
<!-- <!– <group name="career_hist_sub_menu" string="Disciplinary Actions">–>-->
|
||||
<!-- <!– <field name="employee_name_ids1" string="Manage Incident">–>-->
|
||||
<!-- <!– <list editable="0" create="0">–>-->
|
||||
<!-- <!– <field name="incident_date"/>–>-->
|
||||
<!-- <!– <field name="incident_type"/>–>-->
|
||||
<!-- <!– <field name="incident_sub_type"/>–>-->
|
||||
<!-- <!–<!– <field name="corrective_action_id"/>–>–>-->
|
||||
<!-- <!– </list>–>-->
|
||||
<!-- <!– </field>–>-->
|
||||
<!-- <!– </group>–>-->
|
||||
<!-- <field name="employee_self_service_line_ids" string="Manage Incident" readonly="1">-->
|
||||
<!-- <list>-->
|
||||
<!-- <field name="incident_dat"/>-->
|
||||
<!-- <field name="incident_typ"/>-->
|
||||
<!-- <field name="incident_sub_typ"/>-->
|
||||
<!-- </list>-->
|
||||
<!-- </field>-->
|
||||
<!-- </xpath>-->
|
||||
<!-- </field>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<!-- <record id="career_history_tab_sub_menu_self" model="ir.ui.view">-->
|
||||
<!-- <field name="name">Career History Tab Sub Menu Self Service</field>-->
|
||||
<!-- <field name="model">hr.employee</field>-->
|
||||
<!-- <field name="inherit_id" ref="employee_self_service.view_employee_form_self_service"/>-->
|
||||
<!-- <field name="arch" type="xml">-->
|
||||
<!-- <xpath expr="//page/field[@name='career_history_field']" position="after">-->
|
||||
<!-- <!– <group name="career_hist_sub_menu" string="Disciplinary Actions">–>-->
|
||||
<!-- <!– <field name="employee_name_ids1" string="Manage Incident">–>-->
|
||||
<!-- <!– <list editable="0" create="0">–>-->
|
||||
<!-- <!– <field name="incident_date"/>–>-->
|
||||
<!-- <!– <field name="incident_type"/>–>-->
|
||||
<!-- <!– <field name="incident_sub_type"/>–>-->
|
||||
<!-- <!– <!– <field name="corrective_action_id"/>–>–>-->
|
||||
<!-- <!– </list>–>-->
|
||||
<!-- <!– </field>–>-->
|
||||
<!-- <!– </group>–>-->
|
||||
<!-- <field name="employee_self_service_line_ids" string="Manage Incident" readonly="1">-->
|
||||
<!-- <list>-->
|
||||
<!-- <field name="incident_dat"/>-->
|
||||
<!-- <field name="incident_typ"/>-->
|
||||
<!-- <field name="incident_sub_typ"/>-->
|
||||
<!-- </list>-->
|
||||
<!-- </field>-->
|
||||
<!-- </xpath>-->
|
||||
<!-- </field>-->
|
||||
<!-- </record>-->
|
||||
|
||||
<record id="incident_employee_list" model="ir.ui.view">
|
||||
<field name="name">incident Employee list</field>
|
||||
<field name="model">incident.employee</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="sub_type" widget="many2many_tags"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="incident_employee_form" model="ir.ui.view">
|
||||
<field name="name">incident Employee form</field>
|
||||
<field name="model">incident.employee</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<form>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="sub_type" widget="many2many_tags"/>
|
||||
</group>
|
||||
</form>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="employee_disciplinary_action" model="ir.actions.act_window">
|
||||
<field name="name">Incident Reporting</field>
|
||||
<field name="res_model">employee.disciplinary</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="manage_incident_action" model="ir.actions.act_window">
|
||||
<field name="name">Manage Incident</field>
|
||||
<field name="res_model">manage.incident</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<record id="incident_employee_action" model="ir.actions.act_window">
|
||||
<field name="name">Incident Type</field>
|
||||
<field name="res_model">incident.employee</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<record id="action_hr_employee_disciplinary" model="ir.actions.act_window">
|
||||
<field name="name">Employee Disciplinary</field>
|
||||
<field name="res_model">hr.employee.disciplinary</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="employee_disciplinary_menu"
|
||||
name="Employee Disciplinary Management"
|
||||
parent="hr.menu_hr_root"
|
||||
action="employee_disciplinary_action"
|
||||
sequence="105"/>
|
||||
|
||||
<!-- Child Menu (moved inside) -->
|
||||
<menuitem id="menu_employee_disciplinary_root"
|
||||
name="Employee Disciplinary Configuration"
|
||||
parent="employee_disciplinary_menu"
|
||||
sequence="10"/>
|
||||
|
||||
<!-- Sub Menu -->
|
||||
<menuitem id="menu_employee_disciplinary"
|
||||
name="Employee Disciplinary"
|
||||
parent="employee_disciplinary_menu"
|
||||
action="action_hr_employee_disciplinary"
|
||||
sequence="01"/>
|
||||
|
||||
<!-- <menuitem id="manage_incident_employee"-->
|
||||
<!-- name="Incident Type"-->
|
||||
<!-- parent="employee_disciplinary_menu"-->
|
||||
<!-- action="incident_employee_action"-->
|
||||
<!-- sequence="3"/>-->
|
||||
|
||||
<!-- <menuitem id="manage_incident_sub_menu"-->
|
||||
<!-- name="Manage Incident"-->
|
||||
<!-- parent="employee_disciplinary_menu"-->
|
||||
<!-- action="manage_incident_action"-->
|
||||
<!-- sequence="2"/>-->
|
||||
|
||||
<!-- <menuitem id="employee_disciplinary_sub_menu"-->
|
||||
<!-- name="Incident Reporting"-->
|
||||
<!-- parent="employee_disciplinary_menu"-->
|
||||
<!-- action="employee_disciplinary_action"-->
|
||||
<!-- sequence="1"/>-->
|
||||
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- list View -->
|
||||
<record id="view_incident_sub_employee_list" model="ir.ui.view">
|
||||
<field name="name">incident.sub.employee.list</field>
|
||||
<field name="model">incident.sub.employee</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Form View -->
|
||||
<record id="view_incident_sub_employee_form" model="ir.ui.view">
|
||||
<field name="name">incident.sub.employee.form</field>
|
||||
<field name="model">incident.sub.employee</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Incident Sub Type">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Action -->
|
||||
<record id="action_incident_sub_employee" model="ir.actions.act_window">
|
||||
<field name="name">Incident Sub Type</field>
|
||||
<field name="res_model">incident.sub.employee</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<!-- Menu -->
|
||||
<!-- <menuitem id="menu_incident_sub_employee"-->
|
||||
<!-- name="Incident Sub Type"-->
|
||||
<!-- parent="employee_disciplinary_menu"-->
|
||||
<!-- action="action_incident_sub_employee"/>-->
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
<odoo>
|
||||
|
||||
<!-- Tree View -->
|
||||
<record id="view_mistake_type_list" model="ir.ui.view">
|
||||
<field name="name">mistake.type.list</field>
|
||||
<field name="model">disciplinary.mistake.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Form View -->
|
||||
<record id="view_mistake_type_form" model="ir.ui.view">
|
||||
<field name="name">mistake.type.form</field>
|
||||
<field name="model">disciplinary.mistake.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Action -->
|
||||
<record id="action_mistake_type" model="ir.actions.act_window">
|
||||
<field name="name">Mistake Type</field>
|
||||
<field name="res_model">disciplinary.mistake.type</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="menu_mistake_type"
|
||||
name="Mistake Type"
|
||||
parent="menu_employee_disciplinary_root"
|
||||
action="action_mistake_type"
|
||||
sequence="02"/>
|
||||
</odoo>
|
||||
Loading…
Reference in New Issue