[UPD] employee_requests: add permission types feature
This commit is contained in:
parent
a4f7c2a7e2
commit
534d9a8198
|
|
@ -15,10 +15,13 @@
|
|||
'security/employee_requests_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
|
||||
'data/hr_personal_permission_type_data.xml',
|
||||
|
||||
'views/employee_effective_form.xml',
|
||||
'views/employee_overtime_request.xml',
|
||||
'views/hr_clearance_form.xml',
|
||||
'views/hr_personal_permission.xml',
|
||||
'views/hr_personal_permission_type_views.xml',
|
||||
'views/customize_hr_employee.xml',
|
||||
'views/employee_department_jobs_view.xml',
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<odoo>
|
||||
|
||||
<record id="seq_hr_personal_permission_type" model="ir.sequence">
|
||||
<field name="name">Personal Permission Type Sequence</field>
|
||||
<field name="code">hr.personal.permission.type.sequence</field>
|
||||
<field name="prefix">PT-</field>
|
||||
<field name="padding">4</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -2369,8 +2369,8 @@ msgstr "إستئذان شخصي"
|
|||
|
||||
#. module: employee_requests
|
||||
#: model:ir.ui.menu,name:employee_requests.employee_personal_permission_menu_item
|
||||
msgid "Personal Permissions"
|
||||
msgstr "إستئذان الخروج"
|
||||
msgid "Permissions"
|
||||
msgstr "الاذونات"
|
||||
|
||||
#. module: employee_requests
|
||||
#: model_terms:ir.ui.view,arch_db:employee_requests.clearance_report_template
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from . import employee_effective_form
|
|||
from . import employee_overtime_request
|
||||
from . import hr_clearance_form
|
||||
from . import document_directory
|
||||
from . import hr_personal_permission_type
|
||||
from . import hr_personal_permission
|
||||
from . import house_allowance_advance
|
||||
from . import employee
|
||||
|
|
|
|||
|
|
@ -15,13 +15,14 @@ class HrPersonalPermission(models.Model):
|
|||
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||
_order = 'date DESC'
|
||||
|
||||
permission_type_id = fields.Many2one('hr.personal.permission.type', required=True)
|
||||
from_hr_department = fields.Boolean()
|
||||
date = fields.Date(default=lambda self: fields.Date.today())
|
||||
date_from = fields.Datetime()
|
||||
date_to = fields.Datetime()
|
||||
duration = fields.Float(compute='get_duration_no' ,store=True)
|
||||
employee_contract_id = fields.Many2one(comodel_name='hr.contract.type')
|
||||
balance = fields.Float(related='employee_id.contract_id.working_hours.permission_hours')
|
||||
balance = fields.Float(related='permission_type_id.daily_hours')
|
||||
permission_number = fields.Float(store=True, readonly=True, help='The Remaining Number of Hours permission This Month')
|
||||
early_exit = fields.Boolean()
|
||||
mission_purpose = fields.Text()
|
||||
|
|
@ -111,7 +112,7 @@ class HrPersonalPermission(models.Model):
|
|||
def _get_duration_hours(self):
|
||||
for item in self:
|
||||
if item.date_from:
|
||||
permission_hour = item.employee_id.resource_calendar_id.permission_hours
|
||||
permission_hour = item.permission_type_id.daily_hours
|
||||
start_date_hour = datetime.strptime(str(item.date_from), "%Y-%m-%d %H:%M:%S")
|
||||
end_date_hour = start_date_hour + timedelta(hours=permission_hour)
|
||||
item.date_to = end_date_hour
|
||||
|
|
@ -148,7 +149,7 @@ class HrPersonalPermission(models.Model):
|
|||
else:
|
||||
date_to = (current_date.replace(month=current_month + 1, day=1) - timedelta(days=1)).strftime('%Y-%m-%d')
|
||||
|
||||
number_of_per = item.employee_id.contract_id.working_hours.permission_number
|
||||
number_of_per = item.permission_type_id.monthly_hours
|
||||
employee_permissions = self.search([
|
||||
('employee_id', '=', item.employee_id.id),
|
||||
('state', 'not in', ('draft','refused')),
|
||||
|
|
@ -285,8 +286,8 @@ class HrPersonalPermission(models.Model):
|
|||
current_month = (datetime.utcnow() + timedelta(hours=3)).date().month
|
||||
current_year = (datetime.utcnow() + timedelta(hours=3)).date().year
|
||||
month_len = monthrange(current_year, current_month)[1]
|
||||
number_of_per = item.employee_id.contract_id.working_hours.permission_number
|
||||
number_of_durations = item.employee_id.contract_id.working_hours.permission_hours
|
||||
number_of_per = item.permission_type_id.monthly_hours
|
||||
number_of_durations = item.permission_type_id.daily_hours
|
||||
this_month_permission = self.search([('employee_id', '=', item.employee_id.id), ('state','not in', ('draft','refused')),
|
||||
('date_from', '>=', time.strftime('%Y-{0}-1'.format(current_month))),
|
||||
('date_to', '<=',
|
||||
|
|
@ -364,7 +365,7 @@ class HrPersonalPermission(models.Model):
|
|||
|
||||
def direct_manager(self):
|
||||
for rec in self:
|
||||
approve_by = rec.sudo().employee_id.resource_calendar_id.approval_by
|
||||
approve_by = rec.sudo().permission_type_id.approval_by
|
||||
manager = rec.sudo().employee_id.parent_id
|
||||
hr_manager = rec.sudo().employee_id.company_id.hr_manager_id
|
||||
if manager:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
from odoo import models, fields, api, _
|
||||
|
||||
|
||||
class HrPersonalPermissionType(models.Model):
|
||||
_name = 'hr.personal.permission.type'
|
||||
_order = 'sequence asc'
|
||||
|
||||
name = fields.Char(required=True)
|
||||
sequence = fields.Integer(readonly=True)
|
||||
daily_hours = fields.Float()
|
||||
monthly_hours = fields.Float()
|
||||
approval_by = fields.Selection(
|
||||
[('direct_manager', 'Direct Manager'), ('hr_manager', 'HR Manager')],
|
||||
default='direct_manager',
|
||||
required=True
|
||||
)
|
||||
active = fields.Boolean(default=True)
|
||||
|
||||
_sql_constraints = [
|
||||
('uniq_name', 'UNIQUE(name)', _('Name should be unique!'))
|
||||
]
|
||||
|
||||
|
|
@ -8,6 +8,7 @@ access_house_allowance_advance_line,access_house_allowance_advance_line,model_ho
|
|||
access_hr_clearance_form,access_hr_clearance_form,model_hr_clearance_form,base.group_user,1,1,1,1
|
||||
access_hr_clearance_form_division,access_hr_clearance_form_division,model_hr_clearance_form,hr_base.group_division_manager,1,1,1,1
|
||||
access_hr_personal_permission,access_hr_personal_permission,model_hr_personal_permission,base.group_user,1,1,1,1
|
||||
access_hr_personal_permission_type,access_hr_personal_permission_type,model_hr_personal_permission_type,base.group_user,1,1,1,1
|
||||
access_hr_job_emp,hr.job: Employee,hr.model_hr_job,base.group_user,1,1,1,0
|
||||
access_employee_department_jobs_emp,employee_department_jobs_emp,model_employee_department_jobs,base.group_user,1,0,0,0
|
||||
access_employee_department_jobs_hr,employee_department_jobs_hr,model_employee_department_jobs,hr.group_hr_user,1,1,1,1
|
||||
|
|
|
|||
|
|
|
@ -21,7 +21,7 @@
|
|||
<menuitem name="Employee Clearance Form" id="employee_clearance_form"
|
||||
parent="employee_request_menu_item" action="employee_clearance_form_action" sequence="3"/>
|
||||
|
||||
<menuitem name="Personal Permissions" id="employee_personal_permission_menu_item"
|
||||
<menuitem name="Permissions" id="employee_personal_permission_menu_item"
|
||||
parent="employee_request_menu_item"
|
||||
action="employee_personal_permission_action" sequence="3"/>
|
||||
|
||||
|
|
@ -34,6 +34,10 @@
|
|||
<menuitem name="Employee Other Request" id="employee_other_request_menu_item"
|
||||
parent="employee_request_menu_item" action="employee_other_request_action" sequence="5"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_view_permission_types"
|
||||
action="action_permission_types"
|
||||
parent="hr.hr_menu_configuration"/>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
<sheet>
|
||||
<group>
|
||||
<group string="Permission Info">
|
||||
<field name="permission_type_id" options="{'no_create': True, 'no_open': True, 'no_create_edit': True}" />
|
||||
<field name="date" string="Date Request"
|
||||
attrs="{'readonly':[('state','!=','draft')],'required':1}"/>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="hr_personal_permission_type_view_form" model="ir.ui.view">
|
||||
<field name="name">hr.personal.permission.type.view.form</field>
|
||||
<field name="model">hr.personal.permission.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Permission Type">
|
||||
<sheet>
|
||||
<field name="active" invisible="1" />
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1>
|
||||
<field name="name" />
|
||||
</h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="daily_hours" widget="float_time" />
|
||||
<field name="monthly_hours" widget="float_time" />
|
||||
</group>
|
||||
<group>
|
||||
<field name="approval_by" />
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_personal_permission_type_view_tree" model="ir.ui.view">
|
||||
<field name="name">hr.personal.permission.type.view.tree</field>
|
||||
<field name="model">hr.personal.permission.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Permission Types">
|
||||
<field name="active" invisible="1" />
|
||||
<field name="sequence" widget="handle" />
|
||||
<field name="name" />
|
||||
<field name="daily_hours" widget="float_time" />
|
||||
<field name="monthly_hours" widget="float_time" />
|
||||
<field name="approval_by" options="{'no_create': True, 'no_open': True, 'no_create_edit': True}" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_permission_types" model="ir.actions.act_window">
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="name">Permission Types</field>
|
||||
<field name="res_model">hr.personal.permission.type</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Loading…
Reference in New Issue