commit for 2 module
This commit is contained in:
parent
bc1a38ef39
commit
972f1b34a1
|
|
@ -0,0 +1,11 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# LCT, Life Connection Technology
|
||||
# Copyright (C) 2019-2020 LCT
|
||||
#
|
||||
##############################################################################
|
||||
from . import models
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# LCT, Life Connection Technology
|
||||
# Copyright (C) 2011-2012 LCT
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
{
|
||||
'name' : 'Base Custom',
|
||||
'category': 'HR-Odex',
|
||||
'version': '18.0.1.0.0',
|
||||
'author': 'Expert Co. Ltd.' ,
|
||||
'website': 'http://exp-sa.com',
|
||||
'summary': 'Solving defulat groups for newly created users',
|
||||
'description' : """Add the following features: 1-Prevent granting defulat groups for newly created users """,
|
||||
'depends' : ['base','hr','hr_contract'],
|
||||
'data': [ ],
|
||||
"assets": {
|
||||
"web.assets_backend": [
|
||||
# Google Fonts (Montserrat)
|
||||
'/base_custom/static/src/css/website_rtl.css'
|
||||
],
|
||||
},
|
||||
'auto_install': True,
|
||||
'installable': True,
|
||||
'application': True,
|
||||
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
# -*- coding: utf-8 -*-# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# LCT, Life Connection Technology
|
||||
# Copyright (C) 2011-2012 LCT
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from . import res_users
|
||||
from . import hr_employee
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class HrEmployee(models.Model):
|
||||
_inherit = 'hr.employee'
|
||||
|
||||
contract_id = fields.Many2one('hr.contract', string='Current Contract',
|
||||
groups="base.group_user",
|
||||
domain="[('company_id', '=', company_id)]",
|
||||
help='Current contract of the employee')
|
||||
|
||||
|
||||
barcode = fields.Char(string="Badge ID", help="ID used for employee identification.", groups="base.group_user",
|
||||
copy=False)
|
||||
birthday = fields.Date('Date of Birth', groups="base.group_user", tracking=True)
|
||||
address_home_id = fields.Many2one(
|
||||
'res.partner', 'Address',
|
||||
help='Enter here the private address of the employee, not the one linked to your company.',
|
||||
groups="base.group_user", tracking=True,
|
||||
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]")
|
||||
|
||||
certificate = fields.Selection([
|
||||
('graduate', 'Graduate'),
|
||||
('bachelor', 'Bachelor'),
|
||||
('master', 'Master'),
|
||||
('doctor', 'Doctor'),
|
||||
('other', 'Other'),
|
||||
], 'Certificate Level', default='other', groups="base.group_user", tracking=True)
|
||||
children = fields.Integer(string='Number of Children', groups="base.group_user", tracking=True)
|
||||
country_of_birth = fields.Many2one('res.country', string="Country of Birth", groups="base.group_user",
|
||||
tracking=True)
|
||||
emergency_contact = fields.Char("Emergency Contact", groups="base.group_user", tracking=True)
|
||||
emergency_phone = fields.Char("Emergency Phone", groups="base.group_user", tracking=True)
|
||||
phone = fields.Char(related='address_home_id.phone', related_sudo=False, readonly=False, string="Private Phone",
|
||||
groups="base.group_user")
|
||||
identification_id = fields.Char(string='Identification No', groups="base.group_user", tracking=True)
|
||||
km_home_work = fields.Integer(string="Home-Work Distance", groups="base.group_user", tracking=True)
|
||||
permit_no = fields.Char('Work Permit No', groups="base.group_user", tracking=True)
|
||||
pin = fields.Char(string="PIN", groups="base.group_user", copy=False,
|
||||
help="PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration).")
|
||||
place_of_birth = fields.Char('Place of Birth', groups="base.group_user", tracking=True)
|
||||
spouse_birthdate = fields.Date(string="Spouse Birthdate", groups="base.group_user", tracking=True)
|
||||
spouse_complete_name = fields.Char(string="Spouse Complete Name", groups="base.group_user", tracking=True)
|
||||
study_field = fields.Char("Field of Study", groups="base.group_user", tracking=True)
|
||||
study_school = fields.Char("School", groups="base.group_user", tracking=True)
|
||||
visa_expire = fields.Date('Visa Expire Date', groups="base.group_user", tracking=True)
|
||||
visa_no = fields.Char('Visa No', groups="base.group_user", tracking=True)
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# LCT, Life Connection Technology
|
||||
# Copyright (C) 2011-2012 LCT
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
class ResUsers(models.Model):
|
||||
_inherit = 'res.users'
|
||||
|
||||
def _default_groups_custom(self):
|
||||
"""
|
||||
pervents newly created user from holding all managers groups.
|
||||
"""
|
||||
default_user = self.env.ref('base.group_user', raise_if_not_found=False)
|
||||
return default_user
|
||||
|
||||
groups_id = fields.Many2many('res.groups', 'res_groups_users_rel', 'uid', 'gid', string='Groups', default =_default_groups_custom)
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
|
|
@ -0,0 +1,25 @@
|
|||
@media (min-width: 768px){
|
||||
.rtl .navbar-right{
|
||||
float: left !important;
|
||||
}
|
||||
.rtl .navbar-right .dropdown .dropdown-menu{
|
||||
right: auto !important;
|
||||
left: 0 !important;
|
||||
}
|
||||
.rtl .navbar-left{
|
||||
float: right !important;
|
||||
}
|
||||
.rtl .navbar-left .dropdown .dropdown-menu{
|
||||
left: auto !important;
|
||||
right: 0 !important;
|
||||
}
|
||||
.navbar-nav.navbar-right:last-child{
|
||||
margin-left: auto;
|
||||
}
|
||||
.rtl .pull-left{
|
||||
float: right !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
from . import models
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"name": "Employee Documents",
|
||||
"summary": """Manages Employee Documents With Expiry Notifications.""",
|
||||
"description": """Manages Employee Related Documents with Expiry Notifications.""",
|
||||
"category": "Odex25-HR/Odex25-HR",
|
||||
"author": "Expert Co. Ltd.",
|
||||
"website": "http://exp-sa.com",
|
||||
"depends": ["base", "hr"],
|
||||
"data": [
|
||||
"security/ir.model.access.csv",
|
||||
"data/data.xml",
|
||||
"data/ir_cron.xml",
|
||||
"data/mail_template.xml",
|
||||
"views/employee_check_list_view.xml",
|
||||
"views/employee_document_view.xml",
|
||||
],
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="entry_document1" model="employee.checklist">
|
||||
<field name="name">Education Certificate</field>
|
||||
<field name="document_type">entry</field>
|
||||
</record>
|
||||
<record id="entry_document2" model="employee.checklist">
|
||||
<field name="name">Salary Certificate</field>
|
||||
<field name="document_type">entry</field>
|
||||
</record>
|
||||
<record id="entry_document3" model="employee.checklist">
|
||||
<field name="name">Experience Certificate</field>
|
||||
<field name="document_type">entry</field>
|
||||
</record>
|
||||
<record id="exit_document1" model="employee.checklist">
|
||||
<field name="name">Experience Certificate</field>
|
||||
<field name="document_type">exit</field>
|
||||
</record>
|
||||
<record id="exit_document2" model="employee.checklist">
|
||||
<field name="name">Salary Certificate</field>
|
||||
<field name="document_type">exit</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="employee_docs_data_reminder" model="ir.cron">
|
||||
<field name="name">Employee Data Expiration</field>
|
||||
<field name="model_id" ref="model_hr_employee_document" />
|
||||
<field name="state">code</field>
|
||||
<field name="code">model.mail_reminder()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
|
||||
<field name="active" eval="True" />
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="email_template_document_expiry_reminder" model="mail.template">
|
||||
<field name="name">Document Expiry Reminder</field>
|
||||
<field name="subject">Document- {{ object.name }} Expired On {{ object.expiry_date }}</field>
|
||||
<field name="email_to">{{ object.employee_ref.work_email }}</field>
|
||||
<field name="email_cc">{{ (user.company_id.hr_email.email or '') }}</field>
|
||||
<field name="model_id" ref="hr_docs_expiry.model_hr_employee_document" />
|
||||
<field name="auto_delete" eval="True" />
|
||||
<field name="body_html" type="html">
|
||||
<div>
|
||||
<p>Dear {{ object.employee_ref.name }},</p>
|
||||
<br />
|
||||
<p>Your Document {{ object.name }} is going to expire on {{ object.expiry_date
|
||||
}}.
|
||||
Please renew it before expiry date.</p>
|
||||
<br />
|
||||
<p>Best regards,</p>
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="email_template_child_age_check" model="mail.template">
|
||||
<field name="name">Employee Dependant Age Check</field>
|
||||
<field name="subject">Your Child {{ object.name }} has turned 18</field>
|
||||
<field name="email_to">{{ object.employee_ref.work_email }}</field>
|
||||
<field name="email_cc">{{ (user.company_id.hr_email.email or '') }}</field>
|
||||
<field name="model_id" ref="hr_docs_expiry.model_hr_employee_document" />
|
||||
<field name="auto_delete" eval="True" />
|
||||
<field name="body_html" type="html">
|
||||
<div>
|
||||
<p>Dear {{ object.employee_ref.name }},</p>
|
||||
<br />
|
||||
<p>Greetings, your dependant {{ object.name }} has turned 18.</p>
|
||||
<br />
|
||||
<p>Best regards,</p>
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,511 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * hr_docs_expiry
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-09-13 06:24+0000\n"
|
||||
"PO-Revision-Date: 2022-09-13 06:24+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:mail.template,body_html:hr_docs_expiry.email_template_child_age_check
|
||||
msgid ""
|
||||
"\n"
|
||||
" \n"
|
||||
" <p>Dear ${object.employee_ref.name},</p>\n"
|
||||
" <br/>\n"
|
||||
" <p> Greetings, your dependant ${object.name} has turned 18.\n"
|
||||
" <br/>\n"
|
||||
" <p>Best regards,</p>\n"
|
||||
" <div>\n"
|
||||
" \n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee__document_count
|
||||
msgid "# Documents"
|
||||
msgstr "# المستندات"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Click to Create for New Documents\n"
|
||||
" </p>"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_needaction
|
||||
msgid "Action Needed"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model,name:hr_docs_expiry.model_ir_attachment
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__doc_attachment_id
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_ir_attachment__doc_attach_rel
|
||||
msgid "Attachment"
|
||||
msgstr "مرفق"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_attachment_count
|
||||
msgid "Attachment Count"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_docs_expiry.employee_check_list_form_view
|
||||
msgid "Checklist"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__document_type
|
||||
msgid "Checklist Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__create_uid
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__create_date
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__description
|
||||
#: model_terms:ir.ui.view,arch_db:hr_docs_expiry.employee_document_form_view
|
||||
msgid "Description"
|
||||
msgstr "الوصف"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__display_name
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee__display_name
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__display_name
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_ir_attachment__display_name
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_res_users__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "الاسم المعروض"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__document_name
|
||||
msgid "Document"
|
||||
msgstr "مستند"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__name
|
||||
msgid "Document Name"
|
||||
msgstr "اسم المستند"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__name
|
||||
#: model_terms:ir.ui.view,arch_db:hr_docs_expiry.employee_document_form_view
|
||||
msgid "Document Name"
|
||||
msgstr "اسم المستند"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__document_type
|
||||
#: model_terms:ir.ui.view,arch_db:hr_docs_expiry.employee_document_form_view
|
||||
msgid "Document Type"
|
||||
msgstr "نوع المستند"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "Documents"
|
||||
msgstr "المستندات"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model,name:hr_docs_expiry.model_hr_employee
|
||||
msgid "Employee"
|
||||
msgstr "الموظف"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.actions.server,name:hr_docs_expiry.employee_docs_data_reminder_ir_actions_server
|
||||
#: model:ir.cron,cron_name:hr_docs_expiry.employee_docs_data_reminder
|
||||
#: model:ir.cron,name:hr_docs_expiry.employee_docs_data_reminder
|
||||
msgid "Employee Data Expiration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model,name:hr_docs_expiry.model_employee_checklist
|
||||
#: model:ir.ui.menu,name:hr_docs_expiry.Employee_document_menu_item
|
||||
msgid "Employee Documents"
|
||||
msgstr "مستندات الموظف"
|
||||
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__employee_ref
|
||||
#: model_terms:ir.ui.view,arch_db:hr_docs_expiry.employee_document_form_view
|
||||
msgid "Employee Name"
|
||||
msgstr "إسم الموظف"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.actions.act_window,name:hr_docs_expiry.employee_document_list_action
|
||||
msgid "Employee document"
|
||||
msgstr "مستندات الموظف"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields.selection,name:hr_docs_expiry.selection__employee_checklist__document_type__entry
|
||||
msgid "Entry Process"
|
||||
msgstr "مستند دخول"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields.selection,name:hr_docs_expiry.selection__employee_checklist__document_type__exit
|
||||
msgid "Exit Process"
|
||||
msgstr "مستند خروج"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee__expiry_license
|
||||
msgid "License Expiry Date"
|
||||
msgstr " تاريخ انتهاء الرخصة"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__file_examination
|
||||
msgid "File Examination"
|
||||
msgstr "ملف كشف طبي"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model_terms:ir.ui.view,arch_db:hr_docs_expiry.employee_document_form_view
|
||||
msgid "File Examination Name"
|
||||
msgstr "رقم الكشف/الإفصاح الطبي"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_follower_ids
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_channel_ids
|
||||
msgid "Followers (Channels)"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_partner_ids
|
||||
msgid "Followers (Partners)"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.actions.server,name:hr_docs_expiry.employee_data_reminder_ir_actions_server
|
||||
#: model:ir.cron,cron_name:hr_docs_expiry.employee_data_reminder
|
||||
#: model:ir.cron,name:hr_docs_expiry.employee_data_reminder
|
||||
msgid "HR Employee Data Expiration"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model,name:hr_docs_expiry.model_hr_employee_document
|
||||
msgid "HR Employee Documents"
|
||||
msgstr "مستندات الموظف"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__id
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee__id
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__id
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_ir_attachment__id
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_res_users__id
|
||||
msgid "ID"
|
||||
msgstr "المُعرف"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,help:hr_docs_expiry.field_employee_checklist__message_needaction
|
||||
#: model:ir.model.fields,help:hr_docs_expiry.field_employee_checklist__message_unread
|
||||
msgid "If checked, new messages require your attention."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,help:hr_docs_expiry.field_employee_checklist__message_has_error
|
||||
msgid "If checked, some messages have a delivery error."
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#: model:ir.model.fields.selection,name:hr_docs_expiry.selection__hr_employee_document__document_type__iqama
|
||||
#, python-format
|
||||
msgid "Identity"
|
||||
msgstr "الهوية"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#: model:ir.model.fields.selection,name:hr_docs_expiry.selection__hr_employee_document__document_type__professional_certificates
|
||||
#, python-format
|
||||
msgid "Professional Certificates"
|
||||
msgstr "شهادات مهنية"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__iqama_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_docs_expiry.employee_document_form_view
|
||||
msgid "Identity No"
|
||||
msgstr "رقم الهوية"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_is_follower
|
||||
msgid "Is Follower"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__issue_date
|
||||
msgid "Issue Date"
|
||||
msgstr "تاريخ الاصدار"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__job_id
|
||||
#: model_terms:ir.ui.view,arch_db:hr_docs_expiry.employee_document_form_view
|
||||
msgid "Job Position"
|
||||
msgstr "المهنة"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist____last_update
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee____last_update
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document____last_update
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_ir_attachment____last_update
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_res_users____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "آخر تعديل في"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__write_uid
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__write_date
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#: model:ir.model.fields.selection,name:hr_docs_expiry.selection__hr_employee_document__document_type__license
|
||||
#, python-format
|
||||
msgid "License"
|
||||
msgstr "رخصة القيادة"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__license_id
|
||||
msgid "License ID"
|
||||
msgstr "رقم رخصة القيادة"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee__license_number_id
|
||||
msgid "License Number"
|
||||
msgstr "رقم رخصة القيادة"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_main_attachment_id
|
||||
msgid "Main Attachment"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_has_error
|
||||
msgid "Message Delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_ids
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_needaction_counter
|
||||
msgid "Number of Actions"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_has_error_counter
|
||||
msgid "Number of errors"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,help:hr_docs_expiry.field_employee_checklist__message_needaction_counter
|
||||
msgid "Number of messages which requires an action"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,help:hr_docs_expiry.field_employee_checklist__message_has_error_counter
|
||||
msgid "Number of messages with delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,help:hr_docs_expiry.field_employee_checklist__message_unread_counter
|
||||
msgid "Number of unread messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#: model:ir.model.fields.selection,name:hr_docs_expiry.selection__employee_checklist__document_type__other
|
||||
#: model:ir.model.fields.selection,name:hr_docs_expiry.selection__hr_employee_document__document_type__other
|
||||
#, python-format
|
||||
msgid "Other"
|
||||
msgstr "اخرى"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee__passport_id
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_res_users__passport_id
|
||||
#: model:ir.model.fields.selection,name:hr_docs_expiry.selection__hr_employee_document__document_type__passport
|
||||
#, python-format
|
||||
msgid "Passport"
|
||||
msgstr "جواز السفر"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__passport_id
|
||||
msgid "Passport Number"
|
||||
msgstr "رقم الجواز"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__place_issue_id
|
||||
msgid "Place of Issue"
|
||||
msgstr "مكان استخراج المستند"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__reminder_before
|
||||
msgid "Reminder Before"
|
||||
msgstr "تذكير قبل (يوم)"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__saudi_id
|
||||
#: model:ir.model.fields.selection,name:hr_docs_expiry.selection__hr_employee_document__document_type__saudi
|
||||
#, python-format
|
||||
msgid "Saudi ID"
|
||||
msgstr "رقم الهوية الوطنية"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "This Identity Number already Exiting"
|
||||
msgstr "رقم الهوية هذا موجود بالفعل"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "This License Number already Exiting"
|
||||
msgstr "رقم رخصة القيادة هذا موجود بالفعل"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "This Medical Examination Number already Exiting"
|
||||
msgstr "رقم الفحص الطبي هذا موجود بالفعل"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "This Passport Number already Exiting"
|
||||
msgstr "رقم جواز السفر هذا موجود بالفعل"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "This Saudi Identity already Exiting"
|
||||
msgstr "رقم الهوية الوطنية هذا موجود بالفعل"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_unread
|
||||
msgid "Unread Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_employee_checklist__message_unread_counter
|
||||
msgid "Unread Messages Counter"
|
||||
msgstr ""
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model,name:hr_docs_expiry.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "المستخدمون"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,help:hr_docs_expiry.field_hr_employee_document__doc_attachment_id
|
||||
msgid "You can attach the copy of your document"
|
||||
msgstr "يجب ارفاق المستند للملف"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:mail.template,subject:hr_docs_expiry.email_template_child_age_check
|
||||
msgid "Your Child ${object.name} has turned 18"
|
||||
msgstr "تاجوز عمر 18 سنة ${object.name} هذا الطفل"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__membership_type
|
||||
msgid "Membership Type"
|
||||
msgstr "نوع العضوية"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__specialization
|
||||
msgid "Specialization"
|
||||
msgstr "التخصص"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__category
|
||||
msgid "Category"
|
||||
msgstr "التصنيف"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "Saudi ID must be 10 digits"
|
||||
msgstr "رقم الهويه الوطنية يجب ان يكون 10 ارقام"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "The Saudi ID number should begin with 1"
|
||||
msgstr "رقم الهويه الوطنية يجب ان يبدأ ب 1"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "Identity must be 10 digits"
|
||||
msgstr "رقم الهويه يجب ان يكون 10 ارقام"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "Identity must begin with 2 or 3 or 4"
|
||||
msgstr "رقم الهويه يجب ان يبدأ ب 2 او 3 او 4"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "medical Examination"
|
||||
msgstr "الكشف/الإفصاح الطبي"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "Error, date of issue must be less than expiry date"
|
||||
msgstr "خطأ, تاريخ اصدار الهويه يجب ان تكون اقل من تاريخ النهاية"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: code:addons/hr_docs_expiry/models/employee_documents.py:0
|
||||
#, python-format
|
||||
msgid "Error,the expiry date must be greater than the date of the day"
|
||||
msgstr "خطأ, تاريخ النهاية يجب ان يكون اكبر من تاريخ اليوم"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__company_id
|
||||
msgid "Company"
|
||||
msgstr "الشركة"
|
||||
|
||||
#. module: hr_docs_expiry
|
||||
#: model:ir.model.fields,field_description:hr_docs_expiry.field_hr_employee_document__employee_number
|
||||
#: model_terms:ir.ui.view,arch_db:hr_docs_expiry.employee_document_form_view
|
||||
#: model_terms:ir.ui.view,arch_db:hr_docs_expiry.employee_document_inherit_view
|
||||
#: model_terms:ir.ui.view,arch_db:hr_docs_expiry.employee_document_tree_view
|
||||
msgid "Employee Number"
|
||||
msgstr "رقم الموظف"
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import employee_documents
|
||||
from . import employee_entry_exit_check_list
|
||||
|
|
@ -0,0 +1,268 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from odoo import api, fields, models
|
||||
from datetime import datetime, date, timedelta
|
||||
from odoo.tools.translate import _
|
||||
from odoo.exceptions import ValidationError
|
||||
import logging
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class HrEmployeeDocument(models.Model):
|
||||
_name = "hr.employee.document"
|
||||
_description = "HR Employee Documents"
|
||||
_inherit = ['mail.thread', 'mail.activity.mixin']
|
||||
|
||||
@api.model
|
||||
def mail_reminder(self):
|
||||
now = datetime.now() + timedelta(days=1)
|
||||
date_now = now.date()
|
||||
matches = self.search([])
|
||||
for record in matches:
|
||||
if record.expiry_date:
|
||||
exp_date = fields.Date.from_string(record.expiry_date) - timedelta(days=record.reminder_before)
|
||||
if date_now >= exp_date and record.employee_ref.state not in ['draft', 'out_of_service']:
|
||||
template = self.env.ref('hr_docs_expiry.email_template_document_expiry_reminder', raise_if_not_found=False)
|
||||
if template:
|
||||
template.send_mail(record.id)
|
||||
|
||||
if record.employee_ref.state not in ['draft', 'out_of_service'] and record.employee_ref.employee_dependant:
|
||||
for dependant in record.employee_ref.employee_dependant:
|
||||
if dependant.relation == 'child' and dependant.age >= 18:
|
||||
template2 = self.env.ref('hr_docs_expiry.email_template_child_age_check', raise_if_not_found=False)
|
||||
if template2:
|
||||
template2.send_mail(record.id)
|
||||
|
||||
@api.constrains('expiry_date', 'saudi_id', 'iqama_id', 'issue_date')
|
||||
def check_expr_date(self):
|
||||
for record in self:
|
||||
if record.expiry_date:
|
||||
exp_date = fields.Date.from_string(record.expiry_date)
|
||||
if exp_date < date.today():
|
||||
raise ValidationError('Your Document Is Expired.')
|
||||
|
||||
if record.saudi_id:
|
||||
if len(record.saudi_id) != 10:
|
||||
raise ValidationError(_('Saudi ID must be 10 digits'))
|
||||
if record.saudi_id[0] != '1':
|
||||
raise ValidationError(_('The Saudi ID number should begin with 1'))
|
||||
|
||||
if record.iqama_id:
|
||||
if len(record.iqama_id) != 10:
|
||||
raise ValidationError(_('Identity must be 10 digits'))
|
||||
if record.iqama_id[0] not in ['2', '3', '4']:
|
||||
raise ValidationError(_('Identity must begin with 2 or 3 or 4'))
|
||||
|
||||
if record.expiry_date and record.issue_date:
|
||||
if record.expiry_date <= record.issue_date:
|
||||
raise ValidationError(_('Error, date of issue must be less than expiry date'))
|
||||
if date.today() >= record.expiry_date:
|
||||
raise ValidationError(_("Error, the expiry date must be greater than today's date"))
|
||||
|
||||
saudi_id = fields.Char(string="Saudi ID")
|
||||
license_id = fields.Char(string="License ID")
|
||||
passport_id = fields.Char(string="Passport Number")
|
||||
iqama_id = fields.Char(string="Identity No")
|
||||
place_issue_id = fields.Char(string="Place of Issue")
|
||||
name = fields.Char(string="Document Name", required=True, copy=False)
|
||||
document_name = fields.Many2one(comodel_name="employee.checklist", string="Document")
|
||||
description = fields.Text(string="Description", copy=False)
|
||||
expiry_date = fields.Date(string="Expiry Date", tracking=True)
|
||||
employee_ref = fields.Many2one('hr.employee', copy=False, string="Employee Name")
|
||||
doc_attachment_id = fields.Many2many(
|
||||
"ir.attachment",
|
||||
"doc_attach_rel",
|
||||
"doc_id",
|
||||
"attach_id3",
|
||||
string="Attachment",
|
||||
help="You can attach the copy of your document",
|
||||
copy=False
|
||||
)
|
||||
file_examination = fields.Char()
|
||||
document_type = fields.Selection([
|
||||
("passport", _("Passport")),
|
||||
("license", _("License")),
|
||||
("Iqama", _("Identity")),
|
||||
("saudi", _("Saudi ID")),
|
||||
("medical_Examination", _("Medical Examination")),
|
||||
("professional_certificates", _("Professional Certificates")),
|
||||
("other", _("Other"))
|
||||
])
|
||||
issue_date = fields.Date(
|
||||
string="Issue Date",
|
||||
default=fields.Date.context_today,
|
||||
copy=False,
|
||||
tracking=True
|
||||
)
|
||||
reminder_before = fields.Integer(default=0)
|
||||
job_id = fields.Many2one("hr.job", "Job Position")
|
||||
emp_iqama_job = fields.Char("Job Position")
|
||||
membership_type = fields.Many2one(comodel_name="membership.types", string="Membership Type")
|
||||
specialization = fields.Char(string="Specialization")
|
||||
category = fields.Many2one(comodel_name="membership.categorys", string="Category")
|
||||
company_id = fields.Many2one(
|
||||
'res.company',
|
||||
string="Company",
|
||||
default=lambda self: self.env.company
|
||||
)
|
||||
employee_number = fields.Char(
|
||||
related="employee_ref.contract_id.name",
|
||||
copy=False,
|
||||
string='Employee Number'
|
||||
)
|
||||
|
||||
def set_last_document(self):
|
||||
self.ensure_one()
|
||||
emp_id = self.env["hr.employee"].search([("id", "=", self.employee_ref.id)])
|
||||
if emp_id:
|
||||
if self.document_type == "passport":
|
||||
emp_id.passport_id = self.id
|
||||
elif self.document_type == "Iqama":
|
||||
emp_id.iqama_number = self.id
|
||||
elif self.document_type == "saudi":
|
||||
emp_id.saudi_number = self.id
|
||||
elif self.document_type == "license":
|
||||
emp_id.license_number_id = self.id
|
||||
elif self.document_type == "medical_Examination":
|
||||
emp_id.copy_examination_file = self.id
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
records = super(HrEmployeeDocument, self).create(vals_list)
|
||||
for record in records:
|
||||
record.set_last_document()
|
||||
return records
|
||||
|
||||
def name_get(self):
|
||||
result = []
|
||||
for record in self:
|
||||
name = ""
|
||||
if record.saudi_id:
|
||||
name = record.saudi_id
|
||||
elif record.passport_id:
|
||||
name = record.passport_id
|
||||
elif record.iqama_id:
|
||||
name = record.iqama_id
|
||||
elif record.license_id:
|
||||
name = record.license_id
|
||||
elif record.file_examination:
|
||||
name = record.file_examination
|
||||
elif record.document_type == "other":
|
||||
name = record.name
|
||||
|
||||
result.append((record.id, name))
|
||||
return result
|
||||
|
||||
@api.constrains("passport_id", "saudi_id", "iqama_id", "license_id", "file_examination")
|
||||
def unique_fields(self):
|
||||
for record in self:
|
||||
domain = []
|
||||
if record.document_type == "passport" and record.passport_id:
|
||||
domain = [("passport_id", "=", record.passport_id), ("document_type", "=", record.document_type)]
|
||||
elif record.document_type == "saudi" and record.saudi_id:
|
||||
domain = [("saudi_id", "=", record.saudi_id), ("document_type", "=", record.document_type)]
|
||||
elif record.document_type == "Iqama" and record.iqama_id:
|
||||
domain = [("iqama_id", "=", record.iqama_id), ("document_type", "=", record.document_type)]
|
||||
elif record.document_type == "license" and record.license_id:
|
||||
domain = [("license_id", "=", record.license_id), ("document_type", "=", record.document_type)]
|
||||
elif record.document_type == "medical_Examination" and record.file_examination:
|
||||
domain = [("file_examination", "=", record.file_examination), ("document_type", "=", record.document_type)]
|
||||
|
||||
if domain:
|
||||
duplicate_count = self.search_count(domain)
|
||||
if duplicate_count > 1:
|
||||
doc_type_names = {
|
||||
"passport": "Passport",
|
||||
"saudi": "Saudi Identity",
|
||||
"Iqama": "Identity",
|
||||
"license": "License",
|
||||
"medical_Examination": "Medical Examination"
|
||||
}
|
||||
doc_name = doc_type_names.get(record.document_type, "Document")
|
||||
raise ValidationError(_(f"This {doc_name} Number already exists"))
|
||||
|
||||
|
||||
class HrEmployee(models.Model):
|
||||
_inherit = "hr.employee"
|
||||
|
||||
passport_id = fields.Many2one(
|
||||
"hr.employee.document",
|
||||
domain=[("document_type", "=", "passport")],
|
||||
tracking=True,
|
||||
)
|
||||
expiry_license = fields.Date(
|
||||
related="license_number_id.expiry_date",
|
||||
readonly=True,
|
||||
string="License Expiry Date"
|
||||
)
|
||||
license_number_id = fields.Many2one(
|
||||
comodel_name="hr.employee.document",
|
||||
domain="[('document_type','=','license')]"
|
||||
)
|
||||
|
||||
|
||||
document_ids = fields.One2many(
|
||||
'hr.employee.document',
|
||||
'employee_ref',
|
||||
string="Documents"
|
||||
)
|
||||
|
||||
document_count = fields.Integer(
|
||||
compute="_compute_document_count",
|
||||
string="# Documents"
|
||||
)
|
||||
|
||||
@api.depends('document_ids')
|
||||
def _compute_document_count(self):
|
||||
for employee in self:
|
||||
employee.document_count = len(employee.document_ids)
|
||||
|
||||
def document_view(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
"name": _("Documents"),
|
||||
"domain": [("employee_ref", "=", self.id)],
|
||||
"res_model": "hr.employee.document",
|
||||
"type": "ir.actions.act_window",
|
||||
"view_mode": "tree,form",
|
||||
"help": """<p class="oe_view_nocontent_create"> Click to Create for New Documents </p>""",
|
||||
"limit": 80,
|
||||
"context": {"default_employee_ref": self.id},
|
||||
}
|
||||
|
||||
|
||||
|
||||
class HrEmployeeAttachment(models.Model):
|
||||
_inherit = "ir.attachment"
|
||||
|
||||
doc_attach_rel = fields.Many2many(
|
||||
"hr.employee.document",
|
||||
"doc_attachment_id",
|
||||
"attach_id3",
|
||||
"doc_id",
|
||||
string="Attachment",
|
||||
invisible=True
|
||||
)
|
||||
|
||||
|
||||
class User(models.Model):
|
||||
_inherit = "res.users"
|
||||
|
||||
passport_id = fields.Many2one(
|
||||
"hr.employee.document",
|
||||
related="employee_id.passport_id",
|
||||
readonly=False
|
||||
)
|
||||
|
||||
|
||||
class MembershipTypes(models.Model):
|
||||
_name = 'membership.types'
|
||||
_description = 'Membership Types'
|
||||
|
||||
name = fields.Char(required=True)
|
||||
|
||||
|
||||
class MembershipCategorys(models.Model):
|
||||
_name = 'membership.categorys'
|
||||
_description = 'Membership Categories'
|
||||
|
||||
name = fields.Char(required=True)
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class EmployeeEntryDocuments(models.Model):
|
||||
_name = "employee.checklist"
|
||||
_inherit = ["mail.thread", "mail.activity.mixin"]
|
||||
_description = "Employee Documents"
|
||||
|
||||
name = fields.Char(string="Document Name", copy=False, required=True)
|
||||
document_type = fields.Selection(
|
||||
selection=[
|
||||
("entry", "Entry Process"),
|
||||
("exit", "Exit Process"),
|
||||
("other", "Other")
|
||||
],
|
||||
string="Checklist Type",
|
||||
required=True
|
||||
)
|
||||
|
||||
def name_get(self):
|
||||
result = []
|
||||
for record in self:
|
||||
name = record.name
|
||||
if record.document_type == "entry":
|
||||
name += "_en"
|
||||
elif record.document_type == "exit":
|
||||
name += "_ex"
|
||||
elif record.document_type == "other":
|
||||
name += "_ot"
|
||||
result.append((record.id, name))
|
||||
return result
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class User(models.Model):
|
||||
_inherit = "res.users"
|
||||
|
||||
passport_id = fields.Many2one(
|
||||
"hr.employee.document",
|
||||
related="employee_id.passport_id",
|
||||
readonly=False
|
||||
)
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_hr_employee_checklist_user,employee.checklist.user,model_employee_checklist,hr.group_hr_user,1,1,1,1
|
||||
access_hr_employee_checklist_emp,employee.checklist.emp,model_employee_checklist,base.group_user,1,0,0,0
|
||||
access_hr_employee_document_employee,hr.employee.document_employee,model_hr_employee_document,base.group_user,1,0,0,0
|
||||
access_hr_employee_document_manager,hr.employee.document_manager,model_hr_employee_document,hr.group_hr_manager,1,1,1,1
|
||||
access_hr_employee_document_user,hr.employee.document_user,model_hr_employee_document,hr.group_hr_user,1,1,1,0
|
||||
access_membership_types_hr,Access.membership_types_hr,model_membership_types,hr.group_hr_user,1,1,1,1
|
||||
access_membership_types_emp,Access.membership_types_emp,model_membership_types,base.group_user,1,0,0,0
|
||||
access_membership_categorys_hr,Access.membership_categorys_hr,model_membership_categorys,hr.group_hr_user,1,1,1,1
|
||||
access_membership_categorys_emp,Access.membership_categorys_emp,model_membership_categorys,base.group_user,1,0,0,0
|
||||
|
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
|
|
@ -0,0 +1,22 @@
|
|||
@media (min-width: 768px) {
|
||||
.rtl .navbar-right {
|
||||
float: left !important;
|
||||
}
|
||||
.rtl .navbar-right .dropdown .dropdown-menu {
|
||||
right: auto !important;
|
||||
left: 0 !important;
|
||||
}
|
||||
.rtl .navbar-left {
|
||||
float: right !important;
|
||||
}
|
||||
.rtl .navbar-left .dropdown .dropdown-menu {
|
||||
left: auto !important;
|
||||
right: 0 !important;
|
||||
}
|
||||
.navbar-nav.navbar-right:last-child {
|
||||
margin-left: auto;
|
||||
}
|
||||
.rtl .pull-left {
|
||||
float: right !important;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record model='ir.ui.view' id='employee_check_list_form_view'>
|
||||
<field name="name">employee.checklist.form</field>
|
||||
<field name="model">employee.checklist</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Checklist">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name" />
|
||||
<field name="document_type" />
|
||||
</group>
|
||||
</sheet>
|
||||
<chatter />
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model='ir.ui.view' id='employee_check_list_tree_view'>
|
||||
<field name="name">employee.checklist.list</field>
|
||||
<field name="model">employee.checklist</field>
|
||||
<field name="type">list</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name" />
|
||||
<field name="document_type" />
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record model="ir.actions.act_window" id="employee_document_list_action">
|
||||
<field name="name">Employee document</field>
|
||||
<field name="res_model">hr.employee.document</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<record model='ir.ui.view' id='employee_document_form_view'>
|
||||
<field name="name">hr.employee.document.form</field>
|
||||
<field name="model">hr.employee.document</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name" required="1" string="Document Name" />
|
||||
<field
|
||||
name="doc_attachment_id"
|
||||
widget="many2many_binary"
|
||||
class="oe_inline"
|
||||
/>
|
||||
<field name="document_type" string="Document Type" required="1" />
|
||||
<field name="employee_ref" string="Employee Name" />
|
||||
<field name="employee_number" string="Employee Number" force_save="1" />
|
||||
<field name="company_id" groups="base.group_multi_company" readonly="1" />
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<field name="saudi_id"
|
||||
invisible="document_type != 'saudi'"
|
||||
required="document_type == 'saudi'" />
|
||||
<field name="license_id"
|
||||
invisible="document_type != 'license'"
|
||||
required="document_type == 'license'" />
|
||||
<field name="passport_id"
|
||||
invisible="document_type != 'passport'"
|
||||
required="document_type == 'passport'" />
|
||||
|
||||
<field name="iqama_id" string="Identity No"
|
||||
invisible="document_type != 'Iqama'"
|
||||
required="document_type == 'Iqama'" />
|
||||
|
||||
<field name="emp_iqama_job" string="Job Position"
|
||||
invisible="document_type != 'Iqama'" />
|
||||
<field name="file_examination" string="File Examination Name"
|
||||
invisible="document_type != 'medical_Examination'"
|
||||
required="document_type == 'medical_Examination'" />
|
||||
<field name="issue_date" required="document_type != 'saudi'" />
|
||||
<field name="place_issue_id" />
|
||||
<field name="expiry_date" required="document_type != 'saudi'" />
|
||||
<field name="reminder_before" />
|
||||
</group>
|
||||
|
||||
<group invisible="document_type != 'professional_certificates'">
|
||||
<field name="membership_type"
|
||||
required="document_type == 'professional_certificates'" />
|
||||
<field name="specialization"
|
||||
required="document_type == 'professional_certificates'" />
|
||||
<field name="category"
|
||||
required="document_type == 'professional_certificates'" />
|
||||
</group>
|
||||
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Description">
|
||||
<field name="description" />
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<chatter />
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Employee document search view-->
|
||||
<record id="employee_document_inherit_view" model="ir.ui.view">
|
||||
<field name="name">Employees Document inherit</field>
|
||||
<field name="model">hr.employee.document</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="employee_ref" />
|
||||
<field name="employee_number" />
|
||||
<field name="saudi_id" />
|
||||
<field name="iqama_id" />
|
||||
<field name="passport_id" />
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model='ir.ui.view' id='employee_document_tree_view'>
|
||||
<field name="name">hr.employee.document.list</field>
|
||||
<field name="model">hr.employee.document</field>
|
||||
<field name="type">list</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="employee_number" />
|
||||
<field name="employee_ref" />
|
||||
<field name="document_type" />
|
||||
<field name="issue_date" />
|
||||
<field name="expiry_date" />
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Employee document menu item view-->
|
||||
<menuitem
|
||||
name="Employee Documents"
|
||||
id="Employee_document_menu_item"
|
||||
parent="hr.menu_hr_main"
|
||||
sequence="6"
|
||||
action="employee_document_list_action"
|
||||
groups="hr.group_hr_manager,hr.group_hr_user"
|
||||
/>
|
||||
|
||||
</odoo>
|
||||
Loading…
Reference in New Issue