summaryrefslogtreecommitdiff
path: root/hr_resignation
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 17:14:58 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 17:14:58 +0700
commit1ca3b3df3421961caec3b747a364071c80f5c7da (patch)
tree6778a1f0f3f9b4c6e26d6d87ccde16e24da6c9d6 /hr_resignation
parentb57188be371d36d96caac4b8d65a40745c0e972c (diff)
initial commit
Diffstat (limited to 'hr_resignation')
-rw-r--r--hr_resignation/README.rst41
-rw-r--r--hr_resignation/__init__.py2
-rw-r--r--hr_resignation/__manifest__.py50
-rw-r--r--hr_resignation/data/demo_data.xml23
-rw-r--r--hr_resignation/data/resign_employee.xml16
-rw-r--r--hr_resignation/docs/RELEASE_NOTES.md6
-rw-r--r--hr_resignation/i18n/ar_001.po363
-rw-r--r--hr_resignation/models/__init__.py2
-rw-r--r--hr_resignation/models/hr_resignation.py187
-rw-r--r--hr_resignation/security/ir.model.access.csv3
-rw-r--r--hr_resignation/security/security.xml19
-rw-r--r--hr_resignation/static/description/assets/icons/chevron.pngbin0 -> 310 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/cogs.pngbin0 -> 1377 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/consultation.pngbin0 -> 1458 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/ecom-black.pngbin0 -> 576 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/education-black.pngbin0 -> 733 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/hotel-black.pngbin0 -> 911 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/license.pngbin0 -> 1095 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/lifebuoy.pngbin0 -> 1199 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/manufacturing-black.pngbin0 -> 673 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/pos-black.pngbin0 -> 878 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/puzzle.pngbin0 -> 653 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/restaurant-black.pngbin0 -> 905 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/service-black.pngbin0 -> 839 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/trading-black.pngbin0 -> 427 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/training.pngbin0 -> 627 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/update.pngbin0 -> 1225 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/user.pngbin0 -> 988 bytes
-rw-r--r--hr_resignation/static/description/assets/icons/wrench.pngbin0 -> 1205 bytes
-rw-r--r--hr_resignation/static/description/banner.pngbin0 -> 64376 bytes
-rw-r--r--hr_resignation/static/description/icon.pngbin0 -> 17634 bytes
-rw-r--r--hr_resignation/static/description/images/appraisal_image.pngbin0 -> 128694 bytes
-rw-r--r--hr_resignation/static/description/images/bio_image.pngbin0 -> 162841 bytes
-rw-r--r--hr_resignation/static/description/images/checked.pngbin0 -> 21786 bytes
-rw-r--r--hr_resignation/static/description/images/core_image.gifbin0 -> 627021 bytes
-rw-r--r--hr_resignation/static/description/images/hero.pngbin0 -> 343097 bytes
-rw-r--r--hr_resignation/static/description/images/module_image.gifbin0 -> 140073 bytes
-rw-r--r--hr_resignation/static/description/images/open-hrms-resignation.gifbin0 -> 911804 bytes
-rw-r--r--hr_resignation/static/description/images/openhrms.pngbin0 -> 7710 bytes
-rw-r--r--hr_resignation/static/description/images/salary_image.pngbin0 -> 117368 bytes
-rw-r--r--hr_resignation/static/description/images/shift_image.pngbin0 -> 117673 bytes
-rw-r--r--hr_resignation/static/description/index.html492
-rw-r--r--hr_resignation/static/description/resignation_web.pngbin0 -> 8570 bytes
-rw-r--r--hr_resignation/static/image/resign_employee_id.jpegbin0 -> 5364 bytes
-rw-r--r--hr_resignation/views/approved_resignation.xml25
-rw-r--r--hr_resignation/views/hr_employee.xml25
-rw-r--r--hr_resignation/views/resignation_sequence.xml15
-rw-r--r--hr_resignation/views/resignation_view.xml91
48 files changed, 1360 insertions, 0 deletions
diff --git a/hr_resignation/README.rst b/hr_resignation/README.rst
new file mode 100644
index 0000000..4ab17bf
--- /dev/null
+++ b/hr_resignation/README.rst
@@ -0,0 +1,41 @@
+OHRMS Employee Resignation
+==========================
+
+Employee Resignation Process.
+
+Depends
+=======
+[hr_employee_updation] addon Open HRMS
+[mail] addon Odoo
+
+Tech
+====
+* [Python] - Models
+* [XML] - Odoo views
+
+Installation
+============
+- www.odoo.com/documentation/14.0/setup/install.html
+- Install our custom addon
+
+
+Bug Tracker
+===========
+Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
+
+Credits
+=======
+* Cybrosys Techno Solutions <https://www.cybrosys.com>
+
+Author
+------
+
+Developer: Niyas Raphy @ cybrosys, odoo@cybrosys.com
+ Version 14: Naveen V @cybrosys, Contact: odoo@cybrosys.com
+
+Maintainer
+----------
+
+This module is maintained by Cybrosys Technologies.
+
+For support and more information, please visit https://www.cybrosys.com.
diff --git a/hr_resignation/__init__.py b/hr_resignation/__init__.py
new file mode 100644
index 0000000..a0fdc10
--- /dev/null
+++ b/hr_resignation/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from . import models
diff --git a/hr_resignation/__manifest__.py b/hr_resignation/__manifest__.py
new file mode 100644
index 0000000..c2f38f8
--- /dev/null
+++ b/hr_resignation/__manifest__.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+###################################################################################
+# A part of Open HRMS Project <https://www.openhrms.com>
+#
+# Cybrosys Technologies Pvt. Ltd.
+# Copyright (C) 2020-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
+# Author: Niyas Raphy(<https://www.cybrosys.com>)
+#
+# This program is free software: you can modify
+# it under the terms of the GNU Affero General Public License (AGPL) as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+###################################################################################
+{
+ 'name': 'Open HRMS Resignation',
+ 'version': '14.0.1.0.0',
+ 'summary': 'Handle the resignation process of the employee',
+ 'live_test_url': 'https://www.youtube.com/watch?v=VuFWGXAdriU&feature=youtu.be',
+ 'author': 'Cybrosys Techno solutions,Open HRMS',
+ 'company': 'Cybrosys Techno Solutions',
+ 'website': 'https://www.openhrms.com',
+ 'depends': ['hr', 'hr_employee_updation', 'mail'],
+ 'category': 'Generic Modules/Human Resources',
+ 'maintainer': 'Cybrosys Techno Solutions',
+ 'demo': ['data/demo_data.xml'],
+ 'data': [
+ 'security/security.xml',
+ 'security/ir.model.access.csv',
+ 'data/resign_employee.xml',
+ 'views/hr_employee.xml',
+ 'views/resignation_view.xml',
+ 'views/approved_resignation.xml',
+ 'views/resignation_sequence.xml',
+ ],
+ 'installable': True,
+ 'application': False,
+ 'auto_install': False,
+ 'images': ['static/description/banner.png'],
+ 'license': 'AGPL-3',
+}
+
diff --git a/hr_resignation/data/demo_data.xml b/hr_resignation/data/demo_data.xml
new file mode 100644
index 0000000..73342c7
--- /dev/null
+++ b/hr_resignation/data/demo_data.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data noupdate="1">
+
+ <record id="resign_employee_id" model="hr.employee">
+ <field name="name">Sreejith Sasidharan</field>
+ <field name="job_title">Odoo developer</field>
+ <field name="work_location">Building 1, Third Floor</field>
+ <field name="work_phone">(376)-352-741</field>
+ <field name="work_email">sreejith@example.com</field>
+ <field name="image_1920" type="base64"
+ file="hr_resignation/static/image/resign_employee_id.jpeg"/>
+ </record>
+
+ <record id="resignation_one" model="hr.resignation">
+ <field name="employee_id" ref="resign_employee_id"/>
+ <field name="joined_date">2015-03-02</field>
+ <field name="expected_revealing_date">2020-03-22</field>
+ <field name="reason">Career Change</field>
+ </record>
+
+ </data>
+</odoo> \ No newline at end of file
diff --git a/hr_resignation/data/resign_employee.xml b/hr_resignation/data/resign_employee.xml
new file mode 100644
index 0000000..89930f0
--- /dev/null
+++ b/hr_resignation/data/resign_employee.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+ <data>
+ <record id="ir_cron_data_employee_resignation" model="ir.cron">
+ <field name="name">HR Resignation: update employee</field>
+ <field name="model_id" ref="model_hr_resignation"/>
+ <field name="state">code</field>
+ <field name="code">model.update_employee_status()</field>
+ <field name="user_id" ref="base.user_root" />
+ <field name="interval_number">1</field>
+ <field name="interval_type">days</field>
+ <field name="numbercall">-1</field>
+ <field eval="False" name="doall" />
+ </record>
+ </data>
+</odoo> \ No newline at end of file
diff --git a/hr_resignation/docs/RELEASE_NOTES.md b/hr_resignation/docs/RELEASE_NOTES.md
new file mode 100644
index 0000000..bcef6a9
--- /dev/null
+++ b/hr_resignation/docs/RELEASE_NOTES.md
@@ -0,0 +1,6 @@
+## Module hr_resignation
+
+#### 06.10.2020
+#### Version 14.0.1.0.0
+##### ADD
+- Initial Commit \ No newline at end of file
diff --git a/hr_resignation/i18n/ar_001.po b/hr_resignation/i18n/ar_001.po
new file mode 100644
index 0000000..9c7cd44
--- /dev/null
+++ b/hr_resignation/i18n/ar_001.po
@@ -0,0 +1,363 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * hr_resignation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 13.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-02-12 03:50+0000\n"
+"PO-Revision-Date: 2020-02-12 03:50+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_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_needaction
+msgid "Action Needed"
+msgstr "الإجراءات اللازمة"
+
+#. module: hr_resignation
+#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_form
+msgid "Approve"
+msgstr "يوافق"
+
+#. module: hr_resignation
+#: model:ir.model.fields.selection,name:hr_resignation.selection__hr_resignation__state__approved
+msgid "Approved"
+msgstr "وافق"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__approved_revealing_date
+msgid "Approved Date"
+msgstr "تاريخ الموافقة"
+
+#. module: hr_resignation
+#: model_terms:ir.actions.act_window,help:hr_resignation.view_approved_resignation
+#: model:ir.actions.act_window,name:hr_resignation.view_approved_resignation
+#: model:ir.ui.menu,name:hr_resignation.employee_resignation_approved
+msgid "Approved Resignation"
+msgstr "تمت الموافقة على الاستقالة"
+
+#. module: hr_resignation
+#: code:addons/hr_resignation/models/hr_resignation.py:0
+#, python-format
+msgid "Approved relieving date must be anterior to confirmed date"
+msgstr "يجب أن يكون تاريخ التخفيف المعتمد هو الأمامي للتاريخ المؤكد"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_attachment_count
+msgid "Attachment Count"
+msgstr "عدد المرفقات"
+
+#. module: hr_resignation
+#: model:ir.model.fields.selection,name:hr_resignation.selection__hr_resignation__state__cancel
+#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_form
+msgid "Cancel"
+msgstr "إلغاء"
+
+#. module: hr_resignation
+#: model:ir.model.fields.selection,name:hr_resignation.selection__hr_resignation__state__confirm
+#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_form
+msgid "Confirm"
+msgstr "تؤكد"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__create_uid
+msgid "Created by"
+msgstr "انشأ من قبل"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__create_date
+msgid "Created on"
+msgstr "تم إنشاؤها على"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__expected_revealing_date
+msgid "Date on which he is revealing from the company"
+msgstr "التاريخ الذي يكشف عنه من الشركة"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__resign_confirm_date
+msgid "Date on which the request is confirmed"
+msgstr "تاريخ تأكيد الطلب"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__department_id
+msgid "Department"
+msgstr "قسم"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__department_id
+msgid "Department of the employee"
+msgstr "قسم الموظف"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__display_name
+msgid "Display Name"
+msgstr "اسم العرض"
+
+#. module: hr_resignation
+#: model:ir.model.fields.selection,name:hr_resignation.selection__hr_resignation__state__draft
+msgid "Draft"
+msgstr "مشروع"
+
+#. module: hr_resignation
+#: model:ir.model,name:hr_resignation.model_hr_employee
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__employee_id
+msgid "Employee"
+msgstr "الموظف"
+
+#. module: hr_resignation
+#: model:ir.actions.act_window,name:hr_resignation.view_employee_resignation
+#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_form
+#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_tree
+msgid "Employee Resignation"
+msgstr "استقالة الموظف"
+
+#. module: hr_resignation
+#: model_terms:ir.actions.act_window,help:hr_resignation.view_employee_resignation
+msgid "Employee Resignation Form"
+msgstr "نموذج استقالة الموظف"
+
+#. module: hr_resignation
+#: code:addons/hr_resignation/models/hr_resignation.py:0
+#, python-format
+msgid "Enter Approved Relieving Date"
+msgstr "أدخل تاريخ التخفيف المعتمد"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_follower_ids
+msgid "Followers"
+msgstr "متابعون"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_channel_ids
+msgid "Followers (Channels)"
+msgstr "(المتابعون (القنوات"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_partner_ids
+msgid "Followers (Partners)"
+msgstr "(المتابعون (الشركاء"
+
+#. module: hr_resignation
+#: model:ir.actions.server,name:hr_resignation.ir_cron_data_employee_resignation_ir_actions_server
+#: model:ir.cron,cron_name:hr_resignation.ir_cron_data_employee_resignation
+#: model:ir.cron,name:hr_resignation.ir_cron_data_employee_resignation
+msgid "HR Resignation: update employee"
+msgstr "استقالة الموارد البشرية: تحديث الموظف"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__id
+msgid "ID"
+msgstr "هوية شخصية"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_needaction
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_unread
+msgid "If checked, new messages require your attention."
+msgstr "إذا تم تحديد ذلك ، فإن الرسائل الجديدة تتطلب اهتمامك."
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_has_error
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_has_sms_error
+msgid "If checked, some messages have a delivery error."
+msgstr "إذا تم تحديده ، فبعض الرسائل بها خطأ في التسليم."
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_is_follower
+msgid "Is Follower"
+msgstr "هو تابع"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__joined_date
+msgid "Join Date"
+msgstr "تاريخ الانضمام"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__joined_date
+msgid "Joining date of the employee"
+msgstr "تاريخ انضمام الموظف"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation____last_update
+msgid "Last Modified on"
+msgstr "آخر تعديل في"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__write_uid
+msgid "Last Updated by"
+msgstr "آخر تحديث بواسطة"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__write_date
+msgid "Last Updated on"
+msgstr "آخر تحديث في"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_main_attachment_id
+msgid "Main Attachment"
+msgstr "المرفق الرئيسي"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_has_error
+msgid "Message Delivery error"
+msgstr "خطأ في تسليم الرسالة"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_ids
+msgid "Messages"
+msgstr "رسائل"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__employee_id
+msgid "Name of the employee for whom the request is creating"
+msgstr "اسم الموظف الذي يتم إنشاء الطلب له"
+
+#. module: hr_resignation
+#: code:addons/hr_resignation/models/hr_resignation.py:0
+#: code:addons/hr_resignation/models/hr_resignation.py:0
+#: code:addons/hr_resignation/models/hr_resignation.py:0
+#, python-format
+msgid "New"
+msgstr "جديد"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__notice_period
+msgid "Notice Period"
+msgstr "فترة إشعار"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_needaction_counter
+msgid "Number of Actions"
+msgstr "عدد الإجراءات"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_has_error_counter
+msgid "Number of errors"
+msgstr "عدد الاخطاء"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_needaction_counter
+msgid "Number of messages which requires an action"
+msgstr "عدد الرسائل التي تتطلب إجراء"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_has_error_counter
+msgid "Number of messages with delivery error"
+msgstr "عدد الرسائل مع خطأ التسليم"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__message_unread_counter
+msgid "Number of unread messages"
+msgstr "عدد الرسائل غير المقروءة"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__name
+msgid "Order Reference"
+msgstr "ترتيب المرجعي"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__reason
+msgid "Reason"
+msgstr "السبب"
+
+#. module: hr_resignation
+#: model_terms:ir.ui.view,arch_db:hr_resignation.employee_resignation_form
+msgid "Reject"
+msgstr "رفض"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__expected_revealing_date
+msgid "Relieving Date"
+msgstr "تاريخ تخفيف"
+
+#. module: hr_resignation
+#: code:addons/hr_resignation/models/hr_resignation.py:0
+#, python-format
+msgid "Relieving date must be anterior to joining date"
+msgstr "يجب أن يكون تاريخ التخفيف أمام تاريخ الانضمام"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_employee__resign_date
+msgid "Resign Date"
+msgstr "تاريخ الاستقالة"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__resign_confirm_date
+msgid "Resign confirm date"
+msgstr "استقالة تأكيد التاريخ"
+
+#. module: hr_resignation
+#: model:ir.ui.menu,name:hr_resignation.employee_resignation
+msgid "Resignation"
+msgstr "استقالة"
+
+#. module: hr_resignation
+#: model:ir.ui.menu,name:hr_resignation.employee_resignation_request
+msgid "Resignation Request"
+msgstr "طلب الاستقالة"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_has_sms_error
+msgid "SMS Delivery error"
+msgstr "خطأ في تسليم الرسائل القصيرة"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__reason
+msgid "Specify reason for leaving the company"
+msgstr "تحديد سبب مغادرة الشركة"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__state
+msgid "Status"
+msgstr "الحالة"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__approved_revealing_date
+msgid "The date approved for the relieving"
+msgstr "التاريخ المعتمد للتخفيف"
+
+#. module: hr_resignation
+#: code:addons/hr_resignation/models/hr_resignation.py:0
+#: code:addons/hr_resignation/models/hr_resignation.py:0
+#, python-format
+msgid ""
+"There is a resignation request in confirmed or approved state for this "
+"employee"
+msgstr "هناك طلب استقالة في حالة مؤكدة أو معتمدة لهذا الموظف"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_unread
+msgid "Unread Messages"
+msgstr "رسائل غير مقروءة"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__message_unread_counter
+msgid "Unread Messages Counter"
+msgstr "عداد الرسائل غير المقروءة"
+
+#. module: hr_resignation
+#: model:ir.model.fields,field_description:hr_resignation.field_hr_resignation__website_message_ids
+msgid "Website Messages"
+msgstr "رسائل الموقع"
+
+#. module: hr_resignation
+#: model:ir.model.fields,help:hr_resignation.field_hr_resignation__website_message_ids
+msgid "Website communication history"
+msgstr "سجل اتصالات الموقع"
+
+#. module: hr_resignation
+#: code:addons/hr_resignation/models/hr_resignation.py:0
+#, python-format
+msgid "You cannot create request for other employees"
+msgstr "لا يمكنك إنشاء طلب للموظفين الآخرين"
+
+#. module: hr_resignation
+#: model:ir.model,name:hr_resignation.model_hr_resignation
+msgid "hr.resignation"
+msgstr ""
diff --git a/hr_resignation/models/__init__.py b/hr_resignation/models/__init__.py
new file mode 100644
index 0000000..fb9ec22
--- /dev/null
+++ b/hr_resignation/models/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from . import hr_resignation
diff --git a/hr_resignation/models/hr_resignation.py b/hr_resignation/models/hr_resignation.py
new file mode 100644
index 0000000..d31a491
--- /dev/null
+++ b/hr_resignation/models/hr_resignation.py
@@ -0,0 +1,187 @@
+# -*- coding: utf-8 -*-
+import datetime
+from datetime import datetime, timedelta
+from odoo import models, fields, api, _
+from odoo.exceptions import ValidationError
+
+date_format = "%Y-%m-%d"
+RESIGNATION_TYPE = [('resigned', 'Normal Resignation'),
+ ('fired', 'Fired by the company')]
+
+
+class HrResignation(models.Model):
+ _name = 'hr.resignation'
+ _inherit = 'mail.thread'
+ _rec_name = 'employee_id'
+
+ name = fields.Char(string='Order Reference', required=True, copy=False, readonly=True, index=True,
+ default=lambda self: _('New'))
+ employee_id = fields.Many2one('hr.employee', string="Employee", default=lambda self: self.env.user.employee_id.id,
+ help='Name of the employee for whom the request is creating')
+ department_id = fields.Many2one('hr.department', string="Department", related='employee_id.department_id',
+ help='Department of the employee')
+ resign_confirm_date = fields.Date(string="Confirmed Date",
+ help='Date on which the request is confirmed by the employee.',
+ track_visibility="always")
+ approved_revealing_date = fields.Date(string="Approved Last Day Of Employee",
+ help='Date on which the request is confirmed by the manager.',
+ track_visibility="always")
+ joined_date = fields.Date(string="Join Date", store=True,
+ help='Joining date of the employee.i.e Start date of the first contract')
+
+ expected_revealing_date = fields.Date(string="Last Day of Employee", required=True,
+ help='Employee requested date on which he is revealing from the company.')
+ reason = fields.Text(string="Reason", required=True, help='Specify reason for leaving the company')
+ notice_period = fields.Char(string="Notice Period")
+ state = fields.Selection(
+ [('draft', 'Draft'), ('confirm', 'Confirm'), ('approved', 'Approved'), ('cancel', 'Rejected')],
+ string='Status', default='draft', track_visibility="always")
+ resignation_type = fields.Selection(selection=RESIGNATION_TYPE, help="Select the type of resignation: normal "
+ "resignation or fired by the company")
+ read_only = fields.Boolean(string="check field")
+ employee_contract = fields.Char(String="Contract")
+
+ @api.onchange('employee_id')
+ @api.depends('employee_id')
+ def _compute_read_only(self):
+ """ Use this function to check weather the user has the permission to change the employee"""
+ res_user = self.env['res.users'].search([('id', '=', self._uid)])
+ print(res_user.has_group('hr.group_hr_user'))
+ if res_user.has_group('hr.group_hr_user'):
+ self.read_only = True
+ else:
+ self.read_only = False
+
+ @api.onchange('employee_id')
+ def set_join_date(self):
+ # self.joined_date = self.employee_id.joining_date if self.employee_id.joining_date else ''
+ self.joined_date = self.employee_id.joining_date
+
+ # @api.depends('employee_id')
+ # def compute_join_date(self):
+ # # self.joined_date = self.employee_id.joining_date if self.employee_id.joining_date else ''
+ # if employee_id.joining_date :
+ # self.joined_date = self.employee_id.joining_date
+ # else :
+ # self.joined_date = False
+
+ @api.model
+ def create(self, vals):
+ # assigning the sequence for the record
+ if vals.get('name', _('New')) == _('New'):
+ vals['name'] = self.env['ir.sequence'].next_by_code('hr.resignation') or _('New')
+ res = super(HrResignation, self).create(vals)
+ return res
+
+ @api.constrains('employee_id')
+ def check_employee(self):
+ # Checking whether the user is creating leave request of his/her own
+ for rec in self:
+ if not self.env.user.has_group('hr.group_hr_user'):
+ if rec.employee_id.user_id.id and rec.employee_id.user_id.id != self.env.uid:
+ raise ValidationError(_('You cannot create request for other employees'))
+
+ @api.onchange('employee_id')
+ @api.depends('employee_id')
+ def check_request_existence(self):
+ # Check whether any resignation request already exists
+ for rec in self:
+ if rec.employee_id:
+ resignation_request = self.env['hr.resignation'].search([('employee_id', '=', rec.employee_id.id),
+ ('state', 'in', ['confirm', 'approved'])])
+ if resignation_request:
+ raise ValidationError(_('There is a resignation request in confirmed or'
+ ' approved state for this employee'))
+ if rec.employee_id:
+ no_of_contract = self.env['hr.contract'].search([('employee_id', '=', self.employee_id.id)])
+ for contracts in no_of_contract:
+ if contracts.state == 'open':
+ rec.employee_contract = contracts.name
+ rec.notice_period = contracts.notice_days
+
+ @api.constrains('joined_date')
+ def _check_dates(self):
+ # validating the entered dates
+ for rec in self:
+ resignation_request = self.env['hr.resignation'].search([('employee_id', '=', rec.employee_id.id),
+ ('state', 'in', ['confirm', 'approved'])])
+ if resignation_request:
+ raise ValidationError(_('There is a resignation request in confirmed or'
+ ' approved state for this employee'))
+
+ def confirm_resignation(self):
+ if self.joined_date:
+ if self.joined_date >= self.expected_revealing_date:
+ raise ValidationError(_('Last date of the Employee must be anterior to Joining date'))
+ for rec in self:
+ rec.state = 'confirm'
+ rec.resign_confirm_date = str(datetime.now())
+ else:
+ raise ValidationError(_('Please set joining date for employee'))
+
+ def cancel_resignation(self):
+ for rec in self:
+ rec.state = 'cancel'
+
+ def reject_resignation(self):
+ for rec in self:
+ rec.state = 'cancel'
+
+ def reset_to_draft(self):
+ for rec in self:
+ rec.state = 'draft'
+ rec.employee_id.active = True
+ rec.employee_id.resigned = False
+ rec.employee_id.fired = False
+
+ def approve_resignation(self):
+ for rec in self:
+ if rec.expected_revealing_date and rec.resign_confirm_date:
+ no_of_contract = self.env['hr.contract'].search([('employee_id', '=', self.employee_id.id)])
+ for contracts in no_of_contract:
+ if contracts.state == 'open':
+ rec.employee_contract = contracts.name
+ rec.state = 'approved'
+ rec.approved_revealing_date = rec.resign_confirm_date + timedelta(days=contracts.notice_days)
+ else:
+ rec.approved_revealing_date = rec.expected_revealing_date
+ # Changing state of the employee if resigning today
+ if rec.expected_revealing_date <= fields.Date.today() and rec.employee_id.active:
+ rec.employee_id.active = False
+ # Changing fields in the employee table with respect to resignation
+ rec.employee_id.resign_date = rec.expected_revealing_date
+ if rec.resignation_type == 'resigned':
+ rec.employee_id.resigned = True
+ else:
+ rec.employee_id.fired = True
+ # Removing and deactivating user
+ if rec.employee_id.user_id:
+ rec.employee_id.user_id.active = False
+ rec.employee_id.user_id = None
+ else:
+ raise ValidationError(_('Please enter valid dates.'))
+
+ def update_employee_status(self):
+ resignation = self.env['hr.resignation'].search([('state', '=', 'approved')])
+ for rec in resignation:
+ if rec.expected_revealing_date <= fields.Date.today() and rec.employee_id.active:
+ rec.employee_id.active = False
+ # Changing fields in the employee table with respect to resignation
+ rec.employee_id.resign_date = rec.expected_revealing_date
+ if rec.resignation_type == 'resigned':
+ rec.employee_id.resigned = True
+ else:
+ rec.employee_id.fired = True
+ # Removing and deactivating user
+ if rec.employee_id.user_id:
+ rec.employee_id.user_id.active = False
+ rec.employee_id.user_id = None
+
+
+class HrEmployee(models.Model):
+ _inherit = 'hr.employee'
+
+ resign_date = fields.Date('Resign Date', readonly=True, help="Date of the resignation")
+ resigned = fields.Boolean(string="Resigned", default=False, store=True,
+ help="If checked then employee has resigned")
+ fired = fields.Boolean(string="Fired", default=False, store=True, help="If checked then employee has fired")
diff --git a/hr_resignation/security/ir.model.access.csv b/hr_resignation/security/ir.model.access.csv
new file mode 100644
index 0000000..62723a7
--- /dev/null
+++ b/hr_resignation/security/ir.model.access.csv
@@ -0,0 +1,3 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+view_hr_resignation,view.hr.resignation,hr_resignation.model_hr_resignation,base.group_user,1,1,1,0
+view_hr_employee,view.hr.employee,hr.model_hr_employee,base.group_user,1,1,1,0
diff --git a/hr_resignation/security/security.xml b/hr_resignation/security/security.xml
new file mode 100644
index 0000000..79fcab7
--- /dev/null
+++ b/hr_resignation/security/security.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data>
+<!-- To view their own record only-->
+ <record id="hr_resignation_personal_rule" model="ir.rule">
+ <field name="name">Employee Resignation User</field>
+ <field ref="hr_resignation.model_hr_resignation" name="model_id"/>
+ <field name="domain_force">[('employee_id.user_id','=',user.id)]</field>
+ <field name="groups" eval="[(4, ref('base.group_user'))]"/>
+ </record>
+ <!-- Manager permission to view all record -->
+ <record id="hr_resignation_personal_rule_manager" model="ir.rule">
+ <field name="name">Employee Resignation Manager</field>
+ <field ref="hr_resignation.model_hr_resignation" name="model_id"/>
+ <field name="domain_force">['|',('employee_id.user_id','!=',user.id),('employee_id.user_id','=',False)]</field>
+ <field name="groups" eval="[(4, ref('hr.group_hr_user'))]"/>
+ </record>
+ </data>
+</odoo>
diff --git a/hr_resignation/static/description/assets/icons/chevron.png b/hr_resignation/static/description/assets/icons/chevron.png
new file mode 100644
index 0000000..2089293
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/chevron.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/cogs.png b/hr_resignation/static/description/assets/icons/cogs.png
new file mode 100644
index 0000000..95d0bad
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/cogs.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/consultation.png b/hr_resignation/static/description/assets/icons/consultation.png
new file mode 100644
index 0000000..8319d4b
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/consultation.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/ecom-black.png b/hr_resignation/static/description/assets/icons/ecom-black.png
new file mode 100644
index 0000000..a9385ff
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/ecom-black.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/education-black.png b/hr_resignation/static/description/assets/icons/education-black.png
new file mode 100644
index 0000000..3eb09b2
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/education-black.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/hotel-black.png b/hr_resignation/static/description/assets/icons/hotel-black.png
new file mode 100644
index 0000000..130f613
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/hotel-black.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/license.png b/hr_resignation/static/description/assets/icons/license.png
new file mode 100644
index 0000000..a586979
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/license.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/lifebuoy.png b/hr_resignation/static/description/assets/icons/lifebuoy.png
new file mode 100644
index 0000000..658d56c
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/lifebuoy.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/manufacturing-black.png b/hr_resignation/static/description/assets/icons/manufacturing-black.png
new file mode 100644
index 0000000..697eb0e
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/manufacturing-black.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/pos-black.png b/hr_resignation/static/description/assets/icons/pos-black.png
new file mode 100644
index 0000000..97c0f90
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/pos-black.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/puzzle.png b/hr_resignation/static/description/assets/icons/puzzle.png
new file mode 100644
index 0000000..65cf854
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/puzzle.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/restaurant-black.png b/hr_resignation/static/description/assets/icons/restaurant-black.png
new file mode 100644
index 0000000..4a35eb9
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/restaurant-black.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/service-black.png b/hr_resignation/static/description/assets/icons/service-black.png
new file mode 100644
index 0000000..301ab51
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/service-black.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/trading-black.png b/hr_resignation/static/description/assets/icons/trading-black.png
new file mode 100644
index 0000000..9398ba2
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/trading-black.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/training.png b/hr_resignation/static/description/assets/icons/training.png
new file mode 100644
index 0000000..884ca02
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/training.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/update.png b/hr_resignation/static/description/assets/icons/update.png
new file mode 100644
index 0000000..ecbc5a0
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/update.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/user.png b/hr_resignation/static/description/assets/icons/user.png
new file mode 100644
index 0000000..6ffb23d
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/user.png
Binary files differ
diff --git a/hr_resignation/static/description/assets/icons/wrench.png b/hr_resignation/static/description/assets/icons/wrench.png
new file mode 100644
index 0000000..6c04dea
--- /dev/null
+++ b/hr_resignation/static/description/assets/icons/wrench.png
Binary files differ
diff --git a/hr_resignation/static/description/banner.png b/hr_resignation/static/description/banner.png
new file mode 100644
index 0000000..2e9bf81
--- /dev/null
+++ b/hr_resignation/static/description/banner.png
Binary files differ
diff --git a/hr_resignation/static/description/icon.png b/hr_resignation/static/description/icon.png
new file mode 100644
index 0000000..57e6c32
--- /dev/null
+++ b/hr_resignation/static/description/icon.png
Binary files differ
diff --git a/hr_resignation/static/description/images/appraisal_image.png b/hr_resignation/static/description/images/appraisal_image.png
new file mode 100644
index 0000000..0823d44
--- /dev/null
+++ b/hr_resignation/static/description/images/appraisal_image.png
Binary files differ
diff --git a/hr_resignation/static/description/images/bio_image.png b/hr_resignation/static/description/images/bio_image.png
new file mode 100644
index 0000000..acc34b2
--- /dev/null
+++ b/hr_resignation/static/description/images/bio_image.png
Binary files differ
diff --git a/hr_resignation/static/description/images/checked.png b/hr_resignation/static/description/images/checked.png
new file mode 100644
index 0000000..c8e371f
--- /dev/null
+++ b/hr_resignation/static/description/images/checked.png
Binary files differ
diff --git a/hr_resignation/static/description/images/core_image.gif b/hr_resignation/static/description/images/core_image.gif
new file mode 100644
index 0000000..814b0cf
--- /dev/null
+++ b/hr_resignation/static/description/images/core_image.gif
Binary files differ
diff --git a/hr_resignation/static/description/images/hero.png b/hr_resignation/static/description/images/hero.png
new file mode 100644
index 0000000..908fdfd
--- /dev/null
+++ b/hr_resignation/static/description/images/hero.png
Binary files differ
diff --git a/hr_resignation/static/description/images/module_image.gif b/hr_resignation/static/description/images/module_image.gif
new file mode 100644
index 0000000..51be5f0
--- /dev/null
+++ b/hr_resignation/static/description/images/module_image.gif
Binary files differ
diff --git a/hr_resignation/static/description/images/open-hrms-resignation.gif b/hr_resignation/static/description/images/open-hrms-resignation.gif
new file mode 100644
index 0000000..c9595d7
--- /dev/null
+++ b/hr_resignation/static/description/images/open-hrms-resignation.gif
Binary files differ
diff --git a/hr_resignation/static/description/images/openhrms.png b/hr_resignation/static/description/images/openhrms.png
new file mode 100644
index 0000000..068dcb8
--- /dev/null
+++ b/hr_resignation/static/description/images/openhrms.png
Binary files differ
diff --git a/hr_resignation/static/description/images/salary_image.png b/hr_resignation/static/description/images/salary_image.png
new file mode 100644
index 0000000..127ea73
--- /dev/null
+++ b/hr_resignation/static/description/images/salary_image.png
Binary files differ
diff --git a/hr_resignation/static/description/images/shift_image.png b/hr_resignation/static/description/images/shift_image.png
new file mode 100644
index 0000000..9d69782
--- /dev/null
+++ b/hr_resignation/static/description/images/shift_image.png
Binary files differ
diff --git a/hr_resignation/static/description/index.html b/hr_resignation/static/description/index.html
new file mode 100644
index 0000000..62216f7
--- /dev/null
+++ b/hr_resignation/static/description/index.html
@@ -0,0 +1,492 @@
+<div style="padding: 3.5rem 1.5rem !important; background-color: #ffffff !important;">
+ <div class="container">
+ <!-- HERO -->
+ <div class="row">
+ <div class="col-lg-12 d-flex flex-column justify-content-center"
+ style="text-align: center; padding: 1rem !important;">
+ <h1 class="text-center" style="color: #00438B !important; font-size: 4rem !important;"><span
+ style="font-weight: 700 !important;">OpenHRMS</span><span style="font-weight: 300 !important;">
+ Resignation</span></h1>
+ <p class="text-center"
+ style="color: #212529 !important; font-size: 1.5rem !important; letter-spacing: 10px !important;">
+ Easily create, manage, and track employee resignations.</p>
+ <img src="./images/hero.png" class="img-responsive">
+ </div>
+ </div>
+ <!-- END OF HERO -->
+
+ <!-- OVERVIEW -->
+ <div class="row">
+ <div class="col-lg-12 d-flex flex-column justify-content-center"
+ style="text-align: center; padding: 2.5rem 1rem !important;">
+ <h2 style="color: #212529 !important;">Overview</h2>
+ <hr
+ style="border: 3px solid #00438B !important; background-color: #00438B !important; width: 80px !important; margin-bottom: 2rem !important;" />
+ <p class="text-center" style="color: #212529 !important; font-size: 1.5rem !important;">
+ Employee Resignation is a component of Open HRMS suit. This module manages employee resignation
+ process. Employee can fill and send resignation request from their portal and higher level
+ officers can take appropriate actions on it.
+ </p>
+ </div>
+ </div>
+ <!-- END OF OVERVIEW -->
+
+
+ <!-- KEY FEATURES -->
+ <div class="row">
+ <div class="col-lg-12 d-flex flex-column justify-content-center"
+ style="text-align: center; padding: 2.5rem 1rem !important;">
+ <h2 style="color: #212529 !important;">Key Features</h2>
+ <hr
+ style="border: 3px solid #00438B !important; background-color: #00438B !important; width: 80px !important; margin-bottom: 2rem !important;" />
+ <div class="row">
+ <div class="col-lg-12">
+
+ <div class="d-flex deep-2"
+ style="height: 60px !important; padding: 1rem 1.5rem !important; border-radius: 0 !important; margin: 1.5rem 0">
+ <img src="./images/checked.png" style="height: 24px !important; width: 24px !important;"
+ class="mt-1 mr-2" height="24px" width="24px">
+ <p class="text-center" style="color: #212529 !important; font-size: 1.3rem !important;">
+ Employee will create his/her resignation request
+ </p>
+ </div>
+
+ <div class="d-flex deep-2"
+ style="height: 60px !important; padding: 1rem 1.5rem !important; border-radius: 0 !important; margin: 1.5rem 0">
+ <img src="./images/checked.png" style="height: 24px !important; width: 24px !important;"
+ class="mt-1 mr-2" height="24px" width="24px">
+ <p class="text-center" style="color: #212529 !important; font-size: 1.3rem !important;">
+ Higher level officers can approve or reject the request
+ </p>
+ </div>
+
+
+
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+ <!-- END OF KEY FEATURES -->
+
+ <!-- SCREENSHOTS -->
+ <div class="row">
+ <div class="col-lg-12 d-flex flex-column justify-content-center" style="padding: 2.5rem 1rem !important;">
+ <h2 style="text-align: center; color: #212529 !important;">Screenshots</h2>
+ <hr
+ style="border: 3px solid #00438B !important; background-color: #00438B !important; width: 80px !important; margin-bottom: 2rem !important;" />
+ <!-- img -->
+ <div class="d-flex m-0">
+ <div class="mr-3">
+ <h3
+ style="font-size: 2rem !important; font-weight: 800 !important; color: #ffffff !important; background-color: #00438B !important; padding: 1rem !important; width: 70px !important; height: 90px !important;">
+ 01</h3>
+ </div>
+ <div>
+ <h3 style="font-size: 1.7rem !important; font-weight: 600 !important;"> Working of HR
+ resignation module
+ </h3>
+ <!-- <p
+ style="color: #212529 !important; font-size: 1.3rem !important; font-weight: 300 !important;">
+ You can create employee shift working time
+ </p> -->
+ </div>
+ </div>
+ <img src="./images/open-hrms-resignation.gif" class="img-responsive"
+ style="margin-top: -15px !important; border-top: 5px solid #00438B !important; margin-bottom: 4rem !important;">
+ <!-- endo of img -->
+
+
+
+ </div>
+ </div>
+ <!-- END OF SCREENSHOTS -->
+
+
+ <!-- SUGGESTED PRODUCTS -->
+ <div class="row">
+ <div class="col-lg-12 d-flex flex-column justify-content-center"
+ style="text-align: center; padding: 2.5rem 1rem !important;">
+ <h2 style="color: #212529 !important;">Suggested Products</h2>
+ <hr
+ style="border: 3px solid #00438B !important; background-color: #00438B !important; width: 80px !important; margin-bottom: 2rem !important;" />
+
+ <div id="demo1" class="row carousel slide" data-ride="carousel">
+ <!-- The slideshow -->
+ <div class="carousel-inner">
+ <div class="carousel-item active" style="min-height: 0px;">
+ <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
+ <a href="https://apps.odoo.com/apps/modules/13.0/ohrms_core/" target="_blank">
+ <div
+ style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
+ <img class="img img-responsive center-block"
+ style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
+ src="images/core_image.gif">
+ </div>
+ </a>
+ </div>
+ <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
+ <a href="https://apps.odoo.com/apps/modules/13.0/hrms_dashboard/" target="_blank">
+ <div
+ style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
+ <img class="img img-responsive center-block"
+ style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
+ src="images/module_image.gif">
+ </div>
+ </a>
+ </div>
+ <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
+ <a href="https://apps.odoo.com/apps/modules/13.0/oh_hr_zk_attendance/" target="_blank">
+ <div
+ style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
+ <img class="img img-responsive center-block"
+ style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
+ src="images/bio_image.png">
+ </div>
+ </a>
+ </div>
+ </div>
+ <div class="carousel-item" style="min-height: 0px;">
+ <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
+ <a href="https://apps.odoo.com/apps/modules/13.0/oh_appraisal/" target="_blank">
+ <div
+ style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
+ <img class="img img-responsive center-block"
+ style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
+ src="images/appraisal_image.png">
+ </div>
+ </a>
+ </div>
+ <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
+ <a href="https://apps.odoo.com/apps/modules/13.0/hr_employee_shift/" target="_blank">
+ <div
+ style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
+ <img class="img img-responsive center-block"
+ style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
+ src="images/shift_image.png">
+ </div>
+ </a>
+ </div>
+ <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float: left;">
+ <a href="https://apps.odoo.com/apps/modules/13.0/ohrms_salary_advance/" target="_blank">
+ <div
+ style="box-shadow: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);border-radius: 10px;">
+ <img class="img img-responsive center-block"
+ style="border-top-left-radius: 10px;border-top-right-radius: 10px;"
+ src="images/salary_image.png">
+ </div>
+ </a>
+ </div>
+ </div>
+ </div>
+ <!-- Left and right controls -->
+ <a class="carousel-control-prev" href="#demo1" data-slide="prev"
+ style="left:-25px;width: 35px;color: #000;"> <span class="carousel-control-prev-icon"><i
+ class="fa fa-chevron-left" style="font-size:24px"></i></span> </a> <a
+ class="carousel-control-next" href="#demo1" data-slide="next"
+ style="right:-25px;width: 35px;color: #000;">
+ <span class="carousel-control-next-icon"><i class="fa fa-chevron-right"
+ style="font-size:24px"></i></span>
+ </a>
+ </div>
+ </div>
+ </div>
+ <!-- END OF SUGGESTED PRODUCTS -->
+
+ <!-- OUR SERVICES -->
+ <section class="container" style="margin-top: 6rem !important;">
+ <div class="row">
+ <div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
+ <h2 style="color: #212529 !important;">Our Services</h2>
+ <hr
+ style="border: 3px solid #00438B !important; background-color: #00438B !important; width: 80px !important; margin-bottom: 2rem !important;" />
+ </div>
+
+ <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
+ <div class="d-flex justify-content-center align-items-center mx-3 my-3"
+ style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
+ <img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px">
+ </div>
+ <h6 class="text-center"
+ style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
+ Customization</h6>
+ </div>
+
+ <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
+ <div class="d-flex justify-content-center align-items-center mx-3 my-3"
+ style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
+ <img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px">
+ </div>
+ <h6 class="text-center"
+ style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
+ Implementation</h6>
+ </div>
+
+ <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
+ <div class="d-flex justify-content-center align-items-center mx-3 my-3"
+ style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
+ <img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px">
+ </div>
+ <h6 class="text-center"
+ style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
+ Support</h6>
+ </div>
+
+
+ <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
+ <div class="d-flex justify-content-center align-items-center mx-3 my-3"
+ style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
+ <img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px">
+ </div>
+ <h6 class="text-center"
+ style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Hire
+ Odoo
+ Developer</h6>
+ </div>
+
+ <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
+ <div class="d-flex justify-content-center align-items-center mx-3 my-3"
+ style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
+ <img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px">
+ </div>
+ <h6 class="text-center"
+ style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
+ Integration</h6>
+ </div>
+
+ <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
+ <div class="d-flex justify-content-center align-items-center mx-3 my-3"
+ style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
+ <img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px">
+ </div>
+ <h6 class="text-center"
+ style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
+ Migration</h6>
+ </div>
+
+
+ <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
+ <div class="d-flex justify-content-center align-items-center mx-3 my-3"
+ style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
+ <img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px">
+ </div>
+ <h6 class="text-center"
+ style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
+ Consultancy</h6>
+ </div>
+
+ <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
+ <div class="d-flex justify-content-center align-items-center mx-3 my-3"
+ style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
+ <img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px">
+ </div>
+ <h6 class="text-center"
+ style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
+ Implementation</h6>
+ </div>
+
+ <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
+ <div class="d-flex justify-content-center align-items-center mx-3 my-3"
+ style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
+ <img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px">
+ </div>
+ <h6 class="text-center"
+ style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
+ Licensing Consultancy</h6>
+ </div>
+ </div>
+ </section>
+ <!-- END OF END OF OUR SERVICES -->
+
+ <!-- OUR INDUSTRIES -->
+ <section class="container" style="margin-top: 6rem !important;">
+ <div class="row">
+ <div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
+ <h2 style="color: #212529 !important;">Our Industries</h2>
+ <hr
+ style="border: 3px solid #00438B !important; background-color: #00438B !important; width: 80px !important; margin-bottom: 2rem !important;" />
+ </div>
+
+ <div class="col-lg-3">
+ <div class="my-4 d-flex flex-column justify-content-center"
+ style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
+ <img src="./assets/icons/trading-black.png" class="img-responsive mb-3" height="48px"
+ width="48px">
+ <h5
+ style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
+ Trading
+ </h5>
+ <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
+ Easily procure
+ and
+ sell your products</p>
+ </div>
+ </div>
+
+ <div class="col-lg-3">
+ <div class="my-4 d-flex flex-column justify-content-center"
+ style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
+ <img src="./assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
+ <h5
+ style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
+ POS
+ </h5>
+ <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
+ Easy
+ configuration
+ and convivial experience</p>
+ </div>
+ </div>
+
+ <div class="col-lg-3">
+ <div class="my-4 d-flex flex-column justify-content-center"
+ style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
+ <img src="./assets/icons/education-black.png" class="img-responsive mb-3" height="48px"
+ width="48px">
+ <h5
+ style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
+ Education
+ </h5>
+ <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
+ A platform for
+ educational management</p>
+ </div>
+ </div>
+
+ <div class="col-lg-3">
+ <div class="my-4 d-flex flex-column justify-content-center"
+ style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
+ <img src="./assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px"
+ width="48px">
+ <h5
+ style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
+ Manufacturing
+ </h5>
+ <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
+ Plan, track and
+ schedule your operations</p>
+ </div>
+ </div>
+
+ <div class="col-lg-3">
+ <div class="my-4 d-flex flex-column justify-content-center"
+ style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
+ <img src="./assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
+ <h5
+ style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
+ E-commerce &amp; Website
+ </h5>
+ <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
+ Mobile
+ friendly,
+ awe-inspiring product pages</p>
+ </div>
+ </div>
+
+ <div class="col-lg-3">
+ <div class="my-4 d-flex flex-column justify-content-center"
+ style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
+ <img src="./assets/icons/service-black.png" class="img-responsive mb-3" height="48px"
+ width="48px">
+ <h5
+ style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
+ Service Management
+ </h5>
+ <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
+ Keep track of
+ services and invoice</p>
+ </div>
+ </div>
+
+ <div class="col-lg-3">
+ <div class="my-4 d-flex flex-column justify-content-center"
+ style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
+ <img src="./assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px"
+ width="48px">
+ <h5
+ style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
+ Restaurant
+ </h5>
+ <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
+ Run your bar or
+ restaurant methodically</p>
+ </div>
+ </div>
+
+ <div class="col-lg-3">
+ <div class="my-4 d-flex flex-column justify-content-center"
+ style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
+ <img src="./assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px"
+ width="48px">
+ <h5
+ style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
+ Hotel Management
+ </h5>
+ <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
+ An
+ all-inclusive
+ hotel management application</p>
+ </div>
+ </div>
+
+ </div>
+ </section>
+
+ <!-- END OF END OF OUR INDUSTRIES -->
+
+ <!-- FOOTER -->
+ <!-- Footer Section -->
+ <section class="container" style="margin: 5rem auto 2rem;">
+ <div class="row" style="max-width:1540px;">
+ <div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
+ <h2 style="color: #212529 !important;">Need Help?</h2>
+ <hr
+ style="border: 3px solid #00438B !important; background-color: #00438B !important; width: 80px !important; margin-bottom: 2rem !important;" />
+ </div>
+ </div>
+
+ <!-- Contact Cards -->
+ <div class="row d-flex justify-content-center align-items-center"
+ style="max-width:1540px; margin: 0 auto 2rem auto;">
+
+ <div class="col-lg-12" style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; ">
+
+ <div class="row mt-6">
+ <div class="col-lg-6">
+ <a href="mailto:odoo@cybrosys.com" target="_blank" class="btn btn-block mb-2 deep_hover"
+ style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
+ class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a>
+ </div>
+ <div class="col-lg-6">
+ <a href="https://api.whatsapp.com/send?phone=918606827707" target="_blank"
+ class="btn btn-block mb-2 deep_hover"
+ style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i
+ class="fa fa-whatsapp mr-2"></i>WhatsApp</a>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ <!-- End of Contact Cards -->
+ </section>
+ <!-- Footer -->
+ <section class="oe_container" style="padding: 2rem 3rem 1rem;">
+ <div class="row" style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
+ <!-- Logo -->
+ <div class="col-lg-12 d-flex justify-content-center align-items-center" style="margin-top: 3rem;">
+ <img src="https://www.cybrosys.com/images/logo.png" width="200px" height="auto" />
+ </div>
+ <!-- End of Logo -->
+ <div class="col-lg-12">
+ <hr
+ style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
+ <!-- End of Footer Section -->
+ </div>
+ </div>
+ </section>
+ <!-- END OF FOOTER -->
+
+
+ </div>
+</div> \ No newline at end of file
diff --git a/hr_resignation/static/description/resignation_web.png b/hr_resignation/static/description/resignation_web.png
new file mode 100644
index 0000000..de95a41
--- /dev/null
+++ b/hr_resignation/static/description/resignation_web.png
Binary files differ
diff --git a/hr_resignation/static/image/resign_employee_id.jpeg b/hr_resignation/static/image/resign_employee_id.jpeg
new file mode 100644
index 0000000..c55e3f6
--- /dev/null
+++ b/hr_resignation/static/image/resign_employee_id.jpeg
Binary files differ
diff --git a/hr_resignation/views/approved_resignation.xml b/hr_resignation/views/approved_resignation.xml
new file mode 100644
index 0000000..ddfa5e1
--- /dev/null
+++ b/hr_resignation/views/approved_resignation.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+ <data>
+
+ <record model="ir.actions.act_window" id="view_approved_resignation">
+ <field name="name">Approved Resignation</field>
+ <field name="res_model">hr.resignation</field>
+ <field name="view_mode">tree,form</field>
+ <field name="domain">[('state', '=', 'approved')]</field>
+ <field name="help" type="html">
+ <p class="oe_view_nocontent_create">Approved Resignation
+ </p>
+ </field>
+ </record>
+
+ <menuitem id="employee_resignation_approved"
+ parent="employee_resignation"
+ name="Approved Resignation"
+ action="view_approved_resignation"
+ groups="hr.group_hr_user"
+ sequence="4"/>
+ </data>
+</odoo>
+
+
diff --git a/hr_resignation/views/hr_employee.xml b/hr_resignation/views/hr_employee.xml
new file mode 100644
index 0000000..f2b0ebd
--- /dev/null
+++ b/hr_resignation/views/hr_employee.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+ <record model="ir.ui.view" id="hr_employee_resign_form_view">
+ <field name="name">hr.employee.form.view</field>
+ <field name="model">hr.employee</field>
+ <field name="inherit_id" ref="hr.view_employee_form"/>
+ <field name="arch" type="xml">
+ <field name="joining_date" position="after">
+ <field name="resign_date" attrs="{'invisible': [('active', '!=', False)]}"/>
+ </field>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="hr_employee_resigned_filter">
+ <field name="name">hr.employee.form.filter</field>
+ <field name="model">hr.employee</field>
+ <field name="inherit_id" ref="hr.view_employee_filter"/>
+ <field name="arch" type="xml">
+ <field name="job_id" position="after">
+ <filter string="Resigned Employees" name="resigned" domain="['&amp;',('resigned', '=', True),('active', '=', False)]"/>
+ <filter string="Fired Employees" name="fired" domain="['&amp;',('fired', '=', True),('active', '=', False)]"/>
+ </field>
+ </field>
+ </record>
+</odoo> \ No newline at end of file
diff --git a/hr_resignation/views/resignation_sequence.xml b/hr_resignation/views/resignation_sequence.xml
new file mode 100644
index 0000000..65ee9ee
--- /dev/null
+++ b/hr_resignation/views/resignation_sequence.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data noupdate="1">
+
+ <!-- Sequences for hr.resignation -->
+ <record id="seq_hr_resignation" model="ir.sequence">
+ <field name="name">Open HRMS Resignation</field>
+ <field name="code">hr.resignation</field>
+ <field name="prefix">RES</field>
+ <field name="padding">3</field>
+ <field name="company_id" eval="False"/>
+ </record>
+
+ </data>
+</odoo>
diff --git a/hr_resignation/views/resignation_view.xml b/hr_resignation/views/resignation_view.xml
new file mode 100644
index 0000000..356e190
--- /dev/null
+++ b/hr_resignation/views/resignation_view.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+ <data>
+ <record id="employee_resignation_tree" model="ir.ui.view">
+ <field name="name">hr.resignation.tree</field>
+ <field name="model">hr.resignation</field>
+ <field name="priority" eval="8" />
+ <field name="arch" type="xml">
+ <tree string="Employee Resignation">
+ <field name="employee_id"/>
+ <field name="department_id"/>
+ <field name="employee_contract"/>
+ <field name="joined_date" readonly="1"/>
+ <field name="expected_revealing_date" />
+ <field name="approved_revealing_date"/>
+ <field name="resignation_type"/>
+ <field name="notice_period"/>
+ <field name="state"/>
+ </tree>
+ </field>
+ </record>
+ <record id="employee_resignation_form" model="ir.ui.view">
+ <field name="name">hr.resignation.form</field>
+ <field name="model">hr.resignation</field>
+ <field name="priority" eval="8" />
+ <field name="arch" type="xml">
+ <form string="Employee Resignation">
+ <header>
+ <button string="Confirm" type="object" name="confirm_resignation" states='draft' class="oe_highlight"/>
+ <button string="Cancel" type="object" name="cancel_resignation" states='draft'/>
+ <button string="Approve" type="object" groups="hr.group_hr_user" name="approve_resignation" states='confirm'/>
+ <button string="Reject" type="object" groups="hr.group_hr_user" name="reject_resignation" states='confirm'/>
+ <button string="Set to Draft" type="object" groups="hr.group_hr_manager" name="reset_to_draft" states='approved'/>
+ <field name="state" widget="statusbar" statusbar_visible="draft,confirm"/>
+ </header>
+ <sheet>
+ <div class="oe_title">
+ <h1>
+ <field name="name" readonly="1"/>
+ </h1>
+ </div>
+ <group>
+ <group string="Employee Details">
+ <field name="read_only" invisible="1"/>
+ <field name="employee_id" attrs="{'readonly': ['|',('read_only','=',False),('state','=','approved')]}"/>
+ <field name="department_id"/>
+ <field name="employee_contract"/>
+ </group>
+ <group string="Dates">
+ <field name="joined_date"/>
+ <field name="resign_confirm_date"
+ readonly="1"
+ attrs="{'invisible':[('resign_confirm_date','=',False)]}"/>
+ <field name="expected_revealing_date" attrs="{'readonly': [('state','=','approved')]}"/>
+ <field name="approved_revealing_date"
+ groups="hr.group_hr_user"/>
+ <field name="notice_period"/>
+ </group>
+ <group string="Resignation Details">
+ <field name="resignation_type" string="Type" groups="hr.group_hr_user" attrs="{'readonly': [('state','=','approved')]}"/>
+ <field name="reason" attrs="{'readonly': [('state','=','approved')]}"/>
+ </group>
+ </group>
+ </sheet>
+ <div class="oe_chatter">
+ <field name="message_follower_ids" widget="mail_followers"/>
+ <field name="message_ids" widget="mail_thread"/>
+ </div>
+ </form>
+ </field>
+ </record>
+ <record model="ir.actions.act_window" id="view_employee_resignation">
+ <field name="name">Employee Resignation</field>
+ <field name="res_model">hr.resignation</field>
+ <field name="view_mode">tree,form</field>
+ <field name="domain">[('state', 'in', ('draft', 'confirm','cancel'))]</field>
+ <field name="help" type="html">
+ <p class="oe_view_nocontent_create">Employee Resignation Form
+ </p>
+ </field>
+ </record>
+ <menuitem id="employee_resignation" name="Resignation"
+ groups="base.group_user"
+ web_icon="hr_resignation,static/description/resignation_web.png"
+ sequence="21"/>
+ <menuitem id="employee_resignation_request" parent="employee_resignation" name="Resignation Request"
+ action="view_employee_resignation" groups="base.group_user" sequence="4"/>
+ </data>
+</odoo>
+
+